diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/expl3/l3names.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/expl3/l3names.dtx | 92 |
1 files changed, 59 insertions, 33 deletions
diff --git a/Master/texmf-dist/source/latex/expl3/l3names.dtx b/Master/texmf-dist/source/latex/expl3/l3names.dtx index 9f8739ee3cd..651be378791 100644 --- a/Master/texmf-dist/source/latex/expl3/l3names.dtx +++ b/Master/texmf-dist/source/latex/expl3/l3names.dtx @@ -39,10 +39,36 @@ \catcode`\#=6 % hash mark is macro parameter character \catcode`\^=7 % circumflex is superscript character \catcode`\^^I=10 % ascii tab is a blank space +% Make \pdfstrcmp available in luatex +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname directlua\endcsname\relax +\else + \directlua + { + tex.enableprimitives('',tex.extraprimitives ()) + lua.bytecode[1]=function () + function pdfstrcmp (A, B) + if A == B then + tex.write("0") + elseif A < B then + tex.write("-1") + else + tex.write("1") + end + end + end + lua.bytecode[1]() + } + \everyjob{\directlua{lua.bytecode[1]()}} + \long\def\pdfstrcmp#1#2{% + \directlua + {pdfstrcmp("\luaescapestring{#1}","\luaescapestring{#2}")}% + } +\fi %</initex> %<package>\begingroup %<*initex|package> -\def\GetIdInfo$#1${% +\protected\def\GetIdInfo$#1${% \begingroup \def\GetIdInfoString{#1}% \def\IdInfoStringUnexp{Id}% @@ -53,10 +79,10 @@ \fi \next } -\def\GetIdInfoFull$#1 #2.#3 #4 #5 #6 #7${% +\protected\def\GetIdInfoFull$#1 #2.#3 #4 #5 #6 #7${% \GetIdInfoAux #5\relax{#2}#5\relax{#4}% } -\def\GetIdInfoAux #1#2#3#4#5#6\relax{% +\protected\def\GetIdInfoAux #1#2#3#4#5#6\relax{% \ifx#5/% \expandafter\GetIdInfoAuxCVS \else @@ -65,13 +91,13 @@ } %</initex|package> %<*initex> -\def\GetIdInfoAuxCVS #1#2\relax#3#4{% +\protected\def\GetIdInfoAuxCVS #1#2\relax#3#4{% \immediate\write-1{#1; v#2, #3; #4}% } -\def\GetIdInfoAuxSVN #1#2-#3-#4\relax#5#6{% +\protected\def\GetIdInfoAuxSVN #1#2-#3-#4\relax#5#6{% \immediate\write-1{#1; #2/#3/#4 v#5 #6}% } -\def\GetIdInfoMissing#1{% +\protected\def\GetIdInfoMissing#1{% \gdef\fileversion{000}% \gdef\filedate{0000/00/00}% \gdef\filedescription{#1}% @@ -79,19 +105,19 @@ } %</initex> %<*package> -\def\GetIdInfoAuxCVS #1#2\relax#3#4{% +\protected\def\GetIdInfoAuxCVS #1#2\relax#3#4{% \gdef\fileversion{#3}% \gdef\filedate{#2}% \gdef\filedescription{#4}% \ProvidesPackage{#1}[#2 v#3 #4]% } -\def\GetIdInfoAuxSVN #1#2-#3-#4\relax#5#6{% +\protected\def\GetIdInfoAuxSVN #1#2-#3-#4\relax#5#6{% \gdef\fileversion{#5}% \gdef\filedate{#2/#3/#4}% \gdef\filedescription{#6}% \ProvidesPackage{#1}[#2/#3/#4 v#5 #6] } -\def\GetIdInfoMissing#1{% +\protected\def\GetIdInfoMissing#1{% \gdef\fileversion{000}% \gdef\filedate{0000/00/00}% \gdef\filedescription{#1}% @@ -102,7 +128,7 @@ \RequirePackage{l3names} %</driver> %\fi -\GetIdInfo$Id: l3names.dtx 1751 2009-11-26 08:36:12Z joseph $ +\GetIdInfo$Id: l3names.dtx 1853 2010-03-21 09:11:08Z joseph $ {L3 Experimental Naming Scheme for TeX Primitives} % % @@ -288,7 +314,7 @@ % catcode regime as it was when we start changing it. % \begin{macrocode} %<*initex|package> -\edef\ExplSyntaxOff{ +\protected\edef\ExplSyntaxOff{ \unexpanded{\ifodd \ExplSyntaxStatus\relax \def\ExplSyntaxStatus{0} } @@ -941,10 +967,10 @@ % \end{itemize} % % \begin{macrocode} -\tex_def:D \ExplSyntaxOn { +\etex_protected:D \tex_def:D \ExplSyntaxOn { \tex_ifodd:D \ExplSyntaxStatus \tex_relax:D \tex_else:D - \tex_edef:D \ExplSyntaxOff { + \etex_protected:D \tex_edef:D \ExplSyntaxOff { \etex_unexpanded:D{ \tex_ifodd:D \ExplSyntaxStatus \tex_relax:D \tex_def:D \ExplSyntaxStatus{0} @@ -981,11 +1007,11 @@ % \LaTeX3 without adhering it's conventions according to space % characters. These macros provide the necessary settings. % \begin{macrocode} -\tex_def:D \ExplSyntaxNamesOn { +\etex_protected:D \tex_def:D \ExplSyntaxNamesOn { \tex_catcode:D `\_=11\tex_relax:D \tex_catcode:D `\:=11\tex_relax:D } -\tex_def:D \ExplSyntaxNamesOff { +\etex_protected:D \tex_def:D \ExplSyntaxNamesOff { \tex_catcode:D `\_=8\tex_relax:D \tex_catcode:D `\:=12\tex_relax:D } @@ -1015,7 +1041,7 @@ % else svn and we extract information. To be on the safe side we % ensure that spaces in the argument are seen. % \begin{macrocode} -\tex_def:D \GetIdInfo { +\etex_protected:D \tex_def:D \GetIdInfo { \tex_begingroup:D \tex_catcode:D 32=10 \tex_relax:D % needed? Probably for now. \GetIdInfoMaybeMissing:w @@ -1023,11 +1049,11 @@ % \end{macrocode} % % \begin{macrocode} -\tex_def:D\GetIdInfoMaybeMissing:w$#1$#2{ - \tex_def:D \l_tmpa_tl {#1} - \tex_def:D \l_tmpb_tl {Id} - \tex_ifx:D \l_tmpa_tl \l_tmpb_tl - \tex_def:D \l_tmpa_tl { +\etex_protected:D \tex_def:D\GetIdInfoMaybeMissing:w$#1$#2{ + \tex_def:D \l_kernel_tmpa_tl {#1} + \tex_def:D \l_kernel_tmpb_tl {Id} + \tex_ifx:D \l_kernel_tmpa_tl \l_kernel_tmpb_tl + \tex_def:D \l_kernel_tmpa_tl { \tex_endgroup:D \tex_def:D\filedescription{#2} \tex_def:D\filename {[unknown~name]} @@ -1038,14 +1064,14 @@ \tex_def:D\filetimestamp {[unknown~timestamp]} } \tex_else:D - \tex_def:D \l_tmpa_tl {\GetIdInfoAuxi:w$#1${#2}} + \tex_def:D \l_kernel_tmpa_tl {\GetIdInfoAuxi:w$#1${#2}} \tex_fi:D - \l_tmpa_tl + \l_kernel_tmpa_tl } % \end{macrocode} % % \begin{macrocode} -\tex_def:D\GetIdInfoAuxi:w$#1~#2.#3~#4~#5~#6~#7~#8$#9{ +\etex_protected:D \tex_def:D\GetIdInfoAuxi:w$#1~#2.#3~#4~#5~#6~#7~#8$#9{ \tex_endgroup:D \tex_def:D\filename{#2} \tex_def:D\fileversion{#4} @@ -1057,7 +1083,7 @@ % \end{macrocode} % % \begin{macrocode} -\tex_def:D\GetIdInfoAuxii:w #1#2#3#4#5#6\tex_relax:D{ +\etex_protected:D \tex_def:D\GetIdInfoAuxii:w #1#2#3#4#5#6\tex_relax:D{ \tex_ifx:D#5/ \tex_expandafter:D\GetIdInfoAuxCVS:w \tex_else:D @@ -1067,7 +1093,7 @@ % \end{macrocode} % % \begin{macrocode} -\tex_def:D\GetIdInfoAuxCVS:w #1,v\tex_relax:D +\etex_protected:D \tex_def:D\GetIdInfoAuxCVS:w #1,v\tex_relax:D #2\tex_relax:D#3\tex_relax:D{ \tex_def:D\filedate{#2} \tex_def:D\filenameext{#1} @@ -1079,7 +1105,7 @@ %<initex>\tex_immediate:D\tex_write:D-1 %<initex> {\filename;~ v\fileversion,~\filedate;~\filedescription} } -\tex_def:D\GetIdInfoAuxSVN:w #1\tex_relax:D#2-#3-#4 +\etex_protected:D \tex_def:D\GetIdInfoAuxSVN:w #1\tex_relax:D#2-#3-#4 \tex_relax:D#5Z\tex_relax:D{ \tex_def:D\filenameext{#1} \tex_def:D\filedate{#2/#3/#4} @@ -1112,7 +1138,7 @@ % as the packages in this distribution do like this: % \begin{verbatim} % \RequirePackage{l3names} -% \GetIdInfo$Id: l3names.dtx 1751 2009-11-26 08:36:12Z joseph $ +% \GetIdInfo$Id: l3names.dtx 1853 2010-03-21 09:11:08Z joseph $ % {L3 Experimental Box module} % \ProvidesExplPackage % {\filename}{\filedate}{\fileversion}{\filedescription} @@ -1126,15 +1152,15 @@ % options just yet. % \begin{macrocode} %<*package> -\tex_def:D \ProvidesExplPackage#1#2#3#4{ +\etex_protected:D \tex_def:D \ProvidesExplPackage#1#2#3#4{ \ProvidesPackage{#1}[#2~v#3~#4] \ExplSyntaxOn } -\tex_def:D \ProvidesExplClass#1#2#3#4{ +\etex_protected:D \tex_def:D \ProvidesExplClass#1#2#3#4{ \ProvidesClass{#1}[#2~v#3~#4] \ExplSyntaxOn } -\tex_def:D \ProvidesExplFile#1#2#3#4{ +\etex_protected:D \tex_def:D \ProvidesExplFile#1#2#3#4{ \ProvidesFile{#1}[#2~v#3~#4] \ExplSyntaxOn } @@ -1230,7 +1256,7 @@ % stack is initially empty set to 0 signalling that before % \pkg{l3names} was loaded, the ExplSyntax was off. % \begin{macrocode} -\tex_def:D\ExplSyntaxPopStack#1#2\q_nil{ +\etex_protected:D\tex_def:D\ExplSyntaxPopStack#1#2\q_nil{ \tex_def:D\ExplSyntaxStack{#2} \tex_ifodd:D#1\tex_relax:D \ExplSyntaxOn @@ -1342,7 +1368,7 @@ % used to ensure that one of the "l3" packages isn't loaded on its own. % \begin{macrocode} %<*!initex> -\tex_def:D \package_check_loaded_expl: { +\etex_protected:D\tex_def:D \package_check_loaded_expl: { \@ifpackageloaded{expl3}{}{ \PackageError{expl3}{Cannot~load~the~expl3~modules~separately}{ The~expl3~modules~cannot~be~loaded~separately;\MessageBreak |