diff options
author | Karl Berry <karl@freefriends.org> | 2007-04-28 00:47:40 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2007-04-28 00:47:40 +0000 |
commit | eb20b1a58efdf85ed1ef1c7091bcb414a7a60a32 (patch) | |
tree | 80972c25ace1916fc7b72d86dc8e3edf99f12824 /Master/texmf-dist/source/latex | |
parent | e376078a88d46cc66692baeb43f83a235f9b52a3 (diff) |
oberdiek as always, infwarerr v1.0 new and updates
git-svn-id: svn://tug.org/texlive/trunk@4200 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex')
18 files changed, 2179 insertions, 551 deletions
diff --git a/Master/texmf-dist/source/latex/oberdiek/alphalph.dtx b/Master/texmf-dist/source/latex/oberdiek/alphalph.dtx index a882eef697e..2324f62c151 100644 --- a/Master/texmf-dist/source/latex/oberdiek/alphalph.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/alphalph.dtx @@ -138,7 +138,7 @@ and the derived files %</driver> % \fi % -% \CheckSum{393} +% \CheckSum{403} % % \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 @@ -265,6 +265,11 @@ and the derived files % Reload check, especially if the package is not used with \LaTeX. % \begin{macrocode} \begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ \expandafter\let\expandafter\x\csname ver@alphalph.sty\endcsname \ifcase 0% \ifx\x\relax % plain @@ -291,6 +296,11 @@ and the derived files % Package identification: % \begin{macrocode} \begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ \expandafter\ifx\csname ProvidesPackage\endcsname\relax \def\x#1#2#3[#4]{\endgroup \immediate\write-1{Package: #3 #4}% diff --git a/Master/texmf-dist/source/latex/oberdiek/atbegshi.dtx b/Master/texmf-dist/source/latex/oberdiek/atbegshi.dtx index 37869feb4c8..9a21e37af89 100644 --- a/Master/texmf-dist/source/latex/oberdiek/atbegshi.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/atbegshi.dtx @@ -69,7 +69,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: atbegshi 2007/04/19 v1.2 At begin shipout hook (HO)} +\Msg{* Package: atbegshi 2007/04/27 v1.4 At begin shipout hook (HO)} \Msg{************************************************************************} \keepsilent @@ -133,7 +133,7 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{atbegshi.drv}% - [2007/04/19 v1.2 At begin shipout hook (HO)]% + [2007/04/27 v1.4 At begin shipout hook (HO)]% \documentclass{ltxdoc} \usepackage{holtxdoc} \begin{document} @@ -142,7 +142,7 @@ and the derived files %</driver> % \fi % -% \CheckSum{1176} +% \CheckSum{1120} % % \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 @@ -163,7 +163,7 @@ and the derived files % \GetFileInfo{atbegshi.drv} % % \title{The \xpackage{atbegshi} package} -% \date{2007/04/19 v1.2} +% \date{2007/04/27 v1.4} % \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} % % \maketitle @@ -315,7 +315,7 @@ and the derived files % the assignment: %\begin{quote} %\begin{verbatim} -%\shipout -> +%\shipout := % \afterassignment\@test % \setbox\mybox= %\end{verbatim} @@ -353,12 +353,12 @@ and the derived files % compares the previously stored group level with the current one: %\begin{quote} %\begin{verbatim} -%\shipout -> +%\shipout := % \edef\saved@grouplevel{\number\currentgrouplevel} % \afterassignment\@test % \setbox\mybox= % -%\@test -> +%\@test := % \ifnum\saved@grouplevel=\currentgrouplevel % % case: indirect box, the assignment is completed % \@output @@ -416,7 +416,7 @@ and the derived files % in our macros, namely \cs{@output}. %\begin{quote} %\begin{verbatim} -%\shipout -> +%\shipout := % % trick to get a void box \mybox % \begingroup % \setbox\mybox=\box\mybox @@ -424,7 +424,7 @@ and the derived files % \afterassignment\@test % \setbox\mybox= % -%\@test -> +%\@test := % \ifvoid\mybox % \aftergroup\@output % \else @@ -454,13 +454,13 @@ and the derived files % it returns 0\,pt. %\begin{quote} %\begin{verbatim} -%\shipout -> +%\shipout := % \begingroup % \setbox\mybox=\hbox\bgroup % \kern1pt % \afterassignment\shipout@test % \global\setbox\mybox= -%\@test -> +%\@test := % \ifdim\lastkern=0pt % % direct box % \aftergroup\egroup @@ -490,7 +490,7 @@ and the derived files % wants to manipulate the output box. %\begin{quote} %\begin{verbatim} -%\@output -> +%\@output := % \ifvoid\mybox % % cancel output of void box % \else @@ -537,19 +537,18 @@ and the derived files %\newbox\mybox %\let\original@shipout\shipout % -%\shipout -> +%\shipout := % \edef\saved@grouplevel{\number\currentgrouplevel} % \afterassignment\@test % \setbox\mybox= % -%\@test -> -% \ifnum\saved@grouplevel=\currentgrouplevel -% \@output -% \else -% \aftergroup\@output +%\@test := +% \ifnum\saved@grouplevel<\currentgrouplevel +% \expandafter\aftergroup % \fi +% \@output % -%\@output -> +%\@output := % \ifvoid\mybox % % cancel output of void box % \else @@ -563,7 +562,7 @@ and the derived files %\end{verbatim} %\end{quote} % -% \subsubsection{Without \eTeX} +% \subsubsection{Without \eTeX, traditional way} % % And for \TeX\ without \eTeX: %\begin{quote} @@ -574,7 +573,7 @@ and the derived files %\endgroup %\let\original@shipout\shipout % -%\shipout -> +%\shipout := % % trick to get a void box \mybox % \begingroup % \setbox\mybox=\box\mybox @@ -582,14 +581,13 @@ and the derived files % \afterassignment\@test % \setbox\mybox= % -%\@test -> +%\@test := % \ifvoid\mybox -% \aftergroup\@output -% \else -% \@output +% \expandafter\aftergroup % \fi +% \@output % -%\@output -> +%\@output := % \ifvoid\mybox % % cancel output of void box % \else @@ -611,25 +609,22 @@ and the derived files %\newbox\mybox %\let\original@shipout\shipout % -%\shipout -> +%\shipout := % \begingroup % \setbox\mybox=\hbox\bgroup % \kern1pt % \afterassignment\@test % \setbox\mybox= % -%\@test -> +%\@test := % \ifdim\lastkern=0pt -% \aftergroup\egroup -% \aftergroup\endgroup -% \aftergroup\@output -% \else -% \egroup -% \endgroup -% \@output +% \expandafter\aftergroup % \fi +% \@output % -%\@output -> +%\@output := +% \egroup +% \endgroup % \ifvoid\mybox % % cancel output of void box % \else @@ -655,38 +650,15 @@ and the derived files %<*package> % \end{macrocode} % -% \subsection{Catcodes} -% -% \begin{macrocode} -\expandafter\edef\csname AtBegShi@End\endcsname{% - \catcode40 \the\catcode40\relax % ( - \catcode41 \the\catcode41\relax % ) - \catcode44 \the\catcode44\relax % , - \catcode45 \the\catcode45\relax % - - \catcode46 \the\catcode46\relax % . - \catcode58 \the\catcode58\relax % : - \catcode61 \the\catcode61\relax % = - \catcode64 \the\catcode64\relax % @ - \catcode94 \the\catcode94\relax % ^ - \catcode96 \the\catcode96\relax % ` - \noexpand\endinput -} -\catcode40 12 % ( -\catcode41 12 % ) -\catcode44 12 % , -\catcode45 12 % - -\catcode46 12 % . -\catcode58 12 % : -\catcode61 12 % = -\catcode64 11 % @ -\catcode94 7 % ^ -\catcode96 12 % ` -% \end{macrocode} -% % \subsection{Reload check and package identification} % Reload check, especially if the package is not used with \LaTeX. % \begin{macrocode} \begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ \expandafter\let\expandafter\x\csname ver@atbegshi.sty\endcsname \ifcase 0% \ifx\x\relax % plain @@ -713,6 +685,11 @@ and the derived files % Package identification: % \begin{macrocode} \begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ \expandafter\ifx\csname ProvidesPackage\endcsname\relax \def\x#1#2#3[#4]{\endgroup \immediate\write-1{Package: #3 #4}% @@ -728,59 +705,46 @@ and the derived files \fi \expandafter\x\csname ver@atbegshi.sty\endcsname \ProvidesPackage{atbegshi}% - [2007/04/19 v1.2 At begin shipout hook (HO)] + [2007/04/27 v1.4 At begin shipout hook (HO)] % \end{macrocode} % -% \subsection{Preparations} +% \subsection{Catcodes} % -% \begin{macro}{\AtBegShi@Warning} % \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname PackageWarning\endcsname\relax - \def\AtBegShi@Warning#1{% - \begingroup - \newlinechar=10 % - \def\@spaces{\space\space\space\space}% - \def\MessageBreak{% - ^^J(atbegshi)\@spaces\@spaces\@spaces\@spaces - }% - \immediate\write16{% - ^^JPackage atbegshi Warning: #1 % - on input line \the\inputlineno.^^J% - }% - \endgroup - }% -\else - \def\AtBegShi@Warning{% - \PackageWarning{atbegshi}% - }% -\fi +\expandafter\edef\csname AtBegShi@End\endcsname{% + \catcode40 \the\catcode40\relax % ( + \catcode41 \the\catcode41\relax % ) + \catcode44 \the\catcode44\relax % , + \catcode45 \the\catcode45\relax % - + \catcode46 \the\catcode46\relax % . + \catcode58 \the\catcode58\relax % : + \catcode61 \the\catcode61\relax % = + \catcode64 \the\catcode64\relax % @ + \catcode94 \the\catcode94\relax % ^ + \catcode96 \the\catcode96\relax % ` + \noexpand\endinput +} +\catcode40 12 % ( +\catcode41 12 % ) +\catcode44 12 % , +\catcode45 12 % - +\catcode46 12 % . +\catcode58 12 % : +\catcode61 12 % = +\catcode64 11 % @ +\catcode94 7 % ^ +\catcode96 12 % ` % \end{macrocode} -% \end{macro} % -% \begin{macro}{\AtBegShi@Info} +% \subsection{Preparations} +% +% \begin{macro}{\AtBegShi@Warning} % \begin{macrocode} \begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname PackageInfo\endcsname\relax - \def\AtBegShi@Info#1{% - \begingroup - \newlinechar=10 % - \def\@spaces{\space\space\space\space}% - \def\MessageBreak{% - ^^J(atbegshi) \@spaces\@spaces\@spaces - }% - \immediate\write-1{% - ^^JPackage atbegshi Info: #1.^^J% - }% - \endgroup - }% +\expandafter\ifx\csname RequirePackage\endcsname\relax + \input infwarerr.sty\relax \else - \def\AtBegShi@Info#1{% - \begingroup - \def\on@line{}% - \PackageInfo{atbegshi}{#1}% - \endgroup - }% + \RequirePackage{infwarerr}% \fi % \end{macrocode} % \end{macro} @@ -856,31 +820,21 @@ X \global % \begin{macrocode} \def\AtBegShi@Test{% X \ifdim\lastkern=\z@ -X \aftergroup\egroup -X \aftergroup\endgroup -X \expandafter\aftergroup -X \else -X \egroup -X \endgroup -E \ifnum\AtBegShi@GroupLevel=\currentgrouplevel -E \else -E \expandafter\aftergroup +E \ifnum\AtBegShi@GroupLevel<\currentgrouplevel + \expandafter\aftergroup \fi \AtBegShi@Output } % \end{macrocode} % \end{macro} % -% \begin{macrocode} -\catcode`\X=11 % -\catcode`\E=11 % -% \end{macrocode} -% % \begin{macro}{\AtBegShi@Output} % \begin{macrocode} \def\AtBegShi@Output{% +X \egroup +X \endgroup \ifvoid\AtBeginShipoutBox - \AtBegShi@Warning{Ignoring void shipout box}% + \@PackageWarning{atbegshi}{Ignoring void shipout box}% \else \let\AtBegShi@OrgProtect\protect \csname set@typeset@protect\endcsname @@ -889,7 +843,7 @@ E \expandafter\aftergroup \AtBegShi@HookNext \gdef\AtBegShi@HookNext{}% \ifAtBegShi@Discarded - \AtBegShi@Info{Shipout page discarded}% + \@PackageInfoNoLine{atbegshi}{Shipout page discarded}% \global\AtBegShi@Discardedfalse \begingroup \setbox\AtBeginShipoutBox\box\AtBeginShipoutBox @@ -905,6 +859,11 @@ E \expandafter\aftergroup % \end{macrocode} % \end{macro} % +% \begin{macrocode} +\catcode`\X=11 % +\catcode`\E=11 % +% \end{macrocode} +% % \begin{macro}{\AtBegShi@First} % \begin{macrocode} \def\AtBegShi@First{% @@ -977,7 +936,7 @@ E \expandafter\aftergroup % \begin{macro}{\AtBegShi@FirstDisabled} % \begin{macrocode} \long\def\AtBegShi@FirstDisabled#1{% - \AtBegShi@Warning{% + \@PackageWarning{atbegshi}{% First page is already shipped out, ignoring\MessageBreak \string\AtBeginShipoutFirst }% @@ -1016,7 +975,7 @@ E \expandafter\aftergroup \else #1% \ifvoid\AtBeginShipoutBox - \AtBegShi@Warning{% + \@PackageWarning{atbegshi}{% Shipout box was voided by hook,\MessageBreak ignoring shipout box% }% @@ -1144,7 +1103,7 @@ E \expandafter\aftergroup \expandafter\AtBeginShipoutBox \fi }% - \AtBegShi@Info{Package `crop' patched}% + \@PackageInfoNoLine{atbegshi}{Package `crop' patched}% \begingroup \fi \fi @@ -1221,7 +1180,7 @@ E \expandafter\aftergroup \expandafter\@EveryShipout@Output \fi }% - \AtBegShi@Info{Package `everyshi' patched}% + \@PackageInfoNoLine{atbegshi}{Package `everyshi' patched}% \begingroup \fi \fi @@ -1322,7 +1281,7 @@ E \expandafter\aftergroup \expandafter\AtBeginShipoutBox \fi }% - \AtBegShi@Info{Class `memoir' patched}% + \@PackageInfoNoLine{atbegshi}{Class `memoir' patched}% \begingroup \fi \fi @@ -1348,7 +1307,7 @@ E \expandafter\aftergroup %<*test1> \input atbegshi.sty\relax \def\msg#{\immediate\write16} -\msg{File: atbegshi-test1.tex 2007/04/19 v1.2 Test file for plain-TeX} +\msg{File: atbegshi-test1.tex 2007/04/27 v1.4 Test file for plain-TeX} \def\testmsg#1#2{% \msg{}% \msg{*** Test with box (#1), expected page output [#2]}% @@ -1445,7 +1404,7 @@ Hello World % \begin{macrocode} %<*test2> \NeedsTeXFormat{LaTeX2e} -\ProvidesFile{atbegshi-test2.tex}[2007/04/19 v1.2 Test file for LaTeX] +\ProvidesFile{atbegshi-test2.tex}[2007/04/27 v1.4 Test file for LaTeX] \RequirePackage{color} \pagecolor{yellow} \documentclass[a5paper,showtrims]{memoir} @@ -1636,6 +1595,16 @@ Hello World % Patches for packages \xpackage{crop} and \xpackage{everyshi} % and class \xclass{memoir} added. % \end{Version} +% \begin{Version}{2007/04/26 v1.3} +% \item +% Use of package \xpackage{infwarerr}. +% \item +% Catcode section after generic header. +% \end{Version} +% \begin{Version}{2007/04/27 v1.4} +% \item +% Small optimizations. +% \end{Version} % \end{History} % % \PrintIndex diff --git a/Master/texmf-dist/source/latex/oberdiek/bookmark.dtx b/Master/texmf-dist/source/latex/oberdiek/bookmark.dtx index 3d7200f4f46..55984deb43b 100644 --- a/Master/texmf-dist/source/latex/oberdiek/bookmark.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/bookmark.dtx @@ -76,7 +76,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: bookmark 2007/04/09 v0.8 PDF bookmarks (HO)} +\Msg{* Package: bookmark 2007/04/25 v0.9 PDF bookmarks (HO)} \Msg{************************************************************************} \keepsilent @@ -149,7 +149,7 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{bookmark.drv}% - [2007/04/09 v0.8 PDF bookmarks (HO)]% + [2007/04/25 v0.9 PDF bookmarks (HO)]% \documentclass{ltxdoc} \usepackage{holtxdoc} \begin{document} @@ -158,7 +158,7 @@ and the derived files %</driver> % \fi % -% \CheckSum{1950} +% \CheckSum{1952} % % \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 @@ -179,7 +179,7 @@ and the derived files % \GetFileInfo{bookmark.drv} % % \title{The \xpackage{bookmark} package} -% \date{2007/04/09 v0.8} +% \date{2007/04/25 v0.9} % \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} % % \maketitle @@ -252,7 +252,7 @@ and the derived files % |\def\BookmarkDefaultDriver{dvipdfm}| % \end{quote} % -% \paragraph{Open bookmarks with dvipdfmx.} Since 2007-03-29 the +% \paragraph{Open bookmarks with dvipdfmx.} Since 2007-04-25 the % cvs version of dvipmdfmx contains a patch that extends the % \cs{special} for bookmarks in order to specify the open status of % an outline entry. Option \xoption{dvipdfmx-outline-open} notifies @@ -494,7 +494,7 @@ and the derived files open, openlevel=2, atend -]{bookmark}[2007/04/09] +]{bookmark}[2007/04/25] \bookmarksetup{color=blue} @@ -597,7 +597,7 @@ and the derived files %<*package> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{bookmark}% - [2007/04/09 v0.8 PDF bookmarks (HO)]% + [2007/04/25 v0.9 PDF bookmarks (HO)]% % \end{macrocode} % % \subsubsection{Requirements} @@ -1210,7 +1210,7 @@ and the derived files %<*dvipdfm> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{bkm-dvipdfm.def}% - [2007/04/09 v0.8 bookmark driver for dvipdfm (HO)]% + [2007/04/25 v0.9 bookmark driver for dvipdfm (HO)]% % \end{macrocode} % % \begin{macrocode} @@ -1329,11 +1329,16 @@ and the derived files \fi \special{pdf:% out \ifBKM@DvipdfmxOutlineOpen + [% \ifBKM@open \ifnum\BKM@level<\BKM@openlevel + \else -% \fi + \else + -% \fi + ] % \fi \BKM@abslevel <<% @@ -1370,7 +1375,7 @@ and the derived files %<*vtex> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{bkm-vtex.def}% - [2007/04/09 v0.8 bookmark driver for VTeX (HO)]% + [2007/04/25 v0.9 bookmark driver for VTeX (HO)]% % \end{macrocode} % % \begin{macrocode} @@ -1655,7 +1660,7 @@ and the derived files %<*pdftex> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{bkm-pdftex.def}% - [2007/04/09 v0.8 bookmark driver for pdfTeX (HO)]% + [2007/04/25 v0.9 bookmark driver for pdfTeX (HO)]% % \end{macrocode} % % \begin{macrocode} @@ -1767,7 +1772,7 @@ and the derived files %<*dvips> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{bkm-dvips.def}% - [2007/04/09 v0.8 bookmark driver for dvips (HO)]% + [2007/04/25 v0.9 bookmark driver for dvips (HO)]% % \end{macrocode} % \begin{macrocode} \def\BKM@PSHeaderFile#1{% @@ -1782,7 +1787,7 @@ and the derived files %<*dvipsone> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{bkm-dvipsone.def}% - [2007/04/09 v0.8 bookmark driver for dvipsone (HO)]% + [2007/04/25 v0.9 bookmark driver for dvipsone (HO)]% % \end{macrocode} % \begin{macrocode} \def\BKM@PSHeaderFile#1{% @@ -1797,7 +1802,7 @@ and the derived files %<*textures> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{bkm-textures.def}% - [2007/04/09 v0.8 bookmark driver for textures (HO)]% + [2007/04/25 v0.9 bookmark driver for textures (HO)]% % \end{macrocode} % \begin{macrocode} \def\BKM@PSHeaderFile#1{% @@ -2376,6 +2381,12 @@ and the derived files % open outline entries. Option \xoption{dvipdfmx-outline-open} % or \cs{SpecialDvipdfmxOutlineOpen} notify the package. % \end{Version} +% \begin{Version}{2007/04/25 v0.9} +% \item +% The syntax of \cs{special} of dvipdfmx, if feature +% \xoption{dvipdfmx-outline-open} is enabled, has changed. +% Now cvs version 2007-04-25 is needed. +% \end{Version} % \end{History} % % \PrintIndex diff --git a/Master/texmf-dist/source/latex/oberdiek/embedfile.dtx b/Master/texmf-dist/source/latex/oberdiek/embedfile.dtx index c5c25f9434d..63f3cd4082a 100644 --- a/Master/texmf-dist/source/latex/oberdiek/embedfile.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/embedfile.dtx @@ -142,7 +142,7 @@ and the derived files %</driver> % \fi % -% \CheckSum{430} +% \CheckSum{440} % % \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 @@ -353,6 +353,11 @@ This example document contains three embedded files. % Reload check, especially if the package is not used with \LaTeX. % \begin{macrocode} \begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ \expandafter\let\expandafter\x\csname ver@embedfile.sty\endcsname \ifcase 0% \ifx\x\relax % plain @@ -379,6 +384,11 @@ This example document contains three embedded files. % Package identification: % \begin{macrocode} \begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ \expandafter\ifx\csname ProvidesPackage\endcsname\relax \def\x#1#2#3[#4]{\endgroup \immediate\write-1{Package: #3 #4}% diff --git a/Master/texmf-dist/source/latex/oberdiek/engord.dtx b/Master/texmf-dist/source/latex/oberdiek/engord.dtx index 3df12ea7c9c..62f10ae7612 100644 --- a/Master/texmf-dist/source/latex/oberdiek/engord.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/engord.dtx @@ -67,7 +67,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: engord 2007/04/11 v1.3 Provides the ifpdf switch (HO)} +\Msg{* Package: engord 2007/04/26 v1.4 Provides the ifpdf switch (HO)} \Msg{************************************************************************} \keepsilent @@ -128,7 +128,7 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{engord.drv}% - [2007/04/11 v1.3 Provides the ifpdf switch (HO)]% + [2007/04/26 v1.4 Provides the ifpdf switch (HO)]% \documentclass{ltxdoc} \usepackage{holtxdoc} \begin{document} @@ -137,7 +137,7 @@ and the derived files %</driver> % \fi % -% \CheckSum{274} +% \CheckSum{278} % % \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 @@ -158,7 +158,7 @@ and the derived files % \GetFileInfo{engord.drv} % % \title{The \xpackage{engord} package} -% \date{2007/04/11 v1.3} +% \date{2007/04/26 v1.4} % \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} % % \maketitle @@ -264,6 +264,11 @@ and the derived files % Reload check, especially if the package is not used with \LaTeX. % \begin{macrocode} \begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ \expandafter\let\expandafter\x\csname ver@engord.sty\endcsname \ifcase 0% \ifx\x\relax % plain @@ -290,6 +295,11 @@ and the derived files % Package identification: % \begin{macrocode} \begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ \expandafter\ifx\csname ProvidesPackage\endcsname\relax \def\x#1#2#3[#4]{\endgroup \immediate\write-1{Package: #3 #4}% @@ -305,7 +315,7 @@ and the derived files \fi \expandafter\x\csname ver@engord.sty\endcsname \ProvidesPackage{engord}% - [2007/04/11 v1.3 Provides the ifpdf switch (HO)] + [2007/04/26 v1.4 Provides the ifpdf switch (HO)] % \end{macrocode} % % \subsection{Help commands for plain compatibility} @@ -332,20 +342,14 @@ and the derived files \fi % \end{macrocode} % \end{macro} -% \begin{macro}{\EO@PackageWarning} % \begin{macrocode} \begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname PackageWarning\endcsname\relax - \def\EO@PackageWarning#1#2{% - \immediate\write16{% - Package #1 Warning: #2 on input line \the\inputlineno.% - }% - }% +\expandafter\ifx\csname RequirePackage\endcsname\relax + \input infwarerr.sty\relax \else - \def\EO@PackageWarning{\PackageWarning}% + \RequirePackage{infwarerr}% \fi % \end{macrocode} -% \end{macro} % % \subsection{User macros} % @@ -411,7 +415,7 @@ and the derived files \expandafter\ifx\csname engorderror\endcsname\relax \EO@def\engorderror#1{% #1\engordletters{!ERROR!}% - \EO@PackageWarning{engord}{% + \@PackageWarning{engord}{% `#1' is not an ordinal number% }% }% @@ -709,6 +713,10 @@ and the derived files % \item % Line ends sanitized. % \end{Version} +% \begin{Version}{2007/04/26 v1.4} +% \item +% Use of package \xpackage{infwarerr}. +% \end{Version} % \end{History} % % \PrintIndex diff --git a/Master/texmf-dist/source/latex/oberdiek/epstopdf.dtx b/Master/texmf-dist/source/latex/oberdiek/epstopdf.dtx index ded8879a4ce..a9e6bc75b5a 100644 --- a/Master/texmf-dist/source/latex/oberdiek/epstopdf.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/epstopdf.dtx @@ -1,6 +1,7 @@ % \iffalse meta-comment % -% Copyright (C) 2001, 2006 by Heiko Oberdiek <oberdiek@uni-freiburg.de> +% Copyright (C) 2001, 2006, 2007 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 @@ -66,7 +67,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: epstopdf 2006/08/26 v1.3 Conversion with epstopdf on the fly (HO)} +\Msg{* Package: epstopdf 2007/04/26 v1.4 Conversion with epstopdf on the fly (HO)} \Msg{************************************************************************} \keepsilent @@ -76,7 +77,8 @@ This is a generated file. -Copyright (C) 2001, 2006 by Heiko Oberdiek <oberdiek@uni-freiburg.de> +Copyright (C) 2001, 2006, 2007 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 @@ -126,7 +128,7 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{epstopdf.drv}% - [2006/08/26 v1.3 Conversion with epstopdf on the fly (HO)]% + [2007/04/26 v1.4 Conversion with epstopdf on the fly (HO)]% \documentclass{ltxdoc} \usepackage{holtxdoc} \begin{document} @@ -135,7 +137,7 @@ and the derived files %</driver> % \fi % -% \CheckSum{182} +% \CheckSum{192} % % \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 @@ -156,7 +158,7 @@ and the derived files % \GetFileInfo{epstopdf.drv} % % \title{The \xpackage{epstopdf} package} -% \date{2006/08/26 v1.3} +% \date{2007/04/26 v1.4} % \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} % % \maketitle @@ -170,30 +172,116 @@ and the derived files % % \tableofcontents % +% \providecommand*{\xprogram}[1]{\textsf{#1}} +% +% \section{Documentation} +% +% \subsection{Requirements} +% +% \begin{itemize} +% \item +% The program \xprogram{epstopdf} for the conversion from EPS +% to PDF. However, other programs can +% be used and configured by \cs{DeclareGraphicsRule}. +% \item +% The feature \cs{write18} must be enabled. This allows the +% running of external programs during \TeX's compile run. +% Keep in mind that this is a security risk. The feature is an +% addition to \cs{TeX}. Mik\TeX, te\TeX, \TeX\ Live support it. +% In Web2C based \TeX\ distributions (te\TeX, \TeX\ Live) it can be +% enabled in the configuration file \xfile{texmf.cnf}: +% \begin{quote} +% |shell_escape = 1| +% \end{quote} +% Because of the security risk, it is better to do it on the +% command line only: +% \begin{quote} +% \texttt{-shell-escape} (te\TeX, \TeX\ Live)\\ +% \texttt{--enable-write18} (MiK\TeX) +% \end{quote} +% Example: +% \begin{quote} +% |pdflatex -shell-escape test.tex| +% \end{quote} +% \end{itemize} +% % \section{Usage} +% +% The package is loaded after graphic\{s,x\}, e.g.: +% \begin{quote} +% |\usepackage[pdftex]{graphicx}|\\ +% |\usepackage{epstopdf}| +% \end{quote} +% Now images with extension `.eps' are detected +% and supported: +% \begin{itemize} +% \item +% Implicitly: |\includegraphics{bild}|\\ +% If \xfile{bild.eps} is present, but \xfile{bild.pdf} is missed, +% then \xfile{bild.eps} is converted to \xfile{bild.pdf} that +% is then included by \pdfTeX. +% On the next ocurrences or on the next \pdfTeX\ run, +% the PDF file is already available, so the +% conversion step is skipped. +% \item +% Explicitly: |\includegraphics{bild.eps}|\\ +% Each time the conversion program is called. +% \end{itemize} +% +% \subsection{Configuration} +% +% Package \xpackage{epstopdf} implements the forth argument +% of \cs{DeclareGraphicsRule} for \pdfTeX. There conversion programs +% can be configured and package \xpackage{epstopdf} declares: +% \begin{quote} +% |\DeclareGraphicsRule{.eps}{pdf}{.pdf}{`epstopdf #1}| +% \end{quote} +% Additionally the extension \xfile{.eps} is added to the +% list of extensions that are recognized by package \xpackage{graphics}, +% see \cs{GraphicsExtensions}. +% +% Instead of \xprogram{epstopdf} other programs can be used, +% for example \xprogram{ghostscript}: +% \begin{quote} +% |\DeclareGraphicsRule{.eps}{pdf}{.pdf}{`ps2pdf -dEPSCrop #1}| +% \end{quote} +% +% \subsection{Other image formats} +% +% The support that package \xpackage{epstopdf} implements is not +% limited to EPS files. Other image conversions can be declared. +% The following example shows it for GIF images under Unix with +% ImageMagick's \xprogram{convert}: +%\begin{quote} +%\begin{verbatim} +%\DeclareGraphicsRule{.gif}{png}{.png}{% +% `convert #1 `basename #1 .gif`.png% +%} +%\end{verbatim} +%\end{quote} +% Or without \xprogram{basename}: +%\begin{quote} %\begin{verbatim} -% Required: * The program `epstopdf'. -% * The feature `\write18' has to be enabled to get -% the conversion via the program epstopdf work: -% * command line option: -shell-escape -% example: pdflatex -shell-escape test.tex -% * configuraton file `texmf.cnf': shell_escape = 1 -% -% Use: The package is loaded after graphic{s,x}, eg: -% \usepackage[pdftex]{graphicx} -% \usepackage{epstopdf} -% Images with extension `.eps' are now detected -% and supported: -% * Implicitly: \includegraphics{bild} -% If `bild.eps' can only be found, -% then it is converted to the file `bild.pdf', -% that will be used by pdfTeX. -% On the next ocurrences or on the next pdfTeX run, -% the pdf file is already available, so the -% conversion step is skipped. -% * Explicitly: \includegraphics{bild.eps} -% Each time the conversion program is called. +%\makeatletter +%\DeclareGraphicsRule{.gif}{png}{.png}{% +% `convert #1 \noexpand\Gin@base.png% +%} +%\makeatother %\end{verbatim} +%\end{quote} +% The file extension \xfile{.gif} can be added to the extension list that +% package \xpackage{graphics} searches if the file extension +% is not given in \cs{includegraphics}. +% The list can be set by \cs{GraphicsExtensions}. +% The following example shows another way by adding \xfile{.gif} to the +% list: +%\begin{quote} +%\begin{verbatim} +%\makeatletter +%\g@addto@macro\Gin@extensions{,.gif} +%\makeatother +%\end{verbatim} +%\end{quote} % % \StopEventually{ % } @@ -208,6 +296,11 @@ and the derived files % Reload check, especially if the package is not used with \LaTeX. % \begin{macrocode} \begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ \expandafter\let\expandafter\x\csname ver@epstopdf.sty\endcsname \ifcase 0% \ifx\x\relax % plain @@ -234,6 +327,11 @@ and the derived files % Package identification: % \begin{macrocode} \begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ \expandafter\ifx\csname ProvidesPackage\endcsname\relax \def\x#1#2#3[#4]{\endgroup \immediate\write-1{Package: #3 #4}% @@ -249,7 +347,7 @@ and the derived files \fi \expandafter\x\csname ver@epstopdf.sty\endcsname \ProvidesPackage{epstopdf}% - [2006/08/26 v1.3 Conversion with epstopdf on the fly (HO)] + [2007/04/26 v1.4 Conversion with epstopdf on the fly (HO)] % \end{macrocode} % % \subsection{Help macros for miniltx mode} @@ -343,7 +441,7 @@ and the derived files % \end{macrocode} % % Adding .eps at the end of the list of extensions, -% defined by \cs{DeclareGraphicsExtensions}. +% defined by \cs{GraphicsExtensions}. % \begin{macrocode} \@ifundefined{Gin@extensions}{% \def\Gin@extensions{.eps}% @@ -516,6 +614,10 @@ and the derived files % Check for \cs{write18} if available and print a warning % if the feature is not enabled. % \end{Version} +% \begin{Version}{2007/04/26 v1.4} +% \item +% Documentation rewritten and extended. +% \end{Version} % \end{History} % % \PrintIndex diff --git a/Master/texmf-dist/source/latex/oberdiek/iflang.dtx b/Master/texmf-dist/source/latex/oberdiek/iflang.dtx index d946a52587c..8762ad48fba 100644 --- a/Master/texmf-dist/source/latex/oberdiek/iflang.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/iflang.dtx @@ -70,7 +70,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: iflang 2007/04/12 v1.2 Language checks (HO)} +\Msg{* Package: iflang 2007/04/26 v1.3 Language checks (HO)} \Msg{************************************************************************} \keepsilent @@ -135,7 +135,7 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{iflang.drv}% - [2007/04/12 v1.2 Language checks (HO)]% + [2007/04/26 v1.3 Language checks (HO)]% \documentclass{ltxdoc} \usepackage{holtxdoc} \begin{document} @@ -144,7 +144,7 @@ and the derived files %</driver> % \fi % -% \CheckSum{676} +% \CheckSum{605} % % \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 @@ -165,7 +165,7 @@ and the derived files % \GetFileInfo{iflang.drv} % % \title{The \xpackage{iflang} package} -% \date{2007/04/12 v1.2} +% \date{2007/04/26 v1.3} % \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} % % \maketitle @@ -262,6 +262,11 @@ and the derived files % Reload check, especially if the package is not used with \LaTeX. % \begin{macrocode} \begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ \expandafter\let\expandafter\x\csname ver@iflang.sty\endcsname \ifcase 0% \ifx\x\relax % plain @@ -288,6 +293,11 @@ and the derived files % Package identification: % \begin{macrocode} \begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ \expandafter\ifx\csname ProvidesPackage\endcsname\relax \def\x#1#2#3[#4]{\endgroup \immediate\write-1{Package: #3 #4}% @@ -303,7 +313,7 @@ and the derived files \fi \expandafter\x\csname ver@iflang.sty\endcsname \ProvidesPackage{iflang}% - [2007/04/12 v1.2 Language checks (HO)] + [2007/04/26 v1.3 Language checks (HO)] % \end{macrocode} % % \begin{macrocode} @@ -383,68 +393,12 @@ and the derived files % \subsubsection{Macros for messages} % % \begin{macrocode} -\begingroup -\ifnum\expandafter\ifx\csname PackageInfo\endcsname\relax - 1% - \fi - \expandafter\ifx\csname PackageWarningNoLine\endcsname\relax - 1% - \fi - 0=0 % - \endgroup - \expandafter\@secondoftwo +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname RequirePackage\endcsname\relax + \input infwarerr.sty\relax \else - \endgroup - \expandafter\@firstoftwo + \RequirePackage{infwarerr}% \fi -{% - \def\IfLang@GenericMessage#1#2#3{% - \begingroup - \newlinechar=10 % - \def\@spaces{\space\space\space\space}% - \ifcase#1 % - \def\MessageBreak{% - ^^J(iflang) \@spaces\@spaces\@spaces\@spaces - }% - \or - \def\MessageBreak{% - ^^J(iflang)\@spaces\@spaces\@spaces\@spaces - }% - \or - \def\MessageBreak{% - ^^J(iflang) \space\@spaces\@spaces\@spaces - }% - \fi - \expandafter\ifx\csname if#3\expandafter\endcsname - \csname iftrue\endcsname - \def\on@line{ on input line \the\inputlineno}% - \else - \def\on@line{}% - \fi - \immediate\write\ifcase#1 -1\or 16\fi{% - ^^JPackage iflang % - \ifcase#1 Info\or Warning\or Error\fi - : #2\on@line.^^J% - }% - \endgroup - }% - \def\IfLang@Info#1{% - \IfLang@GenericMessage{0}{#1}{false}% - }% - \def\IfLang@Warning#1{% - \IfLang@GenericMessage{1}{#1}{false}% - }% -}{% - \def\IfLang@Info#1{% - \begingroup - \def\on@line{}% - \PackageInfo{iflang}{#1}% - \endgroup - }% - \def\IfLang@Warning#1{% - \PackageWarningNoLine{iflang}{#1}% - }% -} % \end{macrocode} % % \subsubsection{Support for \xfile{etex.src}} @@ -453,10 +407,14 @@ and the derived files % \begin{macrocode} \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname uselanguage\endcsname\relax - \IfLang@Info{Naming convention for patterns: babel}% + \@PackageInfoNoLine{iflang}{% + Naming convention for patterns: babel% + }% \def\IfLang@prefix{l@}% \else - \IfLang@Info{Naming convention for patterns: etex.src}% + \@PackageInfoNoLine{iflang}{% + Naming convention for patterns: etex.src% + }% \def\IfLang@prefix{lang@}% \let\IfLang@OrgUseLanguage\uselanguage \def\uselanguage#1{% @@ -477,12 +435,14 @@ and the derived files \expandafter\ifx\csname languagename\endcsname\relax \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname lang@USenglish\endcsname\relax - \IfLang@Warning{\string\lang@USenglish\space is missing}% + \@PackageWarningNoLine{iflang}{% + \string\lang@USenglish\space is missing% + }% \else \ifnum\lang@USenglish=\language \def\languagename{USenglish}% \else - \IfLang@Warning{% + \@PackageWarningNoLine{iflang}{% \string\languagename\space is not set,\MessageBreak current language is unknown% }% @@ -492,7 +452,9 @@ and the derived files \fi \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname languagename\endcsname\relax - \IfLang@Info{\string\languagename\space is not set}% + \@PackageInfoNoLine{iflang}{% + \string\languagename\space is not set% + }% \fi % \end{macrocode} % @@ -611,7 +573,7 @@ and the derived files \expandafter\ifx\csname languagename\endcsname\relax \else \IfLanguagePatterns{\languagename}{}{% - \IfLang@Warning{% + \@PackageWarningNoLine{iflang}{% Mismatch between \string\language\space (patterns)\MessageBreak and setting of \string\languagename @@ -945,6 +907,10 @@ and the derived files % \item % Documentation improved. % \end{Version} +% \begin{Version}{2007/04/26 v1.3} +% \item +% Use of package \xpackage{infwarerr}. +% \end{Version} % \end{History} % % \PrintIndex diff --git a/Master/texmf-dist/source/latex/oberdiek/ifpdf.dtx b/Master/texmf-dist/source/latex/oberdiek/ifpdf.dtx index cf4d584e148..3dc3349986b 100644 --- a/Master/texmf-dist/source/latex/oberdiek/ifpdf.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/ifpdf.dtx @@ -137,7 +137,7 @@ and the derived files %</driver> % \fi % -% \CheckSum{156} +% \CheckSum{166} % % \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 @@ -312,6 +312,11 @@ and the derived files % Reload check, especially if the package is not used with \LaTeX. % \begin{macrocode} \begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ \expandafter\let\expandafter\x\csname ver@ifpdf.sty\endcsname \ifcase 0% \ifx\x\relax % plain @@ -338,6 +343,11 @@ and the derived files % Package identification: % \begin{macrocode} \begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ \expandafter\ifx\csname ProvidesPackage\endcsname\relax \def\x#1#2#3[#4]{\endgroup \immediate\write-1{Package: #3 #4}% diff --git a/Master/texmf-dist/source/latex/oberdiek/ifvtex.dtx b/Master/texmf-dist/source/latex/oberdiek/ifvtex.dtx index 3db185974c8..616cdf8ba30 100644 --- a/Master/texmf-dist/source/latex/oberdiek/ifvtex.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/ifvtex.dtx @@ -137,7 +137,7 @@ and the derived files %</driver> % \fi % -% \CheckSum{224} +% \CheckSum{234} % % \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 @@ -223,6 +223,11 @@ and the derived files % Reload check, especially if the package is not used with \LaTeX. % \begin{macrocode} \begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ \expandafter\let\expandafter\x\csname ver@ifvtex.sty\endcsname \ifcase 0% \ifx\x\relax % plain @@ -249,6 +254,11 @@ and the derived files % Package identification: % \begin{macrocode} \begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ \expandafter\ifx\csname ProvidesPackage\endcsname\relax \def\x#1#2#3[#4]{\endgroup \immediate\write-1{Package: #3 #4}% diff --git a/Master/texmf-dist/source/latex/oberdiek/infwarerr.dtx b/Master/texmf-dist/source/latex/oberdiek/infwarerr.dtx new file mode 100644 index 00000000000..8de246f7b9f --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/infwarerr.dtx @@ -0,0 +1,952 @@ +% \iffalse meta-comment +% +% Copyright (C) 2007 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 infwarerr.dtx +% and the derived files +% infwarerr.sty, infwarerr.pdf, infwarerr.ins, infwarerr.drv, +% infwarerr-test1.tex, infwarerr-test2.tex. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/infwarerr.dtx +% CTAN:macros/latex/contrib/oberdiek/infwarerr.pdf +% +% Unpacking: +% (a) If infwarerr.ins is present: +% tex infwarerr.ins +% (b) Without infwarerr.ins: +% tex infwarerr.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{infwarerr.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If infwarerr.drv is present: +% latex infwarerr.drv +% (b) Without infwarerr.drv: +% latex infwarerr.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 infwarerr.dtx +% makeindex -s gind.ist infwarerr.idx +% pdflatex infwarerr.dtx +% makeindex -s gind.ist infwarerr.idx +% pdflatex infwarerr.dtx +% +% Installation: +% TDS:tex/generic/oberdiek/infwarerr.sty +% TDS:doc/latex/oberdiek/infwarerr.pdf +% TDS:doc/latex/oberdiek/infwarerr-test1.tex +% TDS:doc/latex/oberdiek/infwarerr-test2.tex +% TDS:source/latex/oberdiek/infwarerr.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: infwarerr 2007/04/26 v1.0 Providing info/warning/message (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2007 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 infwarerr.dtx +and the derived files + infwarerr.sty, infwarerr.pdf, infwarerr.ins, infwarerr.drv, + infwarerr-test1.tex, infwarerr-test2.tex. + +\endpreamble + +\generate{% + \file{infwarerr.ins}{\from{infwarerr.dtx}{install}}% + \file{infwarerr.drv}{\from{infwarerr.dtx}{driver}}% + \usedir{tex/generic/oberdiek}% + \file{infwarerr.sty}{\from{infwarerr.dtx}{package}}% + \usedir{doc/latex/oberdiek}% + \file{infwarerr-test1.tex}{\from{infwarerr.dtx}{test1}}% + \file{infwarerr-test2.tex}{\from{infwarerr.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{* infwarerr.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `infwarerr.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{infwarerr.drv}% + [2007/04/26 v1.0 Providing info/warning/message (HO)]% +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\begin{document} + \DocInput{infwarerr.dtx}% +\end{document} +%</driver> +% \fi +% +% \CheckSum{640} +% +% \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{infwarerr.drv} +% +% \title{The \xpackage{infwarerr} package} +% \date{2007/04/26 v1.0} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% This package provides a complete set of macros for informations, +% warnings and error messages with support for \plainTeX. +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% Package \xpackage{infwarerr} defines the following set of commands, +% given as pseudo regular expression: +% \begin{quote} +% \verb+\@(Package|Class)(Info|InfoNoLine|Warning|WarningNoLine|Error)+^^A +% \kern-\rightmargin +% \end{quote} +% The first argument is the package or class in question. The second +% argument contains the message text. \cs{MessageBreak} is supported. +% In case of error messages, the third argument contains the help +% text. Supported are \LaTeX's message texts \cs{@ehc}: +% \begin{quote} +% |Try typing <return> to proceed|\\ +% |If that doesn't work, type X <return> to quit.| +% \end{quote} +% and \cs{@ehd}: +% \begin{quote} +% |You're in trouble here. Try typing <return> to proceed|\\ +% |If that doesn't work, type X <return> to quit.| +% \end{quote} +% +% The package is intended for macro writers that want to write +% code that works for both \LaTeX\ and \plainTeX. If \LaTeX\ is +% detected, then the macros of this package will only be wrappers +% for \LaTeX's macros. Otherwise \LaTeX's macros will be mimicked +% for use with \plainTeX. +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% \subsection{Reload check and package identification} +% Reload check, especially if the package is not used with \LaTeX. +% \begin{macrocode} +\begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ + \expandafter\let\expandafter\x\csname ver@infwarerr.sty\endcsname + \ifcase 0% + \ifx\x\relax % plain + \else + \ifx\x\empty % LaTeX + \else + 1% + \fi + \fi + \else + \expandafter\ifx\csname PackageInfo\endcsname\relax + \def\x#1#2{% + \immediate\write-1{Package #1 Info: #2.}% + }% + \else + \def\x#1#2{\PackageInfo{#1}{#2, stopped}}% + \fi + \x{infwarerr}{The package is already loaded}% + \endgroup + \expandafter\endinput + \fi +\endgroup +% \end{macrocode} +% Package identification: +% \begin{macrocode} +\begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ + \expandafter\ifx\csname ProvidesPackage\endcsname\relax + \def\x#1#2#3[#4]{\endgroup + \immediate\write-1{Package: #3 #4}% + \xdef#1{#4}% + }% + \else + \def\x#1#2[#3]{\endgroup + #2[{#3}]% + \ifx#1\relax + \xdef#1{#3}% + \fi + }% + \fi +\expandafter\x\csname ver@infwarerr.sty\endcsname +\ProvidesPackage{infwarerr}% + [2007/04/26 v1.0 Providing info/warning/message (HO)] +% \end{macrocode} +% +% \subsection{Catcodes} +% +% \begin{macrocode} +\expandafter\edef\csname InfWarErr@End\endcsname{% + \catcode39 \the\catcode39\relax % ' + \catcode40 \the\catcode40\relax % ( + \catcode41 \the\catcode41\relax % ) + \catcode44 \the\catcode44\relax % , + \catcode45 \the\catcode45\relax % - + \catcode46 \the\catcode46\relax % . + \catcode58 \the\catcode58\relax % : + \catcode60 \the\catcode60\relax % < + \catcode61 \the\catcode61\relax % = + \catcode62 \the\catcode62\relax % > + \catcode64 \the\catcode64\relax % @ + \catcode94 \the\catcode94\relax % ^ + \noexpand\endinput +} +\catcode39 12 % ' +\catcode40 12 % ( +\catcode41 12 % ) +\catcode44 12 % , +\catcode45 12 % - +\catcode46 12 % . +\catcode58 12 % : +\catcode60 12 % < +\catcode61 12 % = +\catcode62 12 % > +\catcode64 11 % @ +\catcode94 7 % ^ +% \end{macrocode} +% +% \subsection{\LaTeX\ detection} +% +% \begin{macrocode} +\begingroup + \let\x=Y% + \def\check#1{% + \@check{Generic}{#1}% + \@check{Package}{#1}% + \@check{Class}{#1}% + }% + \def\@check#1#2{% + \expandafter\ifx\csname #1#2\endcsname\relax + \let\x=N% + \fi + }% + \check{Info}% + \check{Warning}% + \check{Error}% + \@check{Package}{WarningNoLine}% + \@check{Class}{WarningNoLine}% + \@check{}{@ehc}% + \@check{}{@ehd}% +\expandafter\endgroup +\ifx\x Y% +% \end{macrocode} +% +% \subsection{Version for \LaTeX} +% +% \begin{macro}{\@PackageInfo} +% \begin{macrocode} + \let\@PackageInfo\PackageInfo +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@PackageInfoNoLine} +% \begin{macrocode} + \def\@PackageInfoNoLine#1#2{% + \PackageInfo{#1}{#2\@gobble}% + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@ClassInfo} +% \begin{macrocode} + \let\@ClassInfo\ClassInfo +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@ClassInfoNoLine} +% \begin{macrocode} + \def\@ClassInfoNoLine#1#2{% + \ClassInfo{#1}{#2\@gobble}% + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@PackageWarning} +% \begin{macrocode} + \let\@PackageWarning\PackageWarning +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@PackageWarningNoLine} +% \begin{macrocode} + \let\@PackageWarningNoLine\PackageWarningNoLine +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@ClassWarning} +% \begin{macrocode} + \let\@ClassWarning\ClassWarning +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@ClassWarningNoLine} +% \begin{macrocode} + \let\@ClassWarningNoLine\ClassWarningNoLine +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@PackageError} +% \begin{macrocode} + \let\@PackageError\PackageError +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@ClassError} +% \begin{macrocode} + \let\@ClassError\ClassError +% \end{macrocode} +% \end{macro} +% \begin{macrocode} + \csname fi\endcsname + \InfWarErr@End +\fi +% \end{macrocode} +% +% \subsection{Version for \plainTeX} +% +% \begin{macro}{\InfWarErr@online} +% \begin{macrocode} +\begingroup\expandafter\endgroup +\ifcase\expandafter\ifx\csname inputlineno\endcsname\relax + 0 % + \else + \ifnum\inputlineno<0 % + 0 % + \else + 1 % + \fi + \fi + \def\InfWarErr@online{}% +\else + \def\InfWarErr@online{ on input line \the\inputlineno}% +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\InfWarErr@protected} +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname protected\endcsname\relax + \def\InfWarErr@protected{}% +\else + \let\InfWarErr@protected\protected +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\InfWarErr@unused} +% \begin{macrocode} +\chardef\InfWarErr@unused=16 % +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\InfWarErr@ehc} +% \begin{macrocode} +\def\InfWarErr@ehc{% + Try typing \space <return> \space to proceed.\MessageBreak + If that doesn't work, type \space X <return> \space to quit.% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\InfWarErr@ehd} +% \begin{macrocode} +\def\InfWarErr@ehd{% + You're in trouble here. \space\@ehc +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\InfWarErr@GenericInfo} +% \begin{macrocode} +\InfWarErr@protected\def\InfWarErr@GenericInfo#1#2{% + \begingroup + \let\on@line\InfWarErr@online + \long\def\@gobble##1{}% + \def\@spaces{\space\space\space\space}% + \def\MessageBreak{^^J#1}% + \newlinechar=10 % + \immediate\write-1{#2\on@line.}% + \endgroup +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\InfWarErr@GenericWarning} +% \begin{macrocode} +\InfWarErr@protected\def\InfWarErr@GenericWarning#1#2{% + \begingroup + \let\on@line\InfWarErr@online + \long\def\@gobble##1{}% + \def\@spaces{\space\space\space\space}% + \def\MessageBreak{^^J#1}% + \newlinechar=10 % + \immediate\write\InfWarErr@unused{^^J#2\on@line.^^J}% + \endgroup +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\InfWarErr@GenericError} +% Old \TeX\ versions below 3.141 where |^^J| is not working +% as newline in error message and help texts are not supported. +% \begin{macrocode} +\InfWarErr@protected\def\InfWarErr@GenericError#1#2#3#4{% + \begingroup + \immediate\write\InfWarErr@unused{}% + \newlinechar=10 % + \def\@spaces{\space\space\space\space}% + \let\@ehc\InfWarErr@ehc + \let\@ehd\InfWarErr@ehd + \let\on@line\InfWarErr@online + \def\MessageBreak{^^J}% + \edef\InfWarErr@help{\noexpand\errhelp{#4}}% + \InfWarErr@help + \def\MessageBreak{^^J#1}% + \errmessage{% + #2.^^J^^J% + #3^^J% + Type \space H <return> \space for immediate help% + }% + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@PackageInfo} +% \begin{macrocode} +\def\@PackageInfo#1#2{% + \InfWarErr@GenericInfo{% + (#1) \@spaces\@spaces\@spaces + }{% + Package #1 Info: #2% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@PackageInfoNoLine} +% \begin{macrocode} +\def\@PackageInfoNoLine#1#2{% + \@PackageInfo{#1}{#2\@gobble}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@ClassInfo} +% \begin{macrocode} +\def\@ClassInfo#1#2{% + \InfWarErr@GenericInfo{% + (#1) \space\space\@spaces\@spaces + }{% + Class #1 Info: #2% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@ClassInfoNoLine} +% \begin{macrocode} +\def\@ClassInfoNoLine#1#2{% + \@ClassInfo{#1}{#2\@gobble}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@PackageWarning} +% \begin{macrocode} +\def\@PackageWarning#1#2{% + \InfWarErr@GenericWarning{% + (#1)\@spaces\@spaces\@spaces\@spaces + }{% + Package #1 Warning: #2% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@PackageWarningNoLine} +% \begin{macrocode} +\def\@PackageWarningNoLine#1#2{% + \@PackageWarning{#1}{#2\@gobble}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@ClassWarning} +% \begin{macrocode} +\def\@ClassWarning#1#2{% + \InfWarErr@GenericWarning{% + (#1) \space\@spaces\@spaces\@spaces + }{% + Class #1 Warning: #2% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@ClassWarningNoLine} +% \begin{macrocode} +\def\@ClassWarningNoLine#1#2{% + \@ClassWarning{#1}{#2\@gobble}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@PackageError} +% \begin{macrocode} +\def\@PackageError#1#2#3{% + \InfWarErr@GenericError{% + (#1)\@spaces\@spaces\@spaces\@spaces + }{% + Package #1 Error: #2% + }{% + See the #1 package documentation for explanation.% + }{#3}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@ClassError} +% \begin{macrocode} +\def\@ClassError#1#2#3{% + \InfWarErr@GenericError{% + (#1) \space\@spaces\@spaces\@spaces + }{% + Class #1 Error: #2% + }{% + See the #1 class documentation for explanation.% + }{#3}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\InfWarErr@End +%</package> +% \end{macrocode} +% +% \section{Test} +% +% \begin{macrocode} +%<*test1> +\let\PackageInfo\relax +\input infwarerr.sty\relax +\let\OrgWrite\write +\chardef\WriteUnused=16 % +\def\msg#{\immediate\OrgWrite\WriteUnused} +\msg{File: infwarerr-test1.tex 2007/04/26 v1.0 Test file for plain-TeX} +\catcode64=11 % +%</test1> +% \end{macrocode} +% +% \begin{macrocode} +%<*test2> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{infwarerr-test2.tex}[2007/04/26 v1.0 Test file for LaTeX] +\RequirePackage{infwarerr} +\makeatletter +\let\OrgWrite\write +\chardef\WriteUnused=\@unused +\def\msg#{\immediate\OrgWrite\WriteUnused} +%</test2> +% \end{macrocode} +% +% \begin{macrocode} +%<*test1|test2> +\def\pkgname{PACKAGE} +\def\clsname{CLASS} +\def\msgtext{MESSAGE\MessageBreak SECOND LINE} +\def\hlptext{HELP\MessageBreak SECOND LINE} + +\let\OrgWrite\write +\let\OrgErrMessage\errmessage + +\def\write#1#{% + \@write{#1}% +} +\def\@write#1#2{% + \OrgWrite#1{#2}% + \xdef\WriteNum{\number#1}% + \xdef\WriteText{#2}% +} +\def\TestFailed#1#2{% + \OrgErrMessage{Test (\string#1) failed: #2}% +} +\def\TestWrite#1#2#3{% + \ifnum\WriteNum=#2\relax + \else + \TestFailed#1{write stream number: \WriteNum <> #2}% + \fi + \begingroup + \let~\space + \edef\TestString{#3}% + \ifx\WriteText\TestString + \else + \msg{}% + \msg{[\WriteText]}% + \msg{<>}% + \msg{[#3]}% + \TestFailed#1{write text}% + \fi + \endgroup +} +\newtoks\ErrHelpToks +\def\errmessage#1{% + \global\ErrHelpToks=\expandafter{\the\errhelp}% + \msg{**************** error message ****************}% + \msg{! #1}% + \msg{**************** help message *****************}% + \msg{\the\errhelp}% + \msg{***********************************************}% + \xdef\ErrMessage{! #1}% +} +\def\TestInfo{% + \@PackageInfo\pkgname\msgtext + \TestWrite\@PackageInfo{-1}{% + Package PACKAGE Info: MESSAGE^^J% + (PACKAGE)~~~~~~~~~~~~~SECOND LINE on input line \the\inputlineno.% + }% + \@PackageInfoNoLine\pkgname\msgtext + \TestWrite\@PackageInfoNoLine{-1}{% + Package PACKAGE Info: MESSAGE^^J% + (PACKAGE)~~~~~~~~~~~~~SECOND LINE.% + }% + \@ClassInfo\clsname\msgtext + \TestWrite\@ClassInfo{-1}{% + Class CLASS Info: MESSAGE^^J% + (CLASS)~~~~~~~~~~~SECOND LINE on input line \the\inputlineno.% + }% + \@ClassInfoNoLine\clsname\msgtext + \TestWrite\@ClassInfoNoLine{-1}{% + Class CLASS Info: MESSAGE^^J% + (CLASS)~~~~~~~~~~~SECOND LINE.% + }% +} +\def\TestWarning{% + \@PackageWarning\pkgname\msgtext + \TestWrite\@PackageWarning\WriteUnused{% + ^^J% + Package PACKAGE Warning: MESSAGE^^J% + (PACKAGE)~~~~~~~~~~~~~~~~SECOND LINE on input line \the\inputlineno.% + ^^J% + }% + \@PackageWarningNoLine\pkgname\msgtext + \TestWrite\@PackageWarningNoLine\WriteUnused{% + ^^J% + Package PACKAGE Warning: MESSAGE^^J% + (PACKAGE)~~~~~~~~~~~~~~~~SECOND LINE.% + ^^J% + }% + \@ClassWarning\clsname\msgtext + \TestWrite\@ClassWarning\WriteUnused{% + ^^J% + Class CLASS Warning: MESSAGE^^J% + (CLASS)~~~~~~~~~~~~~~SECOND LINE on input line \the\inputlineno.% + ^^J% + }% + \@ClassWarningNoLine\clsname\msgtext + \TestWrite\@ClassWarningNoLine\WriteUnused{% + ^^J% + Class CLASS Warning: MESSAGE^^J% + (CLASS)~~~~~~~~~~~~~~SECOND LINE.% + ^^J% + }% +} +\def\TestError{% +%<test2> \let\write\OrgWrite + \@PackageError\pkgname\msgtext\hlptext + \@TestError\@PackageError{% + ! Package PACKAGE Error: MESSAGE^^J% + (PACKAGE)~~~~~~~~~~~~~~~~SECOND LINE.^^J% + ^^J% + See the PACKAGE package documentation for explanation.^^J% + Type~~H <return>~~for immediate help% + }{% + HELP^^J% + SECOND LINE% + }% + \@ClassError\clsname\msgtext\hlptext + \@TestError\@ClassError{% + ! Class CLASS Error: MESSAGE^^J% + (CLASS)~~~~~~~~~~~~~~SECOND LINE.^^J% + ^^J% + See the CLASS class documentation for explanation.^^J% + Type~~H <return>~~for immediate help% + }{% + HELP^^J% + SECOND LINE% + }% + \@PackageError\pkgname\msgtext\@ehc + \@TestError\@PackageError{% + ! Package PACKAGE Error: MESSAGE^^J% + (PACKAGE)~~~~~~~~~~~~~~~~SECOND LINE.^^J% + ^^J% + See the PACKAGE package documentation for explanation.^^J% + Type~~H <return>~~for immediate help% + }{% + Try typing~~<return>~~to proceed.^^J% + If that doesn't work, type~~X <return>~~to quit.% + }% + \@PackageError\pkgname\msgtext\@ehd + \@TestError\@PackageError{% + ! Package PACKAGE Error: MESSAGE^^J% + (PACKAGE)~~~~~~~~~~~~~~~~SECOND LINE.^^J% + ^^J% + See the PACKAGE package documentation for explanation.^^J% + Type~~H <return>~~for immediate help% + }{% + You're in trouble here.~~Try typing~~<return>~~to proceed.^^J% + If that doesn't work, type~~X <return>~~to quit.% + }% +} +\def\@TestError#1#2#3{% + \begingroup + \let~\space + \edef\x{#2}% +%<test2> \@onelevel@sanitize\x +%<test2> \@onelevel@sanitize\ErrMessage + \ifx\x\ErrMessage + \else + \msg{}% + \msg{[\ErrMessage]}% + \msg{<>}% + \msg{[\x]}% + \TestFailed#1{errmessage text}% + \fi + \edef\x{\the\ErrHelpToks}% + \edef\y{#3}% + \ifx\x\y + \else + \msg{}% + \msg{[\the\ErrHelpToks]}% + \msg{<>}% + \msg{[\y]}% + \TestFailed#1{errhelp text}% + \fi + \endgroup +} +\TestInfo +\TestWarning +\TestError +%</test1|test2> +%<test1>\end +%<test2>\@@end +% \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/infwarerr.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/infwarerr.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{macros/latex/contrib/oberdiek/oberdiek-tds.zip}] +% \end{description} +% +% \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 infwarerr.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} +% \sbox0{^^A +% \begin{tabular}{@{}>{\ttfamily}l@{$\quad\rightarrow\quad$}>{\ttfamily}l@{}} +% infwarerr.sty & tex/generic/oberdiek/infwarerr.sty\\ +% infwarerr.pdf & doc/latex/oberdiek/infwarerr.pdf\\ +% infwarerr-test1.tex & doc/latex/oberdiek/infwarerr-test1.tex\\ +% infwarerr-test2.tex & doc/latex/oberdiek/infwarerr-test2.tex\\ +% infwarerr.dtx & source/latex/oberdiek/infwarerr.dtx\\ +% \end{tabular}^^A +% }% +% \ifdim\wd0>\linewidth +% \mbox{}\nobreak\hskip0pt minus\leftmargin +% \usebox0 +% \nobreak\hskip0pt minus\rightmargin +% \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 infwarerr.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{infwarerr.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 infwarerr.dtx +%makeindex -s gind.ist infwarerr.idx +%pdflatex infwarerr.dtx +%makeindex -s gind.ist infwarerr.idx +%pdflatex infwarerr.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2007/04/26 v1.0} +% \item +% First version. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/kvsetkeys.dtx b/Master/texmf-dist/source/latex/oberdiek/kvsetkeys.dtx index acf7773b9cc..b9ea289db0d 100644 --- a/Master/texmf-dist/source/latex/oberdiek/kvsetkeys.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/kvsetkeys.dtx @@ -140,7 +140,7 @@ and the derived files %</driver> % \fi % -% \CheckSum{585} +% \CheckSum{595} % % \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 @@ -383,6 +383,11 @@ and the derived files % Reload check, especially if the package is not used with \LaTeX. % \begin{macrocode} \begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ \expandafter\let\expandafter\x\csname ver@kvsetkeys.sty\endcsname \ifcase 0% \ifx\x\relax % plain @@ -409,6 +414,11 @@ and the derived files % Package identification: % \begin{macrocode} \begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ \expandafter\ifx\csname ProvidesPackage\endcsname\relax \def\x#1#2#3[#4]{\endgroup \immediate\write-1{Package: #3 #4}% diff --git a/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins b/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins index 27c7f6cbaa5..13069237b11 100644 --- a/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins +++ b/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins @@ -1,5 +1,5 @@ % oberdiek.ins -% 2007/04/19 +% 2007/04/27 % % Copyright (C) 1999, 2001, 2006 by % Heiko Oberdiek <oberdiek@uni-freiburg.de> @@ -51,6 +51,7 @@ \batchinput{iflang.dtx} \batchinput{ifpdf.dtx} \batchinput{ifvtex.dtx} +\batchinput{infwarerr.dtx} \batchinput{inputenx.dtx} \batchinput{kvoptions.dtx} \batchinput{kvsetkeys.dtx} diff --git a/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex b/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex index a29cae5a1c3..ba9606c23e6 100644 --- a/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex +++ b/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex @@ -6,7 +6,7 @@ \newcommand*{\Subject}{CTAN:\CTANdir} \newcommand*{\Author}{Heiko Oberdiek} \newcommand*{\Email}{oberdiek@uni-freiburg.de} -\newcommand*{\Date}{2007/04/19} +\newcommand*{\Date}{2007/04/27} % Copyright (C) 2006 by % Heiko Oberdiek <oberdiek@uni-freiburg.de> @@ -162,7 +162,7 @@ [\entrysep] \entry{alphalph}{2007/04/11}{1.5}{Converting numbers to letters}% [\entrysep] -\entry{atbegshi}{2007/04/19}{1.2}{At begin shipout hook}% +\entry{atbegshi}{2007/04/27}{1.4}{At begin shipout hook}% [\entrysep] \entry{atenddvi}{2007/04/17}{1.1}{At end DVI hook}% [\entrysep] @@ -172,7 +172,7 @@ [\entrysep] \entry{bmpsize}{2007/04/11}{1.2}{Extract size and resolution data from bitmap files}% [\entrysep] -\entry{bookmark}{2007/04/09}{0.8}{PDF bookmarks}% +\entry{bookmark}{2007/04/25}{0.9}{PDF bookmarks}% [\entrysep] \entry{centernot}{2006/12/02}{1.0}{Centers the not symbol horizontally}% [\entrysep] @@ -186,9 +186,9 @@ [\entrysep] \entry{embedfile}{2007/04/11}{1.1}{embed files into PDF}% [\entrysep] -\entry{engord}{2007/04/11}{1.3}{Provides the ifpdf switch}% +\entry{engord}{2007/04/26}{1.4}{Provides the ifpdf switch}% [\entrysep] -\entry{epstopdf}{2006/08/26}{1.3}{Conversion with epstopdf on the fly}% +\entry{epstopdf}{2007/04/26}{1.4}{Conversion with epstopdf on the fly}% [\entrysep] \entry{flags}{2007/03/07}{0.3}{Flag setting in bit fields}% [\entrysep] @@ -208,12 +208,14 @@ [\entrysep] \entry{ifdraft}{2006/02/20}{1.2}{Switch for option draft}% [\entrysep] -\entry{iflang}{2007/04/12}{1.2}{Language checks}% +\entry{iflang}{2007/04/26}{1.3}{Language checks}% [\entrysep] \entry{ifpdf}{2006/02/20}{1.4}{Provides the ifpdf switch}% [\entrysep] \entry{ifvtex}{2007/01/10}{1.2}{Switches for detecting VTeX and its modes}% [\entrysep] +\entry{infwarerr}{2007/04/26}{1.0}{Providing info/warning/message}% +[\entrysep] \entry{inputenx}{2007/04/11}{1.1}{Enhanced input encoding handling}% [\entrysep] \entry{kvoptions}{2007/04/11}{2.5}{Connects package keyval with \LaTeX{} options}% @@ -228,9 +230,9 @@ [\entrysep] \entry{pdfcolmk}{2007/04/11}{1.1}{PDFtex COLor MarK}% [\entrysep] -\entry{pdfcrypt}{2007/04/11}{0.9}{Setting pdf encryption}% +\entry{pdfcrypt}{2007/04/26}{1.0}{Setting pdf encryption}% [\entrysep] -\entry{pdfescape}{2007/04/11}{1.3}{Provides hex, PDF name and string conversions}% +\entry{pdfescape}{2007/04/21}{1.4}{Provides hex, PDF name and string conversions}% [\entrysep] \entry{pdflscape}{2007/04/17}{0.8}{Landscape pages in PDF}% [\entrysep] @@ -240,7 +242,7 @@ [\entrysep] \entry{refcount}{2006/02/20}{3.0}{Data extraction from references}% [\entrysep] -\entry{setouterhbox}{2006/08/26}{1.4}{Set hbox in outer horizontal mode}% +\entry{setouterhbox}{2007/04/26}{1.5}{Set hbox in outer horizontal mode}% [\entrysep] \entry{settobox}{2007/04/11}{1.3}{Getting box sizes}% [\entrysep] @@ -256,7 +258,7 @@ [\entrysep] \entry{twoopt}{2006/02/20}{1.4}{Definitions with two optional arguments}% [\entrysep] -\entry{zref}{2007/04/06}{1.7}{New reference scheme for \LaTeXe{}}% +\entry{zref}{2007/04/22}{1.8}{New reference scheme for \LaTeXe{}}% \end{overview} \section{Packages} @@ -573,6 +575,15 @@ and sets the switches \cs{ifvtex}, \cs{ifvtex}\texttt{\meta{mode}}, \tocinclude{ifvtex} \newpage +\subsection{\pkgsectformat{infwarerr}} +\label{infwarerr} +\begin{abstract} +This package provides a complete set of macros for informations, +warnings and error messages with support for \plainTeX. +\end{abstract} +\tocinclude{infwarerr} + +\newpage \subsection{\pkgsectformat{inputenx}} \label{inputenx} \begin{abstract} diff --git a/Master/texmf-dist/source/latex/oberdiek/pdfcrypt.dtx b/Master/texmf-dist/source/latex/oberdiek/pdfcrypt.dtx index f48e8c09a75..ac5c8db9aca 100644 --- a/Master/texmf-dist/source/latex/oberdiek/pdfcrypt.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/pdfcrypt.dtx @@ -1,6 +1,7 @@ % \iffalse meta-comment % -% Copyright (C) 2001, 2006 by Heiko Oberdiek <oberdiek@uni-freiburg.de> +% Copyright (C) 2001, 2006, 2007 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 @@ -66,7 +67,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: pdfcrypt 2007/04/11 v0.9 Setting pdf encryption (HO)} +\Msg{* Package: pdfcrypt 2007/04/26 v1.0 Setting pdf encryption (HO)} \Msg{************************************************************************} \keepsilent @@ -76,7 +77,8 @@ This is a generated file. -Copyright (C) 2001, 2006 by Heiko Oberdiek <oberdiek@uni-freiburg.de> +Copyright (C) 2001, 2006, 2007 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 @@ -126,7 +128,7 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{pdfcrypt.drv}% - [2007/04/11 v0.9 Setting pdf encryption (HO)]% + [2007/04/26 v1.0 Setting pdf encryption (HO)]% \documentclass{ltxdoc} \usepackage{holtxdoc} \begin{document} @@ -135,7 +137,7 @@ and the derived files %</driver> % \fi % -% \CheckSum{731} +% \CheckSum{676} % % \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 @@ -156,7 +158,7 @@ and the derived files % \GetFileInfo{pdfcrypt.drv} % % \title{The \xpackage{pdfcrypt} package} -% \date{2007/04/11 v0.9} +% \date{2007/04/26 v1.0} % \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} % % \maketitle @@ -386,48 +388,17 @@ and the derived files }% }{} -\@ifundefined{PackageError}{% - \def\PackageError#1#2#3{% - \begingroup - \newlinechar=10 % - \errhelp{#3}% - \errmessage{% - \MessageBreak - Package #1 Error: #2.\MessageBreak - \MessageBreak - See the #1 package documentation for explanation.\MessageBreak - Type \space H <return> \space for immediate help% - }% - \endgroup - }% -}{} - -\@ifundefined{PackageWarning}{% - \def\PackageWarning#1#2{% - \begingroup - \newlinechar=10 % - \def\MessageBreak{% - ^^J(#1)\@spaces\@spaces\@spaces\@spaces - }% - \immediate\write16{^^JPackage #1 Warning: #2\on@line.^^J}% - \endgroup - }% -}{} - -\@ifundefined{PackageWarningNoLine}{% - \def\PackageWarningNoLine#1#2{% - \PackageWarning{#1}{#2\@gobble}% - }% -}{} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname RequirePackage\endcsname\relax + \input infwarerr.sty\relax +\else + \RequirePackage{infwarerr}% +\fi \@ifundefined{@gobble}{% \long\def\@gobble#1{}% }{} -\@ifundefined{on@line}{% - \def\on@line{ on input line \the\inputlineno}% -}{} - \@ifundefined{@empty}{% \def\@empty{}% }{} @@ -437,14 +408,14 @@ and the derived files % % \begin{macrocode} \ProvidesPackage{pdfcrypt}% - [2007/04/11 v0.9 Setting pdf encryption (HO)]% + [2007/04/26 v1.0 Setting pdf encryption (HO)]% % \end{macrocode} % % \begin{macrocode} \@ifundefined{pdfcryptsetup}{% \let\pdfcryptsetup\@gobble }{% - \PackageWarningNoLine{pdfcrypt}{Package pdfcrypt is already loaded}% + \@PackageWarningNoLine{pdfcrypt}{Package pdfcrypt is already loaded}% \pc@endinput } % \end{macrocode} @@ -452,7 +423,7 @@ and the derived files % \begin{macrocode} \newif\ifpc@nopdfcrypt \ifx Y\nopdfcrypt - \PackageWarningNoLine{pdfcrypt}{% + \@PackageWarningNoLine{pdfcrypt}{% Encryption disabled by \string \nopdfcrypt\space request% }% \global\pc@nopdfcrypttrue @@ -470,7 +441,7 @@ and the derived files \ifcase\pdfoutput \else \@ifundefined{pdfcrypt}{% - \PackageError{pdfcrypt}{% + \@PackageError{pdfcrypt}{% PDF encryption is not supported with this pdfTeX% }{% Encryption support was added in 0.14h (2001/03/10)\MessageBreak @@ -488,7 +459,7 @@ and the derived files }{% \ifnum\OpMode=1 % \ifnum\@ifundefined{VTeXversion}0\VTeXversion<735 % - \PackageError{pdfcrypt}{% + \@PackageError{pdfcrypt}{% PDF encryption is not supported with this VTeX% }{% You need VTeX 7.35 or higher.% @@ -527,34 +498,6 @@ and the derived files \def\@nameuse#1{\csname #1\endcsname}% }{} -\@ifundefined{MessageBreak}{% - \def\MessageBreak{^^J}% -}{} - -\@ifundefined{@ehc}{% - \def\@ehc{% - Try typing \space <return> \space to proceed.\MessageBreak - If that doesn't work, type \space X <return> \space - to quit.% - }% -}{} - -\@ifundefined{PackageInfo}{% - \def\PackageInfo#1#2{% - \begingroup - \newlinechar=10 % - \def\MessageBreak{% - ^^J(#1) \space\@spaces\@spaces\@spaces - }% - \wlog{Package #1 Info: #2}% - \endgroup - }% -}{} - -\@ifundefined{@spaces}{% - \def\@spaces{\space\space\space\space}% -}{} - \def\pc@KeyvalRestore{% \let\pc@KeyvalRestore\@undefined } @@ -626,7 +569,7 @@ and the derived files \edef\pc@temp{\catcode`\noexpand\"=\the\catcode`\"\relax} \@makeother\" \def\pc@set{% - \PackageInfo{pdfcrypt}{% + \@PackageInfo{pdfcrypt}{% \ifpc@debug \ifx\pc@owner\@empty No owner password% @@ -657,10 +600,10 @@ and the derived files \else \@ifundefined{pc@set@\pc@driver}{% \ifx\pc@driver\@empty - \PackageError{pdfcrypt}{No driver for encryption % + \@PackageError{pdfcrypt}{No driver for encryption % support found}\@ehc \else - \PackageError{pdfcrypt}{Cannot set encryption for % + \@PackageError{pdfcrypt}{Cannot set encryption for % unknown driver `\pc@driver'}\@ehc \fi }{% @@ -766,7 +709,7 @@ and the derived files \fi \fi \ifx\pc@temp\relax - \PackageWarning{pdfcrypt}{% + \@PackageWarning{pdfcrypt}{% Unexpected value \string`#3\string' of % option \string`#2\string'\MessageBreak instead of % @@ -829,7 +772,7 @@ and the derived files \pc@set \global\let\pc@set\relax \gdef\pdfcryptsetup##1{% - \PackageWarning{pdfcrypt}{% + \@PackageWarning{pdfcrypt}{% Encryption options are already set\MessageBreak new values are ignored% }% @@ -847,7 +790,7 @@ and the derived files % \begin{macrocode} \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname InputIfFileExists\endcsname\relax - \PackageInfo{pdfcrypt}{% + \@PackageInfo{pdfcrypt}{% Configuration file pdfcrypt.cfg not supported.% }% \else @@ -1074,6 +1017,10 @@ and the derived files % \item % Line ends sanitized. % \end{Version} +% \begin{Version}{2007/04/26 v1.0} +% \item +% Use of package \xpackage{infwarerr}. +% \end{Version} % \end{History} % % \PrintIndex diff --git a/Master/texmf-dist/source/latex/oberdiek/pdfescape.dtx b/Master/texmf-dist/source/latex/oberdiek/pdfescape.dtx index 56419efe093..f68dd90b1aa 100644 --- a/Master/texmf-dist/source/latex/oberdiek/pdfescape.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/pdfescape.dtx @@ -71,7 +71,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: pdfescape 2007/04/11 v1.3 Provides hex, PDF name and string conversions (HO)} +\Msg{* Package: pdfescape 2007/04/21 v1.4 Provides hex, PDF name and string conversions (HO)} \Msg{************************************************************************} \keepsilent @@ -137,7 +137,7 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{pdfescape.drv}% - [2007/04/11 v1.3 Provides hex, PDF name and string conversions (HO)]% + [2007/04/21 v1.4 Provides hex, PDF name and string conversions (HO)]% \documentclass{ltxdoc} \usepackage{holtxdoc} \begin{document} @@ -146,7 +146,7 @@ and the derived files %</driver> % \fi % -% \CheckSum{1074} +% \CheckSum{1812} % % \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 @@ -167,7 +167,7 @@ and the derived files % \GetFileInfo{pdfescape.drv} % % \title{The \xpackage{pdfescape} package} -% \date{2007/04/11 v1.3} +% \date{2007/04/21 v1.4} % \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} % % \maketitle @@ -193,7 +193,8 @@ and the derived files % Note that the argument \meta{string} is expanded before % the conversion. % -% For example, if \pdfTeX\ >= 1.30 is present, then \cs{EdefEscapeHex} +% For example, if \pdfTeX\ \textgreater= 1.30 is present, +% then \cs{EdefEscapeHex} % becomes to: % \begin{quote} %\begin{verbatim} @@ -210,6 +211,24 @@ and the derived files % The input strings may contain shorthand characters of package % \xpackage{babel}. % +% \subsection{Additional unescape macros} +% +% \begin{declcs}{EdefUnescapeName} \M{cmd} \M{string}\\ +% \end{declcs} +% Sequences of a hash sign with two hexadecimal digits are +% converted to the corresponding character (PDF-1.2). +% A hash sign that is not followed by two hexadecimal digits +% is left unchanged. The catcodes in the result string follow +% TeX's conventions. The space has catcode 10 (space) and +% the other characters have catcode 12 (other). +% +% \begin{declcs}{EdefUnescapeString} \M{cmd} \M{string}\\ +% \end{declcs} +% Macro \meta{cmd} stores the unescaped string in \meta{string}. +% All the rules for literal strings are implemented, see +% PDF specification. +% The catcodes in the result string follow TeX's conventions. +% % \StopEventually{ % } % @@ -219,10 +238,44 @@ and the derived files %<*package> % \end{macrocode} % +% \subsection{Catcodes} +% +% \begin{macrocode} +\expandafter\edef\csname PE@AtEnd\endcsname{% + \catcode64 \the\catcode64\relax +} +\catcode64 11 % @ +\def\PE@EnsureCode#1#2#3{% + \edef\PE@AtEnd{% + \PE@AtEnd + #1#2 \the#1#2\relax + }% + #1#2 #3\relax +} +\PE@EnsureCode\catcode{0}{12}% ^^@ +\PE@EnsureCode\catcode{34}{12}% " +\PE@EnsureCode\catcode{42}{12}% * +\PE@EnsureCode\catcode{45}{12}% - +\PE@EnsureCode\catcode{46}{12}% . +\PE@EnsureCode\catcode{60}{12}% < +\PE@EnsureCode\catcode{61}{12}% = +\PE@EnsureCode\catcode{62}{12}% > +\PE@EnsureCode\catcode{94}{7}% ^ +\PE@EnsureCode\catcode{96}{12}% ` +\PE@EnsureCode\uccode{34}{0}% " +\PE@EnsureCode\uccode{48}{0}% 0 +\PE@EnsureCode\uccode{61}{0}% = +% \end{macrocode} +% % \subsection{Reload check and package identification} % Reload check, especially if the package is not used with \LaTeX. % \begin{macrocode} \begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ \expandafter\let\expandafter\x\csname ver@pdfescape.sty\endcsname \ifcase 0% \ifx\x\relax % plain @@ -249,6 +302,11 @@ and the derived files % Package identification: % \begin{macrocode} \begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ \expandafter\ifx\csname ProvidesPackage\endcsname\relax \def\x#1#2#3[#4]{\endgroup \immediate\write-1{Package: #3 #4}% @@ -264,41 +322,403 @@ and the derived files \fi \expandafter\x\csname ver@pdfescape.sty\endcsname \ProvidesPackage{pdfescape}% - [2007/04/11 v1.3 Provides hex, PDF name and string conversions (HO)] + [2007/04/21 v1.4 Provides hex, PDF name and string conversions (HO)] % \end{macrocode} % -% \subsection{Preparations} +% \subsection{Sanitizing} % -% \subsubsection{Catcodes} +% \begin{macro}{\PE@sanitize} +% Macro \cs{PE@sanitize} takes |#2|, entirely converts +% it to token with catcode 12 (other) and stores the +% result in macro |#1|. +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname detokenize\endcsname\relax + \long\def\PE@sanitize#1#2{% + \begingroup + \csname @safe@activestrue\endcsname + \edef#1{#2}% + \PE@onelevel@sanitize#1% + \expandafter\endgroup + \expandafter\def\expandafter#1\expandafter{#1}% + }% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname @onelevel@sanitize\endcsname\relax + \def\PE@onelevel@sanitize#1{% + \edef#1{\expandafter\PE@strip@prefix\meaning#1}% + }% + \def\PE@strip@prefix#1>{}% + \else + \let\PE@onelevel@sanitize\@onelevel@sanitize + \fi +\else + \long\def\PE@sanitize#1#2{% + \begingroup + \csname @safe@activestrue\endcsname + \edef#1{#2}% + \PE@onelevel@sanitize#1% + \expandafter\endgroup + \expandafter\def\expandafter#1\expandafter{#1}% + }% + \def\PE@onelevel@sanitize#1{% + \edef#1{\detokenize\expandafter{#1}}% + }% +\fi +% \end{macrocode} +% \end{macro} % +% \subsubsection{Space characters} +% +% \begin{macro}{\PE@space@other} % \begin{macrocode} -\expandafter\edef\csname PE@AtEnd\endcsname{% - \catcode64 \the\catcode64\relax +\begingroup + \catcode`\ =12\relax% +\def\x{\endgroup\def\PE@space@other{ }}\x\relax +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PE@space@space} +% \begin{macrocode} +\def\PE@space@space{ } +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Space normalization} +% +% \begin{macro}{\PE@SanitizeSpaceOther} +% \begin{macrocode} +\def\PE@SanitizeSpaceOther#1{% + \edef#1{\expandafter\PE@SpaceToOther#1 \relax}% } -\catcode64 11 % @ -\def\PE@EnsureCode#1#2#3{% - \edef\PE@AtEnd{% - \PE@AtEnd - #1#2 \the#1#2\relax +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\PE@SpaceToOther} +% \begin{macrocode} +\def\PE@SpaceToOther#1 #2\relax{% + #1% + \ifx\\#2\\% + \else + \PE@space@other + \@ReturnAfterFi{% + \PE@SpaceToOther#2\relax + }% + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@ReturnAfterFi} +% \begin{macrocode} +\long\def\@ReturnAfterFi#1\fi{\fi#1} +% \end{macrocode} +% \end{macro} +% +% \subsection{\cs{EdefUnescapeName}} +% +% \begin{macro}{\EdefUnescapeName} +% \begin{macrocode} +\def\EdefUnescapeName#1#2{% + \PE@sanitize#1{#2}% + \PE@SanitizeSpaceOther#1% + \PE@UnescapeName#1% + \PE@onelevel@sanitize#1% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\PE@UnescapeName} +% \begin{macrocode} +\begingroup + \catcode`\$=6 % hash + \catcode`\#=12 % other + \gdef\PE@UnescapeName$1{% + \begingroup + \PE@InitUccodeHexDigit + \def\PE@result{}% + \expandafter\PE@DeName$1#\relax\relax + \expandafter\endgroup + \expandafter\def\expandafter$1\expandafter{\PE@result}% }% - #1#2 #3\relax + \gdef\PE@DeName$1#$2$3{% + \ifx\relax$2% + \edef\PE@result{\PE@result$1}% + \let\PE@next\relax + \else + \ifx\relax$3% + % wrong escape sequence in input + \edef\PE@result{\PE@result$1#}% + \let\PE@next\relax + \else + \uppercase{% + \def\PE@testA{$2}% + \def\PE@testB{$3}% + }% + \ifcase\ifcase\expandafter\PE@TestUcHexDigit\PE@testA + \ifcase\expandafter\PE@TestUcHexDigit\PE@testB + \z@ + \else + \@ne + \fi + \else + \@ne + \fi + \uccode\z@="\PE@testA\PE@testB\relax + \uppercase{% + \def\PE@temp{^^@}% + }% + \uccode\z@=\z@ + \edef\PE@result{\PE@result$1\PE@temp}% + \let\PE@next\PE@DeName + \else + % wrong escape sequence in input + \edef\PE@result{\PE@result$1#}% + \def\PE@next{\PE@DeName$2$3}% + \fi + \fi + \fi + \PE@next + }% +\endgroup +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\PE@InitUccodeHexDigit} +% \begin{macrocode} +\def\PE@InitUccodeHexDigit{% + \uccode`a=`A\relax + \uccode`b=`B\relax + \uccode`c=`C\relax + \uccode`d=`D\relax + \uccode`e=`E\relax + \uccode`f=`F\relax + \uccode`A=\z@ + \uccode`B=\z@ + \uccode`C=\z@ + \uccode`D=\z@ + \uccode`E=\z@ + \uccode`F=\z@ + \uccode`0=\z@ + \uccode`1=\z@ + \uccode`2=\z@ + \uccode`3=\z@ + \uccode`4=\z@ + \uccode`5=\z@ + \uccode`6=\z@ + \uccode`7=\z@ + \uccode`8=\z@ + \uccode`9=\z@ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\PE@TestUcHexDigit} +% \begin{macrocode} +\def\PE@TestUcHexDigit#1{% + \ifnum`#1<48 % 0 + \@ne + \else + \ifnum`#1>70 % F + \@ne + \else + \ifnum`#1>57 % 9 + \ifnum`#1<65 % A + \@ne + \else + \z@ + \fi + \else + \z@ + \fi + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% +% \subsection{\cs{EdefUnescapeString}} +% +% \begin{macro}{\EdefUnescapeString} +% \begin{macrocode} +\def\EdefUnescapeString#1#2{% + \PE@sanitize#1{#2}% + \PE@SanitizeSpaceOther#1% + \PE@NormalizeLineEnd#1% + \PE@UnescapeString#1% + \PE@onelevel@sanitize#1% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\begingroup + \uccode`\8=10 % lf + \uccode`\9=13 % cr +\def\x#1#2{\endgroup +% \end{macrocode} +% \begin{macro}{\PE@NormalizeLineEnd} +% \begin{macrocode} + \def\PE@NormalizeLineEnd##1{% + \def\PE@result{}% + \expandafter\PE@@NormalizeLineEnd##1#2\relax + \let##1\PE@result + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PE@@NormalizeLineEnd} +% \begin{macrocode} + \def\PE@@NormalizeLineEnd##1#2##2{% + \ifx\relax##2% + \edef\PE@result{\PE@result##1}% + \let\PE@next\relax + \else + \edef\PE@result{\PE@result##1#1}% + \ifx#1##2% lf + \let\PE@next\PE@@NormalizeLineEnd + \else + \def\PE@next{\PE@@NormalizeLineEnd##2}% + \fi + \fi + \PE@next + }% +}% +\uppercase{% + \x 89% } -\PE@EnsureCode\catcode{0}{12}% ^^@ -\PE@EnsureCode\catcode{34}{12}% " -\PE@EnsureCode\catcode{42}{12}% * -\PE@EnsureCode\catcode{45}{12}% - -\PE@EnsureCode\catcode{46}{12}% . -\PE@EnsureCode\catcode{60}{12}% < -\PE@EnsureCode\catcode{61}{12}% = -\PE@EnsureCode\catcode{62}{12}% > -\PE@EnsureCode\catcode{94}{7}% ^ -\PE@EnsureCode\catcode{96}{12}% ` -\PE@EnsureCode\uccode{34}{0}% " -\PE@EnsureCode\uccode{48}{0}% 0 -\PE@EnsureCode\uccode{61}{0}% = % \end{macrocode} +% \end{macro} % -% \subsection{User macros} +% \begin{macrocode} +\begingroup + \catcode`\|=0 % + \catcode`\\=12 % +% \end{macrocode} +% \begin{macro}{\PE@UnescapeString} +% \begin{macrocode} + |gdef|PE@UnescapeString#1{% + |begingroup + |def|PE@result{}% + |expandafter|PE@DeString#1\|relax + |expandafter|endgroup + |expandafter|def|expandafter#1|expandafter{|PE@result}% + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PE@DeString} +% \begin{macrocode} + |gdef|PE@DeString#1\#2{% + |ifx|relax#2% + |edef|PE@result{|PE@result#1}% + |let|PE@next|relax + |else + |if n#2% + |uccode|z@=10 % + |else|if r#2% + |uccode|z@=13 % + |else|if t#2% + |uccode|z@=9 % + |else|if b#2% + |uccode|z@=8 % + |else|if f#2% + |uccode|z@=12 % + |else + |uccode|z@=|z@ + |fi|fi|fi|fi|fi + |ifnum|uccode|z@>|z@ + |uppercase{% + |edef|PE@temp{^^@}% + }% + |edef|PE@result{|PE@result#1|PE@temp}% + |let|PE@next|PE@DeString + |else + |if\#2% backslash + |edef|PE@result{|PE@result#1}% + |let|PE@next|PE@CheckEndBackslash + |else + |ifnum`#2=10 % linefeed + |edef|PE@result{|PE@result#1}% + |let|PE@next|PE@DeString + |else + |ifcase|PE@TestOctDigit#2% + |edef|PE@result{|PE@result#1}% + |def|PE@next{|PE@OctI#2}% + |else + |edef|PE@result{|PE@result#1#2}% + |let|PE@next|PE@DeString + |fi + |fi + |fi + |fi + |fi + |PE@next + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PE@CheckEndBackslash} +% \begin{macrocode} + |gdef|PE@CheckEndBackslash#1{% + |ifx|relax#1% + |else + |edef|PE@result{|PE@result\}% + |expandafter|PE@DeString|expandafter#1% + |fi + }% +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +|endgroup +% \end{macrocode} +% \begin{macro}{\PE@TestOctDigit} +% \begin{macrocode} +\def\PE@TestOctDigit#1{% + \ifnum`#1<48 % 0 + \@ne + \else + \ifnum`#1>55 % 7 + \@ne + \else + \z@ + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PE@OctI} +% \begin{macrocode} +\def\PE@OctI#1#2{% + \ifcase\PE@TestOctDigit#2% + \def\PE@next{\PE@OctII{#1#2}}% + \else + \def\PE@next{\PE@OctAll#1#2}% + \fi + \PE@next +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PE@OctII} +% \begin{macrocode} +\def\PE@OctII#1#2{% + \ifcase\PE@TestOctDigit#2% + \def\PE@next{\PE@OctAll{#1#2}}% + \else + \def\PE@next{\PE@OctAll{#1}#2}% + \fi + \PE@next +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PE@OctAll} +% \begin{macrocode} +\def\PE@OctAll#1{% + \uccode\z@='#1\relax + \uppercase{% + \edef\PE@result{\PE@result^^@}% + }% + \PE@DeString +} +% \end{macrocode} +% \end{macro} +% +% \subsection{User macros (\pdfTeX\space analogues)} % % \begin{macrocode} \begingroup\expandafter\expandafter\expandafter\endgroup @@ -309,7 +729,7 @@ and the derived files % \begin{macrocode} \long\def\EdefEscapeHex#1#2{% \PE@sanitize#1{#2}% - \edef#1{\expandafter\PE@SpaceToOther#1 \relax}% + \PE@SanitizeSpaceOther#1% \PE@EscapeHex#1% }% % \end{macrocode} @@ -326,7 +746,7 @@ and the derived files % \begin{macrocode} \long\def\EdefEscapeName#1#2{% \PE@sanitize#1{#2}% - \edef#1{\expandafter\PE@SpaceToOther#1 \relax}% + \PE@SanitizeSpaceOther#1% \PE@EscapeName#1% }% % \end{macrocode} @@ -335,7 +755,7 @@ and the derived files % \begin{macrocode} \long\def\EdefEscapeString#1#2{% \PE@sanitize#1{#2}% - \edef#1{\expandafter\PE@SpaceToOther#1 \relax}% + \PE@SanitizeSpaceOther#1% \PE@EscapeString#1% }% % \end{macrocode} @@ -349,13 +769,13 @@ and the derived files % Help macro that adds support for \xpackage{babel}'s shorthand % characters. % \begin{macrocode} -\long\def\PE@edefbabel#1#2#3{% - \begingroup - \csname @save@activestrue\endcsname - \edef#1{#2{#3}}% - \expandafter\endgroup - \expandafter\def\expandafter#1\expandafter{#1}% -} + \long\def\PE@edefbabel#1#2#3{% + \begingroup + \csname @save@activestrue\endcsname + \edef#1{#2{#3}}% + \expandafter\endgroup + \expandafter\def\expandafter#1\expandafter{#1}% + }% % \end{macrocode} % \end{macro} % @@ -405,25 +825,12 @@ and the derived files \edef\PE@hash{\string#} % \end{macrocode} % \end{macro} -% \begin{macro}{\PE@space@other} -% \begin{macrocode} -\begingroup - \catcode`\ =12\relax% -\def\x{\endgroup\def\PE@space@other{ }}\x\relax -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@space@space} -% \begin{macrocode} -\def\PE@space@space{ } -% \end{macrocode} -% \end{macro} % \begin{macro}{\PE@backslash} % \begin{macrocode} \begingroup - \long\def\@gobble#1{}% - \escapechar=92 % + \escapechar=-1 % \edef\x{\endgroup - \def\noexpand\PE@backslash{\expandafter\@gobble\string\\}% + \def\noexpand\PE@backslash{\string\\}% } \x % \end{macrocode} @@ -440,66 +847,6 @@ and the derived files \fi % \end{macrocode} % -% \subsection{Sanitizing} -% -% \begin{macro}{\PE@sanitize} -% Macro \cs{PE@sanitize} takes |#2|, entirely converts -% it to token with catcode 12 (other) and stores the -% result in macro |#1|. -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname detokenize\endcsname\relax - \long\def\PE@sanitize#1#2{% - \begingroup - \csname @safe@activestrue\endcsname - \edef#1{#2}% - \PE@onelevel@sanitize#1% - \expandafter\endgroup - \expandafter\def\expandafter#1\expandafter{#1}% - }% - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname @onelevel@sanitize\endcsname\relax - \def\PE@onelevel@sanitize#1{% - \edef#1{\expandafter\PE@strip@prefix\meaning#1}% - }% - \def\PE@strip@prefix#1>{}% - \else - \let\PE@onelevel@sanitize\@onelevel@sanitize - \fi -\else - \long\def\PE@sanitize#1#2{% - \begingroup - \csname @safe@activestrue\endcsname - \edef#1{#2}% - \edef#1{\detokenize\expandafter{#1}}% - \expandafter\endgroup - \expandafter\def\expandafter#1\expandafter{#1}% - }% -\fi -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\PE@SpaceToOther} -% \begin{macrocode} -\def\PE@SpaceToOther#1 #2\relax{% - #1% - \ifx\\#2\\% - \else - \PE@space@other - \@ReturnAfterFi{% - \PE@SpaceToOther#2\relax - }% - \fi -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@ReturnAfterFi} -% \begin{macrocode} -\long\def\@ReturnAfterFi#1\fi{\fi#1} -% \end{macrocode} -% \end{macro} -% % \subsection{Conversions} % % \subsubsection{Conversion to hex string} @@ -610,6 +957,7 @@ and the derived files % \begin{macrocode} \def\PE@UnescapeHex#1{% \begingroup + \PE@InitUccodeHexDigit \def\PE@result{}% \expandafter\PE@DeHex#1\relax\relax \expandafter\endgroup @@ -622,19 +970,48 @@ and the derived files \def\PE@DeHex#1#2{% \ifx#2\relax \ifx#1\relax + \let\PE@next\relax \else - \PE@DeHex#10\relax\relax + \uppercase{% + \def\PE@testA{#1}% + }% + \ifcase\expandafter\PE@TestUcHexDigit\PE@testA + \def\PE@next{% + \PE@DeHex#10\relax\relax + }% + \else + \let\PE@next\relax + \fi \fi \else - \uppercase{\lccode0="#1#2}\relax - \ifnum\lccode0=32 % - \edef\PE@result{\PE@result\PE@space@space}% + \uppercase{% + \def\PE@testA{#1}% + \def\PE@testB{#2}% + }% + \ifcase\expandafter\PE@TestUcHexDigit\PE@testA + \ifcase\expandafter\PE@TestUcHexDigit\PE@testB + \uccode\z@="\PE@testA\PE@testB\relax + \ifnum\uccode\z@=32 % + \let\PE@temp\PE@space@space + \else + \uppercase{% + \def\PE@temp{^^@}% + }% + \fi + \edef\PE@result{\PE@result\PE@temp}% + \let\PE@next\PE@DeHex + \else + % invalid input sequence + \def\PE@next{% + \PE@DeHex#1% + }% + \fi \else - \lowercase{\def\PE@temp{^^@}}% - \edef\PE@result{\PE@result\PE@temp}% + % invalid input sequence + \def\PE@next{\PE@DeHex#2}% \fi - \expandafter\PE@DeHex \fi + \PE@next } % \end{macrocode} % \end{macro} @@ -789,7 +1166,7 @@ and the derived files % \begin{macrocode} %<*test1> \ProvidesFile{pdfescape-test1.tex}% - [2007/04/11 v1.3 Test with \string\pdfescape... commands]% + [2007/04/21 v1.4 Test with \string\pdfescape... commands]% %</test1> % \end{macrocode} % @@ -798,7 +1175,7 @@ and the derived files % \begin{macrocode} %<*test2> \ProvidesFile{pdfescape-test2.tex}% - [2007/04/11 v1.3 Test without \string\pdfescape..., with e-TeX]% + [2007/04/21 v1.4 Test without \string\pdfescape..., with e-TeX]% %</test2> % \end{macrocode} % @@ -807,7 +1184,7 @@ and the derived files % \begin{macrocode} %<*test3> \ProvidesFile{pdfescape-test3.tex}% - [2007/04/11 v1.3 Test without \string\pdfescape... and e-TeX]% + [2007/04/21 v1.4 Test without \string\pdfescape... and e-TeX]% %</test3> % \end{macrocode} % @@ -859,6 +1236,14 @@ and the derived files \LogTests{lgout}{*}{*} \newcommand*{\ExpectVar}[2]{% + \ifx#1#2% + \else + \begingroup + \@onelevel@sanitize#1% + \@onelevel@sanitize#2% + \typeout{[#1] <> [#2]}% + \endgroup + \fi \Expect*{\ifx#1#2true\else false\fi}{true}% } @@ -1005,6 +1390,42 @@ and the derived files \ExpectVar\x\z \end{qstest} +\begin{qstest}{unhex-hash}{unescapehex, hash} + \catcode`\#=12 % + \EdefUnescapeHex\x{#20}% + \ExpectVar\x\space +\end{qstest} + +\begin{qstest}{unhex-invalid}{unescapehex, invalid} + \def\test#1#2{% + \EdefUnescapeHex\x{#1}% + \edef\y{#2}% + \@onelevel@sanitize\y + \ExpectVar\x\y + }% +%<*test1> + \edef\x{\pdfunescapehex{4X}}% + \edef\y{\string @}% + \ifx\x\y + \else + \def~{\space}% + \typeout{************************************}% + \typeout{* Your pdfTeX contains bug 777.~~~~*}% + \typeout{* This test is redefined as dummy, *}% + \typeout{* because it triggers the bug.~~~~~*}% + \typeout{************************************}% + \def\test#1#2{}% + \fi +%</test1> + \test{X}{}% + \test{XY}{}% + \test{XYZ}{}% + \test{A}{^^a0}% + \test{AX}{^^a0}% + \test{XA}{^^a0}% + \test{XXAXX}{^^a0}% +\end{qstest} + \begin{qstest}{all-name}{\AllBytes, escapename} \EdefEscapeName\x{\AllBytes}% \Expect*{\x}*{\AllBytesName}% @@ -1017,6 +1438,154 @@ and the derived files \ExpectVar\x\AllBytesString \end{qstest} +\begin{qstest}{uchexdigit}{unescape, uppercase hex digit} + \catcode`\@=11 % + \catcode0=12 % + \def\test#1#2{% + \uccode0=#1\relax + \uppercase{% + \def\x{^^@}% + }% + \Expect*{% + \ifcase\expandafter\PE@TestUcHexDigit\x + true% + \else + false% + \fi + }{#2}% + }% + \def\range#1#2#3{% + \count0=#1\relax + \loop + \ifnum\count0<#2\relax + \test{\count0}{#3}% + \advance\count0 by 1 % + \repeat + }% + \range{0}{47}{false}% + \range{48}{57}{true}% + \range{58}{64}{false}% + \range{65}{70}{true}% + \range{71}{255}{false}% +\end{qstest} + +\begin{qstest}{unescapename}{unescapename} + \def\test#1#2{% + \EdefUnescapeName\x{#1}% + \edef\y{#2}% + \@onelevel@sanitize\y + \ExpectVar\x\y + }% + \catcode`\#=12 % + \catcode0=12 % + \test{}{}% + \test{x}{x}% + \test{xy}{xy}% + \test{#}{#}% + \test{##}{##}% + \test{###}{###}% + \test{####}{####}% + \test{#x}{#x}% + \test{#xy}{#xy}% + \test{#1}{#1}% + \test{#40}{@}% + \test{#400}{@0}% + \test{#4x0}{#4x0}% + \test{#ab}{^^ab}% + \test{#00}{^^@}% + \test{x#40y#40z}{x@y@z}% + \test{#40#40#40#40}{@@@@}% + \test{a#x}{a#x}% + \test{a#xy}{a#xy}% + \test{a#1}{a#1}% + \test{a#40}{a@}% + \test{a#400}{a@0}% + \test{#20}{ }% + \test{a#20}{a }% + \test{a#20b}{a b}% + \test{a#20#20#20b}{a \space\space b}% +\end{qstest} + +\begin{qstest}{unescapestring}{unescapestring} + \def\test#1#2{% + \EdefUnescapeString\x{#1}% + \edef\y{#2}% + \@onelevel@sanitize\y + \ExpectVar\x\y + }% + \catcode0=12 % + \def\DefChar#1#2{% + \begingroup + \uccode0=#2\relax + \uppercase{\endgroup + \def#1{^^@}% + }% + }% + \DefChar\nul{0}% + \DefChar\one{1}% + \DefChar\bel{8}% + \DefChar\tab{9}% + \DefChar\lf{10}% + \DefChar\ff{12}% + \DefChar\cr{13}% + \DefChar\\{92}% + \test{}{}% + \test{a}{a}% + \test{\\}{}% + \test{\\\\}{\\}% + \test{\\\\y}{\\y}% + \test{\\000}{\nul}% + \test{\\b}{\bel}% + \test{\\t}{\tab}% + \test{\\n}{\lf}% + \test{\\f}{\ff}% + \test{\\r}{\cr}% + \test{\\(}{(}% + \test{\\)}{)}% + \test{\\040}{ }% + \test{\\100}{@}% + \test{\\40}{ }% + \test{\\1}{\one}% + \test{\\01}{\one}% + \test{\\001}{\one}% + \test{\\18}{\one8}% + \test{\\018}{\one8}% + \test{\\0018}{\one8}% + \test{x\\}{x}% + \test{x\\\\}{x\\}% + \test{x\\\\y}{x\\y}% + \test{x\\000}{x\nul}% + \test{x\\b}{x\bel}% + \test{x\\t}{x\tab}% + \test{x\\n}{x\lf}% + \test{x\\f}{x\ff}% + \test{x\\r}{x\cr}% + \test{x\\(}{x(}% + \test{x\\)}{x)}% + \test{x\\040}{x }% + \test{x\\100}{x@}% + \test{x\\40}{x }% + \test{x\\1}{x\one}% + \test{x\\01}{x\one}% + \test{x\\001}{x\one}% + \test{x\\18}{x\one8}% + \test{x\\018}{x\one8}% + \test{x\\0018}{x\one8}% + \test{\\b\\t\\n\\f\\r\\(\\)\\\\\\000\\040}{% + \bel\tab\lf\ff\cr()\\\nul\space + }% + \test{\\\lf}{}% + \test{x\\\lf}{x}% + \test{\cr}{\lf}% + \test{\cr\lf}{\lf}% + \test{\lf}{\lf}% + \test{\lf\cr}{\lf\lf}% + \test{x\cr}{x\lf}% + \test{x\cr\lf}{x\lf}% + \test{x\lf}{x\lf}% + \test{x\lf\cr}{x\lf\lf}% + \test{x\\\cr\lf y\cr}{xy\lf}% +\end{qstest} \stop % \end{macrocode} % @@ -1184,6 +1753,10 @@ and the derived files % \item % Line ends sanitized. % \end{Version} +% \begin{Version}{2007/04/21 v1.4} +% \item +% \cs{EdefUnescapeName} and \cs{EdefUnescapeString} added. +% \end{Version} % \end{History} % % \PrintIndex diff --git a/Master/texmf-dist/source/latex/oberdiek/setouterhbox.dtx b/Master/texmf-dist/source/latex/oberdiek/setouterhbox.dtx index 761057133c8..dc14cf646f3 100644 --- a/Master/texmf-dist/source/latex/oberdiek/setouterhbox.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/setouterhbox.dtx @@ -1,6 +1,7 @@ % \iffalse meta-comment % -% Copyright (C) 2005, 2006 by Heiko Oberdiek <oberdiek@uni-freiburg.de> +% Copyright (C) 2005, 2006, 2007 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 @@ -68,7 +69,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: setouterhbox 2006/08/26 v1.4 Set hbox in outer horizontal mode (HO)} +\Msg{* Package: setouterhbox 2007/04/26 v1.5 Set hbox in outer horizontal mode (HO)} \Msg{************************************************************************} \keepsilent @@ -78,7 +79,8 @@ This is a generated file. -Copyright (C) 2005, 2006 by Heiko Oberdiek <oberdiek@uni-freiburg.de> +Copyright (C) 2005, 2006, 2007 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 @@ -131,7 +133,7 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{setouterhbox.drv}% - [2006/08/26 v1.4 Set hbox in outer horizontal mode (HO)]% + [2007/04/26 v1.5 Set hbox in outer horizontal mode (HO)]% \documentclass{ltxdoc} \usepackage{holtxdoc} \begin{document} @@ -140,7 +142,7 @@ and the derived files %</driver> % \fi % -% \CheckSum{322} +% \CheckSum{321} % % \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 @@ -161,7 +163,7 @@ and the derived files % \GetFileInfo{setouterhbox.drv} % % \title{The \xpackage{setouterhbox} package} -% \date{2006/08/26 v1.4} +% \date{2007/04/26 v1.5} % \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} % % \maketitle @@ -386,7 +388,7 @@ by/a/very_long_long_long_path.html}% \fi \expandafter\x\csname ver@setouterhbox.sty\endcsname \ProvidesPackage{setouterhbox}% - [2006/08/26 v1.4 Set hbox in outer horizontal mode (HO)]% + [2007/04/26 v1.5 Set hbox in outer horizontal mode (HO)]% % \end{macrocode} % % \begin{macro}{\setouterhboxBox} @@ -401,18 +403,14 @@ by/a/very_long_long_long_path.html}% % \begin{macro}{\setouterhboxFailure} % Error message for both \plainTeX\ and \LaTeX % \begin{macrocode} -\def\setouterhboxFailure#1#2{% - \begingroup - \expandafter\ifx\csname PackageError\endcsname\relax - \def\MessageBreak{^^J}% - \newlinechar=10\relax - \edef\z{#2}% - \errhelp\expandafter{\z}% - \errmessage{Package setouterhbox Error: #1}% - \else - \PackageError{setouterhbox}{#1}{#2}% - \fi - \endgroup +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname RequirePackage\endcsname\relax + \input infwarerr.sty\relax +\else + \RequirePackage{infwarerr}% +\fi +\edef\setouterhboxFailure#1#2{% + \expandafter\noexpand\csname @PackageError\endcsname{setouterhbox}{#1}{#2}% } % \end{macrocode} % \end{macro} @@ -849,6 +847,10 @@ E \egroup % \item % Date of hyperref updated. % \end{Version} +% \begin{Version}{2007/04/26 v1.5} +% \item +% Use of package \xpackage{infwarerr}. +% \end{Version} % \end{History} % % \PrintIndex diff --git a/Master/texmf-dist/source/latex/oberdiek/telprint.dtx b/Master/texmf-dist/source/latex/oberdiek/telprint.dtx index d748ca5a17f..40f23c5906b 100644 --- a/Master/texmf-dist/source/latex/oberdiek/telprint.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/telprint.dtx @@ -138,7 +138,7 @@ and the derived files %</driver> % \fi % -% \CheckSum{315} +% \CheckSum{325} % % \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 @@ -309,6 +309,11 @@ and the derived files % Reload check, especially if the package is not used with \LaTeX. % \begin{macrocode} \begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ \expandafter\let\expandafter\x\csname ver@telprint.sty\endcsname \ifcase 0% \ifx\x\relax % plain @@ -335,6 +340,11 @@ and the derived files % Package identification: % \begin{macrocode} \begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ \expandafter\ifx\csname ProvidesPackage\endcsname\relax \def\x#1#2#3[#4]{\endgroup \immediate\write-1{Package: #3 #4}% diff --git a/Master/texmf-dist/source/latex/oberdiek/zref.dtx b/Master/texmf-dist/source/latex/oberdiek/zref.dtx index e5a478e74c8..39b20839f2f 100644 --- a/Master/texmf-dist/source/latex/oberdiek/zref.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/zref.dtx @@ -84,7 +84,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: zref 2007/04/06 v1.7 New reference scheme for LaTeX2e (HO)} +\Msg{* Package: zref 2007/04/22 v1.8 New reference scheme for LaTeX2e (HO)} \Msg{************************************************************************} \keepsilent @@ -166,7 +166,7 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{zref.drv}% - [2007/04/06 v1.7 New reference scheme for LaTeX2e (HO)]% + [2007/04/22 v1.8 New reference scheme for LaTeX2e (HO)]% \documentclass{ltxdoc} \usepackage{holtxdoc} \begin{document} @@ -175,7 +175,7 @@ and the derived files %</driver> % \fi % -% \CheckSum{1497} +% \CheckSum{1513} % % \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 @@ -196,7 +196,7 @@ and the derived files % \GetFileInfo{zref.drv} % % \title{The \xpackage{zref} package} -% \date{2007/04/06 v1.7} +% \date{2007/04/22 v1.8} % \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} % % \maketitle @@ -1157,13 +1157,13 @@ the height difference of the two baselines is %<*package> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref} - [2007/04/06 v1.7 New reference scheme for LaTeX2e (HO)]% + [2007/04/22 v1.8 New reference scheme for LaTeX2e (HO)]% % \end{macrocode} % % \subsubsection{Load basic module} % % \begin{macrocode} -\RequirePackage{zref-base}[2007/04/06] +\RequirePackage{zref-base}[2007/04/22] % \end{macrocode} % Abort package loading if \xpackage{zref-base} could not be % loaded successfully. @@ -1178,7 +1178,7 @@ the height difference of the two baselines is \def\ZREF@temp#1{% \DeclareOption{#1}{% \AtEndOfPackage{% - \RequirePackage{zref-#1}[2007/04/06]% + \RequirePackage{zref-#1}[2007/04/22]% }% }% } @@ -1238,7 +1238,7 @@ the height difference of the two baselines is %<*base> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref-base}% - [2007/04/06 v1.7 Module base for zref (HO)]% + [2007/04/22 v1.8 Module base for zref (HO)]% % \end{macrocode} % % \subsubsection{Utilities} @@ -1701,15 +1701,19 @@ the height difference of the two baselines is % the flag is set to notify \LaTeX\ and a warning is given. % \begin{macrocode} \def\zref@refused#1{% - \begingroup - \csname @safe@activestrue\endcsname - \zref@ifrefundefined{#1}{% - \protect\G@refundefinedtrue - \@latex@warning{% - Reference `#1' on page \thepage \space undefined% - }% - }{}% - \endgroup + \zref@wrapper@babel\ZREF@refused{#1}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ZREF@refused} +% \begin{macrocode} +\def\ZREF@refused#1{% + \zref@ifrefundefined{#1}{% + \protect\G@refundefinedtrue + \@latex@warning{% + Reference `#1' on page \thepage \space undefined% + }% + }{}% } % \end{macrocode} % \end{macro} @@ -1796,13 +1800,29 @@ the height difference of the two baselines is % \begin{macro}{\zref@wrapper@babel} % \begin{macrocode} \long\def\zref@wrapper@babel#1#2{% - \begingroup - \csname @safe@activestrue\endcsname - \edef\x{#2}% - \expandafter\endgroup - \expandafter\ZREF@wrapper@babel\expandafter{\x}{#1}% + \ifcsname if@safe@actives\endcsname + \expandafter\@firstofone + \else + \expandafter\@secondoftwo + \fi + {% + \if@safe@actives + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi + {% + \begingroup + \csname @safe@activestrue\endcsname + \edef\x{#2}% + \expandafter\endgroup + \expandafter\ZREF@wrapper@babel\expandafter{\x}{#1}% + }% + }{% + #1{#2}% + }% } -\def\ZREF@wrapper@babel#1#2{% +\long\def\ZREF@wrapper@babel#1#2{% #2{#1}% } % \end{macrocode} @@ -1910,8 +1930,8 @@ the height difference of the two baselines is %<*user> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref-user}% - [2007/04/06 v1.7 Module user for zref (HO)]% -\RequirePackage{zref-base}[2007/04/06] + [2007/04/22 v1.8 Module user for zref (HO)]% +\RequirePackage{zref-base}[2007/04/22] \@ifundefined{ZREF@baseok}{\endinput}{} % \end{macrocode} % @@ -1985,8 +2005,8 @@ the height difference of the two baselines is %<*abspage> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref-abspage}% - [2007/04/06 v1.7 Module abspage for zref (HO)]% -\RequirePackage{zref-base}[2007/04/06] + [2007/04/22 v1.8 Module abspage for zref (HO)]% +\RequirePackage{zref-base}[2007/04/22] \@ifundefined{ZREF@baseok}{\endinput}{} % \end{macrocode} % @@ -2030,8 +2050,8 @@ the height difference of the two baselines is %<*counter> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref-counter}% - [2007/04/06 v1.7 Module counter for zref (HO)]% -\RequirePackage{zref-base}[2007/04/06] + [2007/04/22 v1.8 Module counter for zref (HO)]% +\RequirePackage{zref-base}[2007/04/22] \@ifundefined{ZREF@baseok}{\endinput}{} % \end{macrocode} % @@ -2067,8 +2087,8 @@ the height difference of the two baselines is %<*lastpage> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref-lastpage}% - [2007/04/06 v1.7 Module lastpage for zref (HO)]% -\RequirePackage{zref-base}[2007/04/06] + [2007/04/22 v1.8 Module lastpage for zref (HO)]% +\RequirePackage{zref-base}[2007/04/22] \@ifundefined{ZREF@baseok}{\endinput}{} % \end{macrocode} % @@ -2101,16 +2121,16 @@ the height difference of the two baselines is %<*totpages> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref-totpages}% - [2007/04/06 v1.7 Module totpages for zref (HO)]% -\RequirePackage{zref-base}[2007/04/06] + [2007/04/22 v1.8 Module totpages for zref (HO)]% +\RequirePackage{zref-base}[2007/04/22] \@ifundefined{ZREF@baseok}{\endinput}{} % \end{macrocode} % % The absolute page number of the last page is the total % page number. % \begin{macrocode} -\RequirePackage{zref-abspage}[2007/04/06] -\RequirePackage{zref-lastpage}[2007/04/06] +\RequirePackage{zref-abspage}[2007/04/22] +\RequirePackage{zref-lastpage}[2007/04/22] % \end{macrocode} % % \begin{macro}{\ztotpages} @@ -2140,8 +2160,8 @@ the height difference of the two baselines is %<*perpage> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref-perpage}% - [2007/04/06 v1.7 Module perpage for zref (HO)]% -\RequirePackage{zref-base}[2007/04/06] + [2007/04/22 v1.8 Module perpage for zref (HO)]% +\RequirePackage{zref-base}[2007/04/22] \@ifundefined{ZREF@baseok}{\endinput}{} % \end{macrocode} % @@ -2153,7 +2173,7 @@ the height difference of the two baselines is % For detecting changed pages module \xoption{abspage} % is loaded. % \begin{macrocode} -\RequirePackage{zref-abspage}[2007/04/06] +\RequirePackage{zref-abspage}[2007/04/22] % \end{macrocode} % % We group the properties for the needed references @@ -2297,8 +2317,8 @@ the height difference of the two baselines is %<*titleref> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref-titleref}% - [2007/04/06 v1.7 Module titleref for zref (HO)]% -\RequirePackage{zref-base}[2007/04/06] + [2007/04/22 v1.8 Module titleref for zref (HO)]% +\RequirePackage{zref-base}[2007/04/22] \@ifundefined{ZREF@baseok}{\endinput}{} % \end{macrocode} % @@ -2593,8 +2613,8 @@ the height difference of the two baselines is %<*xr> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref-xr}% - [2007/04/06 v1.7 Module xr for zref (HO)]% -\RequirePackage{zref-base}[2007/04/06] + [2007/04/22 v1.8 Module xr for zref (HO)]% +\RequirePackage{zref-base}[2007/04/22] \@ifundefined{ZREF@baseok}{\endinput}{} % \end{macrocode} % \begin{macrocode} @@ -2937,8 +2957,8 @@ the height difference of the two baselines is %<*hyperref> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref-hyperref}% - [2007/04/06 v1.7 Module hyperref for zref (HO)]% -\RequirePackage{zref-base}[2007/04/06] + [2007/04/22 v1.8 Module hyperref for zref (HO)]% +\RequirePackage{zref-base}[2007/04/22] \@ifundefined{ZREF@baseok}{\endinput}{} % \end{macrocode} % @@ -2966,8 +2986,8 @@ the height difference of the two baselines is %<*savepos> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref-savepos}% - [2007/04/06 v1.7 Module savepos for zref (HO)]% -\RequirePackage{zref-base}[2007/04/06] + [2007/04/22 v1.8 Module savepos for zref (HO)]% +\RequirePackage{zref-base}[2007/04/22] \@ifundefined{ZREF@baseok}{\endinput}{} % \end{macrocode} % @@ -3072,15 +3092,15 @@ the height difference of the two baselines is %<*dotfill> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{zref-dotfill}% - [2007/04/06 v1.7 Module dotfill for zref (HO)]% -\RequirePackage{zref-base}[2007/04/06] + [2007/04/22 v1.8 Module dotfill for zref (HO)]% +\RequirePackage{zref-base}[2007/04/22] \@ifundefined{ZREF@baseok}{\endinput}{} % \end{macrocode} % % For measuring the width of \cs{zdotfill} we use the features % provided by module \xoption{savepos}. % \begin{macrocode} -\RequirePackage{zref-savepos}[2007/04/06] +\RequirePackage{zref-savepos}[2007/04/22] % \end{macrocode} % For automatically generated label names we use the unique % counter of module \xoption{base}. @@ -3369,6 +3389,12 @@ the height difference of the two baselines is % \item % Package \xpackage{atbegshi} replaces \xpackage{everyshi}. % \end{Version} +% \begin{Version}{2007/04/22 v1.8} +% \item +% \cs{zref@wrapper@babel} and \cs{zref@refused} are now expandable +% if babel is not used or \cs{if@safe@actives} is already set to true. +% (Feature request of Josselin Noirel) +% \end{Version} % \end{History} % % \PrintIndex |