summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/menukeys
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-02-24 00:24:36 +0000
committerKarl Berry <karl@freefriends.org>2012-02-24 00:24:36 +0000
commite48f8dd2ffc1431bb2bf619873f4b01e00a26412 (patch)
tree52d6e24333ddcd8566a4a24824a57678d9406e21 /Master/texmf-dist/tex/latex/menukeys
parentbc088603be227d790207d4298351898ff28d81d6 (diff)
new latex package menukeys (23feb12)
git-svn-id: svn://tug.org/texlive/trunk@25489 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/menukeys')
-rw-r--r--Master/texmf-dist/tex/latex/menukeys/menukeys.sty870
1 files changed, 870 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/menukeys/menukeys.sty b/Master/texmf-dist/tex/latex/menukeys/menukeys.sty
new file mode 100644
index 00000000000..7004a4f8d26
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/menukeys/menukeys.sty
@@ -0,0 +1,870 @@
+%%
+%% This is file `menukeys.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% menukeys.dtx (with options: `package')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2012 by Tobias Weh
+%% www.tobias-weh.de
+%%
+%% This file may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.2 of this license or (at your option) any later
+%% version. The latest version of this license is in:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.2 or later is part of all distributions of
+%% LaTeX version 1999/12/01 or later.
+%%
+\NeedsTeXFormat{LaTeX2e}[2009/01/01]
+\ProvidesPackage{menukeys}
+ [2012/02/23 v1.0 a package to format menus paths and shortcuts]
+\RequirePackage{xparse}
+\RequirePackage{xstring}
+\RequirePackage{etoolbox}
+\RequirePackage{tikz}
+ \usetikzlibrary{calc,shapes.symbols,shadows}
+\RequirePackage{xcolor}
+\RequirePackage{adjustbox}
+\RequirePackage{relsize}
+\RequirePackage{catoptions}[2011/12/07]
+\newcommand*{\tw@mk@error}[2][Please consult the manual for more information.]{%
+ \PackageError{menukeys}{#2}{#1}%
+}
+\newcommand*{\tw@mk@warning}[1]{%
+ \PackageWarning{menukeys}{#1}%
+}
+\newcommand*{\tw@mk@warning@noline}[1]{%
+ \PackageWarningNoLine{menukeys}{#1}%
+}
+\def\tw@mk@tempa{}
+\def\tw@mk@tempb{}
+\DeclareDocumentCommand{\tw@mk@gobble@args}{m}{%
+ \RenewDocumentCommand{\tw@mk@tempa}{#1}{}%
+ \tw@mk@tempa%
+}
+\RequirePackage{kvoptions}
+\SetupKeyvalOptions{
+ family=tw@mk,
+ prefix=tw@mk@
+}
+\DeclareBoolOption[true]{definemenumacros}
+\DeclareBoolOption[true]{definekeys}
+\DeclareStringOption[mac]{os}
+\DeclareStringOption[symbols]{mackeys}
+\ProcessKeyvalOptions{tw@mk}\relax
+\IfSubStr{.mac.win.}{.\tw@mk@os.}{}{%
+ \tw@mk@error{Unknown value for option 'os'\MessageBreak
+ Possible values are 'mac' or 'win'.}%
+}
+\IfSubStr{.symbols.text.}{.\tw@mk@mackeys.}{}{%
+ \tw@mk@error{Unknown value for option 'mackeys'\MessageBreak
+ Possible values are 'symbols' or 'text'.}%
+}
+\newcommand*{\tw@make@color@theme}[5]{%
+ \definecolor{tw@color@theme@#1@bg}{#2}{#3}%
+ \definecolor{tw@color@theme@#1@br}{#2}{#4}%
+ \definecolor{tw@color@theme@#1@txt}{#2}{#5}%
+}
+\newcommand*{\newmenucolortheme}[5]{%
+ \@ifundefinedcolor{tw@color@theme@#1@bg}{%
+ \tw@make@color@theme{#1}{#2}{#3}{#4}{#5}
+ }{%
+ \tw@mk@error{Color theme '#1' already defined!\MessageBreak
+ Use \string\renewmenucolortheme\space instead.}
+ }
+}
+\let\renewmenucolortheme\tw@make@color@theme
+\newcommand*{\changemenucolor}[4]{%
+ \IfSubStr{ bg br txt }{ #2 }{%
+ \definecolor{tw@color@theme@#1@#2}{#3}{#4}%
+ }{%
+ \tw@mk@error{No such color element ('#2')!\MessageBreak
+ Possible values are bg, br and txt.}
+ }%
+}
+\newcommand*{\copymenucolortheme}[2]{%
+ \@ifundefinedcolor{tw@color@theme@#1@bg}{%
+ \colorlet{tw@color@theme@#1@bg}{tw@color@theme@#2@bg}%
+ \colorlet{tw@color@theme@#1@br}{tw@color@theme@#2@br}%
+ \colorlet{tw@color@theme@#1@txt}{tw@color@theme@#2@txt}%
+ }{%
+ \tw@mk@error{Color theme '#1' already defined!\MessageBreak
+ Use \string\renewmenucolortheme\space instead.}
+ }
+}
+\newcommand{\changemenucolortheme}[2]{%
+ \ifcsundef{tw@style@#1@pre}{%
+ \tw@mk@error{Style '#1' undefined!\MessageBreak
+ Maybe you misspelled it?}%
+ }{%
+ \@ifundefinedcolor{tw@color@theme@#2@bg}{%
+ \tw@mk@error{Color theme '#2' is not defined!}%
+ }{%
+ \csdef{tw@style@#1@color@theme}{#2}%
+ }%
+ }%
+}
+\newcommand{\usemenucolor}[1]{%
+ tw@color@theme@\tw@current@color@theme @#1%
+}
+\tw@make@color@theme{gray}{gray}{0.95}{0.3}{0}
+\tw@make@color@theme{blacknwhite}{gray}{1}{0}{0}
+\newcommand{\tw@default@sep}{%
+ \hspace{0.2em plus 0.1em minus 0.5em}%
+}
+\newcommand{\tw@default@pre}{}
+\newcommand{\tw@default@post}{}
+\DeclareDocumentCommand{\tw@declare@style@simple}{%
+ s m O{\tw@default@pre} m O{\tw@default@sep} O{\tw@default@post} m
+}{%
+ \csdef{tw@style@#2@color@theme}{#7}%
+ \csdef{tw@style@#2@pre}{#3}%
+ \csdef{tw@style@#2@sep}{#5}%
+ \csdef{tw@style@#2@post}{#6}%
+ \IfBooleanTF{#1}{%
+ \csdef{tw@style@#2@single}{#4}%
+ \csdef{tw@style@#2@first}{#4}%
+ \csdef{tw@style@#2@mid}{#4}%
+ \csdef{tw@style@#2@last}{#4}%
+ }{%
+ \csdef{tw@style@#2@single}{%
+ \tikz[baseline=(tw@node.base)]%
+ \node(tw@node)[#4]{\strut\CurrentMenuElement};}%
+ \csdef{tw@style@#2@first}{%
+ \tikz[baseline=(tw@node.base)]%
+ \node(tw@node)[#4]{\strut\CurrentMenuElement};}%
+ \csdef{tw@style@#2@mid}{%
+ \tikz[baseline=(tw@node.base)]%
+ \node(tw@node)[#4]{\strut\CurrentMenuElement};}%
+ \csdef{tw@style@#2@last}{%
+ \tikz[baseline=(tw@node.base)]%
+ \node(tw@node)[#4]{\strut\CurrentMenuElement};}%
+ }%
+}
+\DeclareDocumentCommand{\tw@declare@sytle@extra@args}{%
+ O{\tw@default@post} m
+}{%
+ \csdef{tw@style@\tw@current@style @post}{#1}%
+ \csdef{tw@style@\tw@current@style @color@theme}{#2}%
+}
+\DeclareDocumentCommand{\tw@declare@style}{%
+ s m O{\tw@default@pre} m O{\tw@default@sep} m m m
+}{%
+ \def\tw@current@style{#2}
+ \csdef{tw@style@#2@pre}{#3}%
+ \csdef{tw@style@#2@sep}{#5}%
+ \IfBooleanTF{#1}{%
+ \csdef{tw@style@#2@single}{#8}%
+ \csdef{tw@style@#2@first}{#4}%
+ \csdef{tw@style@#2@mid}{#6}%
+ \csdef{tw@style@#2@last}{#7}%
+ }{%
+ \csdef{tw@style@#2@single}{%
+ \tikz[baseline=(tw@node.base)]%
+ \node(tw@node)[#8]{\strut\CurrentMenuElement};}%
+ \csdef{tw@style@#2@first}{%
+ \tikz[baseline=(tw@node.base)]%
+ \node(tw@node)[#4]{\strut\CurrentMenuElement};}%
+ \csdef{tw@style@#2@mid}{%
+ \tikz[baseline=(tw@node.base)]%
+ \node(tw@node)[#6]{\strut\CurrentMenuElement};}%
+ \csdef{tw@style@#2@last}{%
+ \tikz[baseline=(tw@node.base)]%
+ \node(tw@node)[#7]{\strut\CurrentMenuElement};}%
+ }%
+ \tw@declare@sytle@extra@args%
+}
+\NewDocumentCommand{\newmenustylesimple}{s m}{%
+ \ifcsundef{tw@style@#2@pre}{%
+ \IfBooleanTF{#1}{%
+ \tw@declare@style@simple*{#2}%
+ }{%
+ \tw@declare@style@simple{#2}%
+ }%
+ }{%
+ \tw@mk@error{Style '#2' already defined!\MessageBreak
+ Use \string\renewmenustylesimple\space instead.}%
+ \tw@mk@gobble@args{o m o o m}%
+ }%
+}
+\NewDocumentCommand{\renewmenustylesimple}{s m}{%
+ \IfBooleanTF{#1}{%
+ \tw@declare@style@simple*{#2}%
+ }{%
+ \tw@declare@style@simple{#2}%
+ }%
+}
+\NewDocumentCommand{\providemenustylesimple}{s m}{%
+ \ifcsundef{tw@style@#2@pre}{%
+ \IfBooleanTF{#1}{%
+ \tw@declare@style@simple*{#2}%
+ }{%
+ \tw@declare@style@simple{#2}%
+ }%
+ }{%
+ \tw@mk@warning{Trying to provide style '#2' failed,\MessageBreak
+ because it's already defined.\MessageBreak
+ You may use \string\renewmenustylesimple\space instead.}%
+ \tw@mk@gobble@args{o m o o m}%
+ }%
+}
+
+\NewDocumentCommand{\newmenustyle}{s m}{%
+ \ifcsundef{tw@style@#2@pre}{%
+ \IfBooleanTF{#1}{%
+ \tw@declare@style*{#2}%
+ }{%
+ \tw@declare@style{#2}%
+ }%
+ }{%
+ \tw@mk@error{Style '#2' already defined!\MessageBreak
+ Use \string\renewmenustyle\space instead.}%
+ \tw@mk@gobble@args{o m o m m m o m}%
+ }%
+}
+\NewDocumentCommand{\renewmenustyle}{s m}{%
+ \IfBooleanTF{#1}{%
+ \tw@declare@style*{#2}%
+ }{%
+ \tw@declare@style{#2}%
+ }%
+}
+\NewDocumentCommand{\providemenustyle}{s m}{%
+ \ifcsundef{tw@style@#2@pre}{%
+ \IfBooleanTF{#1}{%
+ \tw@declare@style*{#2}%
+ }{%
+ \tw@declare@style{#2}%
+ }%
+ }{%
+ \tw@mk@warning{Trying to provide style #2 failed,\MessageBreak
+ because it's already defined.\MessageBreak
+ You may use \string\renewmenustyle\space instead.}%
+ \tw@mk@gobble@args{o m o m m m o m}%
+ }%
+}
+\newcommand*{\copymenustyle}[2]{%
+ \ifcsundef{tw@style@#1@pre}{%
+ \ifcsundef{tw@style@#2@pre}{%
+ \tw@mk@error{Can't copy not existing style ('#2')!}%
+ }{%
+ \csletcs{tw@style@#1@pre}{tw@style@#2@pre}%
+ \csletcs{tw@style@#1@post}{tw@style@#2@post}%
+ \csletcs{tw@style@#1@sep}{tw@style@#2@sep}%
+ \csletcs{tw@style@#1@single}{tw@style@#2@single}%
+ \csletcs{tw@style@#1@first}{tw@style@#2@first}%
+ \csletcs{tw@style@#1@mid}{tw@style@#2@mid}%
+ \csletcs{tw@style@#1@last}{tw@style@#2@last}%
+ \csletcs{tw@style@#1@color@theme}{tw@style@#2@color@theme}
+ }%
+ }{%
+ \tw@mk@error{Style '#1' already exists!}%
+ }%
+}
+\NewDocumentCommand{\changemenuelement}{s m m m}{%
+ \ifcsundef{tw@style@#2@pre}{%
+ \tw@mk@error{Style '#2' undefined.}%
+ }{%
+ \IfSubStr{ single first middle last pre post sep }{ #3 }{%
+ \IfBooleanTF{#1}{%
+ \csdef{tw@style@#2@#3}{#4}%
+ }{%
+ \IfSubStr{ pre post sep }{ #3 }{%
+ \csdef{tw@style@#2@#3}{#4}%
+ }{%
+ \csdef{tw@style@#2@#3}{%
+ \tikz[baseline=(tw@node.base)]%
+ \node(tw@node)[#4]{\strut\CurrentMenuElement};}%
+ }%
+ }%
+ }{\tw@mk@error{No element '#3'. Possible values are\MessageBreak
+ single, first, middle, last, pre, post or sep.}}%
+ }%
+}
+\tikzstyle{tw@set@tikz@colors}=[%
+ draw=\usemenucolor{br},
+ fill=\usemenucolor{bg},
+ text=\usemenucolor{txt},
+]
+\tikzstyle{tw@menus@base}=[%
+ tw@set@tikz@colors,
+ rounded corners=0.15ex,
+ inner sep=0pt,
+ inner xsep=2pt,
+ text height=1.825ex,
+ text depth=0.7ex,
+ minimum width=1.5em,
+ font=\relsize{-1}\sffamily,
+ signal,
+ signal to=nowhere,
+ signal pointer angle=110,
+]
+\tw@declare@style*{menus}{%
+ \tikz[baseline={($(tw@node.base)+(0,-0.2ex)$)}]%
+ \node(tw@node)[tw@menus@base,signal to=east]%
+ {\strut\CurrentMenuElement};%
+}[\hspace{-0.2em}\hspace{0em plus 0.1em minus 0.05em}]%
+{%
+ \tikz[baseline={($(tw@node.base)+(0,-0.2ex)$)}]%
+ \node(tw@node)[tw@menus@base,signal from=west,signal to=east]%
+ {\strut\CurrentMenuElement};%
+}{%
+ \tikz[baseline={($(tw@node.base)+(0,-0.2ex)$)}]%
+ \node(tw@node)[tw@menus@base,signal from=west,]%
+ {\strut\CurrentMenuElement};%
+}{%
+ \tikz[baseline={($(tw@node.base)+(0,-0.2ex)$)}]%
+ \node(tw@node)[tw@menus@base]{\strut\CurrentMenuElement};%
+}{gray}
+
+\tikzstyle{tw@roundedmenus@base}=[%
+ tw@set@tikz@colors,
+ rounded corners=0.3ex,
+ inner sep=0pt,
+ inner xsep=2pt,
+ text height=1.825ex,
+ text depth=0.7ex,
+ minimum width=1.5em,
+ font=\relsize{-1}\sffamily,
+ signal,
+ signal to=nowhere,
+ signal pointer angle=110,
+]
+\tw@declare@style*{roundedmenus}{%
+ \tikz[baseline={($(tw@node.base)+(0,-0.2ex)$)}]%
+ \node(tw@node)[tw@roundedmenus@base,signal to=east]%
+ {\strut\CurrentMenuElement};%
+}[\hspace{-0.2em}\hspace{0em plus 0.1em minus 0.05em}]%
+{%
+ \tikz[baseline={($(tw@node.base)+(0,-0.2ex)$)}]%
+ \node(tw@node)[tw@roundedmenus@base,signal from=west,signal to=east]%
+ {\strut\CurrentMenuElement};%
+}{%
+ \tikz[baseline={($(tw@node.base)+(0,-0.2ex)$)}]%
+ \node(tw@node)[tw@roundedmenus@base,signal from=west,]%
+ {\strut\CurrentMenuElement};%
+}{%
+ \tikz[baseline={($(tw@node.base)+(0,-0.2ex)$)}]%
+ \node(tw@node)[tw@roundedmenus@base]{\strut\CurrentMenuElement};%
+}{gray}
+
+\tikzstyle{tw@angularmenus@base}=[%
+ tw@set@tikz@colors,
+ inner sep=0pt,
+ inner xsep=2pt,
+ text height=1.825ex,
+ text depth=0.7ex,
+ minimum width=1.5em,
+ font=\relsize{-1}\sffamily,
+ signal,
+ signal to=nowhere,
+ signal pointer angle=110,
+]
+\tw@declare@style*{angularmenus}{%
+ \tikz[baseline={($(tw@node.base)+(0,-0.2ex)$)}]%
+ \node(tw@node)[tw@angularmenus@base,signal to=east]%
+ {\strut\CurrentMenuElement};%
+}[\hspace{-0.2em}\hspace{0em plus 0.1em minus 0.05em}]%
+{%
+ \tikz[baseline={($(tw@node.base)+(0,-0.2ex)$)}]%
+ \node(tw@node)[tw@angularmenus@base,signal from=west,signal to=east]%
+ {\strut\CurrentMenuElement};%
+}{%
+ \tikz[baseline={($(tw@node.base)+(0,-0.2ex)$)}]%
+ \node(tw@node)[tw@angularmenus@base,signal from=west,]%
+ {\strut\CurrentMenuElement};%
+}{%
+ \tikz[baseline={($(tw@node.base)+(0,-0.2ex)$)}]%
+ \node(tw@node)[tw@angularmenus@base]{\strut\CurrentMenuElement};%
+}{gray}
+
+\tikzstyle{tw@roundedkeys@base}=[%
+ tw@set@tikz@colors,
+ rounded corners=0.3ex,
+ inner sep=0pt,
+ inner xsep=2pt,
+ text height=1.825ex,
+ text depth=0.7ex,
+ minimum width=1.5em,
+ font=\relsize{-1}\sffamily,
+]
+\tw@declare@style@simple*{roundedkeys}{%
+ \tikz[baseline={($(tw@node.base)+(0,-0.2ex)$)}]%
+ \node(tw@node)[tw@roundedkeys@base]{\strut\CurrentMenuElement};%
+}[%
+ \hspace{0.1em plus 0.1em minus 0.05em}%
+ \raisebox{0.25ex}{\sffamily\footnotesize+}%
+ \hspace{0.1em plus 0.1em minus 0.05em}%
+]{gray}
+
+\tikzstyle{tw@shadowedroundedkeys@base}=[%
+ tw@set@tikz@colors,
+ rounded corners=0.3ex,
+ inner sep=0pt,
+ inner xsep=2pt,
+ text height=1.825ex,
+ text depth=0.7ex,
+ minimum width=1.5em,
+ font=\relsize{-1}\sffamily,
+ general shadow={%
+ shadow xshift=.2ex, shadow yshift=-.15ex,
+ fill=black,
+ },
+]
+\tw@declare@style@simple*{shadowedroundedkeys}{%
+ \tikz[baseline={($(tw@node.base)+(0,-0.2ex)$)}]%
+ \node(tw@node)[tw@shadowedroundedkeys@base]{\strut\CurrentMenuElement};%
+}[%
+ \hspace{0.2ex}\hspace{0.1em plus 0.1em minus 0.05em}%
+ \raisebox{0.25ex}{\sffamily\footnotesize+}%
+ \hspace{0.1em plus 0.1em minus 0.05em}%
+][\hspace{0.2ex}]{gray}
+
+\tikzstyle{tw@angularkeys@base}=[%
+ tw@set@tikz@colors,
+ inner sep=0pt,
+ inner xsep=2pt,
+ text height=1.825ex,
+ text depth=0.7ex,
+ minimum width=1.5em,
+ font=\relsize{-1}\sffamily,
+]
+\tw@declare@style@simple*{angularkeys}{%
+ \tikz[baseline={($(tw@node.base)+(0,-0.2ex)$)}]%
+ \node(tw@node)[tw@angularkeys@base]{\strut\CurrentMenuElement};%
+}[%
+ \hspace{0.1em plus 0.1em minus 0.05em}%
+ \raisebox{0.25ex}{\sffamily\footnotesize+}%
+ \hspace{0.1em plus 0.1em minus 0.05em}%
+]{gray}
+
+\tikzstyle{tw@shadowedangularkeys@base}=[%
+ tw@set@tikz@colors,
+ inner sep=0pt,
+ inner xsep=2pt,
+ text height=1.825ex,
+ text depth=0.7ex,
+ minimum width=1.5em,
+ font=\relsize{-1}\sffamily,
+ general shadow={%
+ shadow xshift=.2ex, shadow yshift=-.15ex,
+ fill=black,
+ },
+]
+\tw@declare@style@simple*{shadowedangularkeys}{%
+ \tikz[baseline={($(tw@node.base)+(0,-0.2ex)$)}]%
+ \node(tw@node)[tw@shadowedangularkeys@base]{\strut\CurrentMenuElement};%
+}[%
+ \hspace{0.2ex}\hspace{0.1em plus 0.1em minus 0.05em}%
+ \raisebox{0.25ex}{\sffamily\footnotesize+}%
+ \hspace{0.1em plus 0.1em minus 0.05em}%
+][\hspace{0.2ex}]{gray}
+
+\tikzstyle{tw@typewriterkeys@base}=[%
+ tw@set@tikz@colors,
+ shape=circle,
+ minimum size=2ex,
+ inner sep=0.5pt, outer sep=1pt,
+ font=\ttfamily\relsize{-1},
+]
+\tw@declare@style@simple*{typewriterkeys}{%
+ \def\tw@typewriterkeys@curr@elem{%
+ \maxsizebox*{2ex}{2ex}{\CurrentMenuElement}%
+ }%
+ \begin{tikzpicture}[baseline={($(tw@node.south)+(0,0.8ex)$)}]%
+ \node(tw@node)[%
+ tw@typewriterkeys@base, inner sep=1.25pt, line width=0.6pt%
+ ]{\tw@typewriterkeys@curr@elem};
+ \node[tw@typewriterkeys@base]{\tw@typewriterkeys@curr@elem};
+ \end{tikzpicture}%
+}[%
+ \hspace{0.2ex}\hspace{0.1em plus 0.1em minus 0.05em}%
+ \raisebox{0.25ex}{\sffamily\footnotesize+}%
+ \hspace{0.1em plus 0.1em minus 0.05em}%
+]{blacknwhite}
+
+\tw@declare@style@simple*{paths}{%
+ {\ttfamily\CurrentMenuElement}%
+}[%
+ \hspace{0.2em plus 0.1em}%
+ \raisebox{0.08ex}{%
+ \tikz\fill[\usemenucolor{txt}] (0,0) -- (0.5ex,0.5ex)%
+ -- (0,1ex) -- cycle;%
+ }%
+ \hspace{0.2em plus 0.1em}%
+]{blacknwhite}
+
+\newcounter{tw@hyphen@char@num}
+\newif\if@tw@hyphenatepaths@warnig
+\@tw@hyphenatepaths@warnigtrue
+\tw@declare@style@simple*{hyphenatepaths}{%
+ {\ttfamily
+ \IfStrEq{T1}{\encodingdefault}{%
+ \setcounter{tw@hyphen@char@num}{23}%
+ }{%
+ \IfStrEq{OT1}{\encodingdefault}{%
+ \setcounter{tw@hyphen@char@num}{255}%
+ }{%
+ \if@tw@hyphenatepaths@warnig%
+ \tw@mk@warning{The hypenatepaths styles will probably only\MessageBreak
+ work with T1 or OT1 encoding.}%
+ \fi\global\@tw@hyphenatepaths@warnigfalse%
+ }%
+ }%
+ \hyphenchar\font=\value{tw@hyphen@char@num}\relax
+ \CurrentMenuElement}%
+}[%
+ \hspace{0.2em plus 0.1em}%
+ \raisebox{0.08ex}{%
+ \tikz\fill[\usemenucolor{txt}] (0,0) -- (0.5ex,0.5ex)%
+ -- (0,1ex) -- cycle;%
+ }%
+ \hspace{0.2em plus 0.1em}%
+]{blacknwhite}
+
+\newcommand*{\drawtikzfolder}[1][white]{%
+ \begin{tikzpicture}[rounded corners=0.02ex,scale=0.7]
+ \draw (0,0) -- (1em,0) -- (1em,1.5ex) -- (0.5em,1.5ex) -- %
+ (0.4em,1.7ex) -- (0.1em,1.7ex) -- (0,1.5ex) -- cycle;
+ \draw [fill=#1] (0,0) -- (1em,0) -- (0.85em,1.15ex) -- %
+ ++(-1em,0) -- cycle;
+ \end{tikzpicture}%
+}
+
+\copymenustyle{pathswithfolder}{paths}
+\changemenuelement{pathswithfolder}{pre}{%
+ \textcolor{\usemenucolor{txt}}{\drawtikzfolder}%
+ \hspace{0.2em plus 0.1em}%
+}
+
+\copymenustyle{pathswithblackfolder}{paths}
+\changemenuelement{pathswithblackfolder}{pre}{%
+ \textcolor{\usemenucolor{txt}}{\drawtikzfolder[\usemenucolor{txt}]}%
+ \hspace{0.2em plus 0.1em}%
+}
+
+\copymenustyle{hyphenatepathswithfolder}{hyphenatepaths}
+\changemenuelement{hyphenatepathswithfolder}{pre}{%
+ \textcolor{\usemenucolor{txt}}{\drawtikzfolder}%
+ \hspace{0.2em plus 0.1em}%
+}
+
+\copymenustyle{hyphenatepathswithblackfolder}{hyphenatepaths}
+\changemenuelement{hyphenatepathswithblackfolder}{pre}{%
+ \textcolor{\usemenucolor{txt}}{\drawtikzfolder[\usemenucolor{txt}]}%
+ \hspace{0.2em plus 0.1em}%
+}
+\edef\tw@default@input@sep{,}
+\def\CurrentMenuElement{}
+\begingroup
+\lccode`\,=1
+\lowercase{\endgroup
+ \robust@def*\tw@mk@test@input@sep#1{%
+ \xifinsetTF{,\cpttrimspaces{#1},}{,bslash,backslash,directory,location,}%
+ }%
+}
+\NewDocumentCommand{\tw@define@menu@macro}{%
+ m O{\tw@default@input@sep} m
+}{%
+ \ifcsundef{tw@style@#3@sep}{%
+ \tw@mk@error{Can't define menu macro \string#1\space,\MessageBreak
+ because the style '#3' is not available!}
+ }{%
+ \csdef{tw@parse@menu@list@\expandafter\@gobble\string#1}##1{%
+ \iflastindris
+ \ifnum\indrisnr=\@ne
+ \edef\CurrentMenuElement{##1}%
+ \@nameuse{tw@style@#3@single}%
+ \else
+ \edef\CurrentMenuElement{##1}%
+ \@nameuse{tw@style@#3@sep}\@nameuse{tw@style@#3@last}%
+ \fi
+ \else
+ \ifnum\indrisnr=\@ne
+ \edef\CurrentMenuElement{##1}%
+ \@nameuse{tw@style@#3@first}%
+ \else
+ \edef\CurrentMenuElement{##1}%
+ \@nameuse{tw@style@#3@sep}\@nameuse{tw@style@#3@mid}%
+ \fi
+ \fi
+ }%
+ \expandafter\newcommand\csname\expandafter\@gobble\string#1\endcsname[2][#2]{%
+ {\def\tw@current@color@theme{\csname tw@style@#3@color@theme\endcsname}%
+ \@nameuse{tw@style@#3@pre}%
+ \tw@mk@test@input@sep{##1}{%
+ \edef\tw@menu@list{\detokenize{##2}}\edef\tw@mk@tempa{\@backslashchar}%
+ }{%
+ \edef\tw@menu@list{\unexpanded{##2}}\edef\tw@mk@tempa{\cpttrimspaces{##1}}%
+ }%
+ {\letcs{\tw@mk@tempb}{tw@parse@menu@list@\expandafter\@gobble\string#1}%
+ \cptexpanded{\indrisloop*[\tw@mk@tempa]}\tw@menu@list\tw@mk@tempb}%
+ \@nameuse{tw@style@#3@post}}%
+ }%
+ \expandafter\cptrobustify\csname\expandafter\@gobble\string#1\endcsname
+ }%
+}
+\edef\cpt@parserlist{\cpt@parserlist\@backslashchar}
+\NewDocumentCommand{\newmenumacro}{m O{\tw@default@input@sep} m}{%
+ \ifcsundef{\expandafter\@gobble\string#1}{%
+ \tw@define@menu@macro{#1}[#2]{#3}%
+ }{
+ \tw@mk@error{Menu macro '\string#1' already defined!\MessageBreak
+ Use \string\renewmenustyle\space instead.}
+ }%
+}
+\NewDocumentCommand{\renewmenumacro}{m O{\tw@default@input@sep} m}{%
+ \cslet{\expandafter\@gobble\string#1}{\relax}%
+ \tw@define@menu@macro{#1}[#2]{#3}%
+}
+\NewDocumentCommand{\providemenumacro}{m O{\tw@default@input@sep} m}{%
+ \ifcsundef{\expandafter\@gobble\string#1}{%
+ \tw@define@menu@macro{#1}[#2]{#3}%
+ }{
+ \tw@mk@warning{Menu macro '\string#1' already defined!\MessageBreak
+ Use \string\renewmenustyle\space to redefine it.}
+ }%
+}
+\iftw@mk@definemenumacros
+\newmenumacro{\menu}[>]{menus}
+\newmenumacro{\path}[/]{paths}
+\newmenumacro{\keys}[+]{roundedkeys}
+\fi
+\iftw@mk@definekeys
+\NewDocumentCommand{\tw@make@key@box}{m m}{%
+ \expandafter\newbox\csname tw@mk@box@#1\endcsname
+ \expandafter\sbox\csname tw@mk@box@#1\endcsname{%
+ #2%
+ }%
+ \csdef{tw@mk@#1}{%
+ \expandafter\usebox\csname tw@mk@box@#1\endcsname%
+ }%
+}
+\NewDocumentCommand{\tw@make@key@macro}{s m}{%
+ \IfBooleanTF{#1}{%
+ \expandafter\providecommand\csname\expandafter\@gobble\string#2\endcsname{%
+ \expandonce{\maxsizebox{!}{1.8ex}{%
+ \@nameuse{tw@mk@\expandafter\@gobble\string#2@\tw@mk@os}}%
+ }%
+ }%
+ \expandafter\providecommand\csname\expandafter\@gobble\string#2mac\endcsname{%
+ \expandonce{\maxsizebox{!}{1.8ex}{%
+ \@nameuse{tw@mk@\expandafter\@gobble\string#2@mac}}%
+ }%
+ }%
+ \expandafter\providecommand\csname\expandafter\@gobble\string#2win\endcsname{%
+ \expandonce{\maxsizebox{!}{1.8ex}{%
+ \@nameuse{tw@mk@\expandafter\@gobble\string#2@win}}%
+ }%
+ }%
+ }{%
+ \expandafter\providecommand\csname\expandafter\@gobble\string#2\endcsname{%
+ \expandonce{\maxsizebox{!}{1.8ex}{%
+ \@nameuse{tw@mk@\expandafter\@gobble\string#2}}%
+ }%
+ }%
+ }%
+}
+\newcommand*{\tw@define@mackey}[2]{%
+ \IfStrEq{text}{\tw@mk@mackeys}{#1}{%
+ \IfStrEq{symbols}{\tw@mk@mackeys}{#2}{}%
+ }%
+}
+\tw@make@key@box{shift}{%
+ \begin{tikzpicture}[yshift=-0.1ex,baseline={(0,0)},semithick]
+ \draw (0.3ex,0) -- (1.1ex,0) -- (1.1ex,1.2ex) -- %
+ (1.5ex,1.2ex) -- (0.7ex,1.9ex) -- (-0.1ex,1.2ex) -- %
+ (0.3ex,1.2ex) -- cycle;
+ \end{tikzpicture}%
+}
+\tw@make@key@macro{\shift}
+\tw@make@key@box{capslock@mac}{%
+ \begin{tikzpicture}[yshift=-0.1ex,baseline={(0,0)},semithick]
+ \draw (0.3ex,0.7ex) -- (1.1ex,0.7ex) -- (1.1ex,1.2ex) -- %
+ (1.5ex,1.2ex) -- (0.7ex,1.9ex) -- (-0.1ex,1.2ex) -- %
+ (0.3ex,1.2ex) -- cycle;
+ \draw (0.3ex,0) rectangle (1.1ex,0.4ex);
+ \end{tikzpicture}%
+}
+\tw@make@key@box{capslock@win}{%
+ \begin{tikzpicture}[yscale=-1,yshift=-1.8ex,baseline={(0,0)},semithick]
+ \draw (0.3ex,0) -- (1.1ex,0) -- (1.1ex,1.2ex) -- %
+ (1.5ex,1.2ex) -- (0.7ex,1.9ex) -- (-0.1ex,1.2ex) -- %
+ (0.3ex,1.2ex) -- cycle;
+ \end{tikzpicture}%
+}
+\tw@make@key@macro*{\capslock}
+\tw@make@key@box{tab@mac}{%
+ \begin{tikzpicture}[yshift=0.5ex,baseline={(0,0)}]
+ \draw [->,semithick] (0,0) -- (1em,0);
+ \draw (1em,-0.45ex) -- (1em,0.45ex);
+ \end{tikzpicture}%
+}
+\tw@make@key@box{tab@win}{%
+ \begin{tikzpicture}[yshift=0.1ex,baseline={(0,0)}]
+ \draw [->,semithick] (0.2em,0) -- (1.2em,0);
+ \draw (1.2em,-0.45ex) -- (1.2em,0.45ex);
+ \draw [<-,semithick] (0,1ex) -- (1em,1ex);
+ \draw (0,0.55ex) -- (0,1.55ex);
+ \end{tikzpicture}%
+}
+\tw@make@key@macro*{\tab}
+
+\def\tw@mk@esc@win{Esc}
+\tw@define@mackey{%
+ \def\tw@mk@esc@mac{esc}
+}{%
+ \tw@make@key@box{esc@mac}{%
+ \begin{tikzpicture}[yshift=-0.1ex,baseline={(0,0)},semithick]
+ \draw [->] (0.5ex,0.5ex) -- ++(45:1.5ex);
+ \draw (0.5ex,0.5ex) ++(15:0.6ex) arc (15:-285:0.6ex);
+ \end{tikzpicture}%
+ }%
+}
+\tw@make@key@macro*{\esc}
+
+\providecommand\ctrlname{Ctrl}
+\def\tw@mk@ctrl@win{\ctrlname}
+\def\tw@mk@ctrl@mac{ctrl}
+\tw@make@key@macro*{\ctrl}
+
+\def\tw@mk@Alt@win{Alt}
+\tw@define@mackey{%
+ \def\tw@mk@Alt@mac{alt}%
+}{%
+ \tw@make@key@box{Alt@mac}{%
+ \begin{tikzpicture}[semithick]
+ \draw (0,1ex) -- (0.5ex,1ex) -- (1ex,0.3ex) -- (1.8ex,0.3ex);
+ \draw (0.8ex,1ex) -- (1.8ex,1ex);
+ \end{tikzpicture}%
+ }%
+}
+\tw@make@key@macro*{\Alt}
+
+\providecommand*{\AltGr}{Alt\,Gr}
+
+\def\tw@mk@cmd@win{%
+ \tw@mk@warning{'\string\cmd' only for Mac!}%
+}
+\tw@define@mackey{%
+ \def\tw@mk@cmd@mac{cmd}%
+}{%
+ \tw@make@key@box{cmd@mac}{%
+ \begin{tikzpicture}[yshift=-0.15ex,baseline={(0,0)},semithick]
+ \draw (0.5ex,0.7ex) -- (0.5ex,1.25ex) arc (0:270:0.25ex) -- %
+ (1.25ex,1ex) arc (-90:180:0.25ex) -- (1ex,0.25ex) %
+ arc (-180:90:0.25ex) -- (0.25ex,0.5ex) arc (90:360:0.25ex) %
+ -- cycle;
+ \end{tikzpicture}%
+ }%
+}
+\tw@make@key@macro*{\cmd}
+
+\providecommand*{\Space}{\expandonce{\rule{3em}{0pt}}}
+
+\tw@make@key@box{return@mac}{%
+ \begin{tikzpicture}[semithick]
+ \draw [->, rounded corners=0.3ex] (1.25ex,1ex) -| %
+ (2ex,0) -- (0,0);
+ \end{tikzpicture}%
+}
+\tw@make@key@box{return@win}{%
+ \begin{tikzpicture}[semithick]
+ \draw [->] (1ex,1.25ex) |- (0,0);
+ \end{tikzpicture}%
+}
+\tw@make@key@macro*{\return}
+
+\def\tw@mk@enter@win{Enter}
+\tw@make@key@box{enter@mac}{%
+ \begin{tikzpicture}[semithick]
+ \draw (0,0) -- (0.5ex,0.5ex) -- (1ex,0);
+ \draw (0,0.55ex) -- (1ex,0.55ex);
+ \end{tikzpicture}%
+}
+\tw@make@key@macro*{\enter}
+
+\def\tw@mk@winmenu@mac{%
+ \tw@mk@warning{'\string\winmenu' only for Windows!}%
+}
+\tw@make@key@box{winmenu@win}{%
+ \begin{tikzpicture}[yshift=-0.2ex,baseline={(0,0)},semithick]
+ \draw (0,0) rectangle (1.5ex,1.8ex);
+ \draw (0.25ex,1.4ex) -- ++(1ex,0);
+ \draw (0.25ex,1ex) -- ++(1ex,0);
+ \draw (0.25ex,0.6ex) -- ++(1ex,0);
+ \end{tikzpicture}%
+}
+\tw@make@key@macro*{\winmenu}
+
+\tw@make@key@box{backspace}{%
+ \begin{tikzpicture}[yshift=0.5ex,baseline={(0,0)},thick]
+ \draw [<-] (0,0) -- (1.25em,0);
+ \end{tikzpicture}%
+}
+\tw@make@key@macro{\backspace}
+
+\providecommand{\delname}{Del.}
+\def\tw@mk@del@win{\delname}
+\tw@define@mackey{%
+ \def\tw@mk@del@mac{\delname}%
+}{%
+ \tw@make@key@box{del@mac}{%
+ \begin{tikzpicture}
+ \draw [semithick] (0,0) -- (1.5ex,0) -- (2ex,0.5ex) --%
+ (1.5ex,1ex) -- (0,1ex) -- cycle;
+ \draw (0.5ex,0.2ex) -- (1.1ex,0.8ex);
+ \draw (0.5ex,0.8ex) -- (1.1ex,0.2ex);
+ \end{tikzpicture}%
+ }%
+}
+\tw@make@key@macro*{\del}
+\tw@make@key@box{arrowkeyup}{%
+ \begin{tikzpicture}[yshift=-0.2ex,baseline={(0,0)}]
+ \draw [->,semithick] (0,0) -- (0,0.8em);
+ \end{tikzpicture}%
+}
+\tw@make@key@macro{\arrowkeyup}
+
+\tw@make@key@box{arrowkeydown}{%
+ \begin{tikzpicture}[yshift=0.7em,baseline={(0,0)}]
+ \draw [->,semithick] (0,0) -- (0,-0.8em);
+ \end{tikzpicture}%
+}
+\tw@make@key@macro{\arrowkeydown}
+
+\tw@make@key@box{arrowkeyright}{%
+ \begin{tikzpicture}[yshift=0.5ex,baseline={(0,0)}]
+ \draw [->,semithick] (0,0) -- (0.8em,0);
+ \end{tikzpicture}%
+}
+\tw@make@key@macro{\arrowkeyright}
+
+\tw@make@key@box{arrowkeyleft}{%
+ \begin{tikzpicture}[yshift=0.5ex,baseline={(0,0)}]
+ \draw [->,semithick] (0,0) -- (-0.8em,0);
+ \end{tikzpicture}%
+}
+\tw@make@key@macro{\arrowkeyleft}
+\newcommand{\arrowkey}[1]{%
+ \IfStrEq{^}{#1}{\arrowkeyup}{%
+ \IfStrEq{v}{#1}{\arrowkeydown}{%
+ \IfStrEq{<}{#1}{\arrowkeyleft}{%
+ \IfStrEq{>}{#1}{\arrowkeyright}{%
+ \tw@mk@error{Wrong value '#1' for \string\arrowkey\MessageBreak
+ Possible values are '^', 'v', '<' or '>'}%
+ }%
+ }%
+ }%
+ }%
+}
+\fi
+\endinput
+%%
+%% End of file `menukeys.sty'.