summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/oberdiek/ltxcmds.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-05-04 17:35:01 +0000
committerKarl Berry <karl@freefriends.org>2010-05-04 17:35:01 +0000
commit3cd7d680d047db2f439ccba96948f1ceaa6d973f (patch)
tree99414f003d20290deb6c11806bde6685c1eb9b25 /Master/texmf-dist/source/latex/oberdiek/ltxcmds.dtx
parent67c3a09c0f5d7fcf6bff5cfbc686a0c247d0e744 (diff)
oberdiek update (3may10)
git-svn-id: svn://tug.org/texlive/trunk@18100 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/oberdiek/ltxcmds.dtx')
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/ltxcmds.dtx371
1 files changed, 349 insertions, 22 deletions
diff --git a/Master/texmf-dist/source/latex/oberdiek/ltxcmds.dtx b/Master/texmf-dist/source/latex/oberdiek/ltxcmds.dtx
index 538f1ac4117..e5cfd20f7fb 100644
--- a/Master/texmf-dist/source/latex/oberdiek/ltxcmds.dtx
+++ b/Master/texmf-dist/source/latex/oberdiek/ltxcmds.dtx
@@ -23,7 +23,7 @@
% This work consists of the main source file ltxcmds.dtx
% and the derived files
% ltxcmds.sty, ltxcmds.pdf, ltxcmds.ins, ltxcmds.drv,
-% ltxcmds-test1.tex.
+% ltxcmds-test1.tex, ltxcmds-test-gobble.tex.
%
% Distribution:
% CTAN:macros/latex/contrib/oberdiek/ltxcmds.dtx
@@ -59,6 +59,7 @@
% TDS:tex/generic/oberdiek/ltxcmds.sty
% TDS:doc/latex/oberdiek/ltxcmds.pdf
% TDS:doc/latex/oberdiek/test/ltxcmds-test1.tex
+% TDS:doc/latex/oberdiek/test/ltxcmds-test-gobble.tex
% TDS:source/latex/oberdiek/ltxcmds.dtx
%
%<*ignore>
@@ -76,7 +77,7 @@
\input docstrip.tex
\Msg{************************************************************************}
\Msg{* Installation}
-\Msg{* Package: ltxcmds 2010/04/16 v1.6 LaTeX kernel commands for general use (HO)}
+\Msg{* Package: ltxcmds 2010/04/26 v1.7 LaTeX kernel commands for general use (HO)}
\Msg{************************************************************************}
\keepsilent
@@ -110,7 +111,7 @@ because some files are installed in TDS:tex/generic//.
This work consists of the main source file ltxcmds.dtx
and the derived files
ltxcmds.sty, ltxcmds.pdf, ltxcmds.ins, ltxcmds.drv,
- ltxcmds-test1.tex.
+ ltxcmds-test1.tex, ltxcmds-test-gobble.tex.
\endpreamble
\let\MetaPrefix\DoubleperCent
@@ -122,6 +123,7 @@ and the derived files
\file{ltxcmds.sty}{\from{ltxcmds.dtx}{package}}%
\usedir{doc/latex/oberdiek/test}%
\file{ltxcmds-test1.tex}{\from{ltxcmds.dtx}{test1}}%
+ \file{ltxcmds-test-gobble.tex}{\from{ltxcmds.dtx}{test-gobble}}%
}
\catcode32=13\relax% active space
@@ -152,7 +154,7 @@ and the derived files
%<*driver>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{ltxcmds.drv}%
- [2010/04/16 v1.6 LaTeX kernel commands for general use (HO)]%
+ [2010/04/26 v1.7 LaTeX kernel commands for general use (HO)]%
\documentclass{ltxdoc}
\usepackage{holtxdoc}[2008/08/11]
\usepackage{zref-savepos}
@@ -162,7 +164,7 @@ and the derived files
%</driver>
% \fi
%
-% \CheckSum{760}
+% \CheckSum{1158}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -183,7 +185,7 @@ and the derived files
% \GetFileInfo{ltxcmds.drv}
%
% \title{The \xpackage{ltxcmds} package}
-% \date{2010/04/16 v1.6}
+% \date{2010/04/26 v1.7}
% \author{Heiko Oberdiek\\\xemail{heiko.oberdiek at googlemail.com}}
%
% \maketitle
@@ -230,10 +232,10 @@ and the derived files
%
% \subsection{Numbers}
%
-% \begin{declcs}{ltx@zero}\\
-% \cs{ltx@one}\\
-% \cs{ltx@two}\\
-% \cs{ltx@cclv}
+% \begin{declcs}{ltx@zero} \TO 0\\
+% \cs{ltx@one} \TO 1\\
+% \cs{ltx@two} \TO 2\\
+% \cs{ltx@cclv} \TO 255
% \end{declcs}
% These commands are numbers 0, 1, 2 and 255. They are not digits
% and a space is not gobbled afterwards.
@@ -246,6 +248,13 @@ and the derived files
% \cs{ltx@gobblefour} \M{1} \M{2} \M{3} \M{4} \TO
% \end{declcs}
%
+% \begin{declcs}{ltx@GobbleNum} \M{num} \M{1} \M{2} \dots\space
+% \M{\meta{num}} \TO
+% \end{declcs}
+% The first argument \meta{num} of macro \cs{ltx@GobbleNum} specifies,
+% how many following arguments are eaten. Macro \cs{ltx@GobbleNum}
+% is expandable in exact two expansion steps.
+%
% \subsection{Argument grabbers}
%
% \begin{declcs}{ltx@firstofone} \M{1} \TO \meta{1}\\
@@ -255,24 +264,39 @@ and the derived files
%
% \subsection{List helpers}
%
-% \begin{declcs}{ltx@car} \M{1} \dots \cs{@nil} \TO \meta{1}\\
-% \cs{ltx@cdr} \M{1} \dots \cs{@nil} \TO \dots\\
+% \begin{declcs}{ltx@carzero} \dots\ \cs{@nil} \TO\\
+% \cs{ltx@cdrzero} \dots\ \cs{@nil} \TO \dots
+% \end{declcs}
+%
+% \begin{declcs}{ltx@car} \M{1} \dots\ \cs{@nil} \TO \meta{1}\\
+% \cs{ltx@cdr} \M{1} \dots\ \cs{@nil} \TO \dots
% \end{declcs}
%
-% \begin{declcs}{ltx@cartwo} \M{1} \M{2} \dots \cs{@nil} \TO \meta{1}\meta{2}\\
-% \cs{ltx@cdrtwo} \M{1} \M{2} \dots \cs{@nil} \TO \dots\\
+% \begin{declcs}{ltx@cartwo} \M{1} \M{2} \dots\ \cs{@nil}
+% \TO \meta{1}\meta{2}\\
+% \cs{ltx@cdrtwo} \M{1} \M{2} \dots\ \cs{@nil} \TO \dots
% \end{declcs}
%
-% \begin{declcs}{ltx@carthree} \M{1} \M{2} \M{3} \dots \cs{@nil}
+% \begin{declcs}{ltx@carthree} \M{1} \M{2} \M{3} \dots\ \cs{@nil}
% \TO \meta{1}\meta{2}\meta{3}\\
-% \cs{ltx@cdrthree} \M{1} \M{2} \M{3} \dots \cs{@nil} \TO \dots\\
+% \cs{ltx@cdrthree} \M{1} \M{2} \M{3} \dots\ \cs{@nil} \TO \dots
% \end{declcs}
%
-% \begin{declcs}{ltx@carfour} \M{1} \M{2} \M{3} \M{4} \dots \cs{@nil}
+% \begin{declcs}{ltx@carfour} \M{1} \M{2} \M{3} \M{4} \dots\ \cs{@nil}
% \TO \meta{1}\meta{2}\meta{3}\meta{4}\\
-% \cs{ltx@cdrfour} \M{1} \M{2} \M{3} \M{4} \dots \cs{@nil} \TO \dots\\
+% \cs{ltx@cdrfour} \M{1} \M{2} \M{3} \M{4} \dots\ \cs{@nil} \TO \dots
% \end{declcs}
%
+% \begin{declcs}{ltx@CarNum} \M{num} \M{1} \dots\ \M{\meta{num}}
+% \M{\meta{num}+1} \dots\ \cs{@nil}\\
+% \TO \M{1} \dots\ \M{\meta{num}} \dots\\
+% \cs{ltx@CdrNum} \M{num} \M{1} \dots\ \M{\meta{num}}
+% \M{\meta{num}+1} \dots\ \cs{@nil}\\
+% \TO \M{\meta{num}+1} \dots
+% \end{declcs}
+% Macros \cs{ltx@CarNum} and \cs{ltx@CdrNum} are expandable
+% in exact two expansion steps.
+%
% \subsection{Tail recursion}
%
% \begin{declcs}{ltx@ReturnAfterFi} \M{1} \cs{fi} \TO \cs{fi} \meta{1}\\
@@ -287,9 +311,11 @@ and the derived files
%
% \subsection{Characters}
%
-% \begin{declcs}{ltx@space}\\
-% \cs{ltx@percentchar}\\
-% \cs{ltx@backslashchar}
+% \begin{declcs}{ltx@space} \TO \verb*| |\\
+% \cs{ltx@percentchar} \TO \texttt{\%}\\
+% \cs{ltx@backslashchar} \TO
+% \makeatletter\texttt{\@backslashchar}\\
+% \cs{ltx@hashchar} \TO \texttt{\#}
% \end{declcs}
%
% \subsection{Boolean switch}
@@ -506,7 +532,7 @@ and the derived files
\fi
\expandafter\x\csname ver@ltxcmds.sty\endcsname
\ProvidesPackage{ltxcmds}%
- [2010/04/16 v1.6 LaTeX kernel commands for general use (HO)]
+ [2010/04/26 v1.7 LaTeX kernel commands for general use (HO)]
% \end{macrocode}
%
% \begin{macrocode}
@@ -565,6 +591,11 @@ and the derived files
\chardef\ltx@two=2 %
% \end{macrocode}
% \end{macro}
+% \begin{macro}{\ltx@active}
+% \begin{macrocode}
+\chardef\ltx@active=13 %
+% \end{macrocode}
+% \end{macro}
% \begin{macro}{\ltx@cclv}
% \begin{macrocode}
\chardef\ltx@cclv=255 %
@@ -594,6 +625,32 @@ and the derived files
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\ltx@GobbleNum}
+% \begin{macrocode}
+\def\ltx@GobbleNum#1{%
+ \romannumeral
+ \csname ltx@zero%
+ \expandafter\LTXcmds@GobbleNum
+ \romannumeral\expandafter\ltx@firstofone
+ \expandafter{\LTXcmds@num#1}000{m\endcsname}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\LTXcmds@GobbleNum}
+% \begin{macrocode}
+\def\LTXcmds@GobbleNum#1{%
+ \csname LTXcmds@G#1\LTXcmds@GobbleNum
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\LTXcmds@Gm}
+% \begin{macrocode}
+\long\def\LTXcmds@Gm#1{%
+ \endcsname
+}
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Argument grabbers}
%
% \begin{macro}{\ltx@firstofone}
@@ -625,6 +682,17 @@ and the derived files
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\ltx@carzero}
+% \begin{macrocode}
+\long\def\ltx@carzero#1\@nil{}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltx@cdrzero}
+% \begin{macrocode}
+\long\def\ltx@cdrzero#1\@nil{#1}%
+% \end{macrocode}
+% \end{macro}
+
% \begin{macro}{\ltx@cartwo}
% \begin{macrocode}
\long\def\ltx@cartwo#1#2#3\@nil{#1#2}
@@ -658,6 +726,62 @@ and the derived files
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\ltx@CarNum}
+% \begin{macrocode}
+\def\ltx@CarNum#1{%
+ \romannumeral
+ \csname LTXcmds@CarNumFinish%
+ \expandafter\LTXcmds@CarNum
+ \romannumeral\expandafter\ltx@firstofone
+ \expandafter{\LTXcmds@num#1}000{x\endcsname}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\LTXcmds@CarNum}
+% \begin{macrocode}
+\def\LTXcmds@CarNum#1{%
+ \csname LTXcmds@C#1\LTXcmds@CarNum
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\LTXcmds@Cm}
+% \begin{macrocode}
+\long\def\LTXcmds@Cm#1#2{%
+ \endcsname{#1#2}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\LTXcmds@Cx}
+% \begin{macrocode}
+\def\LTXcmds@Cx#1{%
+ \endcsname{}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\LTXcmds@CarNumFinish}
+% \begin{macrocode}
+\long\def\LTXcmds@CarNumFinish#1#2\@nil{%
+ \ltx@zero
+ #1%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ltx@CdrNum}
+% \begin{macrocode}
+\def\ltx@CdrNum#1{%
+ \romannumeral0%
+ \expandafter\expandafter\expandafter\LTXcmds@CdrNum
+ \ltx@GobbleNum{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\LTXcmds@CdrNum}
+% \begin{macrocode}
+\long\def\LTXcmds@CdrNum#1\@nil{ #1}%
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Tail recursion}
%
% \begin{macro}{\ltx@ReturnAfterFi}
@@ -704,6 +828,15 @@ and the derived files
}
% \end{macrocode}
% \end{macro}
+% \begin{macro}{\ltx@hashchar}
+% \begin{macrocode}
+\begingroup
+ \lccode`0=`\#\relax
+\lowercase{\endgroup
+ \def\ltx@hashchar{0}%
+}
+% \end{macrocode}
+% \end{macro}
%
% \subsection{Boolean switch}
%
@@ -1099,6 +1232,18 @@ and the derived files
% \end{macrocode}
% \end{macro}
%
+% \subsection{Help macros}
+%
+% \begin{macro}{\LTXcmds@num}
+% \begin{macrocode}
+\ltx@IfUndefined{numexpr}{%
+ \let\LTXcmds@num\number
+}{%
+ \let\LTXcmds@num\numexpr
+}
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macrocode}
\LTXcmds@AtEnd
%</package>
@@ -1193,6 +1338,179 @@ and the derived files
%</test1>
% \end{macrocode}
%
+% \section{Test \cs{ltx@GobbleNum}}
+%
+% \begin{macrocode}
+%<*test-gobble>
+\catcode`\{=1 %
+\catcode`\}=2 %
+\catcode`\#=6 %
+\expandafter\ifx\csname RequirePackage\endcsname\relax
+ \input ltxcmds.sty\relax
+\else
+ \RequirePackage{ltxcmds}[2010/04/26]%
+\fi
+\catcode`\@=11 %
+\def\msg#{\immediate\write16}%
+\msg{[Test \string\ltx@GobbleNum]}%
+\long\def\Test#1=#2\\{%
+ \edef\StrA{\ltx@GobbleNum#1}%
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter\StrAA
+ \expandafter\expandafter\expandafter{\ltx@GobbleNum#1}%
+ \edef\StrB{#2}%
+ \ifx\StrA\StrB
+ \ifx\StrAA\StrB
+ \msg{* ok.}%
+ \else
+ \msg{StrAA: \StrAA}%
+ \msg{StrB: \StrB}%
+ \errhelp{Test: #1=#2}%
+ \errmessage{Test (two expansions) failed}%
+ \fi
+ \else
+ \msg{StrA: \StrA}%
+ \msg{StrB: \StrB}%
+ \errhelp{Test: #1=#2}%
+ \errmessage{Test (edef) failed!}%
+ \fi
+}
+\Test0abc=abc\\
+\Test1abc=bc\\
+\Test2abc=c\\
+\Test3abcd=d\\
+\Test4abcde=e\\
+\Test5abcdef=f\\
+\Test6abcdefg=g\\
+\Test7abcdefgh=h\\
+\Test8abcdefghi=i\\
+\Test9abcdefghij=j\\
+\Test{10}0123456789X=X\\
+\Test{12}abcdefghijklm=m\\
+\Test{700}%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+X=X\\
+\Test{-1}abc=abc\\
+\Test2\par\par\relax=\relax\\
+
+\msg{[Test \string\ltx@CdrNum]}%
+\long\def\Test#1=#2\\{%
+ \edef\StrA{\ltx@CdrNum#1\@nil}%
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter\StrAA
+ \expandafter\expandafter\expandafter{\ltx@CdrNum#1\@nil}%
+ \edef\StrB{#2}%
+ \ifx\StrA\StrB
+ \ifx\StrAA\StrB
+ \msg{* ok.}%
+ \else
+ \msg{StrAA: \meaning\StrAA}%
+ \msg{StrB: \meaning\StrB}%
+ \errhelp{Test: #1=#2}%
+ \errmessage{Test (two expansions) failed}%
+ \fi
+ \else
+ \msg{StrA: \StrA}%
+ \msg{StrB: \StrB}%
+ \errhelp{Test: #1=#2}%
+ \errmessage{Test (edef) failed!}%
+ \fi
+}
+\Test0abc=abc\\
+\Test1abc=bc\\
+\Test2abc=c\\
+\Test3abcd=d\\
+\Test4abcde=e\\
+\Test5abcdef=f\\
+\Test6abcdefg=g\\
+\Test7abcdefgh=h\\
+\Test8abcdefghi=i\\
+\Test9abcdefghij=j\\
+\Test{10}0123456789X=X\\
+\Test{12}abcdefghijklm=m\\
+\Test{700}%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+X=X\\
+\Test{-1}abc=abc\\
+\Test2\par\par\relax=\relax\\
+
+\msg{[Test \string\ltx@CarNum]}%
+\long\def\Test#1=#2\\{%
+ \edef\StrA{\ltx@CarNum#1\@nil}%
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter\StrAA
+ \expandafter\expandafter\expandafter{\ltx@CarNum#1\@nil}%
+ \edef\StrB{#2}%
+ \ifx\StrA\StrB
+ \ifx\StrAA\StrB
+ \msg{* ok.}%
+ \else
+ \msg{StrAA: \meaning\StrAA}%
+ \msg{StrB: \meaning\StrB}%
+ \errhelp{Test: #1=#2}%
+ \errmessage{Test (two expansions) failed}%
+ \fi
+ \else
+ \msg{StrA: \StrA}%
+ \msg{StrB: \StrB}%
+ \errhelp{Test: #1=#2}%
+ \errmessage{Test (edef) failed!}%
+ \fi
+}
+\Test0abc=\\
+\Test1abc=a\\
+\Test2abc=ab\\
+\Test3abc=abc\\
+\Test3abcd=abc\\
+\Test4abcde=abcd\\
+\Test{10}0123456789X=0123456789\\
+\Test{12}abcdefghijklm=abcdefghijkl\\
+\Test{700}%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+X=%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+0123456789012345678901234567890123456789012345678901234567890123456789%
+\\
+\Test{-1}abc=\\
+\Test2\par\par\relax=\par\par\\
+\csname @@end\endcsname\end
+%</test-gobble>
+% \end{macrocode}
%
% \section{Installation}
%
@@ -1256,6 +1574,7 @@ and the derived files
% ltxcmds.sty & tex/generic/oberdiek/ltxcmds.sty\\
% ltxcmds.pdf & doc/latex/oberdiek/ltxcmds.pdf\\
% test/ltxcmds-test1.tex & doc/latex/oberdiek/test/ltxcmds-test1.tex\\
+% test/ltxcmds-test-gobble.tex & doc/latex/oberdiek/test/ltxcmds-test-gobble.tex\\
% ltxcmds.dtx & source/latex/oberdiek/ltxcmds.dtx\\
% \end{tabular}^^A
% }^^A
@@ -1424,6 +1743,14 @@ and the derived files
% \item
% \cs{ltx@leavevmode}, \cs{ltx@mbox} added.
% \end{Version}
+% \begin{Version}{2010/04/26 v1.7}
+% \item
+% \cs{ltx@GobbleNum}, \cs{ltx@CdrNum}, \cs{ltx@CarNum} added.
+% \item
+% \cs{ltx@carzero}, \cs{ltx@cdrzero} added.
+% \item
+% \cs{ltx@hashchar} added.
+% \end{Version}
% \end{History}
%
% \PrintIndex