diff options
author | Karl Berry <karl@freefriends.org> | 2010-05-04 17:35:01 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-05-04 17:35:01 +0000 |
commit | 3cd7d680d047db2f439ccba96948f1ceaa6d973f (patch) | |
tree | 99414f003d20290deb6c11806bde6685c1eb9b25 /Master/texmf-dist/source/latex/oberdiek/ltxcmds.dtx | |
parent | 67c3a09c0f5d7fcf6bff5cfbc686a0c247d0e744 (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.dtx | 371 |
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 |