From 41e89cc699b2bc2d2bd06efb0c9010e1fd93a2ea Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 31 Oct 2020 21:05:52 +0000 Subject: menukeys (31oct20) git-svn-id: svn://tug.org/texlive/trunk@56822 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/menukeys/menukeys.sty | 160 +++++++++++++++------- 1 file changed, 112 insertions(+), 48 deletions(-) (limited to 'Master/texmf-dist/tex/latex/menukeys') diff --git a/Master/texmf-dist/tex/latex/menukeys/menukeys.sty b/Master/texmf-dist/tex/latex/menukeys/menukeys.sty index 732d1409961..3765286a07a 100644 --- a/Master/texmf-dist/tex/latex/menukeys/menukeys.sty +++ b/Master/texmf-dist/tex/latex/menukeys/menukeys.sty @@ -21,9 +21,18 @@ %% 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 +%% +%% http://www.latex-project.org/lppl.txt +%% \NeedsTeXFormat{LaTeX2e}[2009/01/01] \ProvidesPackage{menukeys} - [2016/08/08 v1.5 -- A package to format menus, paths and shortcuts] + [2020/10/31 v1.6 -- A package to format menus, paths and shortcuts] \RequirePackage{xparse} \RequirePackage{xstring} \RequirePackage{etoolbox} @@ -32,7 +41,67 @@ \RequirePackage{xcolor} \RequirePackage{adjustbox} \RequirePackage{relsize} -\RequirePackage{catoptions}[2011/12/07] +\ExplSyntaxOn +\cs_new_eq:NN \tw@mk@trimspaces \tl_trim_spaces:n +\cs_new_eq:NN \tw@mk@expanded \use:x +\prg_generate_conditional_variant:Nnn \tl_if_in:nn { xx } { TF } +\cs_new:Npn \tw@mk@xifinsetTF #1 #2 + { + \tl_if_in:xxTF {#2} {#1} + } +\cs_new:Npn \tw@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@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 { Nno } +\cs_new_protected:Npn \tw@mk@indrisloop #1 #2 #3 + { + \__twmk_pushseq: + \__twmk_pushint: + \seq_set_split:Nno \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@mk@error}[2][Please consult the manual for more information.]{% \PackageError{menukeys}{#2}{#1}% } @@ -68,16 +137,10 @@ Possible values are 'symbols' or 'text'.}% } \iftw@mk@hyperrefcolorlinks - \Hy@AtBeginDocument{% (hyperref.sty, line 4790) - \def\@pdfborder{0 0 0}% (hyperref.sty, line 4806...) - \let\@pdfborderstyle\@empty - \def\Hy@colorlink#1{% - \begingroup - \HyColor@UseColor#1% - }% - \def\Hy@endcolorlink{\endgroup}% - \Hy@Info{Link coloring ON}% - } + \tw@mk@warning{The option `hyperrefcolorlinks' is obsolete} + \@ifpackageloaded{hyperref} + {\hypersetup{colorlinks}} + {\PassOptionsToPackage{colorlinks}{hyperref}} \fi \newcommand*{\tw@make@color@theme}[8]{% \definecolor{tw@color@theme@#1@bg}{#2}{#3}% @@ -593,71 +656,72 @@ \begingroup \lccode`\,=1 \lowercase{\endgroup - \robust@def*\tw@mk@test@input@sep#1{% - \xifinsetTF{,\cpttrimspaces{#1},}{,bslash,backslash,directory,location,}% - }% + \@ifdefinable\tw@mk@test@input@sep + {% + \protected\def\tw@mk@test@input@sep#1{% + \tw@mk@xifinsetTF + {,\tw@mk@trimspaces{#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!} +\newcommand\tw@define@menu@macro[4]{% + \ifcsundef{tw@style@#4@sep}{% + \tw@mk@error{Can't define menu macro \string#2\space,\MessageBreak + because the style '#4' is not available!} }{% - \csdef{tw@parse@menu@list@\expandafter\@gobble\string#1}##1{% - \iflastindris - \ifnum\indrisnr=\@ne + \csdef{tw@parse@menu@list@\expandafter\@gobble\string#2}##1{% + \tw@mk@iflastindris + {% + \ifnum\tw@mk@indrisnr=\@ne \def\CurrentMenuElement{##1}% - \@nameuse{tw@style@#3@single}% + \@nameuse{tw@style@#4@single}% \else \def\CurrentMenuElement{##1}% - \@nameuse{tw@style@#3@sep}\@nameuse{tw@style@#3@last}% + \@nameuse{tw@style@#4@sep}\@nameuse{tw@style@#4@last}% \fi - \else - \ifnum\indrisnr=\@ne + } + {% + \ifnum\tw@mk@indrisnr=\@ne \def\CurrentMenuElement{##1}% - \@nameuse{tw@style@#3@first}% + \@nameuse{tw@style@#4@first}% \else \def\CurrentMenuElement{##1}% - \@nameuse{tw@style@#3@sep}\@nameuse{tw@style@#3@mid}% + \@nameuse{tw@style@#4@sep}\@nameuse{tw@style@#4@mid}% \fi - \fi + }% }% - \expandafter\newcommand\csname\expandafter\@gobble\string#1\endcsname[2][#2]{% + #1 #2 { +O{#3} +m }{% \leavevmode% - {\def\tw@current@color@theme{\csname tw@style@#3@color@theme\endcsname}% - \@nameuse{tw@style@#3@pre}% + {\def\tw@current@color@theme{\csname tw@style@#4@color@theme\endcsname}% + \@nameuse{tw@style@#4@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}}% + \edef\tw@menu@list{\unexpanded{##2}}\edef\tw@mk@tempa{\tw@mk@trimspaces{##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}}% + {\letcs{\tw@mk@tempb}{tw@parse@menu@list@\expandafter\@gobble\string#2}% + \tw@mk@expanded{\tw@mk@indrisloop{\tw@mk@tempa}}\tw@menu@list\tw@mk@tempb}% + \@nameuse{tw@style@#4@post}}% }% }% } -\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}% - \expandafter\cptrobustify\csname\expandafter\@gobble\string#1\endcsname - }{ + \tw@define@menu@macro\NewDocumentCommand{#1}{#2}{#3}% + }{% \tw@mk@error{Menu macro '\string#1' already defined!\MessageBreak - Use \string\renewmenustyle\space instead.} + 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}% + \tw@define@menu@macro\RenewDocumentCommand{#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@define@menu@macro\ProvideDocumentCommand{#1}{#2}{#3}% + }{% \tw@mk@warning{Menu macro '\string#1' already defined!\MessageBreak - Use \string\renewmenustyle\space to redefine it.} + Use \string\renewmenustyle\space to redefine it.}% }% } \iftw@mk@definemenumacros -- cgit v1.2.3