summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/jlreq/jlreq-helpers.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/jlreq/jlreq-helpers.sty')
-rw-r--r--Master/texmf-dist/tex/latex/jlreq/jlreq-helpers.sty75
1 files changed, 44 insertions, 31 deletions
diff --git a/Master/texmf-dist/tex/latex/jlreq/jlreq-helpers.sty b/Master/texmf-dist/tex/latex/jlreq/jlreq-helpers.sty
index 9532669172a..9bf28042489 100644
--- a/Master/texmf-dist/tex/latex/jlreq/jlreq-helpers.sty
+++ b/Master/texmf-dist/tex/latex/jlreq/jlreq-helpers.sty
@@ -162,14 +162,14 @@
% もしカンマがない場合は\ifjlreq@resultがfalseになる.
\newcommand*{\jlreq@helper@dividebycomma}[1]{\jlreq@helper@dividebycomma@#1,\jlreq@endmark}
\def\jlreq@helper@dividebycomma@#1,#2\jlreq@endmark{%
- \jlreq@remove@spaceandbracket{#1}{\jlreq@resulta}%
- \jlreq@remove@spaceandbracket{#2}{\jlreq@resultb}%
+ \jlreq@helper@trim{#1}{\jlreq@resulta}%
+ \jlreq@helper@trim{#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}%
+ \expandafter\jlreq@helper@trim\expandafter{\jlreq@resultb}{\jlreq@resultb}%
}%
}
\def\jlreq@helper@removelastcomma#1,\jlreq@endmark{#1}
@@ -245,6 +245,7 @@
% キー指定しないkeyval(独自実装)
% \jlreq@parsekeyval@nokey{<action>}{<parse対象>}
% action内では#1=key, #2=val
+% <parse対象>は一回だけ展開される.
\newcommand{\jlreq@parsekeyval@nokey}[2]{%
\begingroup
\def\jlreq@do{}%
@@ -265,11 +266,10 @@
\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
- }%
+ \ifx\jlreq@tempb\@empty\else
+ \edef\@tempa{\noexpand\jlreq@parsekeyval@nokey@iv{\expandonce{\jlreq@tempb}}{\expandonce{\jlreq@tempa}}}%
+ \@tempa
+ \fi
\jlreq@parsekeyval@nokey@i
}
\long\def\jlreq@parsekeyval@nokey@iv#1#2{%
@@ -280,29 +280,36 @@
% #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
+ \long\def\jlreq@helper@trim##1##2{\edef##2{\jlreq@helper@trim@i{##1}}}
+ \long\def\jlreq@helper@trim@i##1{%
+ \jlreq@iffirsttoken{##1}{#1}%
+ % 先頭スペースの除去.{}を外さないために\jlreq@uniqtokenを前後にいったん挟む.
+ {\jlreq@helper@trim@ii##1\jlreq@uniqtoken\jlreq@endmark}%
+ % 後方スペースの除去.先頭に\jlreq@uniqtokenを加えて{}が外れるのを防ぐ.
+ {\jlreq@helper@trim@iii\jlreq@uniqtoken##1\jlreq@uniqtoken#1\jlreq@uniqtoken\jlreq@endmark}%
}
- \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@helper@trim@ii#1##1\jlreq@endmark{%
+ \expandafter\expandafter\expandafter\jlreq@helper@trim@i\jlreq@helper@trim@vi\jlreq@uniqtoken##1\jlreq@endmark
+ }
+ \long\def\jlreq@helper@trim@iii##1#1\jlreq@uniqtoken##2\jlreq@endmark{%
+ \jlreq@ifempty{##2}%
+ {\expandafter\jlreq@helper@trim@iv\jlreq@helper@trim@v##1\jlreq@endmark}%
+ {\jlreq@helper@trim@iii##1\jlreq@uniqtoken#1\jlreq@uniqtoken\jlreq@endmark}%
}%
+ \long\def\jlreq@helper@trim@iv##1{\expandafter\unexpanded\expandafter{\@gobble ##1}}
+ \long\def\jlreq@helper@trim@v##1\jlreq@uniqtoken\jlreq@endmark{{##1}}
+ \long\def\jlreq@helper@trim@vi##1\jlreq@uniqtoken\jlreq@endmark{\expandafter{\@gobble ##1}}
}
\jlreq@do{ }
-\long\def\jlreq@removelastuniqtoken#1\jlreq@uniqtoken{#1}
-\long\def\jlreq@remove@spaceandbracket@iv#1{\edef\jlreq@tempa{\unexpanded{#1}}}
+
+\long\def\jlreq@remove@spaceandbracket#1#2{%
+ \begingroup
+ \jlreq@helper@trim{#1}{\jlreq@tempa}%
+ \edef\jlreq@do{\unexpanded{\jlreq@remove@spaceandbracket@{#2}}\expandonce{\jlreq@tempa}\noexpand\jlreq@endmark}%
+ \expandafter\endgroup
+ \jlreq@do
+}
+\long\def\jlreq@remove@spaceandbracket@#1#2\jlreq@endmark{\edef#1{\unexpanded{#2}}}
% \jlreq@switch{str}{
% {str}{abcd}
@@ -507,11 +514,17 @@
\def\jlreq@for@noexpand#1:={\@for#1:=\@empty}
-\def\jlreq@swap#1#2{%
- \let\jlreq@swaptoken=#1%
+\def\jlreq@helper@swap#1#2{%
+ \let\jlreq@helper@swaptoken=#1%
\let#1=#2%
- \let#2=\jlreq@swaptoken
- \let\jlreq@swaptoken=\@undefined
+ \let#2=\jlreq@helper@swaptoken
+ \let\jlreq@helper@swaptoken=\@undefined
+}
+\def\jlreq@helper@swap@register#1#2{%
+ \edef\jlreq@helper@swaptoken{\the#1}%
+ #1=#2%
+ #2=\jlreq@helper@swaptoken\relax
+ \let\jlreq@helper@swaptoken=\@undefined
}
\endinput