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.sty40
1 files changed, 25 insertions, 15 deletions
diff --git a/Master/texmf-dist/tex/latex/jlreq/jlreq-helpers.sty b/Master/texmf-dist/tex/latex/jlreq/jlreq-helpers.sty
index f08dd817098..2d4039951bb 100644
--- a/Master/texmf-dist/tex/latex/jlreq/jlreq-helpers.sty
+++ b/Master/texmf-dist/tex/latex/jlreq/jlreq-helpers.sty
@@ -246,12 +246,17 @@
% \jlreq@parsekeyval@nokey{<action>}{<parse対象>}
% action内では#1=key, #2=val
% \ifjlreq@parsekeyval@nokey@novalue{<true code>}{<false code>}でvalueがないか判定できる.
-% <parse対象>は一回だけ展開される.
-\newcommand{\jlreq@parsekeyval@nokey}[2]{%
+% *つきは<parse対象>を一回だけ展開する.
+\def\jlreq@parsekeyval@nokey{\@ifstar{\jlreq@parsekeyval@nokey@{*}}{\jlreq@parsekeyval@nokey@{}}}
+\newcommand{\jlreq@parsekeyval@nokey@}[3]{%
\begingroup
\long\def\jlreq@do{}%
- \long\def\jlreq@parsekeyval@nokey@execute##1##2{#1}%
- \expandafter\jlreq@parsekeyval@nokey@i@wuniq\expandafter\jlreq@uniqtoken#2,\jlreq@endmark,%
+ \long\def\jlreq@parsekeyval@nokey@execute##1##2{#2}%
+ \jlreq@ifempty{#1}{%
+ \jlreq@parsekeyval@nokey@i@wuniq\jlreq@uniqtoken#3,\jlreq@endmark,%
+ }{%
+ \expandafter\jlreq@parsekeyval@nokey@i@wuniq\expandafter\jlreq@uniqtoken#3,\jlreq@endmark,%
+ }%
\expandafter\endgroup
\jlreq@do
}
@@ -285,9 +290,9 @@
\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"が入る.
+% #1の先頭のスペースを削除し,#2に入れる.
+\long\def\jlreq@helper@trim#1#2{\edef#2{\jlreq@helper@trim@i{#1}}}
\def\jlreq@do#1{% #1 = " "として後で実行
- \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を前後にいったん挟む.
@@ -370,19 +375,24 @@
}%
}
+% オレオレラベル……
+% \jlreq@reference@ref{ラベル名}{デフォルト値}
+\def\jlreq@reference@ref#1{\expandafter\ifx\csname jlreq@reference@#1\endcsname\relax\expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi{\csname jlreq@reference@#1\endcsname}}
+% \jlreq@reference@label{ラベル名}{値}
+\def\jlreq@reference@label#1#2{\protected@write\@auxout{}{\string\@newl@bel{jlreq@reference}{#1}{#2}}}%
+\def\jlreq@reference@immediate@write#1#2{\immediate\write\@auxout{\string\@newl@bel{jlreq@reference}{#1}{#2}}}%
+\def\jlreq@reference@ifexist#1{\expandafter\ifx\csname jlreq@reference@#1\endcsname\relax\expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi}
+
+% 自動生成されるラベル用の番号
+\newcount\jlreq@reference@count
+\jlreq@reference@count=0
-\RequirePackage[savepos]{zref}
-\newcount\jlreq@zref@reference@count
-\jlreq@zref@reference@count=0
% 現在のページを得る
-\zref@newprop*{jlreq@page}[0]{\number\c@page}
-\zref@addprop{main}{jlreq@page}
\newcount\jlreq@currentpage
-% \jlreq@setcurrentpageをすると,\jlreq@currentpageにこの場所のページ数が入る
\newcommand*{\jlreq@setcurrentpage}{%
- \global\advance\jlreq@zref@reference@count by 1
- \zref@labelbyprops{jlreq@currentpage.\the\jlreq@zref@reference@count}{jlreq@page}%
- \global\jlreq@currentpage=\zref@extractdefault{jlreq@currentpage.\the\jlreq@zref@reference@count}{jlreq@page}{\c@page}\relax
+ \global\advance\jlreq@reference@count by 1
+ \jlreq@reference@label{jlreq@currentpage.\the\jlreq@reference@count}{\noexpand\arabic{page}}%
+ \global\jlreq@currentpage=\jlreq@reference@ref{jlreq@currentpage.\the\jlreq@reference@count}{\the\c@page}\relax
}
% 先頭にあるマクロを展開しまくった結果の先頭を#2に入れる.