diff options
author | Karl Berry <karl@freefriends.org> | 2008-06-11 13:43:22 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2008-06-11 13:43:22 +0000 |
commit | e470e032d162d488eb329c579dcf4d042883b898 (patch) | |
tree | b4a188b8e2bc5f04a69c883565fa20a82792472b /Master/texmf-dist/source/latex/oberdiek | |
parent | 8cf544357f1a5ed0766cffd1854cc140d735a9ef (diff) |
oberdiek update (10jun08)
git-svn-id: svn://tug.org/texlive/trunk@8673 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/oberdiek')
4 files changed, 754 insertions, 2 deletions
diff --git a/Master/texmf-dist/source/latex/oberdiek/hyphsubst.dtx b/Master/texmf-dist/source/latex/oberdiek/hyphsubst.dtx index a93be649f2d..58046db0115 100644 --- a/Master/texmf-dist/source/latex/oberdiek/hyphsubst.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/hyphsubst.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2007 by Heiko Oberdiek <oberdiek@uni-freiburg.de> +% Copyright (C) 2008 by Heiko Oberdiek <oberdiek@uni-freiburg.de> % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either @@ -80,7 +80,7 @@ This is a generated file. -Copyright (C) 2007 by Heiko Oberdiek <oberdiek@uni-freiburg.de> +Copyright (C) 2008 by Heiko Oberdiek <oberdiek@uni-freiburg.de> This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either diff --git a/Master/texmf-dist/source/latex/oberdiek/letltxmacro.dtx b/Master/texmf-dist/source/latex/oberdiek/letltxmacro.dtx new file mode 100644 index 00000000000..76f41e6f084 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/letltxmacro.dtx @@ -0,0 +1,737 @@ +% \iffalse meta-comment +% +% Copyright (C) 2008 by Heiko Oberdiek <oberdiek@uni-freiburg.de> +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3 of this license or (at your option) any later +% version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of +% LaTeX version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% This Current Maintainer of this work is Heiko Oberdiek. +% +% This work consists of the main source file letltxmacro.dtx +% and the derived files +% letltxmacro.sty, letltxmacro.pdf, letltxmacro.ins, letltxmacro.drv, +% letltxmacro-test1.tex, letltxmacro-test2.tex. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/letltxmacro.dtx +% CTAN:macros/latex/contrib/oberdiek/letltxmacro.pdf +% +% Unpacking: +% (a) If letltxmacro.ins is present: +% tex letltxmacro.ins +% (b) Without letltxmacro.ins: +% tex letltxmacro.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{letltxmacro.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If letltxmacro.drv is present: +% latex letltxmacro.drv +% (b) Without letltxmacro.drv: +% latex letltxmacro.dtx; ... +% The class ltxdoc loads the configuration file ltxdoc.cfg +% if available. Here you can specify further options, e.g. +% use A4 as paper format: +% \PassOptionsToClass{a4paper}{article} +% +% Programm calls to get the documentation (example): +% pdflatex letltxmacro.dtx +% makeindex -s gind.ist letltxmacro.idx +% pdflatex letltxmacro.dtx +% makeindex -s gind.ist letltxmacro.idx +% pdflatex letltxmacro.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/letltxmacro.sty +% TDS:doc/latex/oberdiek/letltxmacro.pdf +% TDS:doc/latex/oberdiek/test/letltxmacro-test1.tex +% TDS:doc/latex/oberdiek/test/letltxmacro-test2.tex +% TDS:source/latex/oberdiek/letltxmacro.dtx +% +%<*ignore> +\begingroup + \def\x{LaTeX2e}% +\expandafter\endgroup +\ifcase 0\ifx\install y1\fi\expandafter + \ifx\csname processbatchFile\endcsname\relax\else1\fi + \ifx\fmtname\x\else 1\fi\relax +\else\csname fi\endcsname +%</ignore> +%<*install> +\input docstrip.tex +\Msg{************************************************************************} +\Msg{* Installation} +\Msg{* Package: letltxmacro 2008/06/09 v1.0 Let assignment for LaTeX macros (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\let\MetaPrefix\relax +\preamble + +This is a generated file. + +Copyright (C) 2008 by Heiko Oberdiek <oberdiek@uni-freiburg.de> + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either +version 1.3 of this license or (at your option) any later +version. The latest version of this license is in + http://www.latex-project.org/lppl.txt +and version 1.3 or later is part of all distributions of +LaTeX version 2005/12/01 or later. + +This work has the LPPL maintenance status "maintained". + +This Current Maintainer of this work is Heiko Oberdiek. + +This work consists of the main source file letltxmacro.dtx +and the derived files + letltxmacro.sty, letltxmacro.pdf, letltxmacro.ins, letltxmacro.drv, + letltxmacro-test1.tex, letltxmacro-test2.tex. + +\endpreamble +\let\MetaPrefix\DoubleperCent + +\generate{% + \file{letltxmacro.ins}{\from{letltxmacro.dtx}{install}}% + \file{letltxmacro.drv}{\from{letltxmacro.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{letltxmacro.sty}{\from{letltxmacro.dtx}{package}}% + \usedir{doc/latex/oberdiek/test}% + \file{letltxmacro-test1.tex}{\from{letltxmacro.dtx}{test1}}% + \file{letltxmacro-test2.tex}{\from{letltxmacro.dtx}{test2}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* letltxmacro.sty} +\Msg{*} +\Msg{* And install the following script file:} +\Msg{*} +\Msg{* } +\Msg{*} +\Msg{* To produce the documentation run the file `letltxmacro.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{letltxmacro.drv}% + [2008/06/09 v1.0 Let assignment for LaTeX macros (HO)]% +\documentclass{ltxdoc} +\usepackage{holtxdoc}[2007/11/11] +\begin{document} + \DocInput{letltxmacro.dtx}% +\end{document} +%</driver> +% \fi +% +% \CheckSum{470} +% +% \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 +% Lower-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 +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% \GetFileInfo{letltxmacro.drv} +% +% \title{The \xpackage{letltxmacro} package} +% \date{2008/06/09 v1.0} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% \TeX's \cs{let} assignment does not work for \LaTeX\ macros +% with optional arguments or for macros that are defined +% as robust macros by \cs{DeclareRobustCommand}. This package +% defines \cs{LetLtxMacro} that also takes care of the involved +% internal macros. +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% If someone wants to redefine a macro with using the old +% meaning, then one method is \TeX's command \cs{let}: +%\begin{quote} +%\begin{verbatim} +%\newcommand{\Macro}{\typeout{Test Macro}} +%\let\SavedMacro=\Macro +%\renewcommand{\Macro}{% +% \typeout{Begin}% +% \SavedMacro +% \typeout{End}% +%} +%\end{verbatim} +%\end{quote} +% However, this method fails, if \cs{Macro} is defined +% by \cs{DeclareRobustCommand} and/or has an optional argument. +% In both cases \LaTeX\ defines an additional internal macro +% that is forgotten in the simple \cs{let} assignment of +% the example above. +% +% \begin{declcs}{LetLtxMacro} \M{new macro} \M{old macro} +% \end{declcs} +% Macro \cs{LetLtxMacro} behaves similar to \TeX's \cs{let} +% assignment, but it takes care of macros that are +% defined by \cs{DeclareRobustCommand} and/or have optional +% arguments. Example: +%\begin{quote} +%\begin{verbatim} +%\DeclareRobustCommand{\Macro}[1][default]{...} +%\LetLtxMacro{\SavedMacro}{\Macro} +%\end{verbatim} +%\end{quote} +% Then macro \cs{SavedMacro} only uses internal macro names +% that are derived from \cs{SavedMacro}'s macro name. Macro \cs{Macro} +% can now be redefined without affecting \cs{SavedMacro}. +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% \subsection{Catcodes and identification} +% +% \begin{macrocode} +\begingroup + \catcode123 1 % { + \catcode125 2 % } + \def\x{\endgroup + \expandafter\edef\csname llm@AtEnd\endcsname{% + \catcode35 \the\catcode35\relax + \catcode64 \the\catcode64\relax + \catcode123 \the\catcode123\relax + \catcode125 \the\catcode125\relax + }% + }% +\x +\catcode35 6 % # +\catcode64 11 % @ +\catcode123 1 % { +\catcode125 2 % } +\def\TMP@EnsureCode#1#2{% + \edef\llm@AtEnd{% + \llm@AtEnd + \catcode#1 \the\catcode#1\relax + }% + \catcode#1 #2\relax +} +\TMP@EnsureCode{40}{12}% ( +\TMP@EnsureCode{41}{12}% ) +\TMP@EnsureCode{42}{12}% * +\TMP@EnsureCode{45}{12}% - +\TMP@EnsureCode{46}{12}% . +\TMP@EnsureCode{47}{12}% / +\TMP@EnsureCode{58}{12}% : +\TMP@EnsureCode{61}{12}% = +\TMP@EnsureCode{62}{12}% > +% \end{macrocode} +% +% Package identification. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{letltxmacro}% + [2008/06/09 v1.0 Let assignment for LaTeX macros (HO)] +% \end{macrocode} +% +% \subsection{Package} +% +% \begin{macro}{\LetLtxMacro} +% \begin{macrocode} +\newcommand*{\LetLtxMacro}[2]{% + \edef\reserved@a{% + \noexpand\protect + \expandafter\noexpand + \csname\expandafter\@gobble\string#2 \endcsname + }% + \ifx\reserved@a#2\relax + \edef#1{% + \noexpand\protect + \expandafter\noexpand + \csname\expandafter\@gobble\string#1 \endcsname + }% + \expandafter\let + \csname\expandafter\@gobble\string#1 \expandafter\endcsname + \csname\expandafter\@gobble\string#2 \endcsname + \expandafter\llm@LetLtxMacro + \csname\expandafter\@gobble\string#1 \expandafter\endcsname + \csname\expandafter\@gobble\string#2 \endcsname + \else + \llm@LetLtxMacro{#1}{#2}% + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\llm@LetLtxMacro} +% \begin{macrocode} +\def\llm@LetLtxMacro#1#2{% + \expandafter\llm@CheckParams\meaning#2{}{}{}{}{}{}{}{}\@nil{% + \begingroup + \edef\x{% + \noexpand\@protected@testopt + \noexpand#2% + \expandafter\noexpand\csname\string#2\endcsname + }% + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter\y + \expandafter\expandafter\expandafter{% + \expandafter\llm@CarThree#2{}{}{}\llm@nil + }% + \expandafter\endgroup\ifx\x\y + \begingroup + \def\@protected@testopt##1##2##3{% + \toks@={##3}% + \xdef\llm@GlobalTemp{% + \noexpand\@protected@testopt + \noexpand#1% + \expandafter\noexpand\csname\string#1\endcsname + {\the\toks@}% + }% + }% + #2% + \endgroup + \let#1=\llm@GlobalTemp + \expandafter\let\csname\string#1\expandafter\endcsname + \csname\string#2\endcsname + \else + \let#1=#2\relax + \fi + }{% + \let#1=#2\relax + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\llm@CheckParams} +% \begin{macrocode} +\def\llm@CheckParams#1#2#3#4#5#6#7#8#9\@nil{% + \begingroup + \def\x{#1#2#3#4#5#6#7#8}% + \@onelevel@sanitize\x + \expandafter\endgroup\ifx\x\llm@macro + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\llm@macro} +% \begin{macrocode} +\def\llm@macro{macro:->} +\@onelevel@sanitize\llm@macro +% \end{macrocode} +% \end{macro} +% \begin{macro}{\llm@CarThree} +% \begin{macrocode} +\def\llm@CarThree#1#2#3#4\llm@nil{#1#2#3}% +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\llm@AtEnd +%</package> +% \end{macrocode} +% +% \section{Test} +% +% \subsection{Catcode checks for loading} +% +% \begin{macrocode} +%<*test1> +% \end{macrocode} +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\documentclass{minimal} +\makeatletter +\def\RestoreCatcodes{} +\count@=0 % +\loop + \edef\RestoreCatcodes{% + \RestoreCatcodes + \catcode\the\count@=\the\catcode\count@\relax + }% +\ifnum\count@<255 % + \advance\count@\@ne +\repeat + +\def\RangeCatcodeInvalid#1#2{% + \count@=#1\relax + \loop + \catcode\count@=15 % + \ifnum\count@<#2\relax + \advance\count@\@ne + \repeat +} +\def\Test{% + \RangeCatcodeInvalid{0}{47}% + \RangeCatcodeInvalid{58}{64}% + \RangeCatcodeInvalid{91}{96}% + \RangeCatcodeInvalid{123}{127}% + \catcode`\@=12 % + \catcode`\\=0 % + \catcode`\{=1 % + \catcode`\}=2 % + \catcode`\#=6 % + \catcode`\[=12 % + \catcode`\]=12 % + \catcode`\%=14 % + \catcode`\ =10 % + \catcode13=5 % + \RequirePackage{letltxmacro}[2008/06/09]\relax + \RestoreCatcodes +} +\Test +\csname @@end\endcsname +\end +% \end{macrocode} +% \begin{macrocode} +%</test1> +% \end{macrocode} +% +% \subsection{Package tests} +% +% \begin{macrocode} +%<*test2> +% \end{macrocode} +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\nofiles +\documentclass{minimal} + +\usepackage{letltxmacro}[2008/06/09] + +\usepackage{qstest} +\IncludeTests{*} +\LogTests{log}{*}{*} + +\makeatletter + +\def\TestDef#1{% + \begingroup + \@makeother\\% + \@makeother\ % + \expandafter\@TestDef\csname #1\endcsname +} +\def\@TestDef#1#2{% + \edef\a{\expandafter\strip@prefix\meaning#1}% + \edef\b{\detokenize{#2}}% + \ifx\a\b + \else + \typeout{1 [\a]}% + \typeout{2 [\b]}% + \fi + \endgroup + \Expect*{\expandafter\strip@prefix\meaning#1}*{\detokenize{#2}}% +} +\def\TestEquals#1#2{% + \Expect*{% + \expandafter\ifx\csname#1\expandafter\endcsname + \csname#2\endcsname + equals% + \else + wrong% + \fi + }{equals}% +} +\def\SaveA{% + \let\SavedA\TestA + \expandafter\let\csname\string\SavedA\expandafter\endcsname + \csname\string\TestA\endcsname + \expandafter\let\csname SavedA \expandafter\endcsname + \csname TestA \endcsname +} +\def\CheckA{% + \TestEquals{SavedA}{TestA}% + \TestEquals{\string\SavedA}{\string\TestA}% + \TestEquals{SavedA }{TestA }% +} + +\begin{qstest}{robust}{robust} + \DeclareRobustCommand*{\TestA}{Test}% + \SaveA + \TestDef{TestA}{\protect \TestA }% + \CheckA + \DeclareRobustCommand{\TestA}{Test}% + \SaveA + \TestDef{TestA}{\protect \TestA }% + \LetLtxMacro\TestB\TestA + \TestDef{TestB}{\protect \TestB }% + \TestEquals{TestB }{TestA }% + \CheckA +\end{qstest} + +\begin{qstest}{default}{default} + \newcommand{\TestA}[1][\relax default \empty]{TestA #1}% + \SaveA + \TestDef + {TestA}{\@protected@testopt \TestA \\TestA {\relax default \empty }}% + \LetLtxMacro\TestB\TestA + \TestDef + {TestB}{\@protected@testopt \TestB \\TestB {\relax default \empty }}% + \CheckA +\end{qstest} + +\begin{qstest}{robustdefault}{robustdefault} + \DeclareRobustCommand{\TestA}[1][\default]{TestA}% + \SaveA + \LetLtxMacro\TestB\TestA + \TestDef{TestB}{\protect \TestB }% + \TestDef{TestB }{\@protected@testopt \TestB \\TestB {\default }}% + \CheckA +\end{qstest} + +\begin{qstest}{plain}{plain} + \LetLtxMacro\NewRelax\relax + \Expect*{\meaning\relax}*{\string\relax}% + \Expect*{\meaning\NewRelax}*{\string\relax}% + \LetLtxMacro\NewHbox\hbox + \Expect*{\meaning\hbox}*{\string\hbox}% + \Expect*{\meaning\NewHbox}*{\string\hbox}% + \LetLtxMacro\NewEmpty\empty + \Expect*{\meaning\empty}{macro:->}% + \Expect*{\meaning\NewEmpty}{macro:->}% +\end{qstest} +% \end{macrocode} +% +% \begin{macrocode} +\csname @@end\endcsname +% \end{macrocode} +% \begin{macrocode} +%</test2> +% \end{macrocode} +% +% \section{Installation} +% +% \subsection{Download} +% +% \paragraph{Package.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/letltxmacro.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/letltxmacro.pdf}] Documentation. +% \end{description} +% +% +% \paragraph{Bundle.} All the packages of the bundle `oberdiek' +% are also available in a TDS compliant ZIP archive. There +% the packages are already unpacked and the documentation files +% are generated. The files and directories obey the TDS standard. +% \begin{description} +% \item[\CTAN{install/macros/latex/contrib/oberdiek.tds.zip}] +% \end{description} +% \emph{TDS} refers to the standard ``A Directory Structure +% for \TeX\ Files'' (\CTAN{tds/tds.pdf}). Directories +% with \xfile{texmf} in their name are usually organized this way. +% +% \subsection{Bundle installation} +% +% \paragraph{Unpacking.} Unpack the \xfile{oberdiek.tds.zip} in the +% TDS tree (also known as \xfile{texmf} tree) of your choice. +% Example (linux): +% \begin{quote} +% |unzip oberdiek.tds.zip -d ~/texmf| +% \end{quote} +% +% \paragraph{Script installation.} +% Check the directory \xfile{TDS:scripts/oberdiek/} for +% scripts that need further installation steps. +% Package \xpackage{attachfile2} comes with the Perl script +% \xfile{pdfatfi.pl} that should be installed in such a way +% that it can be called as \texttt{pdfatfi}. +% Example (linux): +% \begin{quote} +% |chmod +x scripts/oberdiek/pdfatfi.pl|\\ +% |cp scripts/oberdiek/pdfatfi.pl /usr/local/bin/| +% \end{quote} +% +% \subsection{Package installation} +% +% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting +% \docstrip\ archive. The files are extracted by running the +% \xfile{.dtx} through \plainTeX: +% \begin{quote} +% \verb|tex letltxmacro.dtx| +% \end{quote} +% +% \paragraph{TDS.} Now the different files must be moved into +% the different directories in your installation TDS tree +% (also known as \xfile{texmf} tree): +% \begin{quote} +% \def\t{^^A +% \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} +% letltxmacro.sty & tex/latex/oberdiek/letltxmacro.sty\\ +% letltxmacro.pdf & doc/latex/oberdiek/letltxmacro.pdf\\ +% test/letltxmacro-test1.tex & doc/latex/oberdiek/test/letltxmacro-test1.tex\\ +% test/letltxmacro-test2.tex & doc/latex/oberdiek/test/letltxmacro-test2.tex\\ +% letltxmacro.dtx & source/latex/oberdiek/letltxmacro.dtx\\ +% \end{tabular}^^A +% }^^A +% \sbox0{\t}^^A +% \ifdim\wd0>\linewidth +% \begingroup +% \advance\linewidth by\leftmargin +% \advance\linewidth by\rightmargin +% \edef\x{\endgroup +% \def\noexpand\lw{\the\linewidth}^^A +% }\x +% \def\lwbox{^^A +% \leavevmode +% \hbox to \linewidth{^^A +% \kern-\leftmargin\relax +% \hss +% \usebox0 +% \hss +% \kern-\rightmargin\relax +% }^^A +% }^^A +% \ifdim\wd0>\lw +% \sbox0{\small\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\footnotesize\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\scriptsize\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\tiny\t}^^A +% \ifdim\wd0>\linewidth +% \lwbox +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \end{quote} +% If you have a \xfile{docstrip.cfg} that configures and enables \docstrip's +% TDS installing feature, then some files can already be in the right +% place, see the documentation of \docstrip. +% +% \subsection{Refresh file name databases} +% +% If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) relies on file name databases, you must refresh +% these. For example, \teTeX\ users run \verb|texhash| or +% \verb|mktexlsr|. +% +% \subsection{Some details for the interested} +% +% \paragraph{Attached source.} +% +% The PDF documentation on CTAN also includes the +% \xfile{.dtx} source file. It can be extracted by +% AcrobatReader 6 or higher. Another option is \textsf{pdftk}, +% e.g. unpack the file into the current directory: +% \begin{quote} +% \verb|pdftk letltxmacro.pdf unpack_files output .| +% \end{quote} +% +% \paragraph{Unpacking with \LaTeX.} +% The \xfile{.dtx} chooses its action depending on the format: +% \begin{description} +% \item[\plainTeX:] Run \docstrip\ and extract the files. +% \item[\LaTeX:] Generate the documentation. +% \end{description} +% If you insist on using \LaTeX\ for \docstrip\ (really, +% \docstrip\ does not need \LaTeX), then inform the autodetect routine +% about your intention: +% \begin{quote} +% \verb|latex \let\install=y\input{letltxmacro.dtx}| +% \end{quote} +% Do not forget to quote the argument according to the demands +% of your shell. +% +% \paragraph{Generating the documentation.} +% You can use both the \xfile{.dtx} or the \xfile{.drv} to generate +% the documentation. The process can be configured by the +% configuration file \xfile{ltxdoc.cfg}. For instance, put this +% line into this file, if you want to have A4 as paper format: +% \begin{quote} +% \verb|\PassOptionsToClass{a4paper}{article}| +% \end{quote} +% An example follows how to generate the +% documentation with pdf\LaTeX: +% \begin{quote} +%\begin{verbatim} +%pdflatex letltxmacro.dtx +%makeindex -s gind.ist letltxmacro.idx +%pdflatex letltxmacro.dtx +%makeindex -s gind.ist letltxmacro.idx +%pdflatex letltxmacro.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2008/06/09 v1.0} +% \item +% First version. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins b/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins index 3656117d7e5..6b10f392d7d 100644 --- a/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins +++ b/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins @@ -65,6 +65,7 @@ \batchinput{intcalc.dtx} \batchinput{kvoptions.dtx} \batchinput{kvsetkeys.dtx} +\batchinput{letltxmacro.dtx} \batchinput{listingsutf8.dtx} \batchinput{luacolor.dtx} \batchinput{luatex.dtx} diff --git a/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex b/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex index 884965e491f..c50a2b59bc7 100644 --- a/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex +++ b/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex @@ -245,6 +245,8 @@ [\entrysep] \entry{kvsetkeys}{2007/09/29}{1.3}{Key value parser with default handler support}% [\entrysep] +\entry{letltxmacro}{2008/06/09}{1.0}{Let assignment for \LaTeX{} macros}% +[\entrysep] \entry{listingsutf8}{2007/11/11}{1.1}{Adding support for UTF-8 to listings}% [\entrysep] \entry{luacolor}{2007/12/12}{1.0}{Coloring based on LuaTeX's node attributes}% @@ -755,6 +757,18 @@ only one level of curly braces is removed from the values. \tocinclude{kvsetkeys} \newpage +\subsection{\pkgsectformat{letltxmacro}} +\label{letltxmacro} +\begin{abstract} +\TeX's \cs{let} assignment does not work for \LaTeX\ macros +with optional arguments or for macros that are defined +as robust macros by \cs{DeclareRobustCommand}. This package +defines \cs{LetLtxMacro} that also takes care of the involved +internal macros. +\end{abstract} +\tocinclude{letltxmacro} + +\newpage \subsection{\pkgsectformat{listingsutf8}} \label{listingsutf8} \begin{abstract} |