texlive[64311] Master/texmf-dist: menukeys (7sep22)

commits+karl at tug.org commits+karl at tug.org
Wed Sep 7 22:43:08 CEST 2022


Revision: 64311
          http://tug.org/svn/texlive?view=revision&revision=64311
Author:   karl
Date:     2022-09-07 22:43:08 +0200 (Wed, 07 Sep 2022)
Log Message:
-----------
menukeys (7sep22)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/menukeys/menukeys.pdf
    trunk/Master/texmf-dist/source/latex/menukeys/menukeys.dtx
    trunk/Master/texmf-dist/source/latex/menukeys/menukeys.ins
    trunk/Master/texmf-dist/tex/latex/menukeys/menukeys.sty

Added Paths:
-----------
    trunk/Master/texmf-dist/tex/latex/menukeys/menukeys-2020-12-19.sty

Modified: trunk/Master/texmf-dist/doc/latex/menukeys/menukeys.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/menukeys/menukeys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/menukeys/menukeys.dtx	2022-09-07 20:42:47 UTC (rev 64310)
+++ trunk/Master/texmf-dist/source/latex/menukeys/menukeys.dtx	2022-09-07 20:43:08 UTC (rev 64311)
@@ -9,9 +9,14 @@
 %%
 %%    https://www.latex-project.org/lppl.txt
 %%
-%<package>\NeedsTeXFormat{LaTeX2e}[2009/01/01]
-%<package>\ProvidesPackage{menukeys}
-%<package>  [2020/12/19 v1.6.1 -- A package to format menus, paths and shortcuts]
+%<pkg>\NeedsTeXFormat{LaTeX2e}[2009/01/01]
+%<rbk>\providecommand\DeclareRelease[3]{}
+%<rbk>\providecommand\DeclareCurrentRelease[2]{}
+%<rbk>\DeclareRelease{v1.6.1}{2020-12-19}{menukeys-2020-12-19.sty}
+%<rbk>\DeclareCurrentRelease{v1.6.2}{2022-07-01}
+%<pkg>\ProvidesPackage{menukeys}
+%<cur>  [2022/07/01 v1.6.2 -- A package to format menus, paths and shortcuts]
+%<161>  [2020/12/19 v1.6.1 -- A package to format menus, paths and shortcuts]
 %
 %<*driver>
 \documentclass{ltxdoc}
@@ -34,6 +39,15 @@
    urlcolor=darkred,
    bookmarksopen=true,
    bookmarksdepth=10,
+   pdftitle={The menukeys package},
+   pdfsubject={%
+     Format menu sequences, paths and keystrokes from lists.%
+   },
+   pdfauthor={%
+     Tobias Weh (mail at tobiw.de), Jonathan P. Spratte
+     (jspratte at yahoo.de)%
+   },
+   pdfkeywords={The menukeys package, LaTeX}
 }{hyperref}
 \PassOptionsToPackage{hyphens}{url}
 \usepackage{hypdoc}
@@ -211,7 +225,7 @@
 % \changes{v1.2}{2013/07/23}{Added \cs{SPACE} and \cs{spacename}}
 % \changes{v1.2}{2013/07/23}{Added \cs{normalsize} before symbol definitions to make
 %                            the \texttt{ex} unit available}
-% \changes{v1.2a}{2013/09/10}{Replaced obsolete \cs{tikzsytle}}
+% \changes{v1.2a}{2013/09/10}{Replaced obsolete \cs{tikzstyle}}
 % \changes{v1.2a}{2013/09/10}{Added braces to the \cs{tikz} macro since the parser
 %                             seems to crash with \pkg{babel}'s french option otherwise.}
 % \changes{v1.3}{2014/03/10}{Improved key symbols.}
@@ -230,7 +244,7 @@
 % \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb}
 % \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt}
 % \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt}
-% \DoNotIndex{\@xxpt,\@xxvpt,\\,\,\addpenalty,\addtolength,\addvspace}
+% \DoNotIndex{\@xxpt,\@xxvpt,\\,\,,\addpenalty,\addtolength,\addvspace}
 % \DoNotIndex{\advance,\ast,\begin,\begingroup,\bfseries,\bgroup,\box}
 % \DoNotIndex{\bullet}
 % \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption}
@@ -520,11 +534,11 @@
 %    \item [sep] is the code executed between the lists elements, e.g. some
 %       space or a symbol.
 %    \item [mid] is the style for all elements between the first and the
-%       last one. It has to be a \TikZ sytle.
+%       last one. It has to be a \TikZ style.
 %    \item [last] is the style for the last list element.
-%       It has to be a \TikZ sytle.
+%       It has to be a \TikZ style.
 %    \item [single] this style is used if the list contains only one element.
-%       It has to be a \TikZ sytle.
+%       It has to be a \TikZ style.
 %    \item [post] is the code which is executed after a menu macro.
 %    \item [theme] is a color theme (see section~\ref{colors}).
 % \end{description}
@@ -760,9 +774,12 @@
 % If you find something to add to this list please send me an e-mail or report a
 % bug on GitHub (\url{https://github.com/tweh/menukeys}).
 %
-% \StopEventually{\clearpage\PrintChanges\PrintIndex}
+% \StopEventually{\clearpage\PrintChanges\clearpage\PrintIndex}
 %
 % \section{Implementation}
+%    \begin{macrocode}
+%<*pkg>
+%    \end{macrocode}
 % \subsection{Required packages}
 % \changes{v1.6}{2020/10/27}{Don't load \pkg{catoptions}}
 % Load the required packages
@@ -1107,12 +1124,12 @@
 }
 %    \end{macrocode}
 % \end{macro}
-% \begin{macro}{\tw at declare@sytle}\begin{macro}{\tw at declare@sytle at extra@args}
+% \begin{macro}{\tw at declare@style}\begin{macro}{\tw at declare@style at extra@args}
 % The next step is to create the extended command. This command must have
 % ten arguments (including the star) so we have to define a helping macro
 % to grab the last two macros.
 %    \begin{macrocode}
-\DeclareDocumentCommand{\tw at declare@sytle at extra@args}{%
+\DeclareDocumentCommand{\tw at declare@style at extra@args}{%
    O{\tw at default@post} m
 }{%
    \csdef{tw at style@\tw at current@style @post}{#1}%
@@ -1146,7 +1163,7 @@
          \tikz[baseline=(tw at node.base)]{%
          \node(tw at node)[#7]{\strut\CurrentMenuElement};}}%
    }%
-   \tw at declare@sytle at extra@args%
+   \tw at declare@style at extra@args%
 }
 %    \end{macrocode}
 % \end{macro}\end{macro}
@@ -1430,7 +1447,15 @@
    \hspace{0.2ex}\hspace{0.1em plus 0.1em minus 0.05em}%
    \textcolor{\usemenucolor{b}}{\raisebox{0.25ex}{\sffamily\relsize{-2}+}}%
    \hspace{0.1em plus 0.1em minus 0.05em}%
-][\hspace{0.2ex}]{gray}
+%    \end{macrocode}
+% \changes{v1.6.2}{2022/07/01}{changed \cs{hspace} to \cs{kern}}
+%    \begin{macrocode}
+%</pkg>
+%<cur>][\kern0.2ex\relax]{gray}
+%<161>][\hspace{0.2ex}]{gray}
+%<*pkg>
+%    \end{macrocode}
+%    \begin{macrocode}
 
 \tikzset{tw at angularkeys@base/.style={%
    tw at set@tikz at colors,
@@ -1472,7 +1497,15 @@
    \hspace{0.2ex}\hspace{0.1em plus 0.1em minus 0.05em}%
    \textcolor{\usemenucolor{b}}{\raisebox{0.25ex}{\sffamily\relsize{-2}+}}%
    \hspace{0.1em plus 0.1em minus 0.05em}%
-][\hspace{0.2ex}]{gray}
+%    \end{macrocode}
+% \changes{v1.6.2}{2022/07/01}{changed \cs{hspace} to \cs{kern}}
+%    \begin{macrocode}
+%</pkg>
+%<cur>][\kern0.2ex\relax]{gray}
+%<161>][\hspace{0.2ex}]{gray}
+%<*pkg>
+%    \end{macrocode}
+%    \begin{macrocode}
 
 \tikzset{tw at typewriterkeys@base/.style={%
    tw at set@tikz at colors,
@@ -2110,6 +2143,9 @@
 \fi
 %    \end{macrocode}
 %
+%    \begin{macrocode}
+%</pkg>
+%    \end{macrocode}
 %
 % \Finale
 \endinput

Modified: trunk/Master/texmf-dist/source/latex/menukeys/menukeys.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/menukeys/menukeys.ins	2022-09-07 20:42:47 UTC (rev 64310)
+++ trunk/Master/texmf-dist/source/latex/menukeys/menukeys.ins	2022-09-07 20:43:08 UTC (rev 64311)
@@ -36,7 +36,11 @@
 \endpreamble
 
 \askforoverwritefalse
-\generate{\file{menukeys.sty}{\from{menukeys.dtx}{package}}}
+\generate
+  {%
+    \file{menukeys.sty}{\from{menukeys.dtx}{pkg,cur,rbk}}%
+    \file{menukeys-2020-12-19.sty}{\from{menukeys.dtx}{pkg,161}}%
+  }
 
 \obeyspaces
 \Msg{****************************************************}

Added: trunk/Master/texmf-dist/tex/latex/menukeys/menukeys-2020-12-19.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/menukeys/menukeys-2020-12-19.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/menukeys/menukeys-2020-12-19.sty	2022-09-07 20:43:08 UTC (rev 64311)
@@ -0,0 +1,1008 @@
+%%
+%% This is file `menukeys-2020-12-19.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% menukeys.dtx  (with options: `pkg,161')
+%% 
+%% This is a generated file.
+%% 
+%% Copyright (C) 2016 by Tobias Weh
+%%                       www.tobiw.de/en
+%% 
+%% This file may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in:
+%% 
+%%   https://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.
+%% 
+%% File: menukeys.dtx Copyright (c) Tobias Weh
+%%
+%% This file may be distributed and/or modified under the conditions of the
+%% LaTeX Project Public License (LPPL), either version 1.3c of this
+%% license or (at your option) any later version.  The latest version
+%% of this license is in the file
+%%
+%%    https://www.latex-project.org/lppl.txt
+%%
+\NeedsTeXFormat{LaTeX2e}[2009/01/01]
+\ProvidesPackage{menukeys}
+  [2020/12/19 v1.6.1 -- 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}
+\ExplSyntaxOn
+\cs_new_eq:NN \tw at mk@trimspaces \tl_trim_spaces:n
+\cs_new_eq:NN \tw at mk@exp at Nnno   \exp_args:Nnno
+\cs_new_eq:NN \tw at mk@string     \cs_to_str:N
+\prg_generate_conditional_variant:Nnn \tl_if_in:nn { xx } { TF }
+\cs_new:Npn \tw at mk@xifinsetTF #1 #2
+  {
+    \tl_if_in:xxTF {#2} {#1}
+  }
+\cs_new:Npn \tw at mk@iflastindris
+  {
+    \seq_if_empty:NTF \l__twmk_indris_seq
+  }
+\seq_new:N \l__twmk_indris_seq
+\int_new:N \l__twmk_indris_int
+\tl_new:N  \l__twmk_indris_tl
+\cs_new_eq:NN \tw at mk@indrisnr \l__twmk_indris_int
+\seq_new:N \l__twmk_indris_seqstack_seq
+\seq_new:N \l__twmk_indris_intstack_seq
+\cs_new_protected:Npn \__twmk_pushseq:
+  {
+    \seq_push:No \l__twmk_indris_seqstack_seq \l__twmk_indris_seq
+  }
+\cs_new_protected:Npn \__twmk_pushint:
+  {
+    \seq_push:NV \l__twmk_indris_intstack_seq \l__twmk_indris_int
+  }
+\cs_new_protected:Npn \__twmk_popseq:
+  {
+    \seq_if_empty:NTF \l__twmk_indris_seqstack_seq
+      { \seq_clear:N \l__twmk_indris_seq }
+      { \seq_pop:NN \l__twmk_indris_seqstack_seq \l__twmk_indris_seq }
+  }
+\cs_new_protected:Npn \__twmk_popint:
+  {
+    \seq_if_empty:NTF \l__twmk_indris_intstack_seq
+      { \int_zero:N \l__twmk_indris_int }
+      {
+        \group_begin:
+          \seq_pop:NN \l__twmk_indris_intstack_seq \l__twmk_indris_tl
+          \exp_args:NNNo
+        \group_end:
+        \int_set:Nn \l__twmk_indris_int \l__twmk_indris_tl
+      }
+  }
+\cs_generate_variant:Nn \seq_set_split:Nnn { Noo }
+\cs_new_protected:Npn \tw at mk@indrisloop #1 #2 #3
+  {
+    \__twmk_pushseq:
+    \__twmk_pushint:
+    \seq_set_split:Noo \l__twmk_indris_seq {#1} {#2}
+    \int_zero:N \l__twmk_indris_int
+    \bool_do_while:nn { \bool_not_p:n { \seq_if_empty_p:N \l__twmk_indris_seq } }
+      {
+        \int_incr:N \l__twmk_indris_int
+        \seq_pop_left:NN \l__twmk_indris_seq \l__twmk_indris_tl
+        \exp_args:No #3 \l__twmk_indris_tl
+      }
+    \__twmk_popseq:
+    \__twmk_popint:
+  }
+\ExplSyntaxOff
+\newcommand*{\tw at mk@error}[2][Please consult the manual for more information.]{%
+   \PackageError{menukeys}{#2}{#1}%
+}
+\newcommand*{\tw at mk@warning}[1]{%
+   \PackageWarning{menukeys}{#1}%
+}
+\newcommand*{\tw at mk@warning at noline}[1]{%
+   \PackageWarningNoLine{menukeys}{#1}%
+}
+\def\tw at mk@tempa{}
+\def\tw at mk@tempb{}
+\DeclareDocumentCommand{\tw at mk@gobble at args}{m}{%
+   \RenewDocumentCommand{\tw at mk@tempa}{#1}{}%
+   \tw at mk@tempa%
+}
+\RequirePackage{kvoptions}
+\SetupKeyvalOptions{
+  family=tw at mk,
+  prefix=tw at mk@
+}
+\DeclareBoolOption[true]{definemenumacros}
+\DeclareBoolOption[true]{definekeys}
+\DeclareBoolOption[false]{hyperrefcolorlinks}
+\DeclareStringOption[mac]{os}
+\DeclareStringOption[symbols]{mackeys}
+\ProcessKeyvalOptions{tw at mk}\relax
+\IfSubStr{.mac.win.}{.\tw at mk@os.}{}{%
+   \tw at mk@error{Unknown value for option 'os'\MessageBreak
+   Possible values are 'mac' or 'win'.}%
+}
+\IfSubStr{.symbols.text.}{.\tw at mk@mackeys.}{}{%
+   \tw at mk@error{Unknown value for option 'mackeys'\MessageBreak
+   Possible values are 'symbols' or 'text'.}%
+}
+\iftw at mk@hyperrefcolorlinks
+  \tw at mk@warning{The option `hyperrefcolorlinks' is obsolete}
+  \@ifpackageloaded{hyperref}
+    {\hypersetup{colorlinks}}
+    {\PassOptionsToPackage{colorlinks}{hyperref}}
+\fi
+\newcommand*{\tw at make@color at theme}[8]{%
+   \definecolor{tw at color@theme@#1 at bg}{#2}{#3}%
+   \definecolor{tw at color@theme@#1 at br}{#2}{#4}%
+   \definecolor{tw at color@theme@#1 at txt}{#2}{#5}%
+   \definecolor{tw at color@theme@#1 at a}{#2}{#6}%
+   \definecolor{tw at color@theme@#1 at b}{#2}{#7}%
+   \definecolor{tw at color@theme@#1 at c}{#2}{#8}%
+}
+\NewDocumentCommand{\newmenucolortheme}{ m m m m m O{#3} O{#4} O{#5} }{%
+   \@ifundefinedcolor{tw at color@theme@#1 at bg}{%
+      \tw at make@color at theme{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}%
+   }{%
+      \tw at mk@error{Color theme '#1' already defined!\MessageBreak
+      Use \string\renewmenucolortheme\space instead.}%
+   }
+}
+\NewDocumentCommand{\renewmenucolortheme}{ m m m m m O{#3} O{#4} O{#5} }{%
+   \tw at make@color at theme{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}%
+}
+\newcommand*{\changemenucolor}[4]{%
+   \IfSubStr{ bg br txt }{ #2 }{%
+      \definecolor{tw at color@theme@#1@#2}{#3}{#4}%
+   }{%
+      \tw at mk@error{No such color element ('#2')!\MessageBreak
+      Possible values are bg, br and txt.}
+   }%
+}
+\newcommand*{\copymenucolortheme}[2]{%
+   \@ifundefinedcolor{tw at color@theme@#1 at bg}{%
+      \colorlet{tw at color@theme@#1 at bg}{tw at color@theme@#2 at bg}%
+      \colorlet{tw at color@theme@#1 at br}{tw at color@theme@#2 at br}%
+      \colorlet{tw at color@theme@#1 at txt}{tw at color@theme@#2 at txt}%
+      \colorlet{tw at color@theme@#1 at a}{tw at color@theme@#2 at a}%
+      \colorlet{tw at color@theme@#1 at b}{tw at color@theme@#2 at b}%
+      \colorlet{tw at color@theme@#1 at c}{tw at color@theme@#2 at c}%
+   }{%
+      \tw at mk@error{Color theme '#1' already defined!\MessageBreak
+      Use \string\renewmenucolortheme\space instead.}
+   }
+}
+\newcommand{\changemenucolortheme}[2]{%
+   \ifcsundef{tw at style@#1 at pre}{%
+      \tw at mk@error{Style '#1' undefined!\MessageBreak
+      Maybe you misspelled it?}%
+   }{%
+      \@ifundefinedcolor{tw at color@theme@#2 at bg}{%
+         \tw at mk@error{Color theme '#2' is not defined!}%
+      }{%
+         \csdef{tw at style@#1 at color@theme}{#2}%
+      }%
+   }%
+}
+\newcommand{\usemenucolor}[1]{%
+   tw at color@theme@\tw at current@color at theme @#1%
+}
+\newmenucolortheme{gray}{gray}{0.95}{0.3}{0}[0.95][0][0]
+\newmenucolortheme{blacknwhite}{gray}{1}{0}{0}[1][0][0]
+\newcommand{\tw at default@sep}{%
+   \hspace{0.2em plus 0.1em minus 0.5em}%
+}
+\newcommand{\tw at default@pre}{}
+\newcommand{\tw at default@post}{}
+\DeclareDocumentCommand{\tw at declare@style at simple}{%
+   s m O{\tw at default@pre} m O{\tw at default@sep} O{\tw at default@post} m
+}{%
+   \csdef{tw at style@#2 at color@theme}{#7}%
+   \csdef{tw at style@#2 at pre}{#3}%
+   \csdef{tw at style@#2 at sep}{#5}%
+   \csdef{tw at style@#2 at post}{#6}%
+   \IfBooleanTF{#1}{%
+      \csdef{tw at style@#2 at single}{#4}%
+      \csdef{tw at style@#2 at first}{#4}%
+      \csdef{tw at style@#2 at mid}{#4}%
+      \csdef{tw at style@#2 at last}{#4}%
+   }{%
+      \csdef{tw at style@#2 at single}{%
+         \tikz[baseline=(tw at node.base)]{%
+         \node(tw at node)[#4]{\strut\CurrentMenuElement};}}%
+      \csdef{tw at style@#2 at first}{%
+         \tikz[baseline=(tw at node.base)]{%
+         \node(tw at node)[#4]{\strut\CurrentMenuElement};}}%
+      \csdef{tw at style@#2 at mid}{%
+         \tikz[baseline=(tw at node.base)]{%
+         \node(tw at node)[#4]{\strut\CurrentMenuElement};}}%
+      \csdef{tw at style@#2 at last}{%
+         \tikz[baseline=(tw at node.base)]{%
+         \node(tw at node)[#4]{\strut\CurrentMenuElement};}}%
+   }%
+}
+\DeclareDocumentCommand{\tw at declare@style at extra@args}{%
+   O{\tw at default@post} m
+}{%
+   \csdef{tw at style@\tw at current@style @post}{#1}%
+   \csdef{tw at style@\tw at current@style @color at theme}{#2}%
+}
+\DeclareDocumentCommand{\tw at declare@style}{%
+   s m O{\tw at default@pre} m O{\tw at default@sep} m m m
+}{%
+   \def\tw at current@style{#2}
+   \csdef{tw at style@#2 at pre}{#3}%
+   \csdef{tw at style@#2 at sep}{#5}%
+   \IfBooleanTF{#1}{%
+      \csdef{tw at style@#2 at single}{#8}%
+      \csdef{tw at style@#2 at first}{#4}%
+      \csdef{tw at style@#2 at mid}{#6}%
+      \csdef{tw at style@#2 at last}{#7}%
+   }{%
+      \csdef{tw at style@#2 at single}{%
+         \tikz[baseline=(tw at node.base)]{%
+         \node(tw at node)[#8]{\strut\CurrentMenuElement};}}%
+      \csdef{tw at style@#2 at first}{%
+         \tikz[baseline=(tw at node.base)]{%
+         \node(tw at node)[#4]{\strut\CurrentMenuElement};}}%
+      \csdef{tw at style@#2 at mid}{%
+         \tikz[baseline=(tw at node.base)]{%
+         \node(tw at node)[#6]{\strut\CurrentMenuElement};}}%
+      \csdef{tw at style@#2 at last}{%
+         \tikz[baseline=(tw at node.base)]{%
+         \node(tw at node)[#7]{\strut\CurrentMenuElement};}}%
+   }%
+   \tw at declare@style at extra@args%
+}
+\NewDocumentCommand{\newmenustylesimple}{s m}{%
+   \ifcsundef{tw at style@#2 at pre}{%
+      \IfBooleanTF{#1}{%
+         \tw at declare@style at simple*{#2}%
+      }{%
+         \tw at declare@style at simple{#2}%
+      }%
+   }{%
+      \tw at mk@error{Style '#2' already defined!\MessageBreak
+      Use \string\renewmenustylesimple\space instead.}%
+      \tw at mk@gobble at args{o m o o m}%
+   }%
+}
+\NewDocumentCommand{\renewmenustylesimple}{s m}{%
+   \IfBooleanTF{#1}{%
+      \tw at declare@style at simple*{#2}%
+   }{%
+     \tw at declare@style at simple{#2}%
+   }%
+}
+\NewDocumentCommand{\providemenustylesimple}{s m}{%
+   \ifcsundef{tw at style@#2 at pre}{%
+      \IfBooleanTF{#1}{%
+         \tw at declare@style at simple*{#2}%
+      }{%
+         \tw at declare@style at simple{#2}%
+      }%
+   }{%
+      \tw at mk@warning{Trying to provide style '#2' failed,\MessageBreak
+      because it's already defined.\MessageBreak
+      You may use \string\renewmenustylesimple\space instead.}%
+      \tw at mk@gobble at args{o m o o m}%
+   }%
+}
+
+\NewDocumentCommand{\newmenustyle}{s m}{%
+   \ifcsundef{tw at style@#2 at pre}{%
+      \IfBooleanTF{#1}{%
+         \tw at declare@style*{#2}%
+      }{%
+         \tw at declare@style{#2}%
+      }%
+   }{%
+      \tw at mk@error{Style '#2' already defined!\MessageBreak
+      Use \string\renewmenustyle\space instead.}%
+      \tw at mk@gobble at args{o m o m m m o m}%
+   }%
+}
+\NewDocumentCommand{\renewmenustyle}{s m}{%
+   \IfBooleanTF{#1}{%
+      \tw at declare@style*{#2}%
+   }{%
+     \tw at declare@style{#2}%
+   }%
+}
+\NewDocumentCommand{\providemenustyle}{s m}{%
+   \ifcsundef{tw at style@#2 at pre}{%
+      \IfBooleanTF{#1}{%
+         \tw at declare@style*{#2}%
+      }{%
+         \tw at declare@style{#2}%
+      }%
+   }{%
+      \tw at mk@warning{Trying to provide style #2 failed,\MessageBreak
+      because it's already defined.\MessageBreak
+      You may use \string\renewmenustyle\space instead.}%
+      \tw at mk@gobble at args{o m o m m m o m}%
+   }%
+}
+\newcommand*{\copymenustyle}[2]{%
+   \ifcsundef{tw at style@#1 at pre}{%
+      \ifcsundef{tw at style@#2 at pre}{%
+         \tw at mk@error{Can't copy not existing style ('#2')!}%
+      }{%
+         \csletcs{tw at style@#1 at pre}{tw at style@#2 at pre}%
+         \csletcs{tw at style@#1 at post}{tw at style@#2 at post}%
+         \csletcs{tw at style@#1 at sep}{tw at style@#2 at sep}%
+         \csletcs{tw at style@#1 at single}{tw at style@#2 at single}%
+         \csletcs{tw at style@#1 at first}{tw at style@#2 at first}%
+         \csletcs{tw at style@#1 at mid}{tw at style@#2 at mid}%
+         \csletcs{tw at style@#1 at last}{tw at style@#2 at last}%
+         \csletcs{tw at style@#1 at color@theme}{tw at style@#2 at color@theme}
+      }%
+   }{%
+      \tw at mk@error{Style '#1' already exists!}%
+   }%
+}
+\NewDocumentCommand{\changemenuelement}{s m m m}{%
+   \ifcsundef{tw at style@#2 at pre}{%
+      \tw at mk@error{Style '#2' undefined.}%
+   }{%
+      \IfSubStr{ single first middle last pre post sep }{ #3 }{%
+         \IfBooleanTF{#1}{%
+            \csdef{tw at style@#2@#3}{#4}%
+         }{%
+            \IfSubStr{ pre post sep }{ #3 }{%
+               \csdef{tw at style@#2@#3}{#4}%
+            }{%
+            \csdef{tw at style@#2@#3}{%
+               \tikz[baseline=(tw at node.base)]{%
+               \node(tw at node)[#4]{\strut\color{\usemenucolor{txt}}\CurrentMenuElement};}}%
+            }%
+         }%
+      }{\tw at mk@error{No element '#3'. Possible values are\MessageBreak
+        single, first, middle, last, pre, post or sep.}}%
+   }%
+}
+\tikzset{tw at set@tikz at colors/.style={%
+   draw=\usemenucolor{br},
+   fill=\usemenucolor{bg},
+   text=\usemenucolor{txt},
+}}
+\tikzset{tw at menus@base/.style={%
+   tw at set@tikz at 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 at declare@style*{menus}{%
+   \tikz[baseline={($(tw at node.base)+(0,-0.2ex)$)}]{%
+      \node(tw at node)[tw at menus@base,signal to=east]%
+      {\strut\color{\usemenucolor{txt}}\CurrentMenuElement};}%
+}[\hspace{-0.2em}\hspace{0em plus 0.1em minus 0.05em}]%
+{%
+   \tikz[baseline={($(tw at node.base)+(0,-0.2ex)$)}]{%
+      \node(tw at node)[tw at menus@base,signal from=west,signal to=east]%
+      {\strut\color{\usemenucolor{txt}}\CurrentMenuElement};}%
+}{%
+   \tikz[baseline={($(tw at node.base)+(0,-0.2ex)$)}]{%
+      \node(tw at node)[tw at menus@base,signal from=west,]%
+      {\strut\color{\usemenucolor{txt}}\CurrentMenuElement};}%
+}{%
+   \tikz[baseline={($(tw at node.base)+(0,-0.2ex)$)}]{%
+      \node(tw at node)[tw at menus@base]{\strut\color{\usemenucolor{txt}}\CurrentMenuElement};}%
+}{gray}
+
+\tikzset{tw at roundedmenus@base/.style={%
+   tw at set@tikz at 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 at declare@style*{roundedmenus}{%
+   \tikz[baseline={($(tw at node.base)+(0,-0.2ex)$)}]{%
+      \node(tw at node)[tw at roundedmenus@base,signal to=east]%
+      {\strut\color{\usemenucolor{txt}}\CurrentMenuElement};}%
+}[\hspace{-0.2em}\hspace{0em plus 0.1em minus 0.05em}]%
+{%
+   \tikz[baseline={($(tw at node.base)+(0,-0.2ex)$)}]{%
+      \node(tw at node)[tw at roundedmenus@base,signal from=west,signal to=east]%
+      {\strut\color{\usemenucolor{txt}}\CurrentMenuElement};}%
+}{%
+   \tikz[baseline={($(tw at node.base)+(0,-0.2ex)$)}]{%
+      \node(tw at node)[tw at roundedmenus@base,signal from=west,]%
+      {\strut\color{\usemenucolor{txt}}\CurrentMenuElement};}%
+}{%
+   \tikz[baseline={($(tw at node.base)+(0,-0.2ex)$)}]{%
+      \node(tw at node)[tw at roundedmenus@base]{\strut\color{\usemenucolor{txt}}\CurrentMenuElement};}%
+}{gray}
+
+\tikzset{tw at angularmenus@base/.style={%
+   tw at set@tikz at 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 at declare@style*{angularmenus}{%
+   \tikz[baseline={($(tw at node.base)+(0,-0.2ex)$)}]{%
+      \node(tw at node)[tw at angularmenus@base,signal to=east]%
+      {\strut\color{\usemenucolor{txt}}\CurrentMenuElement};}%
+}[\hspace{-0.2em}\hspace{0em plus 0.1em minus 0.05em}]%
+{%
+   \tikz[baseline={($(tw at node.base)+(0,-0.2ex)$)}]{%
+      \node(tw at node)[tw at angularmenus@base,signal from=west,signal to=east]%
+      {\strut\color{\usemenucolor{txt}}\CurrentMenuElement};}%
+}{%
+   \tikz[baseline={($(tw at node.base)+(0,-0.2ex)$)}]{%
+      \node(tw at node)[tw at angularmenus@base,signal from=west,]%
+      {\strut\color{\usemenucolor{txt}}\CurrentMenuElement};}%
+}{%
+   \tikz[baseline={($(tw at node.base)+(0,-0.2ex)$)}]{%
+      \node(tw at node)[tw at angularmenus@base]{\strut\color{\usemenucolor{txt}}\CurrentMenuElement};}%
+}{gray}
+
+\tikzset{tw at roundedkeys@base/.style={%
+   tw at set@tikz at 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 at declare@style at simple*{roundedkeys}{%
+   \tikz[baseline={($(tw at node.base)+(0,-0.2ex)$)}]{%
+      \node(tw at node)[tw at roundedkeys@base]%
+         {\strut\color{\usemenucolor{txt}}\CurrentMenuElement};}%
+}[%
+   \hspace{0.1em plus 0.1em minus 0.05em}%
+   \textcolor{\usemenucolor{b}}{\raisebox{0.25ex}{\sffamily\relsize{-2}+}}%
+   \hspace{0.1em plus 0.1em minus 0.05em}%
+]{gray}
+
+\tikzset{tw at shadowedroundedkeys@base/.style={%
+   tw at set@tikz at 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=\usemenucolor{c},
+   },
+}}
+\tw at declare@style at simple*{shadowedroundedkeys}{%
+   \tikz[baseline={($(tw at node.base)+(0,-0.2ex)$)}]{%
+      \node(tw at node)[tw at shadowedroundedkeys@base]%
+         {\strut\color{\usemenucolor{txt}}\CurrentMenuElement};%
+   }%
+}[%
+   \hspace{0.2ex}\hspace{0.1em plus 0.1em minus 0.05em}%
+   \textcolor{\usemenucolor{b}}{\raisebox{0.25ex}{\sffamily\relsize{-2}+}}%
+   \hspace{0.1em plus 0.1em minus 0.05em}%
+][\hspace{0.2ex}]{gray}
+
+\tikzset{tw at angularkeys@base/.style={%
+   tw at set@tikz at colors,
+   inner sep=0pt,
+   inner xsep=2pt,
+   text height=1.825ex,
+   text depth=0.7ex,
+   minimum width=1.5em,
+   font=\relsize{-1}\sffamily,
+}}
+\tw at declare@style at simple*{angularkeys}{%
+   \tikz[baseline={($(tw at node.base)+(0,-0.2ex)$)}]{%
+      \node(tw at node)[tw at angularkeys@base]%
+         {\strut\color{\usemenucolor{txt}}\CurrentMenuElement};}%
+}[%
+   \hspace{0.1em plus 0.1em minus 0.05em}%
+   \textcolor{\usemenucolor{b}}{\raisebox{0.25ex}{\sffamily\relsize{-2}+}}%
+   \hspace{0.1em plus 0.1em minus 0.05em}%
+]{gray}
+
+\tikzset{tw at shadowedangularkeys@base/.style={%
+   tw at set@tikz at 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=\usemenucolor{c},
+   },
+}}
+\tw at declare@style at simple*{shadowedangularkeys}{%
+   \tikz[baseline={($(tw at node.base)+(0,-0.2ex)$)}]{%
+      \node(tw at node)[tw at shadowedangularkeys@base]%
+         {\strut\color{\usemenucolor{txt}}\CurrentMenuElement};}%
+}[%
+   \hspace{0.2ex}\hspace{0.1em plus 0.1em minus 0.05em}%
+   \textcolor{\usemenucolor{b}}{\raisebox{0.25ex}{\sffamily\relsize{-2}+}}%
+   \hspace{0.1em plus 0.1em minus 0.05em}%
+][\hspace{0.2ex}]{gray}
+
+\tikzset{tw at typewriterkeys@base/.style={%
+   tw at set@tikz at colors,
+   shape=circle,
+   minimum size=2ex,
+   inner sep=0.5pt, outer sep=1pt,
+   font=\ttfamily\relsize{-1},
+}}
+\tw at declare@style at simple*{typewriterkeys}{%
+   \def\tw at typewriterkeys@curr at elem{%
+      \maxsizebox*{2ex}{2ex}{\CurrentMenuElement}%
+   }%
+   \begin{tikzpicture}[baseline={($(tw at node.south)+(0,0.8ex)$)}]%
+      \node(tw at node)[%
+         tw at typewriterkeys@base, inner sep=1.25pt, line width=0.6pt%
+      ]{\color{\usemenucolor{txt}}\tw at typewriterkeys@curr at elem};
+      \node[tw at typewriterkeys@base]%
+         {\color{\usemenucolor{txt}}\tw at typewriterkeys@curr at elem};
+   \end{tikzpicture}%
+}[%
+   \hspace{0.2ex}\hspace{0.1em plus 0.1em minus 0.05em}%
+   \textcolor{\usemenucolor{b}}{\raisebox{0.25ex}{\sffamily\relsize{-2}+}}%
+   \hspace{0.1em plus 0.1em minus 0.05em}%
+]{blacknwhite}
+
+\tw at declare@style at simple*{paths}{%
+   {\ttfamily\color{\usemenucolor{txt}}\CurrentMenuElement}%
+}[%
+   \hspace{0.2em plus 0.1em}%
+   \raisebox{0.08ex}{%
+      \tikz{\fill[\usemenucolor{c}] (0,0) -- (0.5ex,0.5ex)%
+                -- (0,1ex) -- cycle;}%
+   }%
+   \hspace{0.2em plus 0.1em}%
+]{blacknwhite}
+
+\newcounter{tw at hyphen@char at num}
+\newif\if at tw@hyphenatepaths at warnig
+\@tw at hyphenatepaths@warnigtrue
+\tw at declare@style at simple*{hyphenatepaths}{%
+   {\ttfamily
+    \IfStrEq{T1}{\encodingdefault}{%
+       \setcounter{tw at hyphen@char at num}{23}%
+    }{%
+       \IfStrEq{OT1}{\encodingdefault}{%
+          \setcounter{tw at hyphen@char at num}{255}%
+       }{%
+          \if at tw@hyphenatepaths at warnig%
+          \tw at mk@warning{The hyphenatepaths styles will probably only\MessageBreak
+          work with T1 or OT1 encoding.}%
+          \fi\global\@tw at hyphenatepaths@warnigfalse%
+       }%
+    }%
+    \hyphenchar\font=\value{tw at hyphen@char at num}\relax
+    \color{\usemenucolor{txt}}%
+    \CurrentMenuElement}%
+}[%
+   \hspace{0.2em plus 0.1em}%
+   \raisebox{0.08ex}{%
+      \tikz{\fill[\usemenucolor{c}] (0,0) -- (0.5ex,0.5ex)%
+                -- (0,1ex) -- cycle;}%
+   }%
+   \hspace{0.2em plus 0.1em}%
+]{blacknwhite}
+
+\NewDocumentCommand{\drawtikzfolder}{O{white} O{black}}{%
+   \begin{tikzpicture}[rounded corners=0.02ex,scale=0.7]
+      \draw [#2] (0,0) -- (1em,0) -- (1em,1.5ex) -- (0.5em,1.5ex) -- %
+            (0.4em,1.7ex) -- (0.1em,1.7ex) -- (0,1.5ex) -- cycle;
+      \draw [#2,fill=#1] (0,0) -- (1em,0) -- (0.85em,1.15ex) -- %
+            ++(-1em,0) -- cycle;
+   \end{tikzpicture}%
+}
+
+\copymenustyle{pathswithfolder}{paths}
+\changemenuelement{pathswithfolder}{pre}{%
+   \drawtikzfolder[\usemenucolor{a}][\usemenucolor{b}]%
+   \hspace{0.2em plus 0.1em}%
+}
+
+\copymenustyle{pathswithblackfolder}{paths}
+\changemenuelement{pathswithblackfolder}{pre}{%
+   \drawtikzfolder[\usemenucolor{c}][\usemenucolor{b}]%
+   \hspace{0.2em plus 0.1em}%
+}
+
+\copymenustyle{hyphenatepathswithfolder}{hyphenatepaths}
+\changemenuelement{hyphenatepathswithfolder}{pre}{%
+   \drawtikzfolder[\usemenucolor{a}][\usemenucolor{b}]%
+   \hspace{0.2em plus 0.1em}%
+}
+
+\copymenustyle{hyphenatepathswithblackfolder}{hyphenatepaths}
+\changemenuelement{hyphenatepathswithblackfolder}{pre}{%
+   \drawtikzfolder[\usemenucolor{c}][\usemenucolor{b}]%
+   \hspace{0.2em plus 0.1em}%
+}
+\def\tw at default@input at sep{,}
+\def\CurrentMenuElement{}
+\begingroup
+\lccode`\,=1
+\lowercase{\endgroup
+  \@ifdefinable\tw at mk@test at input@sep
+    {%
+      \protected\def\tw at mk@test at input@sep#1{%
+        \tw at mk@xifinsetTF
+          {,\tw at mk@trimspaces{#1},}{,bslash,backslash,directory,location,}%
+      }%
+    }%
+}
+\newcommand\tw at define@menu at macro[3]
+  {%
+    \IfNoValueTF{#3}
+      {\tw at mk@exp at Nnno\tw at define@menu at macro@{#1}{#2}\tw at default@input at sep}
+      {\tw at define@menu at macro@{#1}{#2}{#3}}%
+  }
+\newcommand\tw at define@menu at macro@[4]
+  {%
+    \ifcsundef{tw at style@#4 at sep}
+      {%
+        \tw at mk@error
+          {%
+            Can't define menu macro \string#2\space,\MessageBreak
+            because the style '#4' is not available!%
+          }%
+      }
+      {%
+        \csdef{tw at parse@menu at list@\tw at mk@string#2}##1%
+          {%
+            \def\CurrentMenuElement{##1}%
+            \tw at mk@iflastindris
+              {%
+                \ifnum\tw at mk@indrisnr=\@ne
+                  \@nameuse{tw at style@#4 at single}%
+                \else
+                  \@nameuse{tw at style@#4 at sep}%
+                  \@nameuse{tw at style@#4 at last}%
+                \fi
+              }
+              {%
+                \ifnum\tw at mk@indrisnr=\@ne
+                  \@nameuse{tw at style@#4 at first}%
+                \else
+                  \@nameuse{tw at style@#4 at sep}%
+                  \@nameuse{tw at style@#4 at mid}%
+                \fi
+              }%
+          }%
+        #1#2{+O{#3}+m}%
+          {%
+            \leavevmode
+            \begingroup
+              \def\tw at current@color at theme
+                {\csname tw at style@#4 at color@theme\endcsname}%
+              \@nameuse{tw at style@#4 at pre}%
+              \tw at mk@test at input@sep{##1}
+                {%
+                  \edef\tw at menu@list{\detokenize{##2}}%
+                  \edef\tw at mk@tempa{\@backslashchar}%
+                }
+                {%
+                  \edef\tw at menu@list{\unexpanded{##2}}%
+                  \edef\tw at mk@tempa{\tw at mk@trimspaces{##1}}%
+                }%
+              \begingroup
+                \letcs{\tw at mk@tempb}{tw at parse@menu at list@\tw at mk@string#2}%
+                \tw at mk@indrisloop\tw at mk@tempa\tw at menu@list\tw at mk@tempb
+              \endgroup
+              \@nameuse{tw at style@#4 at post}%
+            \endgroup
+          }%
+      }%
+  }
+\NewDocumentCommand{\newmenumacro}{m o m}{%
+   \ifcsundef{\tw at mk@string#1}{%
+      \tw at define@menu at macro\NewDocumentCommand{#1}{#2}{#3}%
+   }{%
+      \tw at mk@error{Menu macro '\string#1' already defined!\MessageBreak
+      Use \string\renewmenustyle\space instead.}%
+   }%
+}
+\NewDocumentCommand{\renewmenumacro}{m o m}{%
+   \tw at define@menu at macro\RenewDocumentCommand{#1}{#2}{#3}%
+}
+\NewDocumentCommand{\providemenumacro}{m o m}{%
+   \ifcsundef{\tw at mk@string#1}{%
+      \tw at define@menu at macro\ProvideDocumentCommand{#1}{#2}{#3}%
+   }{%
+      \tw at mk@warning{Menu macro '\string#1' already defined!\MessageBreak
+      Use \string\renewmenustyle\space to redefine it.}%
+   }%
+}
+\iftw at mk@definemenumacros
+\newmenumacro{\menu}[>]{menus}
+\newmenumacro{\directory}[/]{paths}
+\newmenumacro{\keys}[+]{roundedkeys}
+\fi
+\iftw at mk@definekeys
+\NewDocumentCommand{\tw at make@key at box}{m m}{%
+   \csdef{tw at mk@#1}{%
+      #2%
+   }%
+}
+\NewDocumentCommand{\tw at make@key at macro}{s m}{%
+   \IfBooleanTF{#1}{%
+      \expandafter\providecommand\csname\tw at mk@string#2\endcsname{%
+         \expandonce{\maxsizebox{!}{1.8ex}{%
+            \@nameuse{tw at mk@\tw at mk@string#2@\tw at mk@os}}%
+         }%
+      }%
+      \expandafter\providecommand\csname\tw at mk@string#2mac\endcsname{%
+         \expandonce{\maxsizebox{!}{1.8ex}{%
+            \@nameuse{tw at mk@\tw at mk@string#2 at mac}}%
+         }%
+      }%
+      \expandafter\providecommand\csname\tw at mk@string#2win\endcsname{%
+         \expandonce{\maxsizebox{!}{1.8ex}{%
+            \@nameuse{tw at mk@\tw at mk@string#2 at win}}%
+         }%
+      }%
+   }{%
+      \expandafter\providecommand\csname\tw at mk@string#2\endcsname{%
+         \expandonce{\maxsizebox{!}{1.8ex}{%
+            \@nameuse{tw at mk@\tw at mk@string#2}}%
+         }%
+      }%
+   }%
+}
+\newcommand*{\tw at define@mackey}[2]{%
+   \IfStrEq{text}{\tw at mk@mackeys}{#1}{%
+      \IfStrEq{symbols}{\tw at mk@mackeys}{#2}{}%
+   }%
+}
+\tikzset{
+   menukeys key symbol/.style={
+      rounded corners=0pt,
+      line width=0.1ex,
+      baseline={(0,0)},
+   },
+   menukeys thick/.style={line width=0.25ex},
+}
+\normalsize
+\tw at make@key at box{shift}{%
+   \begin{tikzpicture}[yshift=-0.1ex,menukeys key symbol]
+      \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 at make@key at macro{\shift}
+\tw at make@key at box{capslock at mac}{%
+   \begin{tikzpicture}[yshift=-0.1ex,menukeys key symbol]
+      \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 at make@key at box{capslock at win}{%
+   \begin{tikzpicture}[yscale=-1,yshift=-1.8ex,menukeys key symbol]
+      \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 at make@key at macro*{\capslock}
+\tw at make@key at box{tab at mac}{%
+   \begin{tikzpicture}[yshift=0.6ex,menukeys key symbol]
+      \draw [->] (0,0) -- (1em,0);
+      \draw (1em,-0.35ex) -- (1em,0.35ex);
+   \end{tikzpicture}%
+}
+\tw at make@key at box{tab at win}{%
+   \begin{tikzpicture}[yshift=0.1ex,menukeys key symbol]
+      \draw [->] (0.2em,0) -- (1.2em,0);
+      \draw (1.2em,-0.35ex) -- (1.2em,0.35ex);
+      \draw [<-] (0,1ex) -- (1em,1ex);
+      \draw (0,0.65ex) -- (0,1.35ex);
+   \end{tikzpicture}%
+}
+\tw at make@key at macro*{\tab}
+\def\tw at mk@esc at win{Esc}
+\tw at define@mackey{%
+   \def\tw at mk@esc at mac{esc}
+}{%
+   \tw at make@key at box{esc at mac}{%
+      \begin{tikzpicture}[yshift=-0.1ex,menukeys key symbol]
+         \draw [->] (0.5ex,0.5ex) -- ++(135:1.1ex);
+         \draw (0.5ex,0.5ex) ++(105:0.6ex) arc (105:-195:0.6ex);
+      \end{tikzpicture}%
+   }%
+}
+\tw at make@key at macro*{\esc}
+\def\tw at mk@oldesc at win{Esc}
+\tw at define@mackey{%
+   \def\tw at mk@oldesc at mac{esc}
+}{%
+   \tw at make@key at box{oldesc at mac}{%
+      \begin{tikzpicture}[yshift=-0.1ex,menukeys key symbol]
+         \draw [->] (0.5ex,0.5ex) -- ++(45:1.1ex);
+         \draw (0.5ex,0.5ex) ++(15:0.6ex) arc (15:-285:0.6ex);
+      \end{tikzpicture}%
+   }%
+}
+\tw at make@key at macro*{\oldesc}
+\providecommand\ctrlname{Ctrl}
+\def\tw at mk@ctrl at win{\ctrlname}
+\def\tw at mk@ctrl at mac{ctrl}
+\tw at make@key at macro*{\ctrl}
+\def\tw at mk@Alt at win{Alt}
+\tw at define@mackey{%
+   \def\tw at mk@Alt at mac{alt}%
+}{%
+   \tw at make@key at box{Alt at mac}{%
+      \begin{tikzpicture}[yshift=-0.1ex,menukeys key symbol]
+         \draw (0,1ex) -- (0.5ex,1ex) -- (1ex,0.3ex) -- (1.8ex,0.3ex);
+         \draw (0.8ex,1ex) -- (1.8ex,1ex);
+      \end{tikzpicture}%
+   }%
+}
+\tw at make@key at macro*{\Alt}
+\providecommand*{\AltGr}{Alt\,Gr}
+\def\tw at mk@cmd at win{%
+   \tw at mk@warning{'\string\cmd' only for Mac!}%
+}
+\tw at define@mackey{%
+   \def\tw at mk@cmd at mac{cmd}%
+}{%
+   \tw at make@key at box{cmd at mac}{%
+      \begin{tikzpicture}[yshift=-0.15ex,menukeys key symbol]
+         \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 at make@key at macro*{\cmd}
+\providecommand*{\Space}{\expandonce{\rule{3em}{0pt}}}
+\newcommand{\spacename}{Space}
+\providecommand*{\SPACE}{\expandonce{\rule{2em}{0pt}\spacename\rule{2em}{0pt}}}
+\tw at make@key at box{return at mac}{%
+   \begin{tikzpicture}[yshift=0.25ex,menukeys key symbol]
+      \draw [->, rounded corners=0.2ex] (1.25ex,1ex) -| %
+            (2ex,0) -- (0,0);
+   \end{tikzpicture}%
+}
+\tw at make@key at box{return at win}{%
+   \begin{tikzpicture}[menukeys key symbol]
+      \draw [->] (1ex,1.25ex) |- (0,0);
+   \end{tikzpicture}%
+}
+\tw at make@key at macro*{\return}
+\def\tw at mk@enter at win{Enter}
+\tw at make@key at box{enter at mac}{%
+   \begin{tikzpicture}[menukeys key symbol]
+      \draw (0,0) -- (0.5ex,0.5ex) -- (1ex,0);
+      \draw (0,0.55ex) -- (1ex,0.55ex);
+   \end{tikzpicture}%
+}
+\tw at make@key at macro*{\enter}
+\def\tw at mk@winmenu at mac{%
+   \tw at mk@warning{'\string\winmenu' only for Windows!}%
+}
+\tw at make@key at box{winmenu at win}{%
+   \begin{tikzpicture}[yshift=-0.2ex,menukeys key symbol]
+      \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 at make@key at macro*{\winmenu}
+\tw at make@key at box{backspace}{%
+   \begin{tikzpicture}[yshift=0.65ex,menukeys key symbol]
+      \draw [<-,menukeys thick] (0,0) -- (1.35em,0);
+   \end{tikzpicture}%
+}
+\tw at make@key at macro{\backspace}
+\providecommand{\delname}{Del.}
+\def\tw at mk@del at win{\delname}
+\tw at define@mackey{%
+   \def\tw at mk@del at mac{\delname}%
+}{%
+   \tw at make@key at box{del at mac}{%
+      \begin{tikzpicture}[yshift=0.2ex,menukeys key symbol]
+         \draw (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 at make@key at macro*{\del}
+\def\tw at mk@backdel at win{\delname}
+\tw at define@mackey{%
+   \def\tw at mk@backdel at mac{\delname}%
+}{%
+   \tw at make@key at box{backdel at mac}{%
+      \begin{tikzpicture}[yshift=0.2ex,menukeys key symbol]
+         \draw (2ex,0) -- (0.5ex,0) -- (0,0.5ex) --%
+               (0.5ex,1ex) -- (2ex,1ex) -- cycle;
+         \draw (1ex,0.2ex) -- (1.6ex,0.8ex);
+         \draw (1ex,0.8ex) -- (1.6ex,0.2ex);
+      \end{tikzpicture}%
+   }%
+}
+\tw at make@key at macro*{\backdel}
+\tw at make@key at box{arrowkeyup}{%
+   \begin{tikzpicture}[yshift=-0.2ex,menukeys key symbol]
+      \draw [->] (0,0) -- (0,0.8em);
+   \end{tikzpicture}%
+}
+\tw at make@key at macro{\arrowkeyup}
+
+\tw at make@key at box{arrowkeydown}{%
+   \begin{tikzpicture}[yshift=0.7em,menukeys key symbol]
+      \draw [->] (0,0) -- (0,-0.8em);
+   \end{tikzpicture}%
+}
+\tw at make@key at macro{\arrowkeydown}
+
+\tw at make@key at box{arrowkeyright}{%
+   \begin{tikzpicture}[yshift=0.5ex,menukeys key symbol]
+      \draw [->] (0,0) -- (0.8em,0);
+   \end{tikzpicture}%
+}
+\tw at make@key at macro{\arrowkeyright}
+
+\tw at make@key at box{arrowkeyleft}{%
+   \begin{tikzpicture}[yshift=0.5ex,menukeys key symbol]
+      \draw [->] (0,0) -- (-0.8em,0);
+   \end{tikzpicture}%
+}
+\tw at make@key at macro{\arrowkeyleft}
+\newcommand{\arrowkey}[1]{%
+   \IfStrEq{^}{#1}{\arrowkeyup}{%
+      \IfStrEq{v}{#1}{\arrowkeydown}{%
+         \IfStrEq{<}{#1}{\arrowkeyleft}{%
+            \IfStrEq{>}{#1}{\arrowkeyright}{%
+               \tw at mk@error{Wrong value '#1' for \string\arrowkey\MessageBreak
+               Possible values are '^', 'v', '<' or '>'}%
+            }%
+         }%
+      }%
+   }%
+}
+\fi
+\endinput
+%%
+%% End of file `menukeys-2020-12-19.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/menukeys/menukeys-2020-12-19.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/menukeys/menukeys.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/menukeys/menukeys.sty	2022-09-07 20:42:47 UTC (rev 64310)
+++ trunk/Master/texmf-dist/tex/latex/menukeys/menukeys.sty	2022-09-07 20:43:08 UTC (rev 64311)
@@ -4,7 +4,7 @@
 %%
 %% The original source files were:
 %%
-%% menukeys.dtx  (with options: `package')
+%% menukeys.dtx  (with options: `pkg,cur,rbk')
 %% 
 %% This is a generated file.
 %% 
@@ -31,8 +31,12 @@
 %%    https://www.latex-project.org/lppl.txt
 %%
 \NeedsTeXFormat{LaTeX2e}[2009/01/01]
+\providecommand\DeclareRelease[3]{}
+\providecommand\DeclareCurrentRelease[2]{}
+\DeclareRelease{v1.6.1}{2020-12-19}{menukeys-2020-12-19.sty}
+\DeclareCurrentRelease{v1.6.2}{2022-07-01}
 \ProvidesPackage{menukeys}
-  [2020/12/19 v1.6.1 -- A package to format menus, paths and shortcuts]
+  [2022/07/01 v1.6.2 -- A package to format menus, paths and shortcuts]
 \RequirePackage{xparse}
 \RequirePackage{xstring}
 \RequirePackage{etoolbox}
@@ -232,7 +236,7 @@
          \node(tw at node)[#4]{\strut\CurrentMenuElement};}}%
    }%
 }
-\DeclareDocumentCommand{\tw at declare@sytle at extra@args}{%
+\DeclareDocumentCommand{\tw at declare@style at extra@args}{%
    O{\tw at default@post} m
 }{%
    \csdef{tw at style@\tw at current@style @post}{#1}%
@@ -263,7 +267,7 @@
          \tikz[baseline=(tw at node.base)]{%
          \node(tw at node)[#7]{\strut\CurrentMenuElement};}}%
    }%
-   \tw at declare@sytle at extra@args%
+   \tw at declare@style at extra@args%
 }
 \NewDocumentCommand{\newmenustylesimple}{s m}{%
    \ifcsundef{tw at style@#2 at pre}{%
@@ -512,7 +516,7 @@
    \hspace{0.2ex}\hspace{0.1em plus 0.1em minus 0.05em}%
    \textcolor{\usemenucolor{b}}{\raisebox{0.25ex}{\sffamily\relsize{-2}+}}%
    \hspace{0.1em plus 0.1em minus 0.05em}%
-][\hspace{0.2ex}]{gray}
+][\kern0.2ex\relax]{gray}
 
 \tikzset{tw at angularkeys@base/.style={%
    tw at set@tikz at colors,
@@ -554,7 +558,7 @@
    \hspace{0.2ex}\hspace{0.1em plus 0.1em minus 0.05em}%
    \textcolor{\usemenucolor{b}}{\raisebox{0.25ex}{\sffamily\relsize{-2}+}}%
    \hspace{0.1em plus 0.1em minus 0.05em}%
-][\hspace{0.2ex}]{gray}
+][\kern0.2ex\relax]{gray}
 
 \tikzset{tw at typewriterkeys@base/.style={%
    tw at set@tikz at colors,



More information about the tex-live-commits mailing list.