diff options
author | Karl Berry <karl@freefriends.org> | 2018-08-16 20:48:00 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2018-08-16 20:48:00 +0000 |
commit | 03e475af0478ac4e6cbe4fbe68e56f7461694064 (patch) | |
tree | f0882fe9fa215951c97b8c5883e86475cce754e7 /Master/texmf-dist/tex/latex/jlreq/jlreq-helpers.sty | |
parent | d2ffec2a2f1cd6175f94d852756963a3e7526851 (diff) |
jlreq (16aug18)
git-svn-id: svn://tug.org/texlive/trunk@48414 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/jlreq/jlreq-helpers.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/jlreq/jlreq-helpers.sty | 71 |
1 files changed, 58 insertions, 13 deletions
diff --git a/Master/texmf-dist/tex/latex/jlreq/jlreq-helpers.sty b/Master/texmf-dist/tex/latex/jlreq/jlreq-helpers.sty index 41bb74447fd..9532669172a 100644 --- a/Master/texmf-dist/tex/latex/jlreq/jlreq-helpers.sty +++ b/Master/texmf-dist/tex/latex/jlreq/jlreq-helpers.sty @@ -1,7 +1,7 @@ % エンジン非依存のマクロ集 \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{jlreq-helpers}[2018/08/08 jlreq-helpers] +\ProvidesPackage{jlreq-helpers}[2018/08/15 jlreq-helpers] \RequirePackage{xkeyval,etoolbox} %. helper1 @@ -162,9 +162,15 @@ % もしカンマがない場合は\ifjlreq@resultがfalseになる. \newcommand*{\jlreq@helper@dividebycomma}[1]{\jlreq@helper@dividebycomma@#1,\jlreq@endmark} \def\jlreq@helper@dividebycomma@#1,#2\jlreq@endmark{% - \def\jlreq@resulta{#1}% - \def\jlreq@resultb{#2}% - \ifx\jlreq@resultb\@empty\jlreq@resultfalse\else\jlreq@resulttrue\expandafter\def\expandafter\jlreq@resultb\expandafter{\jlreq@helper@removelastcomma#2\jlreq@endmark}\fi + \jlreq@remove@spaceandbracket{#1}{\jlreq@resulta}% + \jlreq@remove@spaceandbracket{#2}{\jlreq@resultb}% + \ifx\jlreq@resultb\@empty\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi{% + \jlreq@resultfalse + }{% + \jlreq@resulttrue + \expandafter\def\expandafter\jlreq@resultb\expandafter{\jlreq@helper@removelastcomma#2\jlreq@endmark}% + \expandafter\jlreq@remove@spaceandbracket\expandafter{\jlreq@resultb}{\jlreq@resultb}% + }% } \def\jlreq@helper@removelastcomma#1,\jlreq@endmark{#1} @@ -243,21 +249,60 @@ \begingroup \def\jlreq@do{}% \def\jlreq@parsekeyval@nokey@execute##1##2{#1}% - \expandafter\jlreq@parsekeyval@nokey@#2,\jlreq@endmark,% + \expandafter\jlreq@parsekeyval@nokey@i#2,\jlreq@endmark,% \expandafter\endgroup \jlreq@do } -\long\def\jlreq@parsekeyval@nokey@#1,{% - \jlreq@ifendmark{#1}{}{\jlreq@ifempty{#1}{\jlreq@parsekeyval@nokey@}{\jlreq@parsekeyval@nokey@@#1=\jlreq@endmark}}% +\long\def\jlreq@parsekeyval@nokey@i#1,{\jlreq@ifendmark{#1}{}{\jlreq@parsekeyval@nokey@ii#1=\jlreq@endmark}} +\long\def\jlreq@parsekeyval@nokey@ii#1=#2\jlreq@endmark{% + \jlreq@ifempty{#2}{\jlreq@parsekeyval@nokey@iii{#2}{#1}}{% + \edef\jlreq@tempa{% + \noexpand\jlreq@parsekeyval@nokey@iii{\jlreq@parsekeyval@nokey@removeequal{#2}}{\unexpanded{#1}}% + }% + \jlreq@tempa + }% } -\long\def\jlreq@parsekeyval@nokey@@#1=#2\jlreq@endmark{% - \jlreq@ifempty{#2}{\jlreq@parsekeyval@nokey@@@{}{#1}}{\expandafter\jlreq@parsekeyval@nokey@@@\expandafter{\jlreq@parsekeyval@nokey@@@@#2\jlreq@endmark}{#1}}% +\long\def\jlreq@parsekeyval@nokey@iii#1#2{% + \jlreq@remove@spaceandbracket{#1}{\jlreq@tempa}% + \jlreq@remove@spaceandbracket{#2}{\jlreq@tempb}% + \ifx\jlreq@tempa\@empty\expandafter\@gobble\else\expandafter\@firstofone\fi + {% + \edef\@tempa{\noexpand\jlreq@parsekeyval@nokey@iv{\expandonce{\jlreq@tempb}}{\expandonce{\jlreq@tempa}}}% + \@tempa + }% + \jlreq@parsekeyval@nokey@i +} +\long\def\jlreq@parsekeyval@nokey@iv#1#2{% + \eappto\jlreq@do{\expandonce{\jlreq@parsekeyval@nokey@execute{#1}{#2}}}% } -\long\def\jlreq@parsekeyval@nokey@@@#1#2{% - \eappto\jlreq@do{\expandonce{\jlreq@parsekeyval@nokey@execute{#2}{#1}}}% - \jlreq@parsekeyval@nokey@ +\long\def\jlreq@parsekeyval@nokey@removeequal#1{\jlreq@parsekeyval@nokey@removeequal@\jlreq@uniqtoken#1\jlreq@endmark} +\long\def\jlreq@parsekeyval@nokey@removeequal@#1=\jlreq@endmark{\expandafter\unexpanded\expandafter{\@gobble#1}} + +% #1の先頭のスペースを削除し,#2に入れる.ただし#1={ X}の時は" X"が入る. +\def\jlreq@do#1{% #1 = " "として後で実行 + \long\def\jlreq@remove@spaceandbracket##1##2{% + \begingroup + \def\jlreq@tempa{}% + \futurelet\jlreq@nextchar\jlreq@remove@spaceandbracket@i##1\jlreq@uniqtoken#1\jlreq@uniqtoken\jlreq@endmark + \edef\jlreq@do{\noexpand\edef\noexpand##2{\noexpand\unexpanded{\expandonce{\jlreq@tempa}}}}% + \expandafter\endgroup + \jlreq@do + } + \def\jlreq@remove@spaceandbracket@i{% + \ifx#1\jlreq@nextchar\expandafter\jlreq@remove@spaceandbracket@ii\else\expandafter\jlreq@remove@spaceandbracket@iii\fi + }% + \def\jlreq@remove@spaceandbracket@ii#1{\futurelet\jlreq@nextchar\jlreq@remove@spaceandbracket@i}% + \long\def\jlreq@remove@spaceandbracket@iii##1#1\jlreq@uniqtoken##2\jlreq@endmark{% + \jlreq@ifempty{##2}{% + \expandafter\jlreq@remove@spaceandbracket@iv\expandafter{\jlreq@removelastuniqtoken##1}% + }{% + \jlreq@remove@spaceandbracket@iv{##1}% + }% + }% } -\long\def\jlreq@parsekeyval@nokey@@@@#1=\jlreq@endmark{#1} +\jlreq@do{ } +\long\def\jlreq@removelastuniqtoken#1\jlreq@uniqtoken{#1} +\long\def\jlreq@remove@spaceandbracket@iv#1{\edef\jlreq@tempa{\unexpanded{#1}}} % \jlreq@switch{str}{ % {str}{abcd} |