summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/expl3/l3names.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/expl3/l3names.dtx')
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3names.dtx92
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