diff options
author | Karl Berry <karl@freefriends.org> | 2006-08-27 22:38:54 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-08-27 22:38:54 +0000 |
commit | 2607d53137ede06e9780342b225218743e100bb4 (patch) | |
tree | c6c88c805dd21a5bbb6ad6f26d3d53c517f4b866 /Master/texmf-dist/source/latex/oberdiek | |
parent | fb0d58de45c0fc32bab09a839c186de46f75628e (diff) |
oberdiek update from tds zip (28aug06)
git-svn-id: svn://tug.org/texlive/trunk@2054 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/oberdiek')
47 files changed, 39474 insertions, 1047 deletions
diff --git a/Master/texmf-dist/source/latex/oberdiek/aliascnt.dtx b/Master/texmf-dist/source/latex/oberdiek/aliascnt.dtx new file mode 100644 index 00000000000..aceb4c27e89 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/aliascnt.dtx @@ -0,0 +1,475 @@ +% \iffalse meta-comment +% +% Copyright (C) 2006 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 aliascnt.dtx +% and the derived files +% aliascnt.sty, aliascnt.pdf, aliascnt.ins, aliascnt.drv. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/aliascnt.dtx +% CTAN:macros/latex/contrib/oberdiek/aliascnt.pdf +% +% Unpacking: +% (a) If aliascnt.ins is present: +% tex aliascnt.ins +% (b) Without aliascnt.ins: +% tex aliascnt.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{aliascnt.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If aliascnt.drv is present: +% latex aliascnt.drv +% (b) Without aliascnt.drv: +% latex aliascnt.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 aliascnt.dtx +% makeindex -s gind.ist aliascnt.idx +% pdflatex aliascnt.dtx +% makeindex -s gind.ist aliascnt.idx +% pdflatex aliascnt.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/aliascnt.sty +% TDS:doc/latex/oberdiek/aliascnt.pdf +% TDS:source/latex/oberdiek/aliascnt.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: aliascnt 2006/08/16 v1.1 Alias counter (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2006 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 aliascnt.dtx +and the derived files + aliascnt.sty, aliascnt.pdf, aliascnt.ins, aliascnt.drv. + +\endpreamble + +\generate{% + \file{aliascnt.ins}{\from{aliascnt.dtx}{install}}% + \file{aliascnt.drv}{\from{aliascnt.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{aliascnt.sty}{\from{aliascnt.dtx}{package}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* aliascnt.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `aliascnt.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{aliascnt.drv}% + [2006/08/16 v1.1 Alias counter (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\begin{document} + \DocInput{aliascnt.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{75} +% +% \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{aliascnt.drv} +% +% \title{The \xpackage{aliascnt} package} +% \date{2006/08/16 v1.1} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% Package \xpackage{aliascnt} introduces \emph{alias counters} that +% share the same counter register and clear list. +% \end{abstract} +% +% \tableofcontents +% +% \section{User interface} +% +% \subsection{Introduction} +% +% There are features that rely on the name of counters. For +% example, \xpackage{hyperref}'s \cs{autoref} indirectly uses +% the counter name to determine which label text it puts in front +% of the reference number (\cite{hyperref}). +% In some circumstances this fail: several theorem environments +% are defined by \cs{newtheorem} that share the same counter. +% +% \subsection{Syntax} +% +% Macro names in user land contain the package name +% \texttt{aliascnt} in order to prevent name clashes. +% +% \newenvironment{desc}{^^A +% \list{}{^^A +% \setlength{\labelwidth}{0pt}^^A +% \setlength{\itemindent}{-.5\marginparwidth}^^A +% \setlength{\leftmargin}{0pt}^^A +% \let\makelabel\desclabel +% }^^A +% }{^^A +% \endlist +% } +% \newcommand*{\desclabel}[1]{^^A +% \hspace{\labelsep}^^A +% \normalfont +% #1^^A +% } +% \newcommand*{\itemcs}[2]{^^A +% \item[^^A +% \expandafter\SpecialUsageIndex\csname #1\endcsname +% {\cs{#1}#2}^^A +% ]\mbox{}\\*[.5ex]^^A +% \ignorespaces +% } +% \begin{desc} +% \itemcs{newaliascnt}{\marg{ALIASCNT}\marg{BASECNT}} +% An alias counter ALIASCNT is created that does not allocate +% a new \TeX\ counter register. It shares the count register and +% the clear list with counter BASECNT. If the value of either +% the two registers is changed, the changes affects both. +% \itemcs{aliascntresetthe}{\marg{ALIASCNT}} +% This fixes a problem with \cs{newtheorem} if it +% is fooled by an alias counter with the same name: +% \begin{quote} +%\begin{verbatim} +%\newtheorem{foo}{Foo}% counter "foo" +%\newaliascnt{bar}{foo}% alias counter "bar" +%\newtheorem{bar}[bar]{Bar} +%\aliascntresetthe{bar} +%\end{verbatim} +% \end{quote} +% \end{desc} +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \subsection{Identification} +% +% \begin{macrocode} +%<*package> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{aliascnt}% + [2006/08/16 v1.1 Alias counter (HO)] +% \end{macrocode} +% +% \subsection{Create new alias counter} +% +% \begin{macro}{\newaliascnt} +% A new alias counter is set up by \cs{newaliascnt}. +% The following properties are added for the new counter CNT: +% \begin{description} +% \item[\mdseries\cs{theH}\meta{CNT}:] Compatibility for \xpackage{hyperref} +% \item[\mdseries\cs{AC@cnt@}\meta{CNT}:] Name of the referenced counter +% in the definition. +% \end{description} +% \begin{macrocode} +\newcommand*{\newaliascnt}[2]{% + \begingroup + \def\AC@glet##1{% + \global\expandafter\let\csname##1#1\expandafter\endcsname + \csname##1#2\endcsname + }% + \@ifundefined{c@#2}{% + \@nocounterr{#2}% + }{% + \@ifdefinable{c@#1}{% + \AC@glet{c@}% + \AC@glet{the}% + \AC@glet{theH}% + \AC@glet{p@}% + \expandafter\gdef\csname AC@cnt@#1\endcsname{#2}% + \expandafter\gdef\csname cl@#1\expandafter\endcsname + \expandafter{\csname cl@#2\endcsname}% + }% + }% + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\aliascntresetthe} +% The \cs{the}\meta{CNT} macro is restored using the +% main counter. +% \begin{macrocode} +\newcommand*{\aliascntresetthe}[1]{% + \@ifundefined{AC@#1}{% + \PackageError{aliascnt}{% + `#1' is not an alias counter% + }\@ehc + }{% + \expandafter\let\csname the#1\expandafter\endcsname + \csname the\csname AC@cnt@#1\endcsname\endcsname + }% +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Counter clear list} +% +% The alias counters share the same register and clear list. +% Therefore we must ensure that manipulations to the clear list +% are done with the clear list macro of a real counter. +% \begin{macro}{\AC@findrootcnt} +% \cs{AC@findrootcnt} walks throught the aliasing relations +% to find the base counter. +% \begin{macrocode} +\newcommand*{\AC@findrootcnt}[1]{% + \@ifundefined{AC@#1}{% + #1% + }{% + \expandafter\AC@findrootcnt\csname AC@cnt@#1\endcsname + }% +} +% \end{macrocode} +% \end{macro} +% +% Clear lists are manipulated by \cs{@addtoreset} and +% \cs{@removefromreset}. The latter one is provided by +% the \xpackage{remreset} package (\cite{remreset}). +% +% \begin{macro}{\AC@patch} +% The same patch principle is applicable to both +% \cs{@addtoreset} and \cs{@removefromreset}. +% \begin{macrocode} +\def\AC@patch#1{% + \expandafter\let\csname AC@org@#1reset\expandafter\endcsname + \csname @#1reset\endcsname + \expandafter\def\csname @#1reset\endcsname##1##2{% + \csname AC@org@#1reset\endcsname{##1}{\AC@findrootcnt{##2}}% + }% +} +% \end{macrocode} +% \end{macro} +% If \xpackage{remreset} is not loaded we cannot delay +% the patch to \cs{AtBeginDocumen}, because \cs{@removefromreset} +% can be called in between. Therefore we force the loading of +% the package. +% \begin{macrocode} +\RequirePackage{remreset} +\AC@patch{addto} +\AC@patch{removefrom} +% \end{macrocode} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/aliascnt.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/aliascnt.pdf}] Documentation. +% \end{description} +% +% \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 aliascnt.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@{}} +% aliascnt.sty & tex/latex/oberdiek/aliascnt.sty\\ +% aliascnt.pdf & doc/latex/oberdiek/aliascnt.pdf\\ +% aliascnt.dtx & source/latex/oberdiek/aliascnt.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 aliascnt.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{aliascnt.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 aliascnt.dtx +%makeindex -s gind.ist aliascnt.idx +%pdflatex aliascnt.dtx +%makeindex -s gind.ist aliascnt.idx +%pdflatex aliascnt.dtx +%\end{verbatim} +% \end{quote} +% +% \section{Acknowledment} +% +% \begin{description} +% \item[Ulrich Schwarz:] The package is based on his draft for +% ``Die \TeX nische Kom\"odie'', see \cite{schwarz}. +% \end{description} +% +% \begin{thebibliography}{9} +% +% \bibitem{schwarz} +% Ulrich Schwarz: +% \textit{Was hinten herauskommt z\"ahlt: Counter Aliasing in \LaTeX}, +% \textit{Die \TeX nische Kom\"odie}, 3/2006, pages 8--14, Juli 2006. +% +% \bibitem{remreset} +% David Carlisle: \textit{The \xpackage{remreset} package}; +% 1997/09/28; +% \CTAN{macros/latex/contrib/carlisle/remreset.sty}. +% +% \bibitem{hyperref} +% Sebastian Rahtz, Heiko Oberdiek: +% \textit{The \xpackage{hyperref} package}; +% 2006/08/16 v6.75c; +% \CTAN{macros/latex/contrib/hyperref/}. +% +% \end{thebibliography} +% +% \begin{History} +% \begin{Version}{2006/02/20 v1.0} +% \item +% First version. +% \end{Version} +% \begin{Version}{2006/08/16 v1.1} +% \item +% Update of bibliography. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/alphalph.dtx b/Master/texmf-dist/source/latex/oberdiek/alphalph.dtx index 8e6b906b92b..5d8b86d3719 100644 --- a/Master/texmf-dist/source/latex/oberdiek/alphalph.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/alphalph.dtx @@ -1,100 +1,187 @@ % \iffalse meta-comment % -% alphalph.dtx -% -% This file is part of the package `alphalph' for use with LaTeX2e. -% -% Function: Selecting shipout output pages. -% -% Copyright (C) 1999 Heiko Oberdiek. -% -% This program can be redistributed and/or modified -% under the terms of the LaTeX Project Public License -% distributed from CTAN archives in directory -% macros/latex/base/lppl.txt; either version 1 of -% the License, or (at your option) any later version. -% -% Please send error reports and suggestions for improvements to -% Heiko Oberdiek <oberdiek@ruf.uni-freiburg.de>. -% -% This is the desperate try to use only one identification string -% with the verion info: -%<*dtx> - \ProvidesFile{alphalph.dtx} -%</dtx> -%<package>\ifx\ProvidesPackage\UnDeFiNeD -%<package>\begingroup\def\x#1#2#3[#4]#5{\endgroup\csname fi\endcsname -%<package>\immediate\write-1{Package: #3 #4 }}\x -%<package>\else -%<package>\ProvidesPackage{alphalph}% -%<driver>\ProvidesFile{alphalph.drv} -% \fi -% \ProvidesFile{alphalph.dtx} - [1999/04/13 v1.1 Converting numbers to letters (HO)] -% -% \iffalse -%<package>\fi -% \fi -% \GetFileInfo{alphalph.dtx} -% -% \CheckSum{268} -% -%% \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 \~} -%% -% \iffalse +% Copyright (C) 1999, 2006 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 alphalph.dtx +% and the derived files +% alphalph.sty, alphalph.pdf, alphalph.ins, alphalph.drv. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/alphalph.dtx +% CTAN:macros/latex/contrib/oberdiek/alphalph.pdf +% +% Unpacking: +% (a) If alphalph.ins is present: +% tex alphalph.ins +% (b) Without alphalph.ins: +% tex alphalph.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{alphalph.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If alphalph.drv is present: +% latex alphalph.drv +% (b) Without alphalph.drv: +% latex alphalph.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 alphalph.dtx +% makeindex -s gind.ist alphalph.idx +% pdflatex alphalph.dtx +% makeindex -s gind.ist alphalph.idx +% pdflatex alphalph.dtx +% +% Installation: +% TDS:tex/generic/oberdiek/alphalph.sty +% TDS:doc/latex/oberdiek/alphalph.pdf +% TDS:source/latex/oberdiek/alphalph.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: alphalph 2006/05/30 v1.4 Converting numbers to letters (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 1999, 2006 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 alphalph.dtx +and the derived files + alphalph.sty, alphalph.pdf, alphalph.ins, alphalph.drv. + +\endpreamble + +\generate{% + \file{alphalph.ins}{\from{alphalph.dtx}{install}}% + \file{alphalph.drv}{\from{alphalph.dtx}{driver}}% + \usedir{tex/generic/oberdiek}% + \file{alphalph.sty}{\from{alphalph.dtx}{package}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* alphalph.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `alphalph.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> %<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{alphalph.drv}% + [2006/05/30 v1.4 Converting numbers to letters (HO)] \documentclass{ltxdoc} -\usepackage{holtxdoc,alphalph} +\usepackage{holtxdoc} +\usepackage{alphalph} \begin{document} - \DocInput{alphalph.dtx} + \DocInput{alphalph.dtx} \end{document} %</driver> % \fi % -% ^^A\DoNotIndex{\ifnum,\ifx,\ifcase} -% \DoNotIndex{\or,\else,\fi,\csname,\endcsname} -% \DoNotIndex{\def,\edef,\long,\begingroup,\endgroup} -% \DoNotIndex{\@,\\} -% \DoNotIndex{\the,\relax,\expandafter} -% -% \newenvironment{param}{^^A -% \newcommand{\entry}[1]{\meta{\###1}:&}^^A -% \begin{tabular}[t]{@{}l@{ }l@{}}^^A -% }{^^A -% \end{tabular}^^A -% } +% \CheckSum{393} +% +% \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{alphalph.drv} +% +% \title{The \xpackage{alphalph} package} +% \date{2006/05/30 v1.4} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} % -% \SetupTitle{number,count,alph,TeX} % \maketitle % % \begin{abstract} -% The package provides the new expandable commands \cmd{\alphalph} -% and \cmd{\AlphAlph}. -% They are like \cmd{\number}, but the expansion consists of -% lowercase and uppercase letters respectively. +% The package provides the new expandable commands \cs{alphalph} +% and \cs{AlphAlph}. They are like \cs{number}, but the expansion +% consists of lowercase and uppercase letters respectively. % \end{abstract} % % \tableofcontents % +% \newenvironment{param}{^^A +% \newcommand{\entry}[1]{\meta{\###1}:&}^^A +% \begin{tabular}[t]{@{}l@{ }l@{}}^^A +% }{^^A +% \end{tabular}^^A +% } +% % \section{Usage} -% The package \Package{alphalph} can used with both plain\TeX\ +% The package \Package{alphalph} can be used with both \plainTeX\ % and \LaTeX: % \begin{description} -% \item[plain\TeX:] |\input alphalph.sty| +% \item[\plainTeX:] |\input alphalph.sty| % \item[\LaTeXe:] |\usepackage{alphalph}|\\ % There aren't any options. % \end{description} @@ -141,27 +228,84 @@ % \end{tabular} % \end{center} % -% \section{Installation} -% \InstallPackage -% Or for use with TeX: -% \begin{quote} -% \Verb{texmf/tex/generic/misc/alphalph.sty} -% \end{quote} -% \newcommand*{\ExtraDocumentation}{% -% For generating the documentation the \eTeX-extension is recommended, -% because it works faster with \Package{alphalph}. +% \subsubsection{New commands like \cs{alphalph}} +% \begin{description} +% \item[\cmd{\newalphalph}:]\DescribeMacro{\newalphalph} +% This macro defines a new command that acts like \cs{alphalph}. +% The use of \eTeX is required. +% The macro has three arguments: +% \begin{itemize} +% \item[\texttt{\#1}:] The command to be defined. +% \item[\texttt{\#2}:] A macro that converts a positive number +% to a symbol. +% \item[\texttt{\#3}:] The number of available symbols. +% \end{itemize} +% \end{description} +% +% Example: +%\begin{quote} +%\begin{verbatim} +%\newcommand*{\myvocals}[1]{% +% \ifcase#1\or A\or E\or I\or O\or U\fi +%} +%\newalphalph{\vocalsvocals}{\myvocals}{5} +%\end{verbatim} +%\end{quote} +% +% \StopEventually{ % } -% \InstallDocumentation -% -% \StopEventually{} % % \section{Implementation} % \subsection{Begin\texorpdfstring{ of package}{}} % \begin{macrocode} %<*package> % \end{macrocode} -% The package identification is done at the top of the |.dtx| file -% in order to use only one identification string. +% Reload check, especially if the package is not used with \LaTeX. +% \begin{macrocode} +\begingroup + \expandafter\let\expandafter\x\csname ver@alphalph.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{alphalph}{The package is already loaded}% + \endgroup + \expandafter\endinput + \fi +\endgroup +% \end{macrocode} +% Package identification: +% \begin{macrocode} +\begingroup + \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@alphalph.sty\endcsname +\ProvidesPackage{alphalph}% + [2006/05/30 v1.4 Converting numbers to letters (HO)] +% \end{macrocode} % % For unique command names this package uses |aa@| as prefix % for internal command names. Because we need |@| as a letter @@ -248,7 +392,7 @@ % methods: a fast and simple one that uses the \eTeX\ extension % and a method that is restricted to the standard \TeX\ means. % -% Now we distinguish between \TeX\ and \eTeX by checking +% Now we distinguish between \TeX\ and \eTeX\ by checking % whether \cmd{\numexpr} is defined or isn't. % Because the \TeX\ primitive \cmd{\csname} defines an % undefined command to be \cmd{\relax}, \cmd{\csname} @@ -263,14 +407,14 @@ % \cmd{\aa@make} catches the cases, if the number is zero or negative. % Then it expands to nothing like \cmd{\romannumeral}. % \begin{macrocode} -\def\aa@make#1#2{% - \ifnum#1<1 - \else - \@ReturnAfterFi{% - \aa@process1;#1;1..#2% - }% - \fi -} + \def\aa@make#1#2{% + \ifnum#1<1 + \else + \@ReturnAfterFi{% + \aa@process1;#1;1..#2% + }% + \fi + } % \end{macrocode} % \end{macro} % @@ -312,15 +456,15 @@ % Now \cmd{\aa@alphinc} makes its job and returns with its % argument |;#2;|. At last the first character |;| finishes \cmd{\number}. % \begin{macrocode} -\def\aa@process#1;#2;{% - \ifnum#1=#2 - \expandafter\aa@getresult - \else - \@ReturnAfterFi{% - \expandafter\aa@process\number\aa@inc{#1}\aa@alphinc{;#2;}% - }% - \fi -} + \def\aa@process#1;#2;{% + \ifnum#1=#2 + \expandafter\aa@getresult + \else + \@ReturnAfterFi{% + \expandafter\aa@process\number\aa@inc{#1}\aa@alphinc{;#2;}% + }% + \fi + } % \end{macrocode} % \end{macro} % @@ -342,9 +486,9 @@ % command |#2|. Then it % calls \cmd{\aa@@getresult} with its arguments. % \begin{macrocode} -\def\aa@getresult#1..#2{% - \aa@@getresult!#2#1..% -} + \def\aa@getresult#1..#2{% + \aa@@getresult!#2#1..% + } % \end{macrocode} % \end{macro} % @@ -357,19 +501,19 @@ % If the digit |#3| is empty, the end of the digit form is reached % and the process stops and the ready letter number is output. % \begin{macrocode} -\def\aa@@getresult#1!#2#3.{% - \ifx\\#3\\% - \@ReturnAfterElseFi{#1}% ready - \else - \@ReturnAfterFi{% - \expandafter\expandafter\expandafter\expandafter - \expandafter\expandafter\expandafter - \aa@@getresult - \expandafter\expandafter\expandafter\expandafter - #2{#3}#1!#2% - }% - \fi -} + \def\aa@@getresult#1!#2#3.{% + \ifx\\#3\\% + \@ReturnAfterElseFi{#1}% ready + \else + \@ReturnAfterFi{% + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter + \aa@@getresult + \expandafter\expandafter\expandafter\expandafter + #2{#3}#1!#2% + }% + \fi + } % \end{macrocode} % \end{macro} % @@ -383,20 +527,20 @@ % after |9| is neccessary.) % \begin{macrocode} % \aa@inc adds one to its argument #1. -\def\aa@inc#1{% - \ifnum#1<9 - \aa@nextdigit{#1}% - \else - \aa@reverse#1!!% - \fi -} + \def\aa@inc#1{% + \ifnum#1<9 + \aa@nextdigit{#1}% + \else + \aa@reverse#1!!% + \fi + } % \end{macrocode} % \end{macro} % \begin{macro}{\aa@nextdigit} % \cmd{\aa@nextdigit} increments the digit |#1|. The result % is a digit again. \cmd{\aa@addone} works off the case ``9+1''. % \begin{macrocode} -\def\aa@nextdigit#1{\ifcase#1 1\or2\or3\or4\or5\or6\or7\or8\or9\fi} + \def\aa@nextdigit#1{\ifcase#1 1\or2\or3\or4\or5\or6\or7\or8\or9\fi} % \end{macrocode} % \end{macro} % \begin{macro}{\aa@reverse} @@ -406,15 +550,15 @@ % reverses the order of the digits and calls \cmd{\aa@addone}, % if it is ready. % \begin{macrocode} -\def\aa@reverse#1#2!#3!{% - \ifx\\#2\\% - \aa@addone#1#3!!% - \else - \@ReturnAfterFi{% - \aa@reverse#2!#1#3!% - }% - \fi -} + \def\aa@reverse#1#2!#3!{% + \ifx\\#2\\% + \aa@addone#1#3!!% + \else + \@ReturnAfterFi{% + \aa@reverse#2!#1#3!% + }% + \fi + } % \end{macrocode} % \end{macro} % \begin{macro}{\aa@addone} @@ -424,21 +568,21 @@ % Already incremented digits are stored in |#3| in reversed order % to take some work of \cmd{\aa@lastreverse}. % \begin{macrocode} -\def\aa@addone#1#2!#3!{% - \ifnum#1<9 - \expandafter\aa@lastreverse\number\aa@nextdigit#1 #2!#3!% - \else - \@ReturnAfterFi{% - \ifx\\#2\\% - 10#3% - \else - \@ReturnAfterFi{% - \aa@addone#2!0#3!% - }% - \fi - }% - \fi -} + \def\aa@addone#1#2!#3!{% + \ifnum#1<9 + \expandafter\aa@lastreverse\number\aa@nextdigit#1 #2!#3!% + \else + \@ReturnAfterFi{% + \ifx\\#2\\% + 10#3% + \else + \@ReturnAfterFi{% + \aa@addone#2!0#3!% + }% + \fi + }% + \fi + } % \end{macrocode} % \end{macro} % \begin{macro}{\aa@lastreverse} @@ -446,15 +590,15 @@ % perform the addition in \cmd{\aa@addone}. Now we have to return % to the original order that is done by \cmd{\aa@lastreverse}. % \begin{macrocode} -\def\aa@lastreverse#1#2!#3!{% - \ifx\\#2\\% - #1#3% - \else - \@ReturnAfterFi{% - \aa@lastreverse#2!#1#3!% - }% - \fi -} + \def\aa@lastreverse#1#2!#3!{% + \ifx\\#2\\% + #1#3% + \else + \@ReturnAfterFi{% + \aa@lastreverse#2!#1#3!% + }% + \fi + } % \end{macrocode} % \end{macro} % @@ -468,26 +612,26 @@ % |#2| contains the next digit in the range of 1 until 26. % An empty |#2| marks the end of the number. % \begin{macrocode} -\def\aa@alphinc#1#2.{% - \ifx\\#2\\% - \@ReturnAfterElseFi{% - #11..% ready - }% - \else - \@ReturnAfterFi{% - \ifnum#2<26 - \@ReturnAfterElseFi{% - \expandafter\aa@alphinclast\expandafter - {\number\aa@inc{#2}}{#1}% - }% - \else - \@ReturnAfterFi{% - \aa@alphinc{#11.}% - }% - \fi - }% - \fi -} + \def\aa@alphinc#1#2.{% + \ifx\\#2\\% + \@ReturnAfterElseFi{% + #11..% ready + }% + \else + \@ReturnAfterFi{% + \ifnum#2<26 + \@ReturnAfterElseFi{% + \expandafter\aa@alphinclast\expandafter + {\number\aa@inc{#2}}{#1}% + }% + \else + \@ReturnAfterFi{% + \aa@alphinc{#11.}% + }% + \fi + }% + \fi + } % \end{macrocode} % \end{macro} % \begin{macro}{\aa@alphinclast} @@ -495,7 +639,16 @@ % several tokens (e.g. |;100;|), we cannot jump over it via % \cmd{\expandafter} in \cmd{\aa@alphinc}. % \begin{macrocode} -\def\aa@alphinclast#1#2{#2#1.} + \def\aa@alphinclast#1#2{#2#1.} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newalphalph} +% \begin{macrocode} + \newcommand*{\newalphalph}[3]{% + \PackageError{alphalph}{% + \string\newalphalph\space requires e-TeX% + }\@ehc % \end{macrocode} % \end{macro} % @@ -509,14 +662,14 @@ % \cmd{\aa@make} catches the cases, if the number is zero or negative. % Then it expands to nothing like \cmd{\romannumeral}. % \begin{macrocode} -\def\aa@make#1#2{% - \ifnum#1<1 - \else - \@ReturnAfterFi{% - \aa@eprocess#1;#2% - }% - \fi -} + \def\aa@make#1#2{% + \ifnum#1<1 % + \else + \@ReturnAfterFi{% + \aa@eprocess#1;#2% + }% + \fi + }% % \end{macrocode} % \end{macro} % @@ -531,20 +684,92 @@ % The only feature of \eTeX\ we use the new primitive \cmd{\numexpr}. % It provides expandible mathematical calculations. % \begin{macrocode} -\def\aa@eprocess#1;#2{% - \ifnum#1<27 - \@ReturnAfterElseFi{% - #2{#1}% - }% - \else - \@ReturnAfterFi{% - \expandafter\aa@eprocess\number\numexpr(#1-14)/26% + \def\aa@eprocess#1;#2{% + \ifnum#1<27 + \@ReturnAfterElseFi{% + #2{#1}% + }% + \else + \@ReturnAfterFi{% + \expandafter\aa@eprocess\number\numexpr(#1-14)/26% + \expandafter\expandafter\expandafter;% + \expandafter\expandafter\expandafter#2% + #2{\numexpr#1-((#1-14)/26)*26}% + }% + \fi + }% +% \end{macrocode} +% \end{macro} +% +% \subsection{Generic version} +% +% \begin{macro}{\aa@gen@callmake} +% See macro \cs{aa@callmake}. Argument |#3| holds the +% number of available symbols. +% \begin{macrocode} + \def\aa@gen@callmake#1#2#3{% + \expandafter\aa@gen@make\expandafter{\number#3}#1{#2}% + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\aa@gen@make} +% See macro \cs{aa@make}. Argument |#3| holds the number of +% available symbols. +% \begin{macrocode} + \def\aa@gen@make#1#2#3{% + \ifnum#1<1 % + \else + \@ReturnAfterFi{% + \aa@gen@eprocess{#3}#1;#2% + }% + \fi + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\aa@gen@eprocess} +% See macro \cs{aa@eprocess}. Argument |#1| holds the number of +% available symbols. +% \begin{macrocode} + \def\aa@gen@eprocess#1#2;#3{% + \ifnum#2>#1 % + \@ReturnAfterElseFi{% + \expandafter\aa@gen@eprocess\expandafter{% + \number#1\expandafter + }% + \number\numexpr(#2-(\aa@half{#1}+1))/#1% \expandafter\expandafter\expandafter;% - \expandafter\expandafter\expandafter#2% - #2{\numexpr#1-((#1-14)/26)*26}% + \expandafter\expandafter\expandafter#3% + #3{\numexpr#2-((#2-(\aa@half{#1}+1))/#1)*#1\relax}% + }% + \else + \@ReturnAfterFi{% + #3{#2}% + }% + \fi + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\aa@half} +% Macro \cs{aa@half} implements integer division by two +% without rounding. +% \begin{macrocode} + \def\aa@half#1{% + \number\dimexpr.5\dimexpr #1sp\relax\relax + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\newalphalph} +% New macros are defined by \cs{newalphalph} that act like +% \cs{alphalph}. The macro to be defined is |#1|. Argument |#2| +% contains the macro that converts a number to a symbol and +% argument |#3| holds the number of available symbols. +% \begin{macrocode} + \newcommand*{\newalphalph}[3]{% + \newcommand*{#1}{}% + \edef#1{% + \noexpand\aa@gen@callmake\noexpand#2{\number\numexpr#3}% }% - \fi -} + }% % \end{macrocode} % \end{macro} % @@ -561,34 +786,146 @@ % \begin{macrocode} %</package> % \end{macrocode} +% \section{Installation} % -% \StartHistory -% \HistVersion{1999/03/19 v0.1} -% \begin{itemize} -% \item The first version was built as a response to a -% \URL{question}^^A -% {http://www.dejanews.com/[ST_rn=ps]/getdoc.xp?AN=455791936}^^A -% of \Email[Will Douglas]{william.douglas@wolfson.ox.ac.uk} -% and the -% \URL{request}^^A -% {http://www.dejanews.com/[ST_rn=ps]/getdoc.xp?AN=456358639}^^A -% of \Email[Donald Arsenau]{asnd@reg.triumf.ca}, -% published in the newsgroup -% \href{news:comp.text.tex}{comp.text.tex}: -% \URL{``Re: alph counters \textgreater\ 26''}^^A -% {http://www.dejanews.com/[ST_rn=ps]/getdoc.xp?AN=456485421} -% \item Copyright: LPPL (\CTAN{macros/latex/base/lppl.txt}) -% \end{itemize} -% \HistVersion{1999/04/12 v1.0} -% \begin{itemize} -% \item Documentation added in dtx format. -% \item \eTeX\ support added. -% \end{itemize} -% \HistVersion{1999/04/13 v1.1} -% \begin{itemize} -% \item Minor documentation change. -% \item First CTAN release. -% \end{itemize} +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/alphalph.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/alphalph.pdf}] Documentation. +% \end{description} +% +% \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 alphalph.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@{}} +% alphalph.sty & tex/generic/oberdiek/alphalph.sty\\ +% alphalph.pdf & doc/latex/oberdiek/alphalph.pdf\\ +% alphalph.dtx & source/latex/oberdiek/alphalph.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 alphalph.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{alphalph.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 alphalph.dtx +%makeindex -s gind.ist alphalph.idx +%pdflatex alphalph.dtx +%makeindex -s gind.ist alphalph.idx +%pdflatex alphalph.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{1999/03/19 v0.1} +% \item +% The first version was built as a response to a +% \URL{question}^^A +% {http://www.dejanews.com/[ST_rn=ps]/getdoc.xp?AN=455791936}^^A +% of \NameEmail{Will Douglas}{william.douglas@wolfson.ox.ac.uk} +% and the +% \URL{request}^^A +% {http://www.dejanews.com/[ST_rn=ps]/getdoc.xp?AN=456358639}^^A +% of \NameEmail{Donald Arsenau}{asnd@reg.triumf.ca}, +% published in the newsgroup +% \href{news:comp.text.tex}{comp.text.tex}: +% \URL{``Re: alph counters \textgreater\ 26''}^^A +% {http://www.dejanews.com/[ST_rn=ps]/getdoc.xp?AN=456485421} +% \item +% Copyright: LPPL (\CTAN{macros/latex/base/lppl.txt}) +% \end{Version} +% \begin{Version}{1999/04/12 v1.0} +% \item +% Documentation added in dtx format. +% \item +% \eTeX\ support added. +% \end{Version} +% \begin{Version}{1999/04/13 v1.1} +% \item +% Minor documentation change. +% \item +% First CTAN release. +% \end{Version} +% \begin{Version}{1999/06/26 v1.2} +% \item +% First generic code about \cmd{\ProvidesPackage} improved. +% \item +% Documentation: Installation part revised. +% \end{Version} +% \begin{Version}{2006/02/20 v1.3} +% \item +% Reload check (for \plainTeX) +% \item +% New DTX framework. +% \item +% LPPL 1.3 +% \end{Version} +% \begin{Version}{2006/05/30 v1.4} +% \item +% \cs{newalphalph} added. +% \end{Version} +% \end{History} % % \PrintIndex % diff --git a/Master/texmf-dist/source/latex/oberdiek/alphalph.ins b/Master/texmf-dist/source/latex/oberdiek/alphalph.ins deleted file mode 100644 index 33bd11f99f2..00000000000 --- a/Master/texmf-dist/source/latex/oberdiek/alphalph.ins +++ /dev/null @@ -1,72 +0,0 @@ -% alphalph.ins -% -% This file is part of the package `alphalph' for use with LaTeX2e. -% -% Function: Selecting shipout output pages. -% -% Copyright (C) 1999 Heiko Oberdiek. -% -% This program can be redistributed and/or modified -% under the terms of the LaTeX Project Public License -% distributed from CTAN archives in directory -% macros/latex/base/lppl.txt; either version 1 of -% the License, or (at your option) any later version. -% -% Please send error reports and suggestions for improvements to -% Heiko Oberdiek <oberdiek@ruf.uni-freiburg.de>. -% - -\def\batchfile{alphalph.ins} -\input docstrip.tex -{\ifx\generate\undefined -\Msg{**********************************************} -\Msg{*} -\Msg{* This installation requires docstrip} -\Msg{* version 2.3c or later.} -\Msg{*} -\Msg{* An older version of docstrip has been input} -\Msg{*} -\Msg{**********************************************} -\errhelp{Move or rename old `docstrip.tex'.} -\errmessage{Old docstrip in input path} -\batchmode -\csname @@end\endcsname -\fi} - -\keepsilent - -\preamble - -This file is part of the package `alphalph' for use with LaTeX2e. - -Function: Selecting shipout output pages. - -Copyright (C) 1999 Heiko Oberdiek. - -This program can be redistributed and/or modified -under the terms of the LaTeX Project Public License -distributed from CTAN archives in directory -macros/latex/base/lppl.txt; either version 1 of -the License, or (at your option) any later version. - -Please send error reports and suggestions for improvements to - Heiko Oberdiek <oberdiek@ruf.uni-freiburg.de>. - -\endpreamble - -\generateFile{alphalph.sty}{f}{\from{alphalph.dtx}{package}} -%\generateFile{alphalph.drv}{f}{\from{alphalph.dtx}{driver}} - -\Msg{***********************************************************} -\Msg{* To finish the installation you have to move the following} -\Msg{* file into a directory searched by TeX:} -\Msg{*} -\Msg{* \space\space alphalph.sty} -\Msg{*} -\Msg{* To produce the documentation run the file `alphalph.dtx'} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing} -\Msg{***********************************************************} - -\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/attachfile2.dtx b/Master/texmf-dist/source/latex/oberdiek/attachfile2.dtx new file mode 100644 index 00000000000..89ecfa1f99e --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/attachfile2.dtx @@ -0,0 +1,2108 @@ +% \iffalse meta-comment +% +% Copyright (C) 2005, 2006 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 attachfile2.dtx +% and the derived files +% attachfile2.sty, attachfile2.pdf, attachfile2.ins, attachfile2.drv, +% atfidvips.def, atfipdftex.def, pdfatfi.pl. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/attachfile2.dtx +% CTAN:macros/latex/contrib/oberdiek/attachfile2.pdf +% +% Unpacking: +% (a) If attachfile2.ins is present: +% tex attachfile2.ins +% (b) Without attachfile2.ins: +% tex attachfile2.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{attachfile2.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If attachfile2.drv is present: +% latex attachfile2.drv +% (b) Without attachfile2.drv: +% latex attachfile2.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 attachfile2.dtx +% makeindex -s gind.ist attachfile2.idx +% pdflatex attachfile2.dtx +% makeindex -s gind.ist attachfile2.idx +% pdflatex attachfile2.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/attachfile2.sty +% TDS:tex/latex/oberdiek/atfidvips.def +% TDS:tex/latex/oberdiek/atfipdftex.def +% TDS:doc/latex/oberdiek/attachfile2.pdf +% TDS:source/latex/oberdiek/attachfile2.dtx +% TDS:scripts/oberdiek/pdfatfi.pl +% +%<*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: attachfile2 2006/08/16 v2.2 attach files into PDF (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2005, 2006 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 attachfile2.dtx +and the derived files + attachfile2.sty, attachfile2.pdf, attachfile2.ins, attachfile2.drv, + atfidvips.def, atfipdftex.def, pdfatfi.pl. + +\endpreamble + +\generate{% + \file{attachfile2.ins}{\from{attachfile2.dtx}{install}}% + \file{attachfile2.drv}{\from{attachfile2.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{attachfile2.sty}{\from{attachfile2.dtx}{package}}% + \file{atfidvips.def}{\from{attachfile2.dtx}{dvips}}% + \file{atfipdftex.def}{\from{attachfile2.dtx}{pdftex}}% + \usedir{scripts/oberdiek}% + \nopreamble + \nopostamble + \csname execfiletrue\endcsname + \file{pdfatfi.pl}{\from{attachfile2.dtx}{pdfatfi}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* attachfile2.sty, atfidvips.def, atfipdftex.def} +\Msg{*} +\Msg{* To produce the documentation run the file `attachfile2.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{attachfile2.drv}% + [2006/08/16 v2.2 attach files into PDF (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\AtBeginDocument{% + \csname @ifpackageloaded\endcsname{dtx-attach}{% + \embedfile[ + stringmethod=escape, + mimetype=text/plain, + desc={Helper Perl script for package `attachfile2'} + ]{pdfatfi.pl}% + }{}% +} +\begin{document} + \DocInput{attachfile2.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{1382} +% +% \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{attachfile2.drv} +% +% \title{The \xpackage{attachfile2} package} +% \date{2006/08/16 v2.2} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% This package can be used to attach files to a PDF document. +% It is a further development of Scott Pakin's package +% \xpackage{attachfile} for \pdfTeX. Apart from bug fixes, +% package \xpackage{attachfile2} adds support for \xoption{dvips}, +% some new options, gets and writes meta information data about +% the attached files. +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% \subsection{Introduction} +% +% The PDF format (\cite{pdfspec}) allows the inclusion of files +% inside the PDF document. The included files can be bound to an +% annotation on a page. Or they can be recorded in a sorted +% list of embedded files. The packages \xpackage{attachfile} +% or \xpackage{attachfile2} follow the first approach, +% package \xpackage{embedfile} uses the latter method. +% +% \subsubsection{Future development} +% +% My dream is a large package that merges the features of +% all these packages meantioned before: +% \begin{itemize} +% \item Files can be attached to a page. +% \item Files can be attached to the document. +% \item An easy user interface for simple, common tasks and +% beginners. +% \item An interface for the advanced users that want to setup +% every detail. +% \item Support of many drivers (pdftex, dvips, dvipdfm, \dots). +% \item \dots +% \end{itemize} +% However, I have not managed to take the time for this project. +% Instead: +% \begin{itemize} +% \item First I experimented with package \xpackage{attachfile}, +% adding driver support, fixing bugs, \dots. The result is +% currently named as \xpackage{attachfile2}. It uses an external +% script to get file properties (size, date, checksum, \dots). +% \item In order to avoid an external program for getting basic +% file properties I provided a patch ``EscapeAndOther'' for +% pdfTeX that was accepted for version 1.30. +% \item Package \xpackage{embedfile} closes a gap left by the +% packages for attaching +% files and allows the embedding of files to the document. +% Also it makes use of the new primitives of \pdfTeX. +% \end{itemize} +% Until this future becomes true, I provide the intermediate +% step \xpackage{attachfile2} at its current state. +% There are many things to do: +% \begin{itemize} +% \item Documentation, documentation, \dots +% \item Improving portability of the Perl script \xfile{pdfatfi.pl} +% (Windows, non-GNU, \dots). +% \item Comfortable program for extracting embeddd files. +% \item Embedding files to the document, see package \xpackage{embedfile}. +% \item Additionally use featurs of \pdfTeX\ 1.30. With a recent +% \pdfTeX\ the Perl script step is then obsolete. +% \item GoToE links. +% \item Layout of PinPush, especially the tip does not scale well. +% \item Driver for \xoption{dvipsone}, similar to \xoption{dvips}, changes: +% \begin{itemize} +% \item coordinate transformation need to be fixed here, +% \xfile{hdvipson.def} contains: +% \begin{quote} +%\begin{verbatim} +%/DvipsToPDF { 65781 div } def +%/PDFToDvips { 65781 mul } def +%\end{verbatim} +% \end{quote} +% \item Syntax for \cs{special}: \xfile{hdvipson.def} contains +% both \verb|\special{! #1}| and +% \verb|\special{headertext= #1}|. Are bothe the same? +% \end{itemize} +% \item File name conversion, see PDF specification: +% \begin{quote} +% \verb|c:\somewhere\foobar.txt| $\rightarrow$ +% \verb|/c/somewhere/foobar.txt| +% \end{quote} +% \item Option \xoption{scale} for icons? +% \item Compatibility for \plainTeX. +% \item ToDos for \xfile{atfidvips.def}. +% \end{itemize} +% +% \subsection{User interface} +% +% Basically this package \xpackage{attachfile2} follows the +% user interface of package \xpackage{attachfile}, +% look into its documentation (\cite{attachfile}). +% +% \subsubsection{New options} +% \begin{itemize} +% \item Driver options \xoption{dvips} and \xoption{pdftex}. +% \item New options \xoption{final} and \xoption{draft}. +% \item New option \xoption{scale} for scaling the annotation rectangle. +% \item Options \xoption{file} and \xoption{nofile} for controlling +% the generation of the auxiliary file \xfile{.atfi}. +% \end{itemize} +% +% \subsubsection{Perl script \xfile{pdfatfi.pl}} +% +% This package also tries to get and add meta information data, +% such as file size, file date, checksum, \dots. +% As package \xpackage{embedfile} shows the new features +% of \pdfTeX\ 1.30 are very useful for getting this kind of +% data. However the main development preceded this \pdfTeX\ version. +% Thus the Perl script \xfile{pdfatfi.pl} is used to provide this data. +% The use of the Perl script is not mandatory. This data can be shown +% by PDF viewers, but they are not a requirement of the PDF specification. +% +% Package \xpackage{attachfile2} and the Perl script communicate +% via an auxiliary file with file extension \xfile{.atfi}. The script +% is used between two \LaTeX\ runs and updates the auxiliary file, +% example for \xoption{dvips}: +% \begin{quote} +%\begin{verbatim} +%latex test +%pdfatfi test +%latex test +%dvips test +%ps2pdf test.ps test.pdf +%\end{verbatim} +% \end{quote} +% +% \subsection{Changes to \xpackage{attachfile}} +% +% Some of the changes I can remember: +% \begin{itemize} +% \item Support for dvips. +% \item Setting and filling the /Param entry for files +% (file date, file size, \dots). +% \item Perl script \xfile{pdfatfi.pl}. +% \item New options. +% \item Bug fixes. +% \item \dots +% \end{itemize} +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \subsection{Package} +% +% \begin{macrocode} +%<*package> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{attachfile2}% + [2006/08/16 v2.2 attach files into PDF (HO)] +% \end{macrocode} +% \begin{macrocode} +\RequirePackage{ifpdf} +\RequirePackage{keyval} +\RequirePackage{color} +\RequirePackage{kvoptions}[2006/08/17] + +% --- hyperref --- + +\RequirePackage{hyperref} +% because of \pdfstringdef + +\def\atfi@pdfstringdef#1#2{% + \pdfstringdef\atfi@temp@string{#2}% + \edef#1{\atfi@temp@string}% +} + +% --- convert to hex --- + +\def\atfi@hexdigit#1{% + \ifcase#1% + 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or 8\or 9\or + a\or b\or c\or d\or e\or f% + \fi +} +% detour via \dimexpr to avoid eTeX's nasty expression rounding +\def\atfi@hexchar#1{% + \atfi@hexdigit{\numexpr\dimexpr.0625\dimexpr`#1sp\relax\relax\relax}% + \atfi@hexdigit{% + \numexpr`#1-16*\dimexpr.0625\dimexpr`#1sp\relax\relax\relax + }% +} +\def\atfi@tohex#1{% + \ifx\relax#1% + \else + \atfi@hexchar{#1}% + \expandafter\atfi@tohex + \fi +} + +% --- convert to name --- + +\def\atfi@converttoname#1#2{% + \edef#1{#2}% + \@onelevel@sanitize#1% + \edef#1{\expandafter\atfi@spacetoother#1 \relax}% + \edef#1{\expandafter\atfi@converttokens#1\relax}% +} + +\edef\atfi@hash{\string#}% +\catcode`\ =12\relax% +\def\atfi@space{ }% +\catcode`\ =10\relax% + +\def\atfi@spacetoother#1 #2\relax{% + #1% + \ifx\\#2\\% + \else + \atfi@space + \@ReturnAfterFi{% + \atfi@spacetoother #2\relax + }% + \fi +} +\long\def\@ReturnAfterFi#1\fi{\fi#1} + +\def\atfi@converttokens#1{% + \ifx\relax#1% + \else + \ifnum`#1<33 % + \ifcase`#1% + % drop illegal zero + \else + \atfi@hash\atfi@hexchar#1% + \fi + \else + \ifnum`#1>126 % + \atfi@hash\atfi@hexchar#1% + \else + \ifnum`#1=40 % ( + \atfi@hash 28% + \else\ifnum`#1=41 % ) + \atfi@hash 29% + \else\ifnum`#1=60 % < + \atfi@hash 3c% + \else\ifnum`#1=62 % > + \atfi@hash 3e% + \else\ifnum`#1=91 % [ + \atfi@hash 5b% + \else\ifnum`#1=93 % ] + \atfi@hash 5d% + \else\ifnum`#1=123 % { + \atfi@hash 7b% + \else\ifnum`#1=125 % } + \atfi@hash 7d% + \else\ifnum`#1=47 % / + \atfi@hash 2f% + \else\ifnum`#1=37 % % + \atfi@hash 25% + \else + #1% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \fi + \fi + \expandafter\atfi@converttokens + \fi +} + + +% --- options --- + +% options "draft" and "final" +\newif\ifatfi@draft +\let\atfi@finaltrue\atfi@draftfalse +\let\atfi@finalfalse\atfi@drafttrue +\define@key{AtFi}{final}[true]{% + \csname atfi@final#1\endcsname +} +\define@key{AtFi}{draft}[true]{% + \csname atfi@draft#1\endcsname +} + +% option mimetype +\def\atfi@mimetype{} +\define@key{AtFi}{mimetype}{% + \atfi@converttoname\atfi@mimetype{#1}% + \edef\atfi@mimetype{/Subtype/\atfi@mimetype}% +} + +% option icon +\define@key{AtFi}{icon}{% + \def\atfi@icon{/Name/#1}% + \def\atfi@icon@icon{#1}% +} +\setkeys{AtFi}{icon=PushPin} + +% option color +\define@key{AtFi}{color}{% + \def\atfi@color{/C[#1]}% + \def\atfi@color@rgb{#1}% +} +\setkeys{AtFi}{color=1 0.9255 0.7765} + +% time options timezone and date +\def\atfi@pad@ii#1{% + \ifnum#1>9 + \number#1% + \else + 0\number#1% + \fi% +} +\let\atfi@timezone\@empty +\define@key{AtFi}{timezone}{\def\atfi@timezone{#1}} +\edef\atfi@time{\the\time} +\def\atfi@hours{% + \numexpr\dimexpr0.01667\dimexpr\atfi@time sp\relax\relax\relax +} +\def\atfi@minutes{% + \numexpr\atfi@time-60*\atfi@hours\relax +} +\def\atfi@seconds{0} +\def\atfi@date{% + /M(D:\the\year + \atfi@pad@ii\month + \atfi@pad@ii\day + \atfi@pad@ii\atfi@hours + \atfi@pad@ii\atfi@minutes + \atfi@pad@ii\atfi@seconds + \atfi@timezone)% +} +\define@key{AtFi}{date}{% + \atfi@pdfstringdef\atfi@date{#1}% + \edef\atfi@date{/M(\atfi@date)}% +} + +% name for annotation to be used in GoToE actions +\let\atfi@annotname\@empty +\define@key{AtFi}{annotname}{% + \atfi@pdfstringdef\atfi@annotname{#1}% + \edef\atfi@annotname{/NM(\atfi@annotname)}% +} + +% text options author, description, and subject +\DeclareRobustCommand{\atfi@pdfstringdef}[2]{% + \pdfstringdef\atfi@temp@string{#2}% + \edef#1{\atfi@temp@string}% +} + +% option author +\def\atfi@author{} +\define@key{AtFi}{author}{% + \atfi@pdfstringdef\atfi@author{#1}% + \edef\atfi@author{/T(\atfi@author)}% +} + +% option description +\def\atfi@description{} +\define@key{AtFi}{description}{% + \atfi@pdfstringdef\atfi@description{#1}% + \edef\atfi@description{/Contents(\atfi@description)}% +} + +% option subject +\def\atfi@subject{} +\define@key{AtFi}{subject}{% + \atfi@pdfstringdef\atfi@subject{#1}% + \edef\atfi@subject{/Subj(\atfi@subject)}% +} + +% option print +\newif\ifatfi@print +\atfi@printtrue +\define@key{AtFi}{print}[true]{\csname atfi@print#1\endcsname} + +% option zoom +\newif\ifatfi@zoom +\atfi@zoomtrue +\define@key{AtFi}{zoom}[true]{\csname atfi@zoom#1\endcsname} + +% option appearance +\newif\ifatfi@appearance +\atfi@appearancetrue +\define@key{AtFi}{appearance}[true]{% + \csname atfi@appearance#1\endcsname +} + +% option scale +\def\atfi@scale{1} +\define@key{AtFi}{scale}[1]{% + \def\atfi@scale{#1}% +} + +% option nofiles +\newif\ifatfi@nofiles +\atfi@nofilesfalse +\define@key{AtFi}{nofiles}[true]{% + \csname atfi@nofiles#1\endcsname +} + +% driver options +\let\atfi@driver\@empty +\def\atfi@driver@pdftex{pdftex} +\def\atfi@driver@dvips{dvips} + +\define@key{AtFi}{pdftex}[true]{% + \let\atfi@driver\atfi@driver@pdftex +} +\define@key{AtFi}{dvips}[true]{% + \let\atfi@driver\atfi@driver@dvips +} + +\DeclareRobustCommand{\attachfilesetup}[1]{\setkeys{AtFi}{#1}} + +% timezone setting, ... +\InputIfFileExists{attachfile.cfg}{}{} + +\ProcessKeyvalOptions{AtFi} + +% --- evaluate driver options --- + +\ifpdf + % ignoring other driver options + \let\atfi@driver\atfi@driver@pdftex +\else + \ifx\atfi@driver\@empty + \PackageWarningNoLine{attachfile2}{% + Driver is not specified,\MessageBreak + enforce draft settings% + }% + \atfi@drafttrue + \fi +\fi + +% --- evaluate draft/final options --- + +\DeclareRobustCommand{\notextattachfile}[2][]{% + \begingroup + \setkeys{AtFi}{#1}% + \ifatfi@print + \def\atfi@textcolor(##1 ##2 ##3)##4{% + \textcolor[rgb]{##1,##2,##3}{##4}}% + \expandafter\atfi@textcolor\expandafter + (\atfi@color@rgb){#2\strut}% + \else + \setbox0=\hbox{#2\strut}% + \makebox[\wd0]{}% + \fi + \endgroup +} + +\ifatfi@draft + \def\atfi@dummy@pushpin{% + \raisebox{-1.25bp}{\parbox[b][14bp]{24bp}{}}% + } + \DeclareRobustCommand{\textattachfile}[3][]{% + \notextattachfile[#1]{#3}% + } + \DeclareRobustCommand{\noattachfile}[1][]{% + \notextattachfile[#1]{\atfi@dummy@pushpin}% + } + \DeclareRobustCommand{\attachfile}[2][]{% + \noattachfile[#1]% + } + \expandafter\endinput +\fi + +% --- load driver file --- + +\input{atfi\atfi@driver.def} + +% --- graphics --- + +\def\atfi@acroGraph@data{% + \atfi@GSAVE + 0.5 \atfi@SETGRAYFILL + 1.1133 0 20.7202 18.2754 \atfi@RECTFILL + 0 \atfi@SETFLAT + 0.5 \atfi@SETLINEWIDTH + 4 \atfi@SETMITERLIMIT + \atfi@RECTSTROKEFILL{% + 1 \atfi@SETGRAYFILL + }{% + 0 \atfi@SETGRAYSTROKE + }{% + 0.25 1.6453 20.145 17.7715 % + }% + 0 \atfi@SETGRAYFILL + 2.7319 4.1367 3.9571 13.8867 \atfi@RECTFILL + 8.7031 4.1367 3.9571 9.8867 \atfi@RECTFILL + 14.7471 4.1367 3.9571 11.8867 \atfi@RECTFILL + \atfi@color@rgb\space \atfi@SETRGBCOLORFILL + 1.689 3.0938 3.9571 13.8867 \atfi@RECTFILL + 7.6602 3.0938 3.9571 9.8867 \atfi@RECTFILL + 13.7041 3.0938 3.9571 11.8867 \atfi@RECTFILL + \atfi@GRESTORE +} +\def\atfi@acroGraph{% + \raisebox{-1.5bp}{\parbox[b][20bp]{22bp}{% + \rule{0pt}{0pt}\atfi@literal{\atfi@acroGraph@data}}% + }% +} +\newcommand{\atfi@acroPaperclip@data}{% + \atfi@GSAVE + 0.75 \atfi@SETGRAYSTROKE + 0 \atfi@SETFLAT + 2.5 \atfi@SETLINEWIDTH + 1 \atfi@SETLINECAP + 4 \atfi@SETMITERLIMIT + 1.9619 11.7559 \atfi@MOVETO + 1.9619 3.3037 1.9619 2.5059 \atfi@CURVETOV + 1.9619 1.707 4.0947 1.25 \atfi@CURVETOY + 7.4141 1.25 \atfi@LINETO + 9.4292 1.8223 9.4292 3.3066 \atfi@CURVETOV + 9.4292 4.79 9.4292 16.8945 \atfi@CURVETOY + 9.7852 18.1514 8.481 18.1514 \atfi@CURVETOV + 7.1768 18.1514 5.1616 18.1514 \atfi@CURVETOY + 3.8574 17.9209 3.8574 16.8945 \atfi@CURVETOV + 3.8574 15.8652 3.8574 6.6172 \atfi@CURVETOY + 4.3325 5.418 5.1025 5.418 \atfi@CURVETOV + 5.8726 5.418 6.5845 5.418 \atfi@CURVETOY + 7.6812 5.6455 7.6812 6.4736 \atfi@CURVETOV + 7.6812 7.3027 7.6812 11.5264 \atfi@CURVETOY + \atfi@STROKE + 0 \atfi@SETGRAYSTROKE + 1.2495 12.4404 \atfi@MOVETO + 1.2495 3.9883 1.2495 3.1895 \atfi@CURVETOV + 1.2495 2.3906 3.3833 1.9326 \atfi@CURVETOY + 6.7026 1.9326 \atfi@LINETO + 8.7178 2.5068 8.7178 3.9902 \atfi@CURVETOV + 8.7178 5.4736 8.7178 17.5781 \atfi@CURVETOY + 9.0732 18.834 7.769 18.834 \atfi@CURVETOV + 6.4653 18.834 4.4497 18.834 \atfi@CURVETOY + 3.146 18.6055 3.146 17.5781 \atfi@CURVETOV + 3.146 16.5498 3.146 7.3018 \atfi@CURVETOY + 3.6201 6.1016 4.3911 6.1016 \atfi@CURVETOV + 5.1611 6.1016 5.873 6.1016 \atfi@CURVETOY + 6.9692 6.3301 6.9692 7.1572 \atfi@CURVETOV + 6.9692 7.9863 6.9692 12.21 \atfi@CURVETOY + \atfi@STROKE + \atfi@color@rgb\space \atfi@SETRGBCOLORSTROKE + 1 \atfi@SETLINEWIDTH + 1.2495 12.4404 \atfi@MOVETO + 1.2495 3.9883 1.2495 3.1895 \atfi@CURVETOV + 1.2495 2.3906 3.3833 1.9326 \atfi@CURVETOY + 6.7026 1.9326 \atfi@LINETO + 8.7178 2.5068 8.7178 3.9902 \atfi@CURVETOV + 8.7178 5.4736 8.7178 17.5781 \atfi@CURVETOY + 9.0732 18.834 7.769 18.834 \atfi@CURVETOV + 6.4653 18.834 4.4497 18.834 \atfi@CURVETOY + 3.146 18.6055 3.146 17.5781 \atfi@CURVETOV + 3.146 16.5498 3.146 7.3018 \atfi@CURVETOY + 3.6201 6.1016 4.3911 6.1016 \atfi@CURVETOV + 5.1611 6.1016 5.873 6.1016 \atfi@CURVETOY + 6.9692 6.3301 6.9692 7.1572 \atfi@CURVETOV + 6.9692 7.9863 6.9692 12.21 \atfi@CURVETOY + \atfi@STROKE + \atfi@GRESTORE +} +\def\atfi@acroPaperclip{% + \raisebox{-1.25bp}{\parbox[b][21bp]{12bp}{% + \rule{0pt}{0pt}\atfi@literal{\atfi@acroPaperclip@data}}% + }% +} +\def\atfi@acroPushPin@data{% + \atfi@GSAVE + 1 \atfi@SETLINEWIDTH + 1 6 \atfi@MOVETO + 11 6 \atfi@LINETO + 11 13 \atfi@LINETO + 12 13 \atfi@LINETO + 14 11 \atfi@LINETO + 21 11 \atfi@LINETO + 22 12 \atfi@LINETO + 23 12 \atfi@LINETO + 23 2 \atfi@LINETO + 22 2 \atfi@LINETO + 21 3 \atfi@LINETO + 14 3 \atfi@LINETO + 12 1 \atfi@LINETO + 11 1 \atfi@LINETO + 11 6 \atfi@LINETO + \atfi@FILLSTROKE{% + \atfi@color@rgb\space\atfi@SETRGBCOLORFILL + }{% + 0 \atfi@SETGRAYSTROKE + }% + 0.5 \atfi@SETGRAYSTROKE + 0 7 \atfi@MOVETO + 10 7 \atfi@LINETO + 10 8 \atfi@LINETO + 1 8 \atfi@LINETO + \atfi@STROKE + 1 \atfi@SETGRAYSTROKE + 12 12 \atfi@MOVETO + 14 10 \atfi@LINETO + 22 10 \atfi@LINETO + 22 11 \atfi@LINETO + \atfi@STROKE + \atfi@GRESTORE +} +\def\atfi@acroPushPin{% + \raisebox{-1.25bp}{\parbox[b][14bp]{24bp}{% + \rule{0pt}{0pt}\atfi@literal{\atfi@acroPushPin@data}}% + }% +} +\def\atfi@acroTag@data{% + \atfi@GSAVE + 0.5 \atfi@SETGRAYFILL + 10.0542 14.9873 \atfi@MOVETO + 24.27 14.9873 \atfi@LINETO + 25.252 14.0059 \atfi@LINETO + 25.252 1.1455 \atfi@LINETO + 24.1064 0 \atfi@LINETO + 9.9609 0 \atfi@LINETO + 6.0327 6.0088 \atfi@LINETO + 6.0327 9.002 \atfi@LINETO + 10.0542 14.9873 \atfi@LINETO + 9.3994 9.376 \atfi@MOVETO + 8.5215 9.376 7.8096 8.5596 7.8096 7.5527 \atfi@CURVETO + 7.8096 6.5449 8.5215 5.7285 9.3994 5.7285 \atfi@CURVETO + 10.2778 5.7285 10.9897 6.5449 10.9897 7.5527 \atfi@CURVETO + 10.9897 8.5596 10.2778 9.376 9.3994 9.376 \atfi@CURVETO + \atfi@CLOSEPATH + \atfi@FILL + 0 \atfi@SETFLAT + 0.5 \atfi@SETLINEWIDTH + 4 \atfi@SETMITERLIMIT + 1 \atfi@SETLINEJOIN + 8.5107 16.5313 \atfi@MOVETO + 22.7266 16.5313 \atfi@LINETO + 23.7085 15.5488 \atfi@LINETO + 23.7085 2.6895 \atfi@LINETO + 22.563 1.543 \atfi@LINETO + 8.4175 1.543 \atfi@LINETO + 4.4893 7.5527 \atfi@LINETO + 4.4893 10.5449 \atfi@LINETO + 8.5107 16.5313 \atfi@LINETO + 7.856 10.9199 \atfi@MOVETO + 6.978 10.9199 6.2661 10.1035 6.2661 9.0957 \atfi@CURVETO + 6.2661 8.0879 6.978 7.2715 7.856 7.2715 \atfi@CURVETO + 8.7344 7.2715 9.4463 8.0879 9.4463 9.0957 \atfi@CURVETO + 9.4463 10.1035 8.7344 10.9199 7.856 10.9199 \atfi@CURVETO + \atfi@CLOSEPATH + \atfi@FILLSTROKE{% + \atfi@color@rgb\space\atfi@SETRGBCOLORFILL + }{% + 0 \atfi@SETGRAYSTROKE + }% + 1 \atfi@SETLINEWIDTH + 12.3291 12.2656 \atfi@MOVETO + 21.1206 12.2656 \atfi@LINETO + \atfi@STROKE + 12.3291 9.1797 \atfi@MOVETO + 21.1206 9.1797 \atfi@LINETO + \atfi@STROKE + 12.3291 6.1875 \atfi@MOVETO + 21.1206 6.1875 \atfi@LINETO + \atfi@STROKE + % 0 \atfi@SETGRAYSTROKE % redundant? + 0.5 \atfi@SETLINEWIDTH + 0 9.0488 \atfi@MOVETO + 6.2661 9.0957 \atfi@LINETO + \atfi@STROKE + 1.4028 5.2148 \atfi@MOVETO + 1.4028 9.6094 \atfi@LINETO + 1.6831 10.6387 2.4316 10.6387 \atfi@CURVETOV + 3.6475 10.6387 3.5542 9.0488 \atfi@CURVETOY + \atfi@STROKE + \atfi@GRESTORE +} +\DeclareRobustCommand{\atfi@acroTag}{% + \raisebox{-1.6bp}{\parbox[b][17bp]{25bp}{% + \rule{0pt}{0pt}\atfi@literal{\atfi@acroTag@data}}% + }% +} + +% --- .atfi file reading support --- + +% commands used in \jobname.atfi: +% * \attachfile@timezone{<timezone in PDF format>} +% * \attachfile@file[ +% Size=<size>, +% CreationDate=<date>, % <date> local time without "D:" and timezone +% ModDate=<date>, +% CheckSum=<checksum> +% ]{<filename as hex string>} +% +\def\attachfile@timezone#1{% + \ifx\\#1\\% + % no timezone information given + \else + \def\atfi@timezone{#1}% + \fi +} +\newcommand*{\attachfile@file}[2][]{% + \ifx\\#2\\% + \PackageError{attachfile2}{Empty file name}\@ehc + \else + \edef\atfi@restore{\uccode0=\the\uccode0 \relax}% + \let\atfi@filename\@empty + \atfi@getfilename#2\relax\relax + \atfi@restore + \@namedef{atfi@file@\atfi@filename}{#1}% + \fi +} +% convert file name from hex string +\begingroup + \catcode0=12 % + \gdef\atfi@getfilename#1#2{% + \ifx\relax#1% + \else + \uccode0=\numexpr 16*\atfi@hexnum{#1} + \atfi@hexnum{#2}\relax + \uppercase{% + \edef\atfi@filename{% + \atfi@filename^^@% + }% + }% + \expandafter\atfi@getfilename + \fi + }% +\endgroup +\def\atfi@hexnum#1{% + \ifnum`#1<58 % + \numexpr `#1-48\relax + \else + \numexpr `#1-87\relax + \fi +} + +\InputIfFileExists{\jobname.atfi}{}{}% + +\newif\ifatfi@checksum +\define@key{AtFi@file}{CheckSum}{% + \atfi@checksumtrue + \edef\atfi@params{\atfi@params/CheckSum<#1>}% +} +\newif\ifatfi@creationdate +\define@key{AtFi@file}{CreationDate}{% + \atfi@creationdatetrue + \edef\atfi@params{\atfi@params/CreationDate(D:#1\atfi@timezone)}% +} +\newif\ifatfi@moddate +\define@key{AtFi@file}{ModDate}{% + \atfi@moddatetrue + \edef\atfi@params{\atfi@params/ModDate(D:#1\atfi@timezone)}% +} + +% --- .atfi file writing support --- + +% respect \nofiles and option nofiles +% \nofiles has more weight than option nofiles +\if@filesw +\else + \atfi@nofilestrue +\fi +\ifatfi@nofiles + \PackageInfo{attachfile2}{% + File `\jobname.atfi' will not be written because of\MessageBreak + \string\nofiles\space or option `nofiles'% + }% + \let\atfi@writefile\@gobble +\else + \newwrite\atfi@stream + \immediate\openout\atfi@stream=\jobname.atfi + \immediate\write\atfi@stream{% + \string\attachfile@timezone{\atfi@timezone}% + }% + \def\atfi@writefile#1{% + \begingroup + \def\file{#1}% + \@onelevel@sanitize\file + \edef\file{\@firstofone{\expandafter\atfi@replace\file} \@nil}% + \edef\file{\expandafter\atfi@tohex\file\relax}% + \immediate\write\atfi@stream{% + \string\attachfile@file[% + \@ifundefined{atfi@file@#1}{}{\@nameuse{atfi@file@#1}}% + ]{\file}% + }% + \endgroup + }% +\fi + +\def\atfi@attachfile#1#2{% + \@ifundefined{atfi@fileobj@#2}{% + \atfi@writefile{#2}% + }{% + % don't need duplicates + }% + \setkeys{AtFi}{#1}% + \atfi@embedfile{#2}% + \atfi@set@appearance@icon + \atfi@flags@to@int + \atfi@insert@file@annot{#2}% + \endgroup +} + +% convert to hex string + +\def\atfi@replace#1 #2\@nil{% + #1% + \ifx\\#2\\% + \else + \atfi@space + \@ReturnAfterFi{% + \atfi@replace#2\@nil + }% + \fi +}% + +\long\def\@ReturnAfterFi#1\fi{\fi#1} + +% --- + +\newlength{\atfi@appearancewidth} +\newlength{\atfi@appearanceheight} +\newlength{\atfi@appearancedepth} +\newsavebox{\atfi@appearancebox} + +\def\atfi@set@appearance@icon{% + \@ifundefined{atfi@appobj@\atfi@icon@icon}{% + \savebox{\atfi@appearancebox}{\@nameuse{atfi@acro\atfi@icon@icon}}% + \expandafter\xdef\csname atfi@appwidth@\atfi@icon@icon\endcsname{% + \the\wd\atfi@appearancebox + }% + \expandafter\xdef\csname atfi@appheight@\atfi@icon@icon\endcsname{% + \the\ht\atfi@appearancebox + }% + \expandafter\xdef\csname atfi@appdepth@\atfi@icon@icon\endcsname{% + \the\dp\atfi@appearancebox + }% + \atfi@xform@icon + \global\expandafter\let\csname atfi@appobj@\atfi@icon@icon\endcsname + \atfi@appearanceobj + }{% + }% + % optimization: \setlength dropped + \atfi@appearancewidth=\@nameuse{atfi@appwidth@\atfi@icon@icon}\relax + \atfi@appearanceheight=\@nameuse{atfi@appheight@\atfi@icon@icon}\relax + \atfi@appearancedepth=\@nameuse{atfi@appdepth@\atfi@icon@icon}\relax + \expandafter\let\expandafter\atfi@appearanceobj + \csname atfi@appobj@\atfi@icon@icon\endcsname +} + +\def\atfi@set@appearance#1{% + \savebox{\atfi@appearancebox}{#1}% + \atfi@appearancewidth=\wd\atfi@appearancebox + \atfi@appearanceheight=\ht\atfi@appearancebox + \atfi@appearancedepth=\dp\atfi@appearancebox + \atfi@xform +} + +\newcounter{atfi@flags} +\DeclareRobustCommand{\atfi@flags@to@int}{% + \setcounter{atfi@flags}{0}% + \ifatfi@print + \addtocounter{atfi@flags}{4}% + \fi% + \ifatfi@zoom + \else + \addtocounter{atfi@flags}{8}% + \fi% +} + +\def\atfi@textattachfile#1#2{% + \endgroup + \atfi@textattachfile@i{#1}{#2}% +} +\def\atfi@textattachfile@i#1#2#3{% + \setkeys{AtFi}{#1}% + \atfi@embedfile{#2}% + \def\atfi@textcolor(##1 ##2 ##3)##4{% + \textcolor[rgb]{##1,##2,##3}{##4}}% + \atfi@set@appearance{% + \expandafter\atfi@textcolor\expandafter + (\atfi@color@rgb){#3\strut}}% + \atfi@flags@to@int + \atfi@insert@file@annot{#2}% + \endgroup +} + +\DeclareRobustCommand{\attachfile}[1][]{% + \begingroup + \let\do\@makeother + \dospecials + \catcode`\{=1\relax + \catcode`\}=2\relax + \atfi@attachfile{#1}% +} +\DeclareRobustCommand{\textattachfile}[1][]{% + \begingroup + \begingroup + \let\do\@makeother + \dospecials + \catcode`\{=1\relax + \catcode`\}=2\relax + \atfi@textattachfile{#1}% +} +\DeclareRobustCommand{\noattachfile}[1][]{% + \begingroup + \setkeys{AtFi}{#1}% + \atfi@set@appearance@icon + \ifatfi@print + \expandafter\atfi@refxform\csname atfi@appobj@\atfi@icon@icon\endcsname + \else + \makebox[\atfi@appearancewidth]{}% + \fi + \endgroup +} +% \end{macrocode} +% \begin{macrocode} +%</package> +% \end{macrocode} +% +% \subsection{Drivers} +% +% \subsubsection{\pdfTeX} +% +% \begin{macrocode} +%<*pdftex> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{atfipdftex.def}% + [2006/08/16 v2.2 attachfile2 driver for pdfTeX (HO)] +% \end{macrocode} +% \begin{macrocode} +\let\atfi@literal\pdfliteral + +% --- macros for graphics data --- + +\def\atfi@GSAVE{q } +\def\atfi@GRESTORE{Q } +\def\atfi@SETLINEWIDTH{w } +\def\atfi@LINETO{l } +\def\atfi@MOVETO{m } +\def\atfi@STROKE{S } +\def\atfi@FILL{f } +% \atfi@FILLSTROKE{<fill color>}{<stroke color>} +\def\atfi@FILLSTROKE#1#2{#1#2B } +% color: uppercase are stroke colors, lowercase non-stroke (fill) colors +% PS, however, does not different between stroke and not-stroke colors +\def\atfi@SETRGBCOLORSTROKE{RG } +\def\atfi@SETRGBCOLORFILL{rg } +\def\atfi@SETGRAYSTROKE{G } +\def\atfi@SETGRAYFILL{g } +\def\atfi@RECTFILL{re f } +\def\atfi@RECTSTROKEFILL#1#2#3{#1#2#3re B } +\def\atfi@SETMITERLIMIT{M } +\def\atfi@SETFLAT{i } +\def\atfi@SETLINECAP{J } +\def\atfi@CURVETO{c } +\def\atfi@CURVETOV{v } +\def\atfi@CURVETOY{y } +\def\atfi@CLOSEPATH{h } +\def\atfi@SETLINEJOIN{j } + +% --- + +\define@key{AtFi@file}{Size}{% + \edef\atfi@params{\atfi@params/Size #1}% +} + +\def\atfi@embedfile#1{% + \@ifundefined{atfi@fileobj@#1}{% + \begingroup + \let\atfi@params\@empty + \@ifundefined{atfi@file@#1}{}{% + \edef\x{\noexpand\setkeys{AtFi@file}{\@nameuse{atfi@file@#1}}}% + \x + }% + \ifx\atfi@params\@empty + \else + \edef\atfi@params{/Params<<\atfi@params>>}% + \fi + \immediate\pdfobj stream attr {% + /Type/EmbeddedFile% + \atfi@mimetype + \atfi@params + } file {#1}% + \expandafter\xdef\csname atfi@fileobj@#1\endcsname{\the\pdflastobj}% + \endgroup + }{% + % file already embedded + }% +} + +% --- + +% input: \atfi@appearancebox, output: \atfi@appearanceobj +\def\atfi@xform{% + \immediate\pdfxform\atfi@appearancebox + \edef\atfi@appearanceobj{\the\pdflastxform}% +} +\let\atfi@xform@icon\atfi@xform + +\def\atfi@refxform#1{% + \pdfrefxform#1\relax +} + +% --- + +\def\atfi@insert@file@annot#1{% + \rule{0pt}{0pt}% + \ifatfi@appearance + \def\atfi@appearance@dict{% + /AP<<% + /N \atfi@appearanceobj\space 0 R% + /R \atfi@appearanceobj\space 0 R% + /D \atfi@appearanceobj\space 0 R% + >>% + }% + \else + \let\atfi@appearance@dict\@empty + \fi + \@ifundefined{atfi@fsobj@#1}{% + \atfi@pdfstringdef\atfi@file{#1}% + \immediate\pdfobj{% + <<% + /Type/Filespec% + /F(\atfi@file)% + /EF<<% + /F \@nameuse{atfi@fileobj@#1} 0 R% + >>% + >>% + }% + \expandafter\xdef\csname atfi@fsobj@#1\endcsname{% + \the\pdflastobj + }% + }{% + }% + \pdfannot width \atfi@scale\atfi@appearancewidth + height \atfi@scale\atfi@appearanceheight + depth \atfi@scale\atfi@appearancedepth {% + /Subtype/FileAttachment% + \atfi@icon + \atfi@color + \atfi@author + \atfi@date + \atfi@annotname + \atfi@description + \atfi@subject + \atfi@appearance@dict + /F \theatfi@flags + /FS \@nameuse{atfi@fsobj@#1} 0 R% + }% + \rule{0pt}{\atfi@appearanceheight}% + \rule[-\atfi@appearancedepth]{0pt}{\atfi@appearancedepth}% + \rule{\atfi@appearancewidth}{0pt}% +} +% \end{macrocode} +% \begin{macrocode} +%</pdftex> +% \end{macrocode} +% +% \subsubsection{dvips} +% +% \begin{macrocode} +%<*dvips> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{atfipdftex.def}% + [2006/08/16 v2.2 attachfile2 driver for dvips (HO)] +% \end{macrocode} +% \begin{macrocode} +\def\atfi@literal#1{% + \special{ps:atfi_dict begin{#1}atfi_?pdfmark end}% +} + +\def\atfi@header#1{% + \special{! #1}% +} + +% --- macros for graphics data --- + +\atfi@header{% + userdict begin 20 dict dup /atfi_dict exch def end begin + /atfi_?pdfmark systemdict + dup /pdfmark known + { + /exec get def + }{ + /pop get def + } ifelse + { + % + % x y width height atfi_re -> + languagelevel 2 ge { + /atfi_rectfill { rectfill } bind def + /atfi_rectstroke { rectstroke } bind def + }{% + /atfi_rect { + /atfi_height exch def + /atfi_width exch def + /atfi_x exch def + /atfi_y exch def + newpath + atfi_x atfi_y moveto + atfi_x atfi_width add atfi_y lineto + atfi_x atfi_width add atfi_y atfi_height add lineto + atfi_x atfi_y atfi_height add lineto + closepath + } bind def + /atfi_rectfill { + atfi_rect fill + } bind def + /atfi_rectstroke { + atfi_rect stroke + } bind def + } ifelse + /atfi_curveto_v { + currentpoint 6 2 roll curveto + } bind def + /atfi_curveto_y { + 2 copy curveto + } bind def + % + % help macro for atfi_convert_date + /atfi_two { + dup 10 lt + { + 1 string cvs + exch 1 add exch + }{ + 2 string cvs + } ifelse + putinterval + } bind def + % + % <seconds since 1970-01-01> atfi_convert_date -> (D:...Z) + /atfi_convert_date { + dup + /atfi_days exch 3600 idiv 24 idiv def + % calc date part + /atfi_year 1970 def + { + atfi_year 400 mod 0 eq + atfi_year 100 mod 0 ne + atfi_year 4 mod 0 eq + and or + { 366 } { 365 } ifelse + dup atfi_days lt + { + atfi_days exch sub /atfi_days exch def + /atfi_year atfi_year 1 add def + }{ + exit + } ifelse + } loop + /atfi_month 1 def + /atfi_days atfi_days 1 add def + 31 atfi_days lt + { + atfi_days 31 sub /atfi_days exch def + /atfi_month atfi_month 1 add def + 366 eq { 29 } { 28 } ifelse dup atfi_days lt + { + atfi_days exch sub /atfi_days exch def + /atfi_month atfi_month 1 add def + 31 atfi_days lt + { + atfi_days 31 sub /atfi_days exch def + /atfi_month atfi_month 1 add def + 30 atfi_days lt + { + atfi_days 30 sub /atfi_days exch def + /atfi_month atfi_month 1 add def + 31 atfi_days lt + { + atfi_days 31 sub /atfi_days exch def + /atfi_month atfi_month 1 add def + 30 atfi_days lt + { + atfi_days 30 sub /atfi_days exch def + /atfi_month atfi_month 1 add def + 31 atfi_days lt + { + atfi_days 31 sub /atfi_days exch def + /atfi_month atfi_month 1 add def + 31 atfi_days lt + { + atfi_days 31 sub /atfi_days exch def + /atfi_month atfi_month 1 add def + 30 atfi_days lt + { + atfi_days 30 sub /atfi_days exch def + /atfi_month atfi_month 1 add def + 31 atfi_days lt + { + atfi_days 31 sub /atfi_days exch def + /atfi_month atfi_month 1 add def + 30 atfi_days lt + { + atfi_days 30 sub /atfi_days exch def + /atfi_month atfi_month 1 add def + 31 atfi_days lt + { + atfi_days 31 sub /atfi_days exch def + /atfi_month atfi_month 1 add def + } if + } if + } if + } if + } if + } if + } if + } if + } if + } if + } { pop } ifelse + }{ pop } ifelse + % calc time part + 3600 24 mul mod + dup 3600 idiv dup /atfi_hour exch def + 3600 mul sub + dup 60 idiv dup /atfi_min exch def + 60 mul sub + /atfi_sec exch def + (D:19700101000000Z) + dup 2 atfi_year 4 string cvs putinterval + dup 6 atfi_month atfi_two + dup 8 atfi_days atfi_two + dup 10 atfi_hour atfi_two + dup 12 atfi_min atfi_two + dup 14 atfi_sec atfi_two + } bind def + % + % <filename> atfi_calc_checksum -> /CheckSum <checksum> + % or returns nothing, if MD5Encode is not given + false + languagelevel 2 ge { + (MD5Encode) + { pop true or } + (MD5Encode) length string + /Filter + resourceforall + } if + { + /atfi_calc_checksum { + /atfi_checksum 16 string def + /atfi_file exch (r) file def + /atfi_md5sum atfi_checksum /MD5Encode filter def + % not too efficient to read and write byte by byte, + % using a buffer is probably faster + atfi_size { + atfi_file read + { + atfi_md5sum exch write + } if + } repeat + atfi_md5sum closefile + atfi_file closefile + /CheckSum atfi_checksum + } bind def + }{ + /atfi_calc_checksum { pop } bind def + } ifelse + % + /atfi_pttobp { 72.27 div 72 mul } bind def + /atfi_pdftodvipsx { 72.27 div Resolution mul } bind def + /atfi_pdftodvipsy { 72.27 div VResolution mul } bind def + % + } atfi_?pdfmark + end +} + +\def\atfi@GSAVE{gsave } +\def\atfi@GRESTORE{grestore } +\def\atfi@SETLINEWIDTH{setlinewidth } +\def\atfi@LINETO{lineto } +\def\atfi@MOVETO{moveto } +\def\atfi@STROKE{stroke } +\def\atfi@FILL{fill } +\def\atfi@FILLSTROKE#1#2{gsave #1 fill grestore #2 stroke } +\def\atfi@SETRGBCOLORSTROKE{setrgbcolor } +\def\atfi@SETRGBCOLORFILL{setrgbcolor } +\def\atfi@SETGRAYSTROKE{setgray } +\def\atfi@SETGRAYFILL{setgray } +\def\atfi@RECTFILL{atfi_rectfill } +\def\atfi@RECTSTROKEFILL#1#2#3{% + #3% + #1% + gsave atfi_rectfill grestore + #2% + #3% + atfi_rectstroke + #1% +} +\def\atfi@SETMITERLIMIT{setmiterlimit } +\def\atfi@SETFLAT{setflat } +\def\atfi@SETLINECAP{setlinecap } +\def\atfi@CURVETO{curveto } +\def\atfi@CURVETOV{atfi_curveto_v } +\def\atfi@CURVETOY{atfi_curveto_y } +\def\atfi@CLOSEPATH{closepath } +\def\atfi@SETLINEJOIN{setlinejoin } + +% --- + +\newcounter{atfi@obj} +\renewcommand*{\theatfi@obj}{% + {atfi_obj_\number\c@atfi@obj}% +} + + +% most values for Params dictionary found in the .atfi file have +% priority: +% * Recalculation (md5sum, ...) is avoided. +% * An external script has more possibilities than programming +% at PostScript level (operating system, getting the date and +% time values of the file with correct interpretation. +% * Exception: status is called to test file existence, thus +% we get the value of size for free + +\define@key{AtFi@file}{Size}{} + +\def\atfi@embedfile#1{% + \@ifundefined{atfi@fileobj@#1}{% + \atfi@pdfstringdef\atfi@psfilename{#1}% + \stepcounter{atfi@obj}% + \expandafter\xdef\csname atfi@fileobj@#1\endcsname{\theatfi@obj}% + \begingroup + \let\atfi@params\@empty + \@ifundefined{atfi@file@#1}{}{% + \edef\x{\noexpand\setkeys{AtFi@file}{\@nameuse{atfi@file@#1}}}% + \x + }% + \atfi@literal{% + /atfi_filename (\atfi@psfilename) def + atfi_filename status + { + % ok: file found + % save parameters of status command + /atfi_created exch def + /atfi_referenced exch def + /atfi_size exch def + pop % drop parameter "pages" (storage space), never needed + % ghostscript: + % created: stat.st_ctime + % referenced: stat.st_mtime + % stat.st_ctime: interpretion depends on operating system: + % * unix: inode change time (not interesting) + % * win32: probably creation time + % --> /CreationDate + % stat.st_mtime: modification time --> /ModDate + % time values are seconds since 1970-01-01, GMT + % TODO: ghostscript offers "getenv" for getting the value + % of an environment variable. That could be used to + % to detect windows and settingthe /CreationDate entry. + % TODO: how are these values interpreted by other distiller + % programs? + % + [ + /_objdef \theatfi@obj + /type /stream + /OBJ pdfmark + [ + \theatfi@obj + << + /Type /EmbeddedFile + \atfi@mimetype + /Params + << + \atfi@params + % + /Size atfi_size + % + /product where + { + pop + % check for ghostscript + product (Ghostscript) search + { + pop pop pop + % ghostscript is running + % + \ifatfi@creationdate + \else + false % TODO: test for windows + { + /CreationDate atfi_created atfi_convert_date + } if + \fi + \ifatfi@moddate + \else + /ModDate atfi_referenced atfi_convert_date + \fi + } if + % + % look for MD5Encode filter and calculate CheckSum + } if + \ifatfi@checksum + \else + atfi_filename atfi_calc_checksum + \fi + >> + >> + /PUT pdfmark + [ + \theatfi@obj + atfi_filename (r) file + /PUT pdfmark + [ + \theatfi@obj + /CLOSE pdfmark + }{ + % error: file not found + % currently nothing is done + } ifelse + }% + \endgroup + }{% + % file already embedded + }% +} + +% --- + +% output: \atfi@appearanceobj +% input: \atfi@appearancebox, \atfi@icon@icon +\def\atfi@xform@icon{% + \stepcounter{atfi@obj}% + \edef\atfi@appearanceobj{\theatfi@obj}% + \atfi@literal{% + [ + /_objdef \atfi@appearanceobj + /BBox [ + 0 + 0 + \strip@pt\wd\atfi@appearancebox\space atfi_pttobp + \strip@pt\dimexpr\dp\atfi@appearancebox + +\ht\atfi@appearancebox\relax\space atfi_pttobp + ] + /BP pdfmark + \csname atfi@acro\atfi@icon@icon @data\endcsname + [ + /EP pdfmark + }% +} +% output: \atfi@appearanceobj +% input: \atfi@appearancebox +\def\atfi@xform{% + \stepcounter{atfi@obj}% + \edef\atfi@appearanceobj{\theatfi@obj}% + \begingroup + \setbox0=\hbox{% + \atfi@literal{% + [ + /_objdef \atfi@appearanceobj + /BBox [ + currentpoint + \strip@pt\dp\atfi@appearancebox\space sub + currentpoint + exch \strip@pt\wd\atfi@appearancebox\space add + exch \strip@pt\ht\atfi@appearancebox\space add + ] + /BP pdfmark + gsave + currentpoint + 2 copy translate + 72.27 Resolution div 72.27 VResolution div neg scale + exch neg exch neg translate + }% + \usebox{\atfi@appearancebox}% + \atfi@literal{% + grestore + [ + /EP pdfmark + }% + }% + % do not allocate any space for xobject definition + \dp0=\z@ + \ht0=\z@ + \wd0=\z@ + \mbox{\usebox0}% + \endgroup +} + +\def\atfi@refxform#1{% + \raisebox{-\atfi@appearancedepth}{% + \atfi@literal{% + gsave + currentpoint translate + Resolution 72 div VResolution neg 72 div scale + [ #1 /SP pdfmark + grestore + }% + \makebox[\atfi@appearancewidth]{}% + }% + \rule{0pt}{\atfi@appearanceheight}% +} + +% --- + +\def\atfi@insert@file@annot#1{% + \rule{0pt}{0pt}% + \ifatfi@appearance + \def\atfi@appearance@dict{% + /AP<<% + /N \atfi@appearanceobj + /R \atfi@appearanceobj + /D \atfi@appearanceobj + >>% + }% + \else + \let\atfi@appearance@dict\@empty + \fi + \@ifundefined{atfi@fsobj@#1}{% + \stepcounter{atfi@obj}% + \expandafter\xdef\csname atfi@fsobj@#1\endcsname{\theatfi@obj}% + \atfi@pdfstringdef\atfi@file{#1}% + \atfi@literal{% + [ + /_objdef \theatfi@obj + /type /dict + /OBJ pdfmark + [ + \theatfi@obj + << + /Type /Filespec + /F (\atfi@file) + /EF << + /F \csname atfi@fileobj@#1\endcsname + >> + >> + /PUT pdfmark + }% + }{% + }% + \atfi@literal{% + [ + /Subtype/FileAttachment% + \atfi@icon + \atfi@color + \atfi@author + \atfi@date + \atfi@annotname + \atfi@description + \atfi@subject + \atfi@appearance@dict + /F \theatfi@flags + /FS \csname atfi@fsobj@#1\endcsname + /Rect [ + currentpoint + \strip@pt\dimexpr\atfi@scale\atfi@appearancedepth\relax + \space atfi_pdftodvipsy add + currentpoint + exch \strip@pt\dimexpr\atfi@scale\atfi@appearancewidth\relax + \space atfi_pdftodvipsx add + exch \strip@pt\dimexpr\atfi@scale\atfi@appearanceheight\relax + \space atfi_pdftodvipsy sub + ] + /ANN pdfmark + }% + \rule{0pt}{\atfi@appearanceheight}% + \rule[-\atfi@appearancedepth]{0pt}{\atfi@appearancedepth}% + \rule{\atfi@appearancewidth}{0pt}% +} +% \end{macrocode} +% \begin{macrocode} +%</dvips> +% \end{macrocode} +% +% \subsection{Perl script \xfile{pdfatfi.pl}} +% +% \begin{macrocode} +%<*pdfatfi> +% \end{macrocode} +% \begin{macrocode} +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' && eval 'exec perl -S $0 $argv:q' + if 0; +use strict; +$^W=1; # turn warning on +# +# pdfatfi.pl +# +# Copyright (C) 2005, 2006 Heiko Oberdiek. +# +# 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. +# +# See file "attachfile2.pdf" for a list of files that belong to this project. +# +# This file "pdfatfi.pl" may be renamed to "pdfatfi" +# for installation purposes. +# +my $file = "pdfatfi.pl"; +my $program = uc($&) if $file =~ /^\w+/; +my $version = "2.2"; +my $date = "2006/08/16"; +my $author = "Heiko Oberdiek"; +my $copyright = "Copyright (c) 2005, 2006 by $author."; +# +# History: +# 2005/05/21 v1.0: First release. +# 2006/08/16 v2.2: Included in DTX file of attachfile2.dtx. +# + +use POSIX qw(strftime); # %z is used (GNU) +use Digest::MD5; + +### program identification +my $title = "$program $version, $date - $copyright\n"; + +### error strings +my $Error = "!!! Error:"; # error prefix + +### variables +my $atfifile; + +### option variables +my @bool = ("false", "true"); +$::opt_help = 0; +$::opt_quiet = 0; +$::opt_debug = 0; +$::opt_verbose = 0; + +my $usage = <<"END_OF_USAGE"; +${title}Syntax: \L$program\E [options] <file[.atfi]> +Function: Help program for LaTeX package "attachfile2". +Options: (defaults:) + --help print usage + --(no)quiet suppress messages ($bool[$::opt_quiet]) + --(no)verbose verbose printing ($bool[$::opt_verbose]) + --(no)debug debug informations ($bool[$::opt_debug]) +END_OF_USAGE + +### process options +my @OrgArgv = @ARGV; +use Getopt::Long; +GetOptions( + "help!", + "quiet!", + "debug!", + "verbose!", +) or die $usage; +!$::opt_help or die $usage; +@ARGV == 1 or die "$usage$Error Missing jobname!\n"; + +$::opt_quiet = 0 if $::opt_verbose; + +print $title unless $::opt_quiet; + +### get jobname +$atfifile = $ARGV[0]; +if (!-f $atfifile && -f "$atfifile.atfi") { + $atfifile .= ".atfi"; +} +-f $atfifile or die "$Error File `$atfifile' not found!\n"; + +print "* job file = $atfifile\n" if $::opt_verbose; + +if ($::opt_debug) { + print <<"END_DEB"; +* OSNAME: $^O +* PERL_VERSION: $] +* ARGV: @OrgArgv +END_DEB +} + +my $tmpfile = $atfifile . ".tmp"; + +my $timezone = strftime "%z", localtime; +$timezone =~ s/^([+\-]\d\d)(\d\d)$/$1'$2'/; + +open(IN, $atfifile) or die "$Error Cannot open `$atfifile'!\n"; +open(OUT, ">$tmpfile") or die "$Error Cannot write `$tmpfile'!\n"; + +while(<IN>) { + # timezone + if (s/^(\\attachfile\@timezone\{).*(\})$/$1$timezone$2/) { + print "* timezone = $timezone\n" if $::opt_verbose; + } + + # file entry + if (/^\\attachfile\@file\[[^\]]*\]\{(.*)\}$/) { + my $hexfile = $1; + my $file = pack('H*', $hexfile); + my @s = stat($file); + if (@s == 0) { + print "!!! Warning: File `$file' not found!\n"; + } + else { + my $size = @s[7]; + my $mtime = @s[9]; + my $ctime = @s[10]; # inode change time + + my ($sec, $min, $hour, $mday, $mon, $year) = localtime($mtime); + my $moddate = sprintf("%04d%02d%02d%02d%02d%02d", + $year + 1900, $mon + 1, $mday, + $hour, $min, $sec); + + # Manual page "perlport" says that "ctime" is creation + # time instead of inode change time for "Win32" and + # "Mac OS", but it is unsupported for "Mac OS X". + my $creationdate = ""; + if ($^O eq 'MSWin32') { # cygwin? + ($sec, $min, $hour, $mday, $mon, $year) = localtime($ctime); + $creationdate = sprintf("%04d%02d%02d%02d%02d%02d", + $year + 1900, $mon + 1, $mday, + $hour, $min, $sec); + } + + # md5 checksum + my $checksum = ""; + my $ctx = Digest::MD5->new; + if (open(FILE, $file)) { + $ctx->addfile(*FILE); + $checksum = $ctx->hexdigest; + close(FILE); + } + else { + print "!!! Warning: File `$file' cannot be read," + . " dropping checksum!\n"; + } + + $_ = "\\attachfile\@file[" + . "ModDate=$moddate,Size=$size" + . (($checksum) ? ",CheckSum=$checksum" : "") + . (($creationdate) ? ",CreationDate=$creationdate" : "") + . "]{$hexfile}\n"; + if ($::opt_verbose) { + print "* file entry = $file\n"; + print " size = $size\n"; + print " moddate = $moddate\n"; + print " creationdate = $creationdate\n" if $creationdate; + print " checksum = $checksum\n" if $checksum; + } + } + } + + print OUT $_; +} + +close(IN); +close(OUT); + +unlink($atfifile) or die "$Error Cannot delete old `$atfifile'!\n"; +rename $tmpfile, $atfifile + or die "$Error Cannot move `$tmpfile' to `$atfifile'!\n"; + +print "*** ready. ***\n" unless $::opt_quiet; + +__END__ +% \end{macrocode} +% \begin{macrocode} +%</pdfatfi> +% \end{macrocode} +% +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/attachfile2.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/attachfile2.pdf}] Documentation. +% \item[\CTAN{macros/latex/contrib/oberdiek/pdfatfi.pl}] Script. +% \end{description} +% +% \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 attachfile2.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@{}} +% attachfile2.sty & tex/latex/oberdiek/attachfile2.sty\\ +% atfidvips.def & tex/latex/oberdiek/atfidvips.def\\ +% atfipdftex.def & tex/latex/oberdiek/atfipdftex.def\\ +% attachfile2.pdf & doc/latex/oberdiek/attachfile2.pdf\\ +% attachfile2.dtx & source/latex/oberdiek/attachfile2.dtx\\ +% pdfatfi.pl & scripts/oberdiek/pdfatfi.pl\\ +% \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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file databases, you must refresh +% these. For example, \teTeX\ users run \verb|texhash| or +% \verb|mktexlsr|. +% +% \paragraph{Script install.} +% This package comes with a Perl script \xfile{pdfatfi.pl}. +% Install it somewhere so that it is executed, when it is called +% as \verb|pdfatfi| on the command line. Example for +% installing it under Linux: +% \begin{quote} +%\begin{verbatim} +%cp pdfatfi.pl /usr/local/bin/pdfatfi +%chmod +x /usr/local/bin/pdfatfi +%\end{verbatim} +% \end{quote} +% + +% +% \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 attachfile2.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{attachfile2.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 attachfile2.dtx +%makeindex -s gind.ist attachfile2.idx +%pdflatex attachfile2.dtx +%makeindex -s gind.ist attachfile2.idx +%pdflatex attachfile2.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{thebibliography}{9} +% \bibitem{attachfile} +% Scott Pakin: \textit{The \xpackage{attachfile} package}; +% 2005/02/20 v1.2; +% \CTAN{macros/latex/contrib/attachfile/}. +% +% \bibitem{embedfile} +% Heiko Oberdiek: \textit{The \xpackage{embedfile} package}; +% 2006/08/16 v1.0; +% \CTAN{macros/latex/contrib/oberdiek/embedfile.pdf}. +% +% \bibitem{pdfspec} +% Adobe Systems Incorporated: +% \href{http://partners.adobe.com/public/developer/en/pdf/PDFReference16.pdf}% +% {\textit{PDF Reference, Fifth Edition, Version 1.6}},% +% November 2004; +% \url{http://partners.adobe.com/public/developer/pdf/index_reference.html}. +% +% \bibitem{mime} +% Network Working Group: RFC 2046, \textit{Multipurpose Internet Mail Extensions (MIME) Part Two: +% Media Types}, November 1996; \url{http://www.rfc-editor.org/}. +% +% \bibitem{types} +% IANA (Internet Assigned Numbers Authority): +% \textit{MIME Media Types}, May 2006; +% \url{http://www.iana.org/assignments/media-types/}. +% +% \end{thebibliography} +% +% \begin{History} +% \begin{Version}{2005/02/23 v2.0} +% \item +% New options: \xoption{draft}/\xoption{final}. +% \item +% New option scale for scaling the annotation rectangle. +% \item +% Supported driver options: \xoption{pdftex}, \xoption{dvips}. +% \item +% Configuration file `attachfile.cfg' supported. +% \item +% Dependency of package calc dropped. +% \item +% \eTeX\ (\cs{numexpr}, \cs{dimexpr}) used. +% \item +% New auxiliary file \cs{jobname.atfi} to get data unavailable +% by (pdf)\TeX, controlled by \cs{nofiles} and option nofiles. +% \item +% Use of package \xpackage{prokvopt} (never released). +% \end{Version} +% \begin{Version}{2005/10/07 v2.1} +% \item +% Option \xoption{annotname} for naming annotations +% (this name can be used for embedded go-to actions). +% \end{Version} +% \begin{Version}{2006/08/17 v2.2} +% \item +% Use of package \xpackage{kvoptions} instead of \xpackage{prokvopt}. +% \item +% DTX framework. +% \item +% A little documentation. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/auxhook.dtx b/Master/texmf-dist/source/latex/oberdiek/auxhook.dtx new file mode 100644 index 00000000000..aea6e225c54 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/auxhook.dtx @@ -0,0 +1,475 @@ +% \iffalse meta-comment +% +% Copyright (C) 2006 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 auxhook.dtx +% and the derived files +% auxhook.sty, auxhook.pdf, auxhook.ins, auxhook.drv. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/auxhook.dtx +% CTAN:macros/latex/contrib/oberdiek/auxhook.pdf +% +% Unpacking: +% (a) If auxhook.ins is present: +% tex auxhook.ins +% (b) Without auxhook.ins: +% tex auxhook.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{auxhook.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If auxhook.drv is present: +% latex auxhook.drv +% (b) Without auxhook.drv: +% latex auxhook.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 auxhook.dtx +% makeindex -s gind.ist auxhook.idx +% pdflatex auxhook.dtx +% makeindex -s gind.ist auxhook.idx +% pdflatex auxhook.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/auxhook.sty +% TDS:doc/latex/oberdiek/auxhook.pdf +% TDS:source/latex/oberdiek/auxhook.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: auxhook 2006/05/31 v1.0 Hooks for auxiliary files (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2006 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 auxhook.dtx +and the derived files + auxhook.sty, auxhook.pdf, auxhook.ins, auxhook.drv. + +\endpreamble + +\generate{% + \file{auxhook.ins}{\from{auxhook.dtx}{install}}% + \file{auxhook.drv}{\from{auxhook.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{auxhook.sty}{\from{auxhook.dtx}{package}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* auxhook.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `auxhook.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{auxhook.drv}% + [2006/05/31 v1.0 Hooks for auxiliary files (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\begin{document} + \DocInput{auxhook.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{126} +% +% \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{auxhook.drv} +% +% \title{The \xpackage{auxhook} package} +% \date{2006/05/31 v1.0} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% Package \xpackage{auxhook} provides hooks for adding stuff at +% the begin of \xfile{.aux} files. +% \end{abstract} +% +% \tableofcontents +% +% \section{User interface} +% +% There are two kinds of \xfile{.aux} files, the main \xfile{.aux} file +% and the \xfile{.aux} file that belongs to an included file, specified +% by \cs{include}. +% +% Some packages write macros in the auxiliary files. +% If the user stops using the package, these macros will usually +% cause error messages because of unknown commands. Prominent example +% is package \xpackage{babel}'s \cs{select@language}. +% +% But such a package could be written more cooperative. It can +% also provide a definition in the auxiliary file (\cs{providecommand}) +% that silently disables the macros of the package +% if the package is no longer in use. +% +% In case of the main auxiliary file, \cs{AtBeginDocument} can be used +% for this purpose. Especially if several packages are involved, the +% order cannot be controlled always (e.g., see package +% \xpackage{hypdestopt} that hooks into \xpackage{hyperref}'s macros). +% And there isn't any hook for the auxiliary files of the \cs{include} +% feature. +% +% Thus this package patches \LaTeX's macros \cs{document} and +% \cs{@include} to add the hooks where the auxiliary files +% are opend and the first line with \cs{relax} is written. +% +% The patching can fail, if these macros are redefined by some +% other package. If the other package still uses the original +% definition, then load package \xpackage{auxhook} earlier. +% (With \cs{RequirePackage} the package also can be loaded before +% the class). If the redefinition doesn't use the original meaning, +% then you can try to load package \xpackage{auxhook} afterwards, +% but you need luck that the patch succeeds. +% +% The hooks are macros: +% \begin{description} +% \item[\cs{@beginmainauxhook}:] Start of the main auxiliary file. +% The hook is called after the first line with \cs{relax} is written. +% \item[\cs{@beginpartauxhook}:] The same for the auxiliary files +% that belongs to the files that are included by \cs{include}. +% \end{description} +% If you want to add something to these hooks, you can use +% \cs{g@addto@macro} from \LaTeX's kernel. But the package provides +% macros to add code that adds a line to the auxiliary file: +% +% \begin{declcs}{AddLineBeginMainAux}\,\M{line}\\ +% \cs{AddLineBeginPartAux}\,\M{line}\\ +% \cs{AddLineBeginAux}\,\M{line} +% \end{declcs} +% The \meta{line} is added at the begin of the main auxiliary file +% by \cs{AddLineBeginMainAux} and at the begin of the auxiliary files +% of included files by \cs{AddLineBeginPartAux}. \cs{AddLineBeginAux} writes +% in both kinds of auxiliary files. +% +% Examples, see packages \xpackage{hypdestopt} (\cite{hypdestopt}) and +% \xpackage{zref} (\cite{zref}). +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \subsection{Identification} +% +% \begin{macrocode} +%<*package> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{auxhook}% + [2006/05/31 v1.0 Hooks for auxiliary files (HO)] +% \end{macrocode} +% +% \subsection{Hook setup} +% +% \begin{macro}{\@beginmainauxhook} +% The hook for the main auxiliary file, initially empty. +% \begin{macrocode} +\providecommand*{\@beginmainauxhook}{} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@beginpartauxhook} +% The hook for auxiliary files of included files, initially empty. +% \begin{macrocode} +\providecommand*{\@beginpartauxhook}{} +% \end{macrocode} +% \end{macro} +% +% \subsection{User macros} +% +% \begin{macro}{\AddLineBeginMainAux} +% \begin{macrocode} +\newcommand{\AddLineBeginMainAux}[1]{% + \g@addto@macro\@beginmainauxhook{% + \immediate\write\@mainaux{#1}% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AtBeginPartAuxLine} +% \begin{macrocode} +\newcommand{\AddLineBeginPartAux}[1]{% + \g@addto@macro\@beginpartauxhook{% + \immediate\write\@partaux{#1}% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AddLineBeginAux} +% \begin{macrocode} +\newcommand{\AddLineBeginAux}[1]{% + \AddLineBeginMainAux{#1}% + \AddLineBeginPartAux{#1}% +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Patches} +% +% \subsubsection{\cs{document}} +% +% \begin{macrocode} +\begingroup + \def\y#1\immediate\write\@mainaux#2#3\auxhook@nil{% + \toks@{% + #1\immediate\write\@mainaux{#2}% + \@beginmainauxhook + #3% + }% + \xdef\document{\the\toks@}% + \endgroup + }% + \def\x#1\immediate\write\@mainaux#2#3\auxhook@nil{% + \toks@{#3}% + \edef\x{\the\toks@}% + \ifx\x\@empty + \PackageWarningNoLine{auxhook}{% + Cannot patch \string\document,\MessageBreak + use \string\AtBeginDocument\space instead% + }% + \endgroup + \AtBeginDocument{% + \if@filesw + \@beginmainauxhook + \fi + }% + \else + \expandafter\y\document\auxhook@nil + \fi + }% +\expandafter\x\document\immediate\write\@mainaux{}\auxhook@nil +% \end{macrocode} +% +% \subsubsection{\cs{@include}} +% +% \begin{macrocode} +\begingroup + \def\y#1\immediate\write\@partaux#2#3\auxhook@nil{% + \endgroup + \def\@include##1 {% + #1\immediate\write\@partaux{#2}% + \@beginpartauxhook + #3% + }% + }% + \def\x#1\immediate\write\@partaux#2#3\auxhook@nil{% + \toks@{#3}% + \edef\x{\the\toks@}% + \ifx\x\@empty + \PackageWarningNoLine{auxhook}{% + Cannot patch \string\@include,\MessageBreak + patch dropped% + }% + \endgroup + \else + \expandafter\y\@include{##1} \auxhook@nil + \fi + }% +\expandafter\x\@include{#1} \immediate\write\@partaux{}\auxhook@nil +% \end{macrocode} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/auxhook.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/auxhook.pdf}] Documentation. +% \end{description} +% +% \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 auxhook.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@{}} +% auxhook.sty & tex/latex/oberdiek/auxhook.sty\\ +% auxhook.pdf & doc/latex/oberdiek/auxhook.pdf\\ +% auxhook.dtx & source/latex/oberdiek/auxhook.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 auxhook.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{auxhook.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 auxhook.dtx +%makeindex -s gind.ist auxhook.idx +%pdflatex auxhook.dtx +%makeindex -s gind.ist auxhook.idx +%pdflatex auxhook.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{thebibliography}{9} +% +% \bibitem{hypdestopt} +% Heiko Oberdiek: \textit{The \xpackage{hypdestopt} package}; +% 2006/05/30 v1.0; +% \CTAN{macros/latex/contrib/oberdiek/hypdestopt.pdf}. +% +% \bibitem{hyperref} +% Sebastian Rahtz, Heiko Oberdiek: +% \textit{The \xpackage{hyperref} package}; +% 2006/08/16 v6.75c; +% \CTAN{macros/latex/contrib/hyperref/}. +% +% \bibitem{zref} +% Heiko Oberdiek: \textit{The \xpackage{zref} package}; +% 2006/05/25 v1.2; +% \CTAN{macros/latex/contrib/oberdiek/zref.pdf}. +% +% \end{thebibliography} +% +% \begin{History} +% \begin{Version}{2006/05/31 v1.0} +% \item +% First version. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/bmpsize.dtx b/Master/texmf-dist/source/latex/oberdiek/bmpsize.dtx new file mode 100644 index 00000000000..f315db219f3 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/bmpsize.dtx @@ -0,0 +1,3790 @@ +% \iffalse meta-comment +% +% Copyright (C) 2006 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 bmpsize.dtx +% and the derived files +% bmpsize.sty, bmpsize.pdf, bmpsize.ins, bmpsize.drv, +% bmpsize-base.sty, bmpsize-test.tex, bmpsize-dvips.def, +% bmpsize-dvipdfm.def, bmpsize-dvipdfmx.def. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/bmpsize.dtx +% CTAN:macros/latex/contrib/oberdiek/bmpsize.pdf +% +% Unpacking: +% (a) If bmpsize.ins is present: +% tex bmpsize.ins +% (b) Without bmpsize.ins: +% tex bmpsize.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{bmpsize.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If bmpsize.drv is present: +% latex bmpsize.drv +% (b) Without bmpsize.drv: +% latex bmpsize.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 bmpsize.dtx +% makeindex -s gind.ist bmpsize.idx +% pdflatex bmpsize.dtx +% makeindex -s gind.ist bmpsize.idx +% pdflatex bmpsize.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/bmpsize.sty +% TDS:tex/latex/oberdiek/bmpsize-base.sty +% TDS:tex/latex/oberdiek/bmpsize-test.tex +% TDS:tex/latex/oberdiek/bmpsize-dvips.def +% TDS:tex/latex/oberdiek/bmpsize-dvipdfm.def +% TDS:tex/latex/oberdiek/bmpsize-dvipdfmx.def +% TDS:doc/latex/oberdiek/bmpsize.pdf +% TDS:source/latex/oberdiek/bmpsize.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: bmpsize 2006/08/24 v1.0 Extract size and resolution data from bitmap files (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2006 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 bmpsize.dtx +and the derived files + bmpsize.sty, bmpsize.pdf, bmpsize.ins, bmpsize.drv, + bmpsize-base.sty, bmpsize-test.tex, bmpsize-dvips.def, + bmpsize-dvipdfm.def, bmpsize-dvipdfmx.def. + +\endpreamble + +\generate{% + \file{bmpsize.ins}{\from{bmpsize.dtx}{install}}% + \file{bmpsize.drv}{\from{bmpsize.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{bmpsize.sty}{\from{bmpsize.dtx}{package}}% + \file{bmpsize-base.sty}{\from{bmpsize.dtx}{base}}% + \file{bmpsize-test.tex}{\from{bmpsize.dtx}{test}}% + \file{bmpsize-dvips.def}{\from{bmpsize.dtx}{dvips}}% + \file{bmpsize-dvipdfm.def}{\from{bmpsize.dtx}{dvipdfm}}% + \file{bmpsize-dvipdfmx.def}{\from{bmpsize.dtx}{dvipdfmx}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* bmpsize.sty, bmpsize-base.sty, bmpsize-test.tex,} +\Msg{* bmpsize-dvips.def, bmpsize-dvipdfm.def,} +\Msg{* bmpsize-dvipdfmx.def} +\Msg{*} +\Msg{* To produce the documentation run the file `bmpsize.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{bmpsize.drv}% + [2006/08/24 v1.0 Extract size and resolution data from bitmap files (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\begin{document} + \DocInput{bmpsize.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{3510} +% +% \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{bmpsize.drv} +% +% \title{The \xpackage{bmpsize} package} +% \date{2006/08/24 v1.0} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% Package \xpackage{bmpsize} analyzes bitmap images to extract +% size and resolution data. It adds this feature to the graphics package +% that now do not need separate bounding box files for bitmap images. +% Additionally the implementation for the inclusion of bitmap images +% in some drivers of package \xpackage{graphicx} are rewritten to support +% options \xoption{viewport}, \xoption{trim} and \xoption{clip}. +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% \subsection{Introduction} +% +% The support of bitmap images in the \TeX\ world is quite poor. +% \TeX\ can read text files and thus parse the bounding box +% of EPS files, but it cannot read binary files. If \TeX\ reads +% a line, it removes spaces before the line end and normalizes +% the line end itself to get independent from the convention of +% the operating system. +% +% The situation changed with \pdfTeX. It is a \TeX\ compiler, +% where the output driver is already integrated. +% Images of type JPEG and PNG are supported directly and +% the size of the images are reported back to the \TeX\ language. +% Thus it is easy for package \xpackage{graphics} to get the +% size of the images. +% +% The problem remains for other drivers than \pdfTeX\ in PDF mode. +% The size information must either be given manually by the +% bounding box options or an additional file is used for each +% image, where the size information is stored as EPS bounding box. +% Program \xpackage{dvips} comes with the program \xpackage{ebb} +% that create these \xfile{.bb} files. However it ignores the +% natural size of the image and uses a fixed resolution of 100\,DPI. +% +% Since \pdfTeX\ 1.30.0 there are some new primites. Especially +% \cs{pdffiledump} is very helpful. It reads a file in binary mode +% and reports the selected area as hex dump. It works in both +% DVI and PDF mode of \pdfTeX. Thus it is now possible to read +% and parse bitmap files to get their size. +% This project uses this feature to implement parsers for many +% bitmap file types. +% +% \subsection{Bitmap image parsers} +% +% This project supports the following image types: +% \begin{quote} +% BMP, GIF, JPEG, MSP, PAM, PCX, PNG, PNM, SGI, TGA, TIFF, WMF, XPM +% \end{quote} +% Consult the documentation of your \TeX\ distribution and driver +% which types are supported by your driver. Sometimes automatically triggered +% conversions can be configured to extend the range of supported +% image types. +% +% \subsubsection{User interface} +% +% Package \xpackage{bmpsize} hooks into package \xpackage{graphics}. +% If an image is included and its size is not given, then +% \xpackage{bmpsize} investigates the image. If it could be +% parsed as known bitmap file type, the size is reported back +% to package \xpackage{graphics}. +% +% The following options are added to the options of package \xpackage{graphicx}: +% \begin{description} +% \item[\xoption{resolutionunit}:] Specifies the unit of the +% options for setting the resolution. Default is \verb|1in| that means +% the numbers are interpreted as dots per inch (DPI). +% \item[\xoption{defaultresolution}:] Bitmap files do not always provide +% information about their resolution (density). If this information +% is not given, the values of this option are used to calculate the +% image size. Default: \verb|72 !| +% \item[\xoption{resolution}:] This option override the resolution given +% in the bitmap file. +% \item[\xoption{bmpsizefast}:] Values are \verb|true| and \verb|false|. +% The option is enabled by default. Then mainly \eTeX's arithmetic is +% used to calculate the width and height. However the dimen dimensions +% are limited. Therefore overflow errors can happen. +% Disable then this option to use the arithmetic of package \xpackage{fp}. +% It allows a larger range of numbers at the cost of speed. +% \end{description} +% Options \xoption{defaultresolution} and \xoption{resolution} expect +% two numbers, separated by a space. The first is taken as density +% for the horizontal x axis, the second for the vertical y axis. +% One of the numbers may be replaced by an exclamation mark. In this +% an aspect ratio is respected and the correct density for this axis +% automatically calculated. If one number is given, this number is +% used for both axes. +% Examples: +% \begin{quote} +% \def\comment#1{% +% \unskip\qquad\textit{\%\space#1}\\% +% \ignorespaces +% }% +% |defaultresolution=72 !| \comment{Default} +% |resolution=100| \comment{Simulates behaviour of program \xpackage{ebb}} +% \end{quote} +% +% The options can be set in \cs{includegraphics} or using \cs{bmpsizesetup}. +% \verb|\setkeys{Gin}| is equivalent to the latter case. +% \begin{quote} +%\begin{verbatim} +%\bmpsizesetup{resolutionunit=1in, resolution=100} +%\includegraphics[ +% defaultresolution=72 !, +% bmpsizefast=false +%]{image} +%\end{verbatim} +% \end{quote} +% +% \subsubsection{Hints} +% +% \begin{itemize} +% \item My version of \xfile{dvips.def} 1999/02/16 v3.0i defines +% rules for the supported bitmap extensions, but does not +% include them in the list of extensions that are tried +% if the file name is not given with an extension. +% In such a case, the list of extensions can be set +% by \cs{DeclareGraphicsExtensions}, see \xpackage{grfguide}. +% The following code just extends the list: +% \begin{quote} +%\begin{verbatim} +%\makeatletter +%\g@addto@macro\Gin@extensions{,.bmp,.pcx,.msp} +%\makeatother +%\end{verbatim} +% \end{quote} +% \item My version of \xfile{dvipdfm.def} 1998/11/24 vx.x misses +% the graphics rule for PNG files. It can be added by: +% \begin{quote} +%\begin{verbatim} +%\DeclareGraphicsRule{.png}{bmp}{.bb}{#1} +%\end{verbatim} +% \end{quote} +% See the previous issue to add the extension \xfile{.png} to the list +% of extensions for package \xpackage{graphics}. +% \end{itemize} +% +% \subsubsection{Test program} +% +% There is a test program \xfile{bmpsize-test.tex}. Run it through +% \verb|latex|, \verb|pdflatex|, or \verb|pdftex|. Then given +% image files are inspected and the result is printed. +% +% \subsubsection{Interface for programmers} +% +% The macro names of the parsers are \verb|\bmpsize@read@|\meta{type}. +% Example: \cs{bmpsize@read@jpg} in case of JPEG. +% +% A parser sets the switch \cs{ifbmpsize@ok} to true, if it +% could successfully parse the image file. +% The width and height are returnd in \cs{bmpsize@width} and +% \cs{bmpsize@height}. If information about density is available, +% it is used to calculate width and height of the image, otherwise +% the values given by option \xoption{defaultresolution} is used. +% \xoption{resolution} overwrites the values in the image file. +% +% \subsection{Improved bitmap inclusion} +% +% Some drivers for package \xpackage{graphics} define the graphics +% type \xoption{bmp} for bitmap images. The code in the standard +% drivers for \xoption{dvips}, \xoption{dvipdfm}, and \xoption{dvipdfmx} +% is very basic and misses essential features of the +% package \xpackage{graphicx}. Therefore the code for bitmap +% inclusion is automatically rewritten by this package to add +% the following features: +% \begin{itemize} +% \item Support for \xoption{viewport} and \xoption{trim}. +% \item Support for \xoption{clip}. +% \item In case of \xoption{dvipdfm} and \xoption{dvipdfmx} the +% bitmap images are reused and not included again if they +% are used more than once. +% \end{itemize} +% However, there is a difference between \xoption{dvipdfm} and +% \xoption{dvipdfmx}, especially if images are reused. In the +% former case the reused box has width and height of 1bp, in the +% latter case 1in. Thus the correct driver option must be given. +% \xoption{dvipdfm} and \xoption{dvipdfmx} are not equivalent. +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \subsection{Basic package \xpackage{bmpsize-base}} +% +% Identification. +% \begin{macrocode} +%<*base> +\ProvidesPackage{bmpsize-base}% + [2006/08/24 v1.0 Basic part of bmpsize (HO)] +% \end{macrocode} +% Modules of package \xpackage{fp} are used for calculations. +% \begin{macrocode} +\RequirePackage{fp-basic} +\RequirePackage{fp-snap} +% \end{macrocode} +% Package \xpackage{fp} uses nested \cs{loop} structures. +% That breaks with the plain-\TeX\ version of \cs{loop}. +% Therefore we use the \LaTeX\ variant. +% \begin{macro}{\@bmpsize@plain@loop} +% \begin{macrocode} +\long\def\@bmpsize@plain@loop#1\repeat{% + \def\iterate{% + #1\relax + \expandafter\iterate\fi + }% + \iterate + \let\iterate\relax +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\newif\ifbmpsize@ok +\let\@bmpsize@ok\bmpsize@oktrue + +\newif\if@bmpsize@bigendian +\newif\if@bmpsize@absnum +\newif\if@bmpsize@user@resolution +\newif\if@bmpsize@fast +\@bmpsize@fasttrue + +\def\@bmpsize@init{% + \let\@bmpsize@org@plain@loop\loop + \let\loop\@bmpsize@plain@loop + \bmpsize@okfalse + \@bmpsize@bigendiantrue + \@bmpsize@absnumfalse + \let\bmpsize@pixelwidth\relax + \let\bmpsize@pixelheight\relax + \let\bmpsize@pixelx\relax + \let\bmpsize@pixely\relax + \let\bmpsize@unit\relax + \let\bmpsize@pixelxdenom\relax + \let\bmpsize@pixelydenom\relax +} + +\def\@bmpsize@stop#1\@nil{} + +\def\@bmpsize@loop#1{% + #1% + \@bmpsize@loop{#1}% +} +\def\@bmpsize@break#1\@bmpsize@loop#2{} + +\def\@bmpsize@size#1#2#3{% + \edef#3{\pdffilesize{#1}}% + \ifx#3\@empty + \expandafter\@bmpsize@stop + \fi + \ifnum#3<#2\relax + \expandafter\@bmpsize@stop + \fi +} + +\def\@bmpsize@read#1#2#3{% + \edef\@bmpsize@buf{\pdffiledump offset#3length#2{#1}}% + \edef\@bmpsize@temp{% + \noexpand\@bmpsize@check@byte{#2}\@bmpsize@buf{}{}\noexpand\\% + }% + \@bmpsize@temp +} +\def\@bmpsize@fillbuf#1{% + \ifx\@bmpsize@buf\@empty + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \edef\@bmpsize@buf{% + \pdffiledump offset\bmpsize@offset + length\bmpsize@fillbuflength{#1}% + }% + \ifx\@bmpsize@buf\@empty + \expandafter\@bmpsize@stop + \fi + \edef\bmpsize@offset{\the\numexpr\bmpsize@offset+\bmpsize@fillbuflength}% + }% +} +\def\bmpsize@fillbuflength{10} + +\def\@bmpsize@append#1#2#3{% + \edef#1{#2#3}% +} +\def\@bmpsize@pushback#1{% + \edef\@bmpsize@buf{#1\@bmpsize@buf}% +} + +\def\@bmpsize@iswhite#1{% + \ifnum\pdfstrcmp{#1}{09}=\z@ + \else + \ifnum\pdfstrcmp{#1}{0A}=\z@ + \else + \ifnum\pdfstrcmp{#1}{0D}=\z@ + \else + \ifnum\pdfstrcmp{#1}{20}=\z@ + \else + 1% + \fi + \fi + \fi + \fi + \space +} +\def\@bmpsize@isdigit#1{% + \ifnum\pdfstrcmp{#1}{30}<\z@ + 1% + \else + \ifnum\pdfstrcmp{#1}{39}>\z@ + 1% + \fi + \fi + \space +} + +\def\@bmpsize@check@byte#1#2#3{% + \ifnum#1<\@ne + \csname fi\endcsname + \@bmpsize@cleanup@end + \else + \csname fi\endcsname + \ifx!#2#3!% + \csname fi\endcsname + \@bmpsize@stop + \else + \csname fi\endcsname + \expandafter\@bmpsize@check@byte\expandafter{\the\numexpr#1-1}% +} +\def\@bmpsize@cleanup@end#1\\{} + +\def\@bmpsize@swap@maybe#1{% + \if@bmpsize@bigendian + \else + \edef#1{\expandafter\@bmpsize@@swap#1\@empty\@empty\@empty\@empty}% + \fi +} +\def\@bmpsize@@swap#1#2#3#4#5#6#7#8{% + #7#8#5#6#3#4#1#2% +} + +\def\@bmpsize@skip@one{% + \edef\@bmpsize@buf{\expandafter\@gobbletwo\@bmpsize@buf}% +} +\def\@bmpsize@skip@two{% + \edef\@bmpsize@buf{\expandafter\@gobblefour\@bmpsize@buf}% +} +\def\@bmpsize@skip@four{% + \edef\@bmpsize@buf{% + \expandafter\expandafter\expandafter\@gobblefour\expandafter + \@gobblefour\@bmpsize@buf + }% +} + +\def\@bmpsize@grab#1#2{% + \edef#1{\noexpand\@bmpsize@grab@byte#2=\@bmpsize@buf\noexpand\\}% + \edef#1{#1}% +} +\def\@bmpsize@grab@byte#1=#2#3{% + #2#3% + \ifnum#1>\@ne + \expandafter\@bmpsize@grab@byte\the\numexpr#1-1\expandafter=% + \else + \expandafter\@bmpsize@cleanup@end + \fi +} + +\def\@bmpsize@abs@maybe#1{% + \let\@bmpsize@temp\relax + \if@bmpsize@absnum + \ifnum"\expandafter\@car#1\@nil>7 % + \edef#1{\expandafter\@bmpsize@abs@byte#1\relax}% + \ifnum\pdfstrcmp{#1}{7FFFFFFF}=\z@ + \let\@bmpsize@temp\@bmpsize@stop + \else + \def\@bmpsize@temp{\edef#1{\the\numexpr#1+1}}% + \fi + \fi + \fi +} +\def\@bmpsize@abs@byte#1{% + \ifx#1\relax + \else + \ifcase"0#1 % + F\or E\or D\or C\or B\or A\or 9\or 8\or + 7\or 6\or 5\or 4\or 3\or 2\or 1\or 0% + \fi + \expandafter\@bmpsize@abs@byte + \fi +} + +\def\@bmpsize@num@one#1{% + \@bmpsize@grab#11% + \@bmpsize@abs@maybe#1% + \edef#1{\number"#1}% + \@bmpsize@temp + \@bmpsize@skip@one +} +\def\@bmpsize@num@two#1{% + \@bmpsize@grab#12% + \@bmpsize@swap@maybe#1% + \@bmpsize@abs@maybe#1% + \edef#1{\number"#1}% + \@bmpsize@temp + \@bmpsize@skip@two +} +\def\@bmpsize@num@four#1{% + \@bmpsize@grab#14% + \@bmpsize@swap@maybe#1% + \@bmpsize@abs@maybe#1% + \ifnum\pdfstrcmp{#1}{7FFFFFFF}>\z@ + \expandafter\@bmpsize@stop + \fi + \edef#1{\number"#1}% + \@bmpsize@temp + \@bmpsize@skip@four +} + +\def\@bmpsize@div#1#2#3{% #1 := #2/#3 + \FPdiv#1{#2}{#3}% + \@bmpsize@beautify#1% +} +\def\@bmpsize@beautify#1{% + \FPifint#1% + \edef#1{\expandafter\@bmpsize@trunc#1.\@nil}% + \else + \edef#1{\expandafter\@bmpsize@cleanup@frac#1.\@nil}% + \fi +} +\def\@bmpsize@trunc#1.#2\@nil{#1} +% #1 isn't an integer, thus we should have at least one +% necessary digit after the dot +\def\@bmpsize@cleanup@frac#1.#2#3.#4\@nil{% + #1.#2% + \ifx\\#3\\% + \else + \@bmpsize@cleanup@fracdigits#3000000000\@nil + \fi +} +\def\@bmpsize@cleanup@fracdigits#1#2#3#4#5#6#7#8#9{% + \ifcase#9 % + \ifcase#8 % + \ifcase#7 % + \ifcase#6 % + \ifcase#5 % + \ifcase #4 % + \ifcase #3 % + \ifcase #2 % + \ifcase #1 % + \else + #1% + \fi + \else + #1#2% + \fi + \else + #1#2#3% + \fi + \else + #1#2#3#4% + \fi + \else + #1#2#3#4#5% + \fi + \else + #1#2#3#4#5#6% + \fi + \else + #1#2#3#4#5#6#7% + \fi + \else + #1#2#3#4#5#6#7#8% + \fi + \else + #1#2#3#4#5#6#7#8#9% + \fi + \@bmpsize@trunc.% +} + +\def\@bmpsize@end{% + \ifbmpsize@ok + \ifx\bmpsize@pixelwidth\relax + \bmpsize@okfalse + \fi + \ifx\bmpsize@pixelheight\relax + \bmpsize@okfalse + \fi + \fi + \ifbmpsize@ok + \ifnum\bmpsize@pixelwidth>\z@ + \else + \bmpsize@okfalse + \fi + \ifnum\bmpsize@pixelheight>\z@ + \else + \bmpsize@okfalse + \fi + \fi + \ifbmpsize@ok + \ifcase 0% + \ifx\bmpsize@pixelx\relax 1 \fi + \ifx\bmpsize@pixely\relax 1 \fi + \ifnum\bmpsize@pixelx>\z@\else 1 \fi + \ifnum\bmpsize@pixely>\z@\else 1 \fi + \ifx\bmpsize@pixelxdenom\relax + \ifx\bmpsize@pixelydenom\relax\else 1 \fi + \else + \ifnum\bmpsize@pixelxdenom>\z@\else 1 \fi + \fi + \ifx\bmpsize@pixelydenom\relax + \else + \ifnum\bmpsize@pixelydenom>\z@\else 1 \fi + \fi + \else + \let\bmpsize@pixelx\relax + \let\bmpsize@pixely\relax + \let\bmpsize@unit\relax + \let\bmpsize@pixelxdenom\relax + \let\bmpsize@pixelydenom\relax + \fi + \ifx\bmpsize@pixelxdenom\relax + \else + \@bmpsize@div\bmpsize@pixelx\bmpsize@pixelx\bmpsize@pixelxdenom + \@bmpsize@div\bmpsize@pixely\bmpsize@pixely\bmpsize@pixelydenom + \let\bmpsize@pixelxdenom\relax + \let\bmpsize@pixelydenom\relax + \fi + \ifcase 0\ifx\bmpsize@unit\relax 1\fi + \if@bmpsize@user@resolution 1\fi + \relax + \let\bmpsize@calc@unit\bmpsize@unit + \let\bmpsize@calc@pixelx\bmpsize@pixelx + \let\bmpsize@calc@pixely\bmpsize@pixely + \else + \let\bmpsize@calc@unit\bmpsize@unit@default + \let\bmpsize@calc@pixelx\bmpsize@pixelx@default + \let\bmpsize@calc@pixely\bmpsize@pixely@default + \ifx\bmpsize@calc@pixely\Gin@exclamation + \ifx\bmpsize@pixelx\relax + \let\bmpsize@calc@pixely\bmpsize@calc@pixelx + \else + \FPdiv\bmpsize@calc@pixely\bmpsize@calc@pixelx\bmpsize@pixelx + \FPmul\bmpsize@calc@pixely\bmpsize@calc@pixely\bmpsize@pixely + \fi + \else + \ifx\bmpsize@calc@pixelx\Gin@exclamation + \ifx\bmpsize@pixelx\relax + \let\bmpsize@calc@pixelx\bmpsize@calc@pixely + \else + \FPdiv\bmpsize@calc@pixelx\bmpsize@calc@pixely\bmpsize@pixely + \FPmul\bmpsize@calc@pixelx\bmpsize@calc@pixelx\bmpsize@pixelx + \fi + \fi + \fi + \fi + \FPdiv\bmpsize@width\bmpsize@pixelwidth\bmpsize@calc@pixelx + \FPdiv\bmpsize@height\bmpsize@pixelheight\bmpsize@calc@pixely + % calculation of width and height in bp for package graphics + % 1in = 72bp = 72.27pt, 72/72.27 = 8/8.03, 1pt = 65536sp + \if@bmpsize@fast + \edef\bmpsize@width{% + \strip@pt\dimexpr.99626\dimexpr + \bmpsize@width\dimexpr\bmpsize@calc@unit + }% + \edef\bmpsize@height{% + \strip@pt\dimexpr.99626\dimexpr + \bmpsize@height\dimexpr\bmpsize@calc@unit + }% + \else + \edef\@bmpsize@temp{\number\dimexpr\bmpsize@calc@unit}% + \ifnum\@bmpsize@temp>100000 % + \FPmul\@bmpsize@temp\@bmpsize@temp{0.00001}% + \def\@bmpsize@corr{100000}% + \else + \let\@bmpsize@corr\relax + \fi + \FPmul\bmpsize@width\bmpsize@width\@bmpsize@temp + \FPmul\bmpsize@height\bmpsize@height\@bmpsize@temp + \FPmul\bmpsize@width\bmpsize@width{8}% + \FPmul\bmpsize@height\bmpsize@height{8}% + \FPdiv\bmpsize@width\bmpsize@width{8.03}% + \FPdiv\bmpsize@height\bmpsize@height{8.03}% + \FPdiv\bmpsize@width\bmpsize@width{65536}% + \FPdiv\bmpsize@height\bmpsize@height{65536}% + \ifx\@bmpsize@corr\relax + \else + \FPmul\bmpsize@width\bmpsize@width\@bmpsize@corr + \FPmul\bmpsize@height\bmpsize@height\@bmpsize@corr + \fi + \FPround\bmpsize@width\bmpsize@width{5}% + \FPround\bmpsize@height\bmpsize@height{5}% + \@bmpsize@beautify\bmpsize@width + \@bmpsize@beautify\bmpsize@height + \fi + \fi + \let\loop\@bmpsize@org@plain@loop +} +\def\bmpsize@unit@default{1in} +\def\bmpsize@pixelx@default{72} +\let\bmpsize@pixely@default\Gin@exclamation + +\def\bmpsize@types{png,jpg,bmp,gif,tiff,pnm,pam,xpm,tga,pcx,msp,sgi} +%</base> +% \end{macrocode} +% +% \subsection{Bitmap formats} +% +% \subsubsection{png} +% +%<*ignore> +%\begin{verbatim} +%begin png +%big-endian +% +%read 24 0 +%grab 8 -> $temp +%check streq $temp [0x89 "PNG" 0x0D 0x0A 0x1A 0x0A] +%num 4 -> $length +%grab 4 -> $temp +%check streq $temp ["IHDR"] +%num 4 -> $pixelwidth +%num 4 -> $pixelheight +%ok +%assign numexpr(20 + $length) -> $offset +%loop +% read 8 $offset +% num 4 -> $length +% grab 4 -> $temp +% if streq $temp ["IDAT"] +% stop +% fi +% if streq $temp ["pHYs"] +% read 9 numexpr($offset + 8) +% num 4 -> $pixelx +% num 4 -> $pixely +% grab 1 -> $temp +% if numeq $temp 1 +% assign {100cm} -> $unit +% fi +% stop +% fi +% assign numexpr($offset + 12 + $length) -> $offset +%repeat +%end +%\end{verbatim} +%</ignore> +% \begin{macro}{\bmpsize@read@png} +% \begin{macrocode} +%<*base> +\def\bmpsize@read@png#1{% + \@bmpsize@init + \@bmpsize@bigendiantrue + \@bmpsize@read{#1}{24}{0}% + \@bmpsize@grab\bmpsize@temp{8}% + \@bmpsize@skip@four + \@bmpsize@skip@four + \ifnum\pdfstrcmp{\bmpsize@temp}{89504E470D0A1A0A}=\z@ + \else + \expandafter\@bmpsize@stop + \fi + \@bmpsize@num@four\bmpsize@length + \@bmpsize@grab\bmpsize@temp{4}% + \@bmpsize@skip@four + \ifnum\pdfstrcmp{\bmpsize@temp}{49484452}=\z@ + \else + \expandafter\@bmpsize@stop + \fi + \@bmpsize@num@four\bmpsize@pixelwidth + \@bmpsize@num@four\bmpsize@pixelheight + \@bmpsize@ok + \edef\bmpsize@offset{\the\numexpr20+\bmpsize@length}% + \@bmpsize@loop{% + \@bmpsize@read{#1}{8}{\bmpsize@offset}% + \@bmpsize@num@four\bmpsize@length + \@bmpsize@grab\bmpsize@temp{4}% + \@bmpsize@skip@four + \ifnum\pdfstrcmp{\bmpsize@temp}{49444154}=\z@ + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@stop + }% + \ifnum\pdfstrcmp{\bmpsize@temp}{70485973}=\z@ + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@read{#1}{9}{\numexpr\bmpsize@offset+8\relax}% + \@bmpsize@num@four\bmpsize@pixelx + \@bmpsize@num@four\bmpsize@pixely + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \ifnum\bmpsize@temp=1\relax + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \def\bmpsize@unit{100cm}% + }% + \@bmpsize@stop + }% + \edef\bmpsize@offset{\the\numexpr\bmpsize@offset+12+\bmpsize@length}% + }% + \@bmpsize@stop + \@nil + \@bmpsize@end +}% +%</base> +% \end{macrocode} +% \end{macro} +% +% \subsubsection{jpg} +% +%<*ignore> +%\begin{verbatim} +%begin jpg +% +%read 3 0 +%grab 3 -> $temp % SOI and 0xFF +%check streq $temp [0xFF 0xD8 0xFF] +%assign {2} -> $offset +%assign {0} -> $exifdensity +%loop +% read 4 $offset +% grab 1 -> $temp +% check streq $temp [0xFF] +% num 1 -> $temp +% if numeq $temp 0xDA % SOS +% stop +% fi +% % look for JFIF APP0 segment +% if numeq $temp 0xE0 % APP0 +% num 2 -> $length +% if numeq $exifdensity 0 +% if numge $length 16 % a JFIF segment has 16 bytes at least +% read 12 numexpr($offset + 4) +% grab 5 -> $temp % identifier +% if streq $temp ["JFIF" 0x0] +% check numge $length 16 +% skip 2 % version +% num 1 -> $temp % units +% if numeq $temp 1 +% assign {1in} -> $unit +% else +% if numeq $temp 2 +% assign {1cm} -> $unit +% fi +% fi +% num 2 -> $pixelx +% num 2 -> $pixely +% fi +% fi +% fi +% else +% if numeq $temp 0xE1 % APP1 +% % look for Exif APP1 segment +% num 2 -> $length +% if numge $length 20 % identifier (6) + Tiff header (8) + first IFD (>=6) +% read 20 numexpr($offset + 4) +% grab 6 -> $temp +% if streq $temp ["Exif" 0x0 0x0] +% assign numexpr($offset + 10) -> $exifoffset +% % read TIFF header +% grab 2 -> $temp +% if streq $temp ["II"] +% little-endian +% else +% check streq $temp ["MM"] +% % big-endian +% fi +% num 2 -> $temp +% check numeq $temp 42 +% num 4 -> $temp % offset of first IFD +% check numgt $temp 0 +% % read first IFD +% assign numexpr($temp + $exifoffset) -> $off +% read 2 $off +% num 2 -> $entries +% assign numexpr($off + 2) -> $off +% loop +% if numeq $entries 0 +% break +% fi +% assign numexpr($entries - 1) -> $entries +% % entry format: +% % 2 tag +% % 2 field type +% % 4 count +% % 4 value/offset +% read 12 $off +% assign numexpr($off + 12) -> $off +% num 2 -> $tag +% if numeq $tag 296 % ResolutionUnit +% skip 6 % type: 3 (short), count: 1 +% num 2 -> $temp +% ifcase $temp +% or % 1 +% clear $unit +% or % 2 +% assign {1in} -> $unit +% or % 3 +% assign {1cm} -> $unit +% else +% clear $unit % unknown +% fi +% ifcase $temp +% or % 1 +% or % 2 +% assign {1} -> $exifdensity +% or % 3 +% assign {1} -> $exifdensity +% else +% assign $exifdensity -> $exifdensity +% fi +% fi +% % 256 ImageWidth (use width of JPG part) +% % 257 ImageHeight (use height of JPG part) +% if numeq $tag 282 % XResolution +% skip 6 +% num 4 -> $temp +% read 8 numexpr($temp + $exifoffset) +% num 4 -> $pixelx +% num 4 -> $temp +% if numeq $temp 1 +% else +% assign numexpr($temp) -> $pixelxdenom +% % div $pixelx $temp -> $pixelx +% fi +% fi +% if numeq $tag 283 % YResolution +% skip 6 +% num 4 -> $temp +% read 8 numexpr($temp + $exifoffset) +% num 4 -> $pixely +% num 4 -> $temp +% if numeq $temp 1 +% else +% assign numexpr($temp) -> $pixelydenom +% % div $pixely $temp -> $pixely +% fi +% fi +% repeat +% big-endian +% fi +% fi +% else +% assign numexpr($temp - 0xC0) -> $temp +% ifcase $temp % SOF_0 +% or % SOF_1 +% or % SOF_2 +% or % SOF_3 +% or % DHT +% assign {-1} -> $temp +% or % SOF_5 +% or % SOF_6 +% or % SOF_7 +% or % JPG +% assign {-1} -> $temp +% or % SOF_9 +% or % SOF_10 +% or % SOF_11 +% or % DAC +% assign {-1} -> $temp +% or % SOF_13 +% or % SOF_14 +% or % SOF_15 +% else +% assign {-1} -> $temp +% fi +% if numeq $temp -1 +% else +% read 4 numexpr($offset + 5) +% num 2 -> $pixelheight +% num 2 -> $pixelwidth +% if numeq $pixelheight 0 +% clear $pixelheight +% stop +% fi +% ok +% stop +% fi +% num 2 -> $length +% fi +% fi +% assign numexpr($offset + $length + 2) -> $offset +%repeat +%end +%\end{verbatim} +%</ignore> +% \begin{macro}{\bmpsize@read@jpg} +% \begin{macrocode} +%<*base> +\def\bmpsize@read@jpg#1{% + \@bmpsize@init + \@bmpsize@read{#1}{3}{0}% + \@bmpsize@grab\bmpsize@temp{3}% + \@bmpsize@skip@two + \@bmpsize@skip@one + \ifnum\pdfstrcmp{\bmpsize@temp}{FFD8FF}=\z@ + \else + \expandafter\@bmpsize@stop + \fi + \def\bmpsize@offset{2}% + \def\bmpsize@exifdensity{0}% + \@bmpsize@loop{% + \@bmpsize@read{#1}{4}{\bmpsize@offset}% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \ifnum\pdfstrcmp{\bmpsize@temp}{FF}=\z@ + \else + \expandafter\@bmpsize@stop + \fi + \@bmpsize@num@one\bmpsize@temp + \ifnum\bmpsize@temp=218\relax + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@stop + }% + \ifnum\bmpsize@temp=224\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \@bmpsize@num@two\bmpsize@length + \ifnum\bmpsize@exifdensity=0\relax + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \unless\ifnum\bmpsize@length<16\relax + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@read{#1}{12}{\numexpr\bmpsize@offset+4\relax}% + \@bmpsize@grab\bmpsize@temp{5}% + \@bmpsize@skip@four + \@bmpsize@skip@one + \ifnum\pdfstrcmp{\bmpsize@temp}{4A46494600}=\z@ + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \ifnum\bmpsize@length<16\relax + \expandafter\@bmpsize@stop + \fi + \@bmpsize@skip@two + \@bmpsize@num@one\bmpsize@temp + \ifnum\bmpsize@temp=1\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \def\bmpsize@unit{1in}% + }{% + \ifnum\bmpsize@temp=2\relax + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \def\bmpsize@unit{1cm}% + }% + }% + \@bmpsize@num@two\bmpsize@pixelx + \@bmpsize@num@two\bmpsize@pixely + }% + }% + }% + }{% + \ifnum\bmpsize@temp=225\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \@bmpsize@num@two\bmpsize@length + \unless\ifnum\bmpsize@length<20\relax + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@read{#1}{20}{\numexpr\bmpsize@offset+4\relax}% + \@bmpsize@grab\bmpsize@temp{6}% + \@bmpsize@skip@four + \@bmpsize@skip@two + \ifnum\pdfstrcmp{\bmpsize@temp}{457869660000}=\z@ + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \edef\bmpsize@exifoffset{\the\numexpr\bmpsize@offset+10}% + \@bmpsize@grab\bmpsize@temp{2}% + \@bmpsize@skip@two + \ifnum\pdfstrcmp{\bmpsize@temp}{4949}=\z@ + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \@bmpsize@bigendianfalse + }{% + \ifnum\pdfstrcmp{\bmpsize@temp}{4D4D}=\z@ + \else + \expandafter\@bmpsize@stop + \fi + }% + \@bmpsize@num@two\bmpsize@temp + \ifnum\bmpsize@temp=42\relax + \else + \expandafter\@bmpsize@stop + \fi + \@bmpsize@num@four\bmpsize@temp + \ifnum\bmpsize@temp>0\relax + \else + \expandafter\@bmpsize@stop + \fi + \edef\bmpsize@off{\the\numexpr\bmpsize@temp+\bmpsize@exifoffset}% + \@bmpsize@read{#1}{2}{\bmpsize@off}% + \@bmpsize@num@two\bmpsize@entries + \edef\bmpsize@off{\the\numexpr\bmpsize@off+2}% + \@bmpsize@loop{% + \ifnum\bmpsize@entries=0\relax + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@break + }% + \edef\bmpsize@entries{\the\numexpr\bmpsize@entries-1}% + \@bmpsize@read{#1}{12}{\bmpsize@off}% + \edef\bmpsize@off{\the\numexpr\bmpsize@off+12}% + \@bmpsize@num@two\bmpsize@tag + \ifnum\bmpsize@tag=296\relax + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@skip@four + \@bmpsize@skip@two + \@bmpsize@num@two\bmpsize@temp + \ifcase\bmpsize@temp\relax + \or + \let\bmpsize@unit\relax + \or + \def\bmpsize@unit{1in}% + \or + \def\bmpsize@unit{1cm}% + \else + \let\bmpsize@unit\relax + \fi + \ifcase\bmpsize@temp\relax + \or + \or + \def\bmpsize@exifdensity{1}% + \or + \def\bmpsize@exifdensity{1}% + \else + \let\bmpsize@exifdensity\bmpsize@exifdensity + \fi + }% + \ifnum\bmpsize@tag=282\relax + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@skip@four + \@bmpsize@skip@two + \@bmpsize@num@four\bmpsize@temp + \@bmpsize@read{#1}{8}{\numexpr\bmpsize@temp+\bmpsize@exifoffset\relax}% + \@bmpsize@num@four\bmpsize@pixelx + \@bmpsize@num@four\bmpsize@temp + \ifnum\bmpsize@temp=1\relax + \expandafter\@gobble + \else + \expandafter\@firstofone + \fi + {% + \edef\bmpsize@pixelxdenom{\the\numexpr\bmpsize@temp}% + }% + }% + \ifnum\bmpsize@tag=283\relax + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@skip@four + \@bmpsize@skip@two + \@bmpsize@num@four\bmpsize@temp + \@bmpsize@read{#1}{8}{\numexpr\bmpsize@temp+\bmpsize@exifoffset\relax}% + \@bmpsize@num@four\bmpsize@pixely + \@bmpsize@num@four\bmpsize@temp + \ifnum\bmpsize@temp=1\relax + \expandafter\@gobble + \else + \expandafter\@firstofone + \fi + {% + \edef\bmpsize@pixelydenom{\the\numexpr\bmpsize@temp}% + }% + }% + }% + \@bmpsize@bigendiantrue + }% + }% + }{% + \edef\bmpsize@temp{\the\numexpr\bmpsize@temp-192}% + \ifcase\bmpsize@temp\relax + \or + \or + \or + \or + \def\bmpsize@temp{-1}% + \or + \or + \or + \or + \def\bmpsize@temp{-1}% + \or + \or + \or + \or + \def\bmpsize@temp{-1}% + \or + \or + \or + \else + \def\bmpsize@temp{-1}% + \fi + \ifnum\bmpsize@temp=-1\relax + \expandafter\@gobble + \else + \expandafter\@firstofone + \fi + {% + \@bmpsize@read{#1}{4}{\numexpr\bmpsize@offset+5\relax}% + \@bmpsize@num@two\bmpsize@pixelheight + \@bmpsize@num@two\bmpsize@pixelwidth + \ifnum\bmpsize@pixelheight=0\relax + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \let\bmpsize@pixelheight\relax + \@bmpsize@stop + }% + \@bmpsize@ok + \@bmpsize@stop + }% + \@bmpsize@num@two\bmpsize@length + }% + }% + \edef\bmpsize@offset{\the\numexpr\bmpsize@offset+\bmpsize@length+2}% + }% + \@bmpsize@stop + \@nil + \@bmpsize@end +}% +%</base> +% \end{macrocode} +% \end{macro} +% +% \subsubsection{bmp} +% +%<*ignore> +%\begin{verbatim} +%begin bmp +%little-endian +% +%read 26 0 +%grab 2 -> $temp +%check streq $temp ["BM"] +%skip 12 +%% header size is 4 bytes in V3+, unknown for V1, V2, +%% known header sizes fit in 2 bytes +%num 2 -> $temp +%if numeq $temp 12 % V1 +% skip 2 +% num 2 -> $pixelwidth +% num 2 -> $pixelheight +% % no resolution entries +% ok +% stop +%fi +%if numeq $temp 64 % V2 +% skip 2 +% num 2 -> $pixelwidth +% num 2 -> $pixelheight +% % missing specification for resolution +% ok +% stop +%fi +%% V3, V4, V5 +%skip 2 +%num 4 -> $pixelwidth +%absnum 4 -> $pixelheight +%ok +%read 8 38 +%num 4 -> $pixelx +%num 4 -> $pixely +%assign {100cm} -> $unit +%end +%\end{verbatim} +%</ignore> +% \begin{macro}{\bmpsize@read@bmp} +% \begin{macrocode} +%<*base> +\def\bmpsize@read@bmp#1{% + \@bmpsize@init + \@bmpsize@bigendianfalse + \@bmpsize@read{#1}{26}{0}% + \@bmpsize@grab\bmpsize@temp{2}% + \@bmpsize@skip@two + \ifnum\pdfstrcmp{\bmpsize@temp}{424D}=\z@ + \else + \expandafter\@bmpsize@stop + \fi + \@bmpsize@skip@four + \@bmpsize@skip@four + \@bmpsize@skip@four + \@bmpsize@num@two\bmpsize@temp + \ifnum\bmpsize@temp=12\relax + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@skip@two + \@bmpsize@num@two\bmpsize@pixelwidth + \@bmpsize@num@two\bmpsize@pixelheight + \@bmpsize@ok + \@bmpsize@stop + }% + \ifnum\bmpsize@temp=64\relax + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@skip@two + \@bmpsize@num@two\bmpsize@pixelwidth + \@bmpsize@num@two\bmpsize@pixelheight + \@bmpsize@ok + \@bmpsize@stop + }% + \@bmpsize@skip@two + \@bmpsize@num@four\bmpsize@pixelwidth + \@bmpsize@absnumtrue + \@bmpsize@num@four\bmpsize@pixelheight + \@bmpsize@absnumfalse + \@bmpsize@ok + \@bmpsize@read{#1}{8}{38}% + \@bmpsize@num@four\bmpsize@pixelx + \@bmpsize@num@four\bmpsize@pixely + \def\bmpsize@unit{100cm}% + \@bmpsize@stop + \@nil + \@bmpsize@end +}% +%</base> +% \end{macrocode} +% \end{macro} +% +% \subsubsection{gif} +% +%<*ignore> +%\begin{verbatim} +%begin gif +%little-endian +% +%% Header +%read 13 0 +%grab 3 -> $temp +%check streq $temp ["GIF"] +%skip 3 % version +% +%% Logical Screen Descriptor +%num 2 -> $pixelwidth +%num 2 -> $pixelheight +%skip 2 +%num 1 -> $temp % Pixel Aspect Ratio +%if numeq $temp 0 +%else +% assign numexpr($temp + 15) -> $pixelx +% assign {64} -> $pixely +%fi +%ok +%end +%\end{verbatim} +%</ignore> +% \begin{macro}{\bmpsize@read@gif} +% \begin{macrocode} +%<*base> +\def\bmpsize@read@gif#1{% + \@bmpsize@init + \@bmpsize@bigendianfalse + \@bmpsize@read{#1}{13}{0}% + \@bmpsize@grab\bmpsize@temp{3}% + \@bmpsize@skip@two + \@bmpsize@skip@one + \ifnum\pdfstrcmp{\bmpsize@temp}{474946}=\z@ + \else + \expandafter\@bmpsize@stop + \fi + \@bmpsize@skip@two + \@bmpsize@skip@one + \@bmpsize@num@two\bmpsize@pixelwidth + \@bmpsize@num@two\bmpsize@pixelheight + \@bmpsize@skip@two + \@bmpsize@num@one\bmpsize@temp + \ifnum\bmpsize@temp=0\relax + \expandafter\@gobble + \else + \expandafter\@firstofone + \fi + {% + \edef\bmpsize@pixelx{\the\numexpr\bmpsize@temp+15}% + \def\bmpsize@pixely{64}% + }% + \@bmpsize@ok + \@bmpsize@stop + \@nil + \@bmpsize@end +}% +%</base> +% \end{macrocode} +% \end{macro} +% +% \subsubsection{tiff} +% +%<*ignore> +%\begin{verbatim} +%begin tiff +%% defaults +%assign {1in} -> $unit +% +%% Image File Header +%read 8 0 +%grab 2 -> $temp +%if streq $temp ["II"] +% little-endian +%else +% check streq $temp ["MM"] +% big-endian +%fi +%num 2 -> $temp +%check numeq $temp 42 +%num 4 -> $offset % first IFD (Image File Directory) +% +%% First IFD +%read 2 $offset +%assign numexpr($offset + 2) -> $offset +%num 2 -> $entries +%ok % must rely on checks at the end +%loop +% if numeq $entries 0 +% stop +% fi +% assign numexpr($entries - 1) -> $entries +% % entry format: +% % 2 tag +% % 2 field type +% % 4 count +% % 4 value/offset +% read 12 $offset +% assign numexpr($offset + 12) -> $offset +% num 2 -> $tag % tag +% if numeq $temp 296 % ResolutionUnit +% skip 6 % type: 3 (short), count: 1 +% num 2 -> $temp +% ifcase $temp +% or % 1 +% clear $unit +% or % 2 +% assign {1in} -> $unit +% or % 3 +% assign {1cm} -> $unit +% else +% clear $unit +% fi +% fi +% if numeq $tag 256 % ImageWidth +% skip 6 +% num 4 -> $pixelwidth +% fi +% if numeq $tag 257 % ImageLength +% skip 6 +% num 4 -> $pixelheight +% fi +% if numeq $tag 282 % XResolution +% skip 6 +% num 4 -> $temp +% read 8 $temp +% num 4 -> $pixelx +% num 4 -> $temp +% if numeq $temp 1 +% else +% assign numexpr($temp) -> $pixelxdenom +% % div $pixelx $temp -> $pixelx +% fi +% fi +% if numeq $tag 283 % YResolution +% skip 6 +% num 4 -> $temp +% read 8 $temp +% num 4 -> $pixely +% num 4 -> $temp +% if numeq $temp 1 +% else +% assign numexpr($temp) -> $pixelydenom +% % div $pixely $temp -> $pixely +% fi +% fi +%repeat +%end +%\end{verbatim} +%</ignore> +% \begin{macro}{\bmpsize@read@tiff} +% \begin{macrocode} +%<*base> +\def\bmpsize@read@tiff#1{% + \@bmpsize@init + \def\bmpsize@unit{1in}% + \@bmpsize@read{#1}{8}{0}% + \@bmpsize@grab\bmpsize@temp{2}% + \@bmpsize@skip@two + \ifnum\pdfstrcmp{\bmpsize@temp}{4949}=\z@ + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \@bmpsize@bigendianfalse + }{% + \ifnum\pdfstrcmp{\bmpsize@temp}{4D4D}=\z@ + \else + \expandafter\@bmpsize@stop + \fi + \@bmpsize@bigendiantrue + }% + \@bmpsize@num@two\bmpsize@temp + \ifnum\bmpsize@temp=42\relax + \else + \expandafter\@bmpsize@stop + \fi + \@bmpsize@num@four\bmpsize@offset + \@bmpsize@read{#1}{2}{\bmpsize@offset}% + \edef\bmpsize@offset{\the\numexpr\bmpsize@offset+2}% + \@bmpsize@num@two\bmpsize@entries + \@bmpsize@ok + \@bmpsize@loop{% + \ifnum\bmpsize@entries=0\relax + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@stop + }% + \edef\bmpsize@entries{\the\numexpr\bmpsize@entries-1}% + \@bmpsize@read{#1}{12}{\bmpsize@offset}% + \edef\bmpsize@offset{\the\numexpr\bmpsize@offset+12}% + \@bmpsize@num@two\bmpsize@tag + \ifnum\bmpsize@temp=296\relax + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@skip@four + \@bmpsize@skip@two + \@bmpsize@num@two\bmpsize@temp + \ifcase\bmpsize@temp\relax + \or + \let\bmpsize@unit\relax + \or + \def\bmpsize@unit{1in}% + \or + \def\bmpsize@unit{1cm}% + \else + \let\bmpsize@unit\relax + \fi + }% + \ifnum\bmpsize@tag=256\relax + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@skip@four + \@bmpsize@skip@two + \@bmpsize@num@four\bmpsize@pixelwidth + }% + \ifnum\bmpsize@tag=257\relax + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@skip@four + \@bmpsize@skip@two + \@bmpsize@num@four\bmpsize@pixelheight + }% + \ifnum\bmpsize@tag=282\relax + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@skip@four + \@bmpsize@skip@two + \@bmpsize@num@four\bmpsize@temp + \@bmpsize@read{#1}{8}{\bmpsize@temp}% + \@bmpsize@num@four\bmpsize@pixelx + \@bmpsize@num@four\bmpsize@temp + \ifnum\bmpsize@temp=1\relax + \expandafter\@gobble + \else + \expandafter\@firstofone + \fi + {% + \edef\bmpsize@pixelxdenom{\the\numexpr\bmpsize@temp}% + }% + }% + \ifnum\bmpsize@tag=283\relax + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@skip@four + \@bmpsize@skip@two + \@bmpsize@num@four\bmpsize@temp + \@bmpsize@read{#1}{8}{\bmpsize@temp}% + \@bmpsize@num@four\bmpsize@pixely + \@bmpsize@num@four\bmpsize@temp + \ifnum\bmpsize@temp=1\relax + \expandafter\@gobble + \else + \expandafter\@firstofone + \fi + {% + \edef\bmpsize@pixelydenom{\the\numexpr\bmpsize@temp}% + }% + }% + }% + \@bmpsize@stop + \@nil + \@bmpsize@end +}% +%</base> +% \end{macrocode} +% \end{macro} +% +% \subsubsection{pnm} +% +%<*ignore> +%\begin{verbatim} +%begin pnm +%assign {0} -> $offset +%read 3 $offset +%assign {3} -> $offset +%grab 1 -> $temp +%check streq $temp ["P"] +%grab 1 -> $temp +%check strge $temp ["1"] +%check strle $temp ["6"] +%% ensure one white space +%grab 1 -> $temp +%if iswhite $temp +%else +% stop +%fi +%loop +% % skip white space +% fillbuf +% grab 1 -> $temp +% if iswhite $temp +% else +% if streq $temp ["#"] +% % ignore comments +% loop +% fillbuf +% grab 1 -> $temp +% if streq $temp [0x0A] +% break +% else +% if streq $temp [0x0D] +% break +% fi +% fi +% repeat +% else +% pushback $temp +% break +% fi +% fi +%repeat +%assign {} -> $tempnum +%loop +% fillbuf +% grab 1 -> $temp +% if isdigit $temp +% append $tempnum $temp -> $tempnum +% else +% if iswhite $temp +% break +% else +% stop +% fi +% fi +%repeat +%assign unescapehex($tempnum) -> $pixelwidth +%loop +% fillbuf +% grab 1 -> $temp +% if iswhite $temp +% else +% pushback $temp +% break +% fi +%repeat +%assign {} -> $tempnum +%loop +% fillbuf +% grab 1 -> $temp +% if isdigit $temp +% append $tempnum $temp -> $tempnum +% else +% if iswhite $temp +% break +% else +% stop +% fi +% fi +%repeat +%assign unescapehex($tempnum) -> $pixelheight +%ok +%end +%\end{verbatim} +%</ignore> +% \begin{macro}{\bmpsize@read@pnm} +% \begin{macrocode} +%<*base> +\def\bmpsize@read@pnm#1{% + \@bmpsize@init + \def\bmpsize@offset{0}% + \@bmpsize@read{#1}{3}{\bmpsize@offset}% + \def\bmpsize@offset{3}% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \ifnum\pdfstrcmp{\bmpsize@temp}{50}=\z@ + \else + \expandafter\@bmpsize@stop + \fi + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \ifnum\pdfstrcmp{\bmpsize@temp}{31}<\z@ + \expandafter\@bmpsize@stop + \fi + \ifnum\pdfstrcmp{\bmpsize@temp}{36}>\z@ + \expandafter\@bmpsize@stop + \fi + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \ifcase 0\@bmpsize@iswhite\bmpsize@temp + \expandafter\@gobble + \else + \expandafter\@firstofone + \fi + {% + \@bmpsize@stop + }% + \@bmpsize@loop{% + \@bmpsize@fillbuf{#1}% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \ifcase 0\@bmpsize@iswhite\bmpsize@temp + \expandafter\@gobble + \else + \expandafter\@firstofone + \fi + {% + \ifnum\pdfstrcmp{\bmpsize@temp}{23}=\z@ + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \@bmpsize@loop{% + \@bmpsize@fillbuf{#1}% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \ifnum\pdfstrcmp{\bmpsize@temp}{0A}=\z@ + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \@bmpsize@break + }{% + \ifnum\pdfstrcmp{\bmpsize@temp}{0D}=\z@ + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@break + }% + }% + }% + }{% + \@bmpsize@pushback\bmpsize@temp + \@bmpsize@break + }% + }% + }% + \def\bmpsize@tempnum{}% + \@bmpsize@loop{% + \@bmpsize@fillbuf{#1}% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \ifcase 0\@bmpsize@isdigit\bmpsize@temp + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \@bmpsize@append\bmpsize@tempnum\bmpsize@tempnum\bmpsize@temp + }{% + \ifcase 0\@bmpsize@iswhite\bmpsize@temp + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \@bmpsize@break + }{% + \@bmpsize@stop + }% + }% + }% + \edef\bmpsize@pixelwidth{\pdfunescapehex{\bmpsize@tempnum}}% + \@bmpsize@loop{% + \@bmpsize@fillbuf{#1}% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \ifcase 0\@bmpsize@iswhite\bmpsize@temp + \expandafter\@gobble + \else + \expandafter\@firstofone + \fi + {% + \@bmpsize@pushback\bmpsize@temp + \@bmpsize@break + }% + }% + \def\bmpsize@tempnum{}% + \@bmpsize@loop{% + \@bmpsize@fillbuf{#1}% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \ifcase 0\@bmpsize@isdigit\bmpsize@temp + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \@bmpsize@append\bmpsize@tempnum\bmpsize@tempnum\bmpsize@temp + }{% + \ifcase 0\@bmpsize@iswhite\bmpsize@temp + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \@bmpsize@break + }{% + \@bmpsize@stop + }% + }% + }% + \edef\bmpsize@pixelheight{\pdfunescapehex{\bmpsize@tempnum}}% + \@bmpsize@ok + \@bmpsize@stop + \@nil + \@bmpsize@end +}% +%</base> +% \end{macrocode} +% \end{macro} +% +% \subsubsection{pam} +% +%<*ignore> +%\begin{verbatim} +%begin pam +%read 3 0 +%assign {3} -> $offset +%assign $offset -> $off +%grab 3 -> $temp +%check streq $temp ["P7" 0x0A] +%loop +% fillbuf +% grab 1 -> $temp +% if iswhite $temp +% % ignore white space +% assign numexpr($off + 1) -> $off +% else +% if streq $temp ["#"] +% % ignore comment line +% assign numexpr($off + 1) -> $off +% loop +% fillbuf +% grab 1 -> $temp +% assign numexpr($off + 1) -> $off +% if streq $temp [0x0A] +% break +% fi +% repeat +% else +% read 6 $off +% assign numexpr($off + 6) -> $offset +% grab 5 -> $head +% if streq $head ["WIDTH"] +% assign numexpr($off + 5) -> $off +% % skip white space +% loop +% fillbuf +% grab 1 -> $temp +% if iswhite $temp +% assign numexpr($off + 1) -> $off +% else +% if isdigit $temp +% assign numexpr($off + 1) -> $off +% break +% else +% % error +% stop +% fi +% fi +% repeat +% % read number +% assign $temp -> $tempnum +% loop +% fillbuf +% grab 1 -> $temp +% if isdigit $temp +% assign numexpr($off + 1) -> $off +% append $tempnum $temp -> $tempnum +% else +% pushback $temp +% break +% fi +% repeat +% % skip to end of line +% loop +% fillbuf +% grab 1 -> $temp +% assign numexpr($off + 1) -> $off +% if streq $temp [0x0A] +% break +% fi +% repeat +% assign unescapehex($tempnum) -> $pixelwidth +% else +% grab 1 -> $temp +% append $head $temp -> $head +% if streq $head ["ENDHDR"] +% % last header line +% ok +% stop +% else +% if streq $head ["HEIGHT"] +% assign numexpr($off + 6) -> $off +% % skip white space +% loop +% fillbuf +% grab 1 -> $temp +% if iswhite $temp +% assign numexpr($off + 1) -> $off +% else +% if isdigit $temp +% assign numexpr($off + 1) -> $off +% break +% else +% % error +% stop +% fi +% fi +% repeat +% % read number +% assign $temp -> $tempnum +% loop +% fillbuf +% grab 1 -> $temp +% if isdigit $temp +% assign numexpr($off + 1) -> $off +% append $tempnum $temp -> $tempnum +% else +% pushback $temp +% break +% fi +% repeat +% % skip to end of line +% loop +% fillbuf +% grab 1 -> $temp +% assign numexpr($off + 1) -> $off +% if streq $temp [0x0A] +% break +% fi +% repeat +% assign unescapehex($tempnum) -> $pixelheight +% else +% % ignore unknown header line +% pushback $head +% loop +% fillbuf +% grab 1 -> $temp +% assign numexpr($off + 1) -> $off +% if streq $temp [0x0A] +% break +% fi +% repeat +% fi +% fi +% fi +% fi +% fi +%repeat +%end +%\end{verbatim} +%</ignore> +% \begin{macro}{\bmpsize@read@pam} +% \begin{macrocode} +%<*base> +\def\bmpsize@read@pam#1{% + \@bmpsize@init + \@bmpsize@read{#1}{3}{0}% + \def\bmpsize@offset{3}% + \let\bmpsize@off\bmpsize@offset + \@bmpsize@grab\bmpsize@temp{3}% + \@bmpsize@skip@two + \@bmpsize@skip@one + \ifnum\pdfstrcmp{\bmpsize@temp}{50370A}=\z@ + \else + \expandafter\@bmpsize@stop + \fi + \@bmpsize@loop{% + \@bmpsize@fillbuf{#1}% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \ifcase 0\@bmpsize@iswhite\bmpsize@temp + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \edef\bmpsize@off{\the\numexpr\bmpsize@off+1}% + }{% + \ifnum\pdfstrcmp{\bmpsize@temp}{23}=\z@ + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \edef\bmpsize@off{\the\numexpr\bmpsize@off+1}% + \@bmpsize@loop{% + \@bmpsize@fillbuf{#1}% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \edef\bmpsize@off{\the\numexpr\bmpsize@off+1}% + \ifnum\pdfstrcmp{\bmpsize@temp}{0A}=\z@ + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@break + }% + }% + }{% + \@bmpsize@read{#1}{6}{\bmpsize@off}% + \edef\bmpsize@offset{\the\numexpr\bmpsize@off+6}% + \@bmpsize@grab\bmpsize@head{5}% + \@bmpsize@skip@four + \@bmpsize@skip@one + \ifnum\pdfstrcmp{\bmpsize@head}{5749445448}=\z@ + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \edef\bmpsize@off{\the\numexpr\bmpsize@off+5}% + \@bmpsize@loop{% + \@bmpsize@fillbuf{#1}% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \ifcase 0\@bmpsize@iswhite\bmpsize@temp + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \edef\bmpsize@off{\the\numexpr\bmpsize@off+1}% + }{% + \ifcase 0\@bmpsize@isdigit\bmpsize@temp + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \edef\bmpsize@off{\the\numexpr\bmpsize@off+1}% + \@bmpsize@break + }{% + \@bmpsize@stop + }% + }% + }% + \let\bmpsize@tempnum\bmpsize@temp + \@bmpsize@loop{% + \@bmpsize@fillbuf{#1}% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \ifcase 0\@bmpsize@isdigit\bmpsize@temp + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \edef\bmpsize@off{\the\numexpr\bmpsize@off+1}% + \@bmpsize@append\bmpsize@tempnum\bmpsize@tempnum\bmpsize@temp + }{% + \@bmpsize@pushback\bmpsize@temp + \@bmpsize@break + }% + }% + \@bmpsize@loop{% + \@bmpsize@fillbuf{#1}% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \edef\bmpsize@off{\the\numexpr\bmpsize@off+1}% + \ifnum\pdfstrcmp{\bmpsize@temp}{0A}=\z@ + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@break + }% + }% + \edef\bmpsize@pixelwidth{\pdfunescapehex{\bmpsize@tempnum}}% + }{% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \@bmpsize@append\bmpsize@head\bmpsize@head\bmpsize@temp + \ifnum\pdfstrcmp{\bmpsize@head}{454E44484452}=\z@ + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \@bmpsize@ok + \@bmpsize@stop + }{% + \ifnum\pdfstrcmp{\bmpsize@head}{484549474854}=\z@ + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \edef\bmpsize@off{\the\numexpr\bmpsize@off+6}% + \@bmpsize@loop{% + \@bmpsize@fillbuf{#1}% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \ifcase 0\@bmpsize@iswhite\bmpsize@temp + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \edef\bmpsize@off{\the\numexpr\bmpsize@off+1}% + }{% + \ifcase 0\@bmpsize@isdigit\bmpsize@temp + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \edef\bmpsize@off{\the\numexpr\bmpsize@off+1}% + \@bmpsize@break + }{% + \@bmpsize@stop + }% + }% + }% + \let\bmpsize@tempnum\bmpsize@temp + \@bmpsize@loop{% + \@bmpsize@fillbuf{#1}% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \ifcase 0\@bmpsize@isdigit\bmpsize@temp + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \edef\bmpsize@off{\the\numexpr\bmpsize@off+1}% + \@bmpsize@append\bmpsize@tempnum\bmpsize@tempnum\bmpsize@temp + }{% + \@bmpsize@pushback\bmpsize@temp + \@bmpsize@break + }% + }% + \@bmpsize@loop{% + \@bmpsize@fillbuf{#1}% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \edef\bmpsize@off{\the\numexpr\bmpsize@off+1}% + \ifnum\pdfstrcmp{\bmpsize@temp}{0A}=\z@ + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@break + }% + }% + \edef\bmpsize@pixelheight{\pdfunescapehex{\bmpsize@tempnum}}% + }{% + \@bmpsize@pushback\bmpsize@head + \@bmpsize@loop{% + \@bmpsize@fillbuf{#1}% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \edef\bmpsize@off{\the\numexpr\bmpsize@off+1}% + \ifnum\pdfstrcmp{\bmpsize@temp}{0A}=\z@ + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@break + }% + }% + }% + }% + }% + }% + }% + }% + \@bmpsize@stop + \@nil + \@bmpsize@end +}% +%</base> +% \end{macrocode} +% \end{macro} +% +% \subsubsection{xpm} +% +%<*ignore> +%\begin{verbatim} +%begin xpm +%read 9 0 +%grab 9 -> $temp +%assign {9} -> $offset +%check streq $temp ["/* XPM */"] +%loop +% fillbuf +% grab 1 -> $temp +% if streq $temp [0x22] % " +% break +% fi +% if streq $temp ["/"] +% fillbuf +% grab 1 -> $temp +% if streq $temp ["*"] +% % look for end of C comment +% loop +% fillbuf +% grab 1 -> $temp +% if streq $temp ["*"] +% loop +% fillbuf +% grab 1 -> $temp +% if streq $temp ["/"] +% break +% fi +% if streq $temp ["*"] +% else +% break +% fi +% repeat +% if streq $temp ["/"] +% break +% fi +% fi +% repeat +% fi +% fi +%repeat +%% width +%assign {} -> $tempnum +%loop +% fillbuf +% grab 1 -> $temp +% if iswhite $temp +% else +% if isdigit $temp +% append $tempnum $temp -> $tempnum +% break +% else +% stop +% fi +% fi +%repeat +%loop +% fillbuf +% grab 1 -> $temp +% if isdigit $temp +% append $tempnum $temp -> $tempnum +% else +% if iswhite $temp +% break +% else +% stop +% fi +% fi +%repeat +%assign unescapehex($tempnum) -> $pixelwidth +%% height +%assign {} -> $tempnum +%loop +% fillbuf +% grab 1 -> $temp +% if iswhite $temp +% else +% if isdigit $temp +% append $tempnum $temp -> $tempnum +% break +% else +% stop +% fi +% fi +%repeat +%loop +% fillbuf +% grab 1 -> $temp +% if isdigit $temp +% append $tempnum $temp -> $tempnum +% else +% if iswhite $temp +% break +% else +% stop +% fi +% fi +%repeat +%assign unescapehex($tempnum) -> $pixelheight +%ok +%end +%\end{verbatim} +%</ignore> +% \begin{macro}{\bmpsize@read@xpm} +% \begin{macrocode} +%<*base> +\def\bmpsize@read@xpm#1{% + \@bmpsize@init + \@bmpsize@read{#1}{9}{0}% + \@bmpsize@grab\bmpsize@temp{9}% + \@bmpsize@skip@four + \@bmpsize@skip@four + \@bmpsize@skip@one + \def\bmpsize@offset{9}% + \ifnum\pdfstrcmp{\bmpsize@temp}{2F2A2058504D202A2F}=\z@ + \else + \expandafter\@bmpsize@stop + \fi + \@bmpsize@loop{% + \@bmpsize@fillbuf{#1}% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \ifnum\pdfstrcmp{\bmpsize@temp}{22}=\z@ + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@break + }% + \ifnum\pdfstrcmp{\bmpsize@temp}{2F}=\z@ + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@fillbuf{#1}% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \ifnum\pdfstrcmp{\bmpsize@temp}{2A}=\z@ + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@loop{% + \@bmpsize@fillbuf{#1}% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \ifnum\pdfstrcmp{\bmpsize@temp}{2A}=\z@ + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@loop{% + \@bmpsize@fillbuf{#1}% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \ifnum\pdfstrcmp{\bmpsize@temp}{2F}=\z@ + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@break + }% + \ifnum\pdfstrcmp{\bmpsize@temp}{2A}=\z@ + \expandafter\@gobble + \else + \expandafter\@firstofone + \fi + {% + \@bmpsize@break + }% + }% + \ifnum\pdfstrcmp{\bmpsize@temp}{2F}=\z@ + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@break + }% + }% + }% + }% + }% + }% + \def\bmpsize@tempnum{}% + \@bmpsize@loop{% + \@bmpsize@fillbuf{#1}% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \ifcase 0\@bmpsize@iswhite\bmpsize@temp + \expandafter\@gobble + \else + \expandafter\@firstofone + \fi + {% + \ifcase 0\@bmpsize@isdigit\bmpsize@temp + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \@bmpsize@append\bmpsize@tempnum\bmpsize@tempnum\bmpsize@temp + \@bmpsize@break + }{% + \@bmpsize@stop + }% + }% + }% + \@bmpsize@loop{% + \@bmpsize@fillbuf{#1}% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \ifcase 0\@bmpsize@isdigit\bmpsize@temp + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \@bmpsize@append\bmpsize@tempnum\bmpsize@tempnum\bmpsize@temp + }{% + \ifcase 0\@bmpsize@iswhite\bmpsize@temp + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \@bmpsize@break + }{% + \@bmpsize@stop + }% + }% + }% + \edef\bmpsize@pixelwidth{\pdfunescapehex{\bmpsize@tempnum}}% + \def\bmpsize@tempnum{}% + \@bmpsize@loop{% + \@bmpsize@fillbuf{#1}% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \ifcase 0\@bmpsize@iswhite\bmpsize@temp + \expandafter\@gobble + \else + \expandafter\@firstofone + \fi + {% + \ifcase 0\@bmpsize@isdigit\bmpsize@temp + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \@bmpsize@append\bmpsize@tempnum\bmpsize@tempnum\bmpsize@temp + \@bmpsize@break + }{% + \@bmpsize@stop + }% + }% + }% + \@bmpsize@loop{% + \@bmpsize@fillbuf{#1}% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \ifcase 0\@bmpsize@isdigit\bmpsize@temp + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \@bmpsize@append\bmpsize@tempnum\bmpsize@tempnum\bmpsize@temp + }{% + \ifcase 0\@bmpsize@iswhite\bmpsize@temp + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \@bmpsize@break + }{% + \@bmpsize@stop + }% + }% + }% + \edef\bmpsize@pixelheight{\pdfunescapehex{\bmpsize@tempnum}}% + \@bmpsize@ok + \@bmpsize@stop + \@nil + \@bmpsize@end +}% +%</base> +% \end{macrocode} +% \end{macro} +% +% \subsubsection{tga} +% +%<*ignore> +%\begin{verbatim} +%begin tga +%little-endian +% % id length (1 byte) +%read 16 1 +%grab 1 -> $temp % color map type (1 byte), values: 0, 1 +%if streq $temp [0x00] +%else +% if streq $temp [0x01] +% else +% stop +% fi +%fi +%skip 10 % image type (1 byte) +% % color map specification (5 bytes) +% % x origin (2 bytes) +% % y origin (2 bytes) +%num 2 -> $pixelwidth % image width +%num 2 -> $pixelheight % image height +%ok +%% TGA File Footer +%size 26 -> $temp +%read 26 numexpr($temp - 26) +%num 4 -> $offset % the extension area offset +%skip 4 % the developer directory offset +%grab 18 -> $temp % the signature, ".", 0x00 +%if streq $temp ["TRUEVISION-XFILE." 0x00] +%else +% stop +%fi +%if numeq $offset 0 +% stop % no extension area +%fi +%read 4 numexpr($offset + 474) % pixel aspect ratio (4 bytes) +%num 2 -> $pixelx % pixel ratio numerator (pixel width) +%num 2 -> $pixely % pixel ratio denominator (pixel height) +%if numeq $pixely 0 % no pixel aspect ratio +% clear $pixelx +% clear $pixely +%fi +%end +%\end{verbatim} +%</ignore> +% \begin{macro}{\bmpsize@read@tga} +% \begin{macrocode} +%<*base> +\def\bmpsize@read@tga#1{% + \@bmpsize@init + \@bmpsize@bigendianfalse + \@bmpsize@read{#1}{16}{1}% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \ifnum\pdfstrcmp{\bmpsize@temp}{00}=\z@ + \expandafter\@gobble + \else + \expandafter\@firstofone + \fi + {% + \ifnum\pdfstrcmp{\bmpsize@temp}{01}=\z@ + \expandafter\@gobble + \else + \expandafter\@firstofone + \fi + {% + \@bmpsize@stop + }% + }% + \@bmpsize@skip@four + \@bmpsize@skip@four + \@bmpsize@skip@two + \@bmpsize@num@two\bmpsize@pixelwidth + \@bmpsize@num@two\bmpsize@pixelheight + \@bmpsize@ok + \@bmpsize@size{#1}{26}\bmpsize@temp \@bmpsize@read{#1}{26}{\numexpr\bmpsize@temp-26\relax}% + \@bmpsize@num@four\bmpsize@offset + \@bmpsize@skip@four + \@bmpsize@grab\bmpsize@temp{18}% + \@bmpsize@skip@four + \@bmpsize@skip@four + \@bmpsize@skip@four + \@bmpsize@skip@four + \@bmpsize@skip@two + \ifnum\pdfstrcmp{\bmpsize@temp}{54525545564953494F4E2D5846494C452E00}=\z@ + \expandafter\@gobble + \else + \expandafter\@firstofone + \fi + {% + \@bmpsize@stop + }% + \ifnum\bmpsize@offset=0\relax + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@stop + }% + \@bmpsize@read{#1}{4}{\numexpr\bmpsize@offset+474\relax}% + \@bmpsize@num@two\bmpsize@pixelx + \@bmpsize@num@two\bmpsize@pixely + \ifnum\bmpsize@pixely=0\relax + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \let\bmpsize@pixelx\relax + \let\bmpsize@pixely\relax + }% + \@bmpsize@stop + \@nil + \@bmpsize@end +}% +%</base> +% \end{macrocode} +% \end{macro} +% +% \subsubsection{pcx} +% +%<*ignore> +%\begin{verbatim} +%begin pcx +%little-endian +%read 16 0 +%grab 1 -> $temp % manufacturer +%check streq $temp [0x0A] +%skip 1 % version +%num 1 -> $temp % encoding +%check numeq $temp 1 +%skip 1 % bits per pixel +%num 2 -> $pixelwidth % x_min +%num 2 -> $pixelheight % y_min +%num 2 -> $temp % x_max +%assign numexpr($temp - $pixelwidth + 1) -> $pixelwidth +%num 2 -> $temp % y_max +%assign numexpr($temp - $pixelheight + 1) -> $pixelheight +%check numgt $pixelwidth 0 +%check numgt $pixelheight 0 +%ok +%num 2 -> $pixelx % horizontal resolution in DPI +%num 2 -> $pixely % vertical resolution in DPI +%assign {1in} -> $unit +%end +%\end{verbatim} +%</ignore> +% \begin{macro}{\bmpsize@read@pcx} +% \begin{macrocode} +%<*base> +\def\bmpsize@read@pcx#1{% + \@bmpsize@init + \@bmpsize@bigendianfalse + \@bmpsize@read{#1}{16}{0}% + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \ifnum\pdfstrcmp{\bmpsize@temp}{0A}=\z@ + \else + \expandafter\@bmpsize@stop + \fi + \@bmpsize@skip@one + \@bmpsize@num@one\bmpsize@temp + \ifnum\bmpsize@temp=1\relax + \else + \expandafter\@bmpsize@stop + \fi + \@bmpsize@skip@one + \@bmpsize@num@two\bmpsize@pixelwidth + \@bmpsize@num@two\bmpsize@pixelheight + \@bmpsize@num@two\bmpsize@temp + \edef\bmpsize@pixelwidth{\the\numexpr\bmpsize@temp-\bmpsize@pixelwidth+1}% + \@bmpsize@num@two\bmpsize@temp + \edef\bmpsize@pixelheight{\the\numexpr\bmpsize@temp-\bmpsize@pixelheight+1}% + \ifnum\bmpsize@pixelwidth>0\relax + \else + \expandafter\@bmpsize@stop + \fi + \ifnum\bmpsize@pixelheight>0\relax + \else + \expandafter\@bmpsize@stop + \fi + \@bmpsize@ok + \@bmpsize@num@two\bmpsize@pixelx + \@bmpsize@num@two\bmpsize@pixely + \def\bmpsize@unit{1in}% + \@bmpsize@stop + \@nil + \@bmpsize@end +}% +%</base> +% \end{macrocode} +% \end{macro} +% +% \subsubsection{msp} +% +%<*ignore> +%\begin{verbatim} +%begin msp +%little-endian +% +%read 16 0 +% +%% header 4 +%grab 4 -> $temp +%if streq $temp ["DanM"] +%else +% check streq $temp ["LinS"] +%fi +%num 2 -> $pixelwidth +%num 2 -> $pixelheight +%ok +%num 2 -> $pixelx % x_asp +%num 2 -> $pixely % y_asp +%assign {1in} -> $unit % guessing +%if numeq $pixelx 0 +% num 2 -> $pixelx % x_asp_prn +% num 2 -> $pixely % y_asp_prn +%fi +%% num 2 % width_prn +%% num 2 % height_prn +%end +%\end{verbatim} +%</ignore> +% \begin{macro}{\bmpsize@read@msp} +% \begin{macrocode} +%<*base> +\def\bmpsize@read@msp#1{% + \@bmpsize@init + \@bmpsize@bigendianfalse + \@bmpsize@read{#1}{16}{0}% + \@bmpsize@grab\bmpsize@temp{4}% + \@bmpsize@skip@four + \ifnum\pdfstrcmp{\bmpsize@temp}{44616E4D}=\z@ + \expandafter\@gobble + \else + \expandafter\@firstofone + \fi + {% + \ifnum\pdfstrcmp{\bmpsize@temp}{4C696E53}=\z@ + \else + \expandafter\@bmpsize@stop + \fi + }% + \@bmpsize@num@two\bmpsize@pixelwidth + \@bmpsize@num@two\bmpsize@pixelheight + \@bmpsize@ok + \@bmpsize@num@two\bmpsize@pixelx + \@bmpsize@num@two\bmpsize@pixely + \def\bmpsize@unit{1in}% + \ifnum\bmpsize@pixelx=0\relax + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \@bmpsize@num@two\bmpsize@pixelx + \@bmpsize@num@two\bmpsize@pixely + }% + \@bmpsize@stop + \@nil + \@bmpsize@end +}% +%</base> +% \end{macrocode} +% \end{macro} +% +% \subsubsection{sgi} +% +%\begin{verbatim} +%begin sgi +%big-endian +%read 10 0 +%grab 2 -> $temp +%check streq $temp [0x01 0xDA] % magic: 474 decimal +%grab 1 -> $temp % storage: 0 or 1 +%check numge $temp 0 +%check numle $temp 1 +%skip 2 % bpc, dimension +%num 2 -> $pixelwidth +%num 2 -> $pixelheight +%ok +%end +%\end{verbatim} +% \begin{macro}{\bmpsize@read@sgi} +% \begin{macrocode} +%<*base> +\def\bmpsize@read@sgi#1{% + \@bmpsize@init + \@bmpsize@bigendiantrue + \@bmpsize@read{#1}{10}{0}% + \@bmpsize@grab\bmpsize@temp{2}% + \@bmpsize@skip@two + \ifnum\pdfstrcmp{\bmpsize@temp}{01DA}=\z@ + \else + \expandafter\@bmpsize@stop + \fi + \@bmpsize@grab\bmpsize@temp{1}% + \@bmpsize@skip@one + \ifnum\bmpsize@temp<0\relax + \expandafter\@bmpsize@stop + \fi + \ifnum\bmpsize@temp>1\relax + \expandafter\@bmpsize@stop + \fi + \@bmpsize@skip@two + \@bmpsize@num@two\bmpsize@pixelwidth + \@bmpsize@num@two\bmpsize@pixelheight + \@bmpsize@ok + \@bmpsize@stop + \@nil + \@bmpsize@end +}% +%</base> +% \end{macrocode} +% \end{macro} +% +% \subsection{Package \xpackage{bmpsize}} +% +% \begin{macrocode} +%<*package> +\ProvidesPackage{bmpsize}% + [2006/08/24 v1.0 Extract size and resolution data from bitmap files (HO)] +\RequirePackage{ifpdf} +\ifpdf + \PackageInfo{bmpsize}{Superseded by pdfTeX in PDF mode}% + \expandafter\endinput +\fi +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname pdffiledump\endcsname\relax + \PackageError{bmpsize}{% + You need pdfTeX 1.30.0 or newer% + }{Package loading is aborted.}% + \expandafter\endinput +\fi + +\RequirePackage{graphics} +\RequirePackage{keyval} +\RequirePackage{bmpsize-base} + +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname PackageWarning\endcsname\relax + \def\@bmpsize@warning#1#2{% + \begingroup + \newlinechar=10 % + \def\MessageBreak{% + ^^J% + (bmpsize) % + \space\space\space\space + \space\space\space\space + \space\space\space\space + \space\space\space + }% + \immediate\write16{% + Package bmpsize Warning: #2 % + on input line \the\inputlineno.% + }% + \endgroup + }% +\else + \def\@bmpsize@warning{\PackageWarning{bmpsize}}% +\fi + +\InputIfFileExists{bmpsize-\Gin@driver}{}{} + +\define@key{Gin}{bmpsizefast}[true]{% + \expandafter\ifx\csname if#1\expandafter\endcsname\csname iftrue\endcsname + \@bmpsize@fasttrue + \else + \@bmpsize@fastfalse + \fi +} +\define@key{Gin}{resolutionunit}{% + \def\bmpsize@unit@default{#1}% +} +\begingroup + \def\x#1{\endgroup + \define@key{Gin}{resolution}{% + \@bmpsize@read@resolution\@bmpsize@user@resolutiontrue##1#1#1\@nil + }% + \define@key{Gin}{defaultresolution}{% + \@bmpsize@read@resolution\@bmpsize@user@resolutionfalse##1#1#1\@nil + }% + }% +\x{ } +\def\@bmpsize@read@resolution#1#2 #3 #4\@nil{% + \ifcase 0\ifx\\#2\\1\fi + \ifnum\pdfstrcmp{#2}{\Gin@exclamation}=\z@ + \ifx\\#3\\1\fi + \ifnum\pdfstrcmp{#3}{\Gin@exclamation}=\z@ + 1% + \fi + \fi + \ifcase\pdfstrcmp{#2}{\Gin@exclamation}\relax + \let\bmpsize@pixelx@default\Gin@exclamation + \else + \edef\bmpsize@pixelx@default{#2}% + \fi + \ifcase\pdfstrcmp{#3}{\Gin@exclamation}\relax + \let\bmpsize@pixely@default\Gin@exclamation + \else + \ifx\\#3\\% + \let\bmpsize@pixely@default\bmpsize@pixelx@default + \else + \edef\bmpsize@pixely@default{#3}% + \fi + \fi + #1% + \else + \PackageError{bmpsize}{% + Wrong syntax for key (default)resolution% + }{% + See package documentation for correct syntax.% + }% + \fi +} +\newcommand*{\bmpsizesetup}{\setkeys{Gin}} + +\let\@bmpsize@org@setfile\Gin@setfile +\def\Gin@setfile#1#2#3{% + \ifcase\pdfstrcmp{#1}{bmp}\relax + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + {% + \bmpsize@okfalse + \edef\bmpsize@ext{\ifx\Gin@ext\relax\Gin@eext\else\Gin@ext\fi}% + \edef\bmpsize@file{\Gin@base\bmpsize@ext}% + \edef\@bmpsize@temp{\bmpsize@ext}% + \@ifundefined{bmpsize@read@\@bmpsize@temp}{% + \@ifundefined{bmpsize@map@\@bmpsize@temp}{}{% + \expandafter\let\expandafter\@bmpsize@temp + \csname bmpsize@map@\@bmpsize@temp\endcsname + }% + }{}% + \@ifundefined{bmpsize@read@\@bmpsize@temp}{% + }{% + \csname bmpsize@read@\@bmpsize@temp\endcsname\bmpsize@file + }% + \ifbmpsize@ok + \else + \@for\@bmpsize@temp:=\bmpsize@types\do{% + \ifbmpsize@ok + \else + \csname bmpsize@read@\@bmpsize@temp\endcsname\bmpsize@file + \fi + }% + \fi + \ifbmpsize@ok + \ifGin@bbox + \@ifundefined{Gin@vllx}{% + \@bmpsize@warning{Explicit bounding box is ignored}% + }{% + \ifx\Gin@viewport@code\relax + \def\Gin@ollx{0}% + \let\Gin@olly\Gin@ollx + \let\Gin@ourx\bmpsize@width + \let\Gin@oury\bmpsize@height + \let\Gin@vllx\Gin@llx + \let\Gin@vlly\Gin@lly + \let\Gin@vurx\Gin@urx + \let\Gin@vury\Gin@ury + \let\Gin@viewport@code\Gin@viewport + \@bmpsize@warning{% + Explicit bounding box replaced by\MessageBreak + viewport setting + }% + \else + \@bmpsize@warning{Explicit bounding box is ignored}% + \fi + }% + \fi + \def\Gin@llx{0}% + \def\Gin@lly{0}% + \let\Gin@urx\bmpsize@width + \let\Gin@ury\bmpsize@height + \Gin@bboxtrue + \else + \PackageInfo{bmpsize}{Unknown image type of \bmpsize@file}% + \fi + }% + \@bmpsize@org@setfile{#1}{#2}{#3}% +} +\newcommand*{\bmpsize@ext@type}[1]{% + \@namedef{bmpsize@map@#1}% +} +\bmpsize@ext@type{.jpg}{jpg} +\bmpsize@ext@type{.jpe}{jpg} +\bmpsize@ext@type{.jfif}{jpg} +\bmpsize@ext@type{.jpeg}{jpg} +\bmpsize@ext@type{.tif}{tiff} +\bmpsize@ext@type{.tiff}{tiff} +\bmpsize@ext@type{.pcx}{pcx} +\bmpsize@ext@type{.msp}{msp} +\bmpsize@ext@type{.bmp}{bmp} +\bmpsize@ext@type{.png}{png} +\bmpsize@ext@type{.pnm}{pnm} +\bmpsize@ext@type{.pbm}{pnm} +\bmpsize@ext@type{.pgm}{pnm} +\bmpsize@ext@type{.ppm}{pnm} +\bmpsize@ext@type{.pam}{pam} +\bmpsize@ext@type{.xpm}{xpm} +\bmpsize@ext@type{.gif}{gif} +\bmpsize@ext@type{.tga}{tga} +\bmpsize@ext@type{.sgi}{sgi} +%</package> +% \end{macrocode} +% +% \subsection{Drivers} +% +% \subsubsection{dvips} +% +% Identification. +% \begin{macrocode} +%<*dvips> +\ProvidesFile{bmpsize-dvips.def}% + [2006/08/24 v1.0 Graphics bitmap driver for dvips (HO)] +% \end{macrocode} +% Ensure correct catcodes. +% \begin{macrocode} +\expandafter\edef\csname @bmpsize@driver@catcodes\endcsname{% + \catcode44 \the\catcode44 % , + \catcode58 \the\catcode58 % : + \catcode60 \the\catcode60 % < + \catcode61 \the\catcode61 % = + \catcode62 \the\catcode62 % > + \catcode64 \the\catcode64 % @ +} +\catcode64 11 % +\@makeother\, +\@makeother\: +\@makeother\< +\@makeother\= +\@makeother\> +% \end{macrocode} +% \begin{macro}{\Ginclude@bmp} +% Added features: support for viewport/trim and clip. +% \begin{macrocode} +\def\Ginclude@bmp#1{% + \message{<#1>}% + \raise\Gin@req@height + \hbox to\Gin@req@width{% +% \end{macrocode} +% Clipping support. +% \begin{macrocode} + \ifGin@clip + \vbox to\z@{% + \special{ps:gsave currentpoint}% + \kern\Gin@req@height + \hbox to\z@{% + \kern\Gin@req@width + \special{ps:% + currentpoint + newpath + 3 index 3 index moveto + 1 index 3 index lineto + 2 copy lineto + exch pop exch pop + lineto + closepath + clip + }% + \hss + }% + \vss + }% + \fi +% \end{macrocode} +% Support for viewport/trim. The original bounding box is +% `0 0 width height'. If package \xpackage{bmpsize} is used +% and the image has been recognized, then the original width +% and height are known (\cs{bmpsize@width}, \cs{bmpsize@height}). +% Otherwise we try the saved values \cs{Gin@ourx} and \cs{Gin@oury}. +% This guessing will fail, if options viewport and trim are used +% both or several times. This is a deficiency of package {graphicx}. +% One of options viewport and trim should be used at most once. +% \begin{macrocode} + \@ifundefined{Gin@ollx}{% + \dimen@\z@ + }{% + \ifx\Gin@scalex\Gin@exclamation + \let\Gin@scalex\Gin@scaley + \fi + \ifx\Gin@scaley\Gin@exclamation + \let\Gin@scaley\Gin@scalex + \fi + \@ifundefined{bmpsize@width}{% + \let\bmpsize@width\Gin@ourx + \let\bmpsize@height\Gin@oury + }{}% + \dimen@=\Gin@llx bp\relax + \dimen@=\Gin@scalex\dimen@ + \kern-\dimen@ + \advance\Gin@req@width\dimen@ + \dimen@=\bmpsize@width bp\relax + \advance\dimen@ by -\Gin@urx bp\relax + \dimen@=\Gin@scalex\dimen@ + \advance\Gin@req@width\dimen@ + \dimen@=\Gin@lly bp\relax + \dimen@=\Gin@scaley\dimen@ + \advance\Gin@req@height\dimen@ + \dimen@=\bmpsize@height bp\relax + \advance\dimen@ by -\Gin@ury bp\relax + \dimen@=\Gin@scaley\dimen@ + \advance\Gin@req@height\dimen@ + }% + \ifdim\dimen@=\z@ + \else + \vbox to\z@\bgroup + \kern-\dimen@ + \fi +% \end{macrocode} +% The special for the image. +% \begin{macrocode} + \special{em:graph #1,\the\Gin@req@width,\the\Gin@req@height}% + \ifdim\dimen@=\z@ + \else + \vss + \egroup + \fi + \ifGin@clip + \special{ps::grestore}% + \fi + \hss + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\@bmpsize@driver@catcodes +%</dvips> +% \end{macrocode} +% +% \subsubsection{dvipdfm} +% +% Identification. +% \begin{macrocode} +%<*dvipdfm> +\ProvidesFile{bmpsize-dvipdfm.def}% + [2006/08/24 v1.0 Graphics bitmap driver for dvipdfm (HO)] +% \end{macrocode} +% Ensure correct catcodes. +% \begin{macrocode} +\expandafter\edef\csname @bmpsize@driver@catcodes\endcsname{% + \catcode44 \the\catcode44 % , + \catcode46 \the\catcode46 % . + \catcode58 \the\catcode58 % : + \catcode60 \the\catcode60 % < + \catcode61 \the\catcode61 % = + \catcode62 \the\catcode62 % > + \catcode64 \the\catcode64 % @ +} +\catcode64 11 % +\@makeother\, +\@makeother\. +\@makeother\: +\@makeother\< +\@makeother\= +\@makeother\> +% \end{macrocode} +% Counter resource to generate unique names for xform objects. +% \begin{macrocode} +\@ifundefined{@bmpsize@count}{% + \csname newcount\endcsname\@bmpsize@count + \@bmpsize@count=\z@ +}{} +% \end{macrocode} +% The file name is given as PDF string in the image special. +% If we have \pdfTeX\ with \cs{pdfescapestring} we use it. +% \begin{macro}{\@bmpsize@pdfescapestring} +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname pdfescapestring\endcsname\relax + \def\@bmpsize@pdfescapestring#1{#1}% +\else + \let\@bmpsize@pdfescapestring\pdfescapestring +\fi +% \end{macrocode} +% \end{macro} +% The size of reused images of dvipdfm 0.13.2c is 1bp. +% Thus the reused image must be scaled to the requested +% width and height. The factor is just the conversion +% from pt to bp (72/72.27). +% \begin{macro}{\bmpsize@dvipdfm@factor} +% \begin{macrocode} +\@ifundefined{bmpsize@dvipdfm@factor}{% + \def\bmpsize@dvipdfm@factor{.99626}% +}{} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Ginclude@bmp} +% Added features: support for viewport/trim, clip, and image reuse. +% \begin{macrocode} +\def\Ginclude@bmp#1{% + \message{<#1>}% +% \end{macrocode} +% Clip support is achieved by putting the image inside +% a xform object. These xform objects are automatically clipped +% when they are used. +% \begin{macrocode} + \ifGin@clip + \global\advance\@bmpsize@count\@ne + \edef\@bmpsize@clip@name{@CLIP@\the\@bmpsize@count}% + \special{% + pdf:bxobj \@bmpsize@clip@name\space + width \the\Gin@req@width\space + height \the\Gin@req@height + }% + \fi +% \end{macrocode} +% Support for viewport/trim. +% \begin{macrocode} + \hbox to \z@{% + \@ifundefined{Gin@ollx}{% + \dimen@\z@ + }{% + \ifx\Gin@scalex\Gin@exclamation + \let\Gin@scalex\Gin@scaley + \fi + \ifx\Gin@scaley\Gin@exclamation + \let\Gin@scaley\Gin@scalex + \fi + \@ifundefined{bmpsize@width}{% + \let\bmpsize@width\Gin@ourx + \let\bmpsize@height\Gin@oury + }{}% + \dimen@=\Gin@llx bp\relax + \dimen@=\Gin@scalex\dimen@ + \kern-\dimen@ + \advance\Gin@req@width\dimen@ + \dimen@=\bmpsize@width bp\relax + \advance\dimen@ by -\Gin@urx bp\relax + \dimen@=\Gin@scalex\dimen@ + \advance\Gin@req@width\dimen@ + \dimen@=\bmpsize@height bp\relax + \advance\dimen@ by -\Gin@ury bp\relax + \dimen@=\Gin@scaley\dimen@ + \advance\Gin@req@height\dimen@ + \dimen@=\Gin@lly bp\relax + \dimen@=\Gin@scaley\dimen@ + \advance\Gin@req@height\dimen@ + }% + \ifdim\dimen@=\z@ + \else + \vbox to\z@\bgroup + \kern\dimen@ + \fi +% \end{macrocode} +% Reuse support, dvipdfm just remember the image. The requested +% sizes, clipping, \dots do not matter. +% \begin{macrocode} + \edef\@bmpsize@temp{@IMG@\@bmpsize@pdfescapestring{#1}}% + \@ifundefined{\@bmpsize@temp}{% + \global\advance\@bmpsize@count\@ne + \expandafter\xdef\csname\@bmpsize@temp\endcsname{% + \the\@bmpsize@count + }% + \special{% + pdf:image @IMG\csname\@bmpsize@temp\endcsname\space + width \the\Gin@req@width\space + height \the\Gin@req@height\space + depth 0pt (\@bmpsize@pdfescapestring{#1})% + }% + }{% + \special{% + pdf:bt % + xscale \strip@pt\dimexpr + \bmpsize@dvipdfm@factor\Gin@req@width\relax\space + yscale \strip@pt\dimexpr + \bmpsize@dvipdfm@factor\Gin@req@height\relax + }% + \special{pdf:uxobj @IMG\csname\@bmpsize@temp\endcsname}% + \special{pdf:et}% + }% + \ifdim\dimen@=\z@ + \else + \vss + \egroup + \fi + \hss + }% + \ifGin@clip + \special{pdf:exobj}% + \special{pdf:uxobj \@bmpsize@clip@name}% + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\@bmpsize@driver@catcodes +%</dvipdfm> +% \end{macrocode} +% +% \subsubsection{dvipdfmx} +% +% Identification. +% \begin{macrocode} +%<*dvipdfmx> +\ProvidesFile{bmpsize-dvipdfmx.def}% + [2006/08/24 v1.0 Graphics bitmap driver for dvipdfmx (HO)] +% \end{macrocode} +% Ensure correct catcodes. +% \begin{macrocode} +\expandafter\edef\csname @bmpsize@driver@catcodes\endcsname{% + \catcode46 \the\catcode46 % . + \catcode64 \the\catcode64 % @ +} +\catcode64 11 % +\@makeother\. +% \end{macrocode} +% The size of reused images of dvipdfmx-20050823 is 1in in opposite +% the 1bp of dvipdfm. +% The reused image must be scaled to the requested +% width and height. The factor is the conversion +% from in to pt (1/72.27). +% \begin{macro}{\bmpsize@dvipdfm@factor} +% \begin{macrocode} +\@ifundefined{bmpsize@dvipdfm@factor}{% + \def\bmpsize@dvipdfm@factor{.01384}% +}{} +% \end{macrocode} +% \end{macro} +% The rest is the same as for dvipdfm. +% \begin{macrocode} +\@bmpsize@driver@catcodes +\input{bmpsize-dvipdfm.def} +%</dvipdfmx> +% \end{macrocode} +% +% \subsection{Test program \xpackage{bmpsize-test.tex}} +% +% \begin{macrocode} +%<*test> +\expandafter\ifx\csname NeedsTeXFormat\endcsname\relax +\input miniltx +\fi +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname pdfoutput\endcsname\relax +\else + \pdfoutput=0 % +\fi +\RequirePackage{bmpsize} + +\endlinechar=-1 +\catcode`\@=11 +\def\msg#{\immediate\write16} + +\def\init{% + \msg{}% + \msg{File name menu}% + \msg{==============}% + \msg{* Option menu: use `opt' as file name}% + \msg{* Quit program: <return>}% + \msg{}% + \message{Image file name = }% + \read-1 to \imagename + \ifx\imagename\@empty + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \csname @@end\endcsname + \end + }{% + \ifnum\pdfstrcmp{\imagename}{opt}=\z@ + \expandafter\optionmenu + \else + \startimg + \expandafter\init + \fi + }% +} +\def\optionmenu{% + \msg{}% + \msg{Option menu}% + \msg{===========}% + \msg{Current setting:}% + \msg{* bmpsizefast = \if@bmpsize@fast true\else false\fi}% + \msg{* \if@bmpsize@user@resolution\else default\fi resolution = % + \bmpsize@pixelx@default + \space + \bmpsize@pixely@default + }% + \msg{* \if@bmpsize@user@resolution default\fi resolution: not set}% + \msg{* resolutionunit = \bmpsize@unit@default}% + \msg{* Quit option menu: <return>}% + \msg{}% + \message{Options = }% + \read-1 to \options + \ifx\options\empty + \expandafter\init + \else + \edef\@bmpsize@temp{% + \noexpand\setkeys{Gin}{\options}% + }% + \@bmpsize@temp + \expandafter\optionmenu + \fi +} + +\def\startimg{% + \let\@found\@empty + \msg{}% + \msg{* File [\imagename]}% + \@for\@type:=\bmpsize@types\do{% + \ifx\@found\@empty + \csname bmpsize@read@\@type\endcsname\imagename + \ifbmpsize@ok + \let\@found\@type + \msg{\space\space Type: \@type}% + \msg{\space\space Pixel width: \bmpsize@pixelwidth\space px}% + \msg{\space\space Pixel height: \bmpsize@pixelheight\space px}% + \ifx\bmpsize@pixelx\relax + \else + \ifx\bmpsize@unit\relax + \let\@unit@spec\@empty + \def\@ratio@name{Ratio }% + \else + \def\@unit@spec{\space dots per \bmpsize@unit}% + \def\@ratio@name{Density }% + \fi + \msg{\space\space \@ratio@name x: \bmpsize@pixelx\@unit@spec}% + \msg{\space\space \@ratio@name y: \bmpsize@pixely\@unit@spec}% + \fi + \msg{\space\space Width: \bmpsize@width\space bp}% + \msg{\space\space Height: \bmpsize@height\space bp}% + \fi + \fi + }% + \ifx\@found\@empty + \edef\@file@date{\pdffilemoddate{\imagename}}% + \ifx\@file@date\@empty + \msg{\space\space --> File not found <--}% + \else + \msg{\space\space --> Unknown image type <--}% + \fi + \fi +} + +\ifx\noinit!\else\expandafter\init\fi +%</test> +% \end{macrocode} +% +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/bmpsize.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/bmpsize.pdf}] Documentation. +% \end{description} +% +% \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 bmpsize.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@{}} +% bmpsize.sty & tex/latex/oberdiek/bmpsize.sty\\ +% bmpsize-base.sty & tex/latex/oberdiek/bmpsize-base.sty\\ +% bmpsize-test.tex & tex/latex/oberdiek/bmpsize-test.tex\\ +% bmpsize-dvips.def & tex/latex/oberdiek/bmpsize-dvips.def\\ +% bmpsize-dvipdfm.def & tex/latex/oberdiek/bmpsize-dvipdfm.def\\ +% bmpsize-dvipdfmx.def & tex/latex/oberdiek/bmpsize-dvipdfmx.def\\ +% bmpsize.pdf & doc/latex/oberdiek/bmpsize.pdf\\ +% bmpsize.dtx & source/latex/oberdiek/bmpsize.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 bmpsize.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{bmpsize.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 bmpsize.dtx +%makeindex -s gind.ist bmpsize.idx +%pdflatex bmpsize.dtx +%makeindex -s gind.ist bmpsize.idx +%pdflatex bmpsize.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{thebibliography}{9} +% \bibitem{grfguide} +% D.\,P.\,Carlisle, The \LaTeX\ Project: +% \textit{Packages in the `graphics' bundle}, +% 2005/11/14; +% \CTAN{macros/latex/required/graphics/grfguide.pdf}. +% +% \subsection{URLs for bitmap format descriptions} +% +% \subsubsection{JPEG} +% \begin{itemize} +% \item \url{http://www.w3.org/Graphics/JPEG/jfif3.pdf} +% \item \url{http://exif.org/Exif2-2.PDF} +% \end{itemize} +% +% \subsubsection{PNG} +% \begin{itemize} +% \item \url{http://en.wikipedia.org/wiki/PNG} +% \item \url{http://www.w3.org/TR/PNG} +% \end{itemize} +% +% \subsubsection{GIF} +% \begin{itemize} +% \item \url{http://www.w3.org/Graphics/GIF/spec-gif89a.txt} +% \end{itemize} +% +% \subsubsection{BMP} +% \begin{itemize} +% \item \url{http://en.wikipedia.org/wiki/Windows_bitmap} +% \item \url{http://de.wikipedia.org/wiki/Windows_bitmap} +% \item \url{http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_4v1h.asp} +% \item \url{http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_62uq.asp} +% \end{itemize} +% +% \subsubsection{PCX} +% \begin{itemize} +% \item \url{http://en.wikipedia.org/wiki/PCX} +% \item \url{http://de.wikipedia.org/wiki/PCX} +% \item \url{http://www.qzx.com/pc-gpe/pcx.txt} +% \end{itemize} +% +% \subsubsection{MSP} +% \begin{itemize} +% \item \url{http://en.wikipedia.org/wiki/Microsoft_Paint} +% \item Sources of \xpackage{dvips}. +% \end{itemize} +% +% \subsubsection{TIFF} +% \begin{itemize} +% \item \url{http://en.wikipedia.org/wiki/TIFF} +% \item \url{http://partners.adobe.com/public/developer/en/tiff/TIFF6.pdf} +% \end{itemize} +% +% \subsubsection{TGA} +% \begin{itemize} +% \item \url{http://de.wikipedia.org/wiki/Targa_Image_File} +% \item \url{http://en.wikipedia.org/wiki/Truevision_TGA} +% \item \url{http://www.dca.fee.unicamp.br/~martino/disciplinas/ea978/tgaffs.pdf} +% \end{itemize} +% +% \subsubsection{SGI} +% \begin{itemize} +% \item \url{http://en.wikipedia.org/wiki/Silicon_Graphics_Image} +% \item \url{ftp://ftp.sgi.com/graphics/SGIIMAGESPEC} +% \end{itemize} +% +% \subsubsection{WMF} +% \begin{itemize} +% \item \url{http://www.fileformat.info/format/wmf/} +% \end{itemize} +% +% \subsubsection{XPM} +% \begin{itemize} +% \item \url{http://en.wikipedia.org/wiki/XPM_%28image_format%29} +% \item \url{http://de.wikipedia.org/wiki/Xpm} +% \item \url{http://koala.ilog.fr/ftp/pub/xpm/xpm-README.html} +% \end{itemize} +% +% \end{thebibliography} +% +% \begin{History} +% \begin{Version}{2006/08/24 v1.0} +% \item +% First version. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/chemarr.dtx b/Master/texmf-dist/source/latex/oberdiek/chemarr.dtx new file mode 100644 index 00000000000..12679be4f70 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/chemarr.dtx @@ -0,0 +1,409 @@ +% \iffalse meta-comment +% +% Copyright (C) 2001, 2006 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 chemarr.dtx +% and the derived files +% chemarr.sty, chemarr.pdf, chemarr.ins, chemarr.drv, +% chemarr-example.tex. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/chemarr.dtx +% CTAN:macros/latex/contrib/oberdiek/chemarr.pdf +% +% Unpacking: +% (a) If chemarr.ins is present: +% tex chemarr.ins +% (b) Without chemarr.ins: +% tex chemarr.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{chemarr.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If chemarr.drv is present: +% latex chemarr.drv +% (b) Without chemarr.drv: +% latex chemarr.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 chemarr.dtx +% makeindex -s gind.ist chemarr.idx +% pdflatex chemarr.dtx +% makeindex -s gind.ist chemarr.idx +% pdflatex chemarr.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/chemarr.sty +% TDS:doc/latex/oberdiek/chemarr.pdf +% TDS:doc/latex/oberdiek/chemarr-example.tex +% TDS:source/latex/oberdiek/chemarr.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: chemarr 2006/02/20 v1.2 Chemical reaction arrows (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2001, 2006 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 chemarr.dtx +and the derived files + chemarr.sty, chemarr.pdf, chemarr.ins, chemarr.drv, + chemarr-example.tex. + +\endpreamble + +\generate{% + \file{chemarr.ins}{\from{chemarr.dtx}{install}}% + \file{chemarr.drv}{\from{chemarr.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{chemarr.sty}{\from{chemarr.dtx}{package}}% + \usedir{doc/latex/oberdiek}% + \file{chemarr-example.tex}{\from{chemarr.dtx}{example}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* chemarr.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `chemarr.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{chemarr.drv}% + [2006/02/20 v1.2 Chemical reaction arrows (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\usepackage{chemarr} +\begin{document} + \DocInput{chemarr.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{48} +% +% \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{chemarr.drv} +% +% \title{The \xpackage{chemarr} package} +% \date{2006/02/20 v1.2} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% Very often chemists need a longer version +% of reaction arrows (\cs{rightleftharpoons}) with +% the possibility to put text above and below. +% Analogous to \xpackage{amsmath}'s \cs{xrightarrow} and +% \cs{xleftarrow} this package provides the macro +% \cs{xrightleftharpoons}. +% \end{abstract} +% +% \tableofcontents +% +% \section{Usage} +% +% \DescribeMacro{\xrightleftharpoons} +% This \LaTeX\ package defines \cs{xrightleftharpoons}. It prints +% extensible arrows (harpoons), usually used in chemical reactions. +% It allows to put some text above and below the harpoons and can +% be used inside and outside of math mode. +% +% The package is based on \xpackage{amsmath}, thus it loads it, +% if necessary. +% +% \subsection{Example} +% +% \begin{macrocode} +%<*example> +\documentclass{article} +\usepackage{chemarr} +\begin{document} +\begin{center} + left + \xrightleftharpoons[\text{below}]{\text{above}} + right +\end{center} +\[ + A + \xrightleftharpoons[T \geq 400\,\mathrm{K}]{p > 10\,\mathrm{hPa}} + B +\] +\end{document} +%</example> +% \end{macrocode} +% The result: +% \begin{center} +% left +% \xrightleftharpoons[\text{below}]{\text{above}} +% right +% \end{center} +% \[ +% A +% \xrightleftharpoons[T \geq 400\,\mathrm{K}]{p > 10\,\mathrm{hPa}} +% B +% \] +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% Package identification. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{chemarr}% + [2006/02/20 v1.2 Chemical reaction arrows (HO)] +% \end{macrocode} +% +% \begin{macrocode} +\RequirePackage{amsmath} +% \end{macrocode} +% The package \xpackage{amsmath} is needed for the following commands: +% \begin{quote} +% \cs{ext@arrow}, \cs{@ifnotempty}, \cs{arrowfill@}\\ +% \cs{relbar}, \cs{std@minus}\\ +% \cs{@ifempty}, \cs{@xifempty}, \cs{@xp} +% \end{quote} +% +% \begin{macro}{\xrightleftharpoons} +% In \xfile{fontmath.ltx} \cs{rightleftharpoons} is defined with +% a vertical space of 2pt. +% \begin{macrocode} +\newcommand{\xrightleftharpoons}[2][]{% + \ensuremath{% + \mathrel{% + \settoheight{\dimen@}{\raise 2pt\hbox{$\rightharpoonup$}}% + \setlength{\dimen@}{-\dimen@}% + \edef\CA@temp{\the\dimen@}% + \settoheight\dimen@{$\rightleftharpoons$}% + \addtolength{\dimen@}{\CA@temp}% + \raisebox{\dimen@}{% + \rlap{% + \raisebox{2pt}{% + $% + \ext@arrow 0359\rightharpoonupfill@{\hphantom{#1}}{#2}% + $% + }% + }% + \hbox{% + $% + \ext@arrow 3095\leftharpoondownfill@{#1}{\hphantom{#2}}% + $% + }% + }% + }% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\leftharpoondownfill@} +% \begin{macrocode} +\newcommand*{\leftharpoondownfill@}{% + \arrowfill@\leftharpoondown\relbar\relbar +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\rightharpoonupfill@} +% \begin{macrocode} +\newcommand*{\rightharpoonupfill@}{% + \arrowfill@\relbar\relbar\rightharpoonup +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/chemarr.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/chemarr.pdf}] Documentation. +% \end{description} +% +% \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 chemarr.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@{}} +% chemarr.sty & tex/latex/oberdiek/chemarr.sty\\ +% chemarr.pdf & doc/latex/oberdiek/chemarr.pdf\\ +% chemarr-example.tex & doc/latex/oberdiek/chemarr-example.tex\\ +% chemarr.dtx & source/latex/oberdiek/chemarr.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 chemarr.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{chemarr.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 chemarr.dtx +%makeindex -s gind.ist chemarr.idx +%pdflatex chemarr.dtx +%makeindex -s gind.ist chemarr.idx +%pdflatex chemarr.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2001/06/21 v1.0} +% \item +% First public version. +% \end{Version} +% \begin{Version}{2001/06/22 v1.1} +% \item +% Documentation fixes. +% \end{Version} +% \begin{Version}{2006/02/20 v1.2} +% \item +% DTX framework. +% \item +% Example added. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/classlist.dtx b/Master/texmf-dist/source/latex/oberdiek/classlist.dtx new file mode 100644 index 00000000000..c43598f08b9 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/classlist.dtx @@ -0,0 +1,499 @@ +% \iffalse meta-comment +% +% Copyright (C) 2005, 2006 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 classlist.dtx +% and the derived files +% classlist.sty, classlist.pdf, classlist.ins, classlist.drv. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/classlist.dtx +% CTAN:macros/latex/contrib/oberdiek/classlist.pdf +% +% Unpacking: +% (a) If classlist.ins is present: +% tex classlist.ins +% (b) Without classlist.ins: +% tex classlist.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{classlist.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If classlist.drv is present: +% latex classlist.drv +% (b) Without classlist.drv: +% latex classlist.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 classlist.dtx +% makeindex -s gind.ist classlist.idx +% pdflatex classlist.dtx +% makeindex -s gind.ist classlist.idx +% pdflatex classlist.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/classlist.sty +% TDS:doc/latex/oberdiek/classlist.pdf +% TDS:source/latex/oberdiek/classlist.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: classlist 2006/02/20 v1.2 Record loaded classes (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2005, 2006 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 classlist.dtx +and the derived files + classlist.sty, classlist.pdf, classlist.ins, classlist.drv. + +\endpreamble + +\generate{% + \file{classlist.ins}{\from{classlist.dtx}{install}}% + \file{classlist.drv}{\from{classlist.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{classlist.sty}{\from{classlist.dtx}{package}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* classlist.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `classlist.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{classlist.drv}% + [2006/02/20 v1.2 Record loaded classes (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\begin{document} + \DocInput{classlist.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{162} +% +% \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{classlist.drv} +% +% \title{The \xpackage{classlist} package} +% \date{2006/02/20 v1.2} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% This package records the loaded classes and stores +% them in a list. +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% \subsection{Background} +% +% This packages is an answer of a newsgroup question: +% \begin{quote} +% \begin{tabular}{@{}ll@{}} +% Newsgroup: & comp.text.tex\\ +% Subject: & Finding the Document Class\\ +% From: & Herber Schulz\\ +% Date: & 18 Jun 2005 13:16:49 -0500\\ +% Message-ID: & +% \textless +% \texttt{herbs-D55DB9.13170418062005@news.isp.giganews.com}^^A +% \textgreater +% \end{tabular} +% \end{quote} +% +% \subsection{Usage} +% +% Load this package before \cs{documentclass}: +% \begin{quote} +% |\RequirePackage{classlist}|\\ +% |\documentclass[some,options]{whatever}| +% \end{quote} +% It then records the classes with options. +% +% If used after \cs{documentclass}, \cs{@filelist} is +% parsed for classes. The additional data +% specified options and requested version is no +% longer available here. +% +% \begin{description} +% \item[\cs{MainClass}] contains the first loaded class. +% \item[\cs{ClassList}] stores the class entries, eg. +% \begin{quote} +% \begin{tabular}{@{}l@{ }l@{}} +% \cs{ClassList} $\rightarrow$& +% |\ClassListEntry{myarticle}{a4paper}{}|\\ +% &|\ClassListEntry{article}{}{}| +% \end{tabular} +% \end{quote} +% \item[\cs{ClassListEntry}] has three arguments: +% \begin{quote} +% \begin{tabular}{@{}ll@{}} +% |#1|: & class name\\ +% |#2|: & options given in \cs{documentclass}/\cs{LoadClass}\\ +% |#3|: & requested version, not the version of class +% \end{tabular} +% \end{quote} +% \item[\cs{PrintClassList}] prints the list on screen it can be +% configured by +% \item[\cs{PrintClassListTitle}] for the title and +% \item[\cs{PrintClassListEntry}] for formatting the entries. +% See the implemenation how to use these. +% \end{description} +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% Package identification. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{classlist}% + [2006/02/20 v1.2 Record loaded classes (HO)] +% \end{macrocode} +% +% \begin{macrocode} +\let\ClassList\@empty +\let\MainClassName\relax +% \end{macrocode} +% +% Test, whether we are called before \cs{documentclass}. +% \begin{macrocode} +\ifx\@classoptionslist\relax + \let\CL@org@fileswith@pti@ns\@fileswith@pti@ns + \def\@fileswith@pti@ns#1[#2]#3[#4]{% +% \end{macrocode} +% \begin{tabular}{@{}ll@{}} +% |#1|: & \cs{@clsextension}\\ +% |#2|: & options of \cs{documentclass}/\cs{LoadClass}\\ +% |#3|: & class name\\ +% |#4|: & requested version +% \end{tabular} +% \begin{macrocode} + \ifx#1\@clsextension + \@ifl@aded#1{#3}{% + \PackageInfo{classlist}{% + Skipping class `#3', because\MessageBreak + this class is already loaded% + }% + }{% + \@ifundefined{MainClassName}{% + \def\MainClassName{#3}% + }{}% + \@temptokena\expandafter{% + \ClassList + \ClassListEntry{#3}{#2}{#4}% + }% + \edef\ClassList{\the\@temptokena}% + }% + \fi + \CL@org@fileswith@pti@ns{#1}[{#2}]{#3}[{#4}]% + } + \let\@@fileswith@pti@ns\@fileswith@pti@ns +\else +% \end{macrocode} +% Called after \cs{documentclass}. +% \begin{macrocode} + \PackageInfo{classlist}{Use \string\@filelist\space method}% + + \let\ClassListEntry\relax + \expandafter\def\expandafter\CL@test + \expandafter#\expandafter1\@clsextension#2\@nil{% + \ifx\\#2\\% +% \end{macrocode} +% Name does not contain \cs{@clsextension} +% \begin{macrocode} + \else + \expandafter\CL@test@i\CL@entry\@nil + \fi + }% + \expandafter\def\expandafter\CL@test@i + \expandafter#\expandafter1\@clsextension#2\@nil{% + \ifx\\#2\\% + \@ifundefined{opt@\CL@entry}{% + }{% + \@ifundefined{MainClassName}{% + \let\MainClassName\CL@entry + }{% + }% + \edef\ClassList{% + \ClassList + \ClassListEntry{\CL@entry}{}{}% + }% + }% + \else +% \end{macrocode} +% Names with more than one \cs{@clsextension} are not supported. +% \begin{macrocode} + \fi + } + \@for\CL@entry:=\@filelist\do{% + \expandafter\expandafter\expandafter\CL@test\expandafter + \CL@entry\@clsextension\@nil + }% +\fi +% \end{macrocode} +% +% \begin{macro}{\PrintClassListEntry} +% \begin{macrocode} +\providecommand*{\PrintClassListEntry}[3]{% + \toks@{* #1}% + \typeout{\the\toks@}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PrintClassListTitle} +% \begin{macrocode} +\providecommand*{\PrintClassListTitle}{% + \typeout{Class list:}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PrintClassList} +% \begin{macrocode} +\providecommand*{\PrintClassList}{% + \begingroup + \let\ClassListEntry\PrintClassListEntry + \PrintClassListTitle + \ClassList + \endgroup +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\CL@InfoEntry} +% \begin{macrocode} +\def\CL@InfoEntry#1#2#3{% + \advance\count@ by \@ne + \def\x{#2}% + \@onelevel@sanitize\x + \edef\CL@Info{% + \CL@Info + \noexpand\MessageBreak + (\the\count@) % + #1 [\x]% + \ifx\\#3\\% + \else + \space[#3]% + \fi + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\AtBeginDocument{% + \begingroup + \count@=\z@ + \def\CL@Info{Class List:}% + \let\ClassListEntry\CL@InfoEntry + \ClassList + \let\on@line\@empty + \PackageInfo{classlist}{\CL@Info} + \endgroup +} +% \end{macrocode} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/classlist.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/classlist.pdf}] Documentation. +% \end{description} +% +% \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 classlist.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@{}} +% classlist.sty & tex/latex/oberdiek/classlist.sty\\ +% classlist.pdf & doc/latex/oberdiek/classlist.pdf\\ +% classlist.dtx & source/latex/oberdiek/classlist.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 classlist.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{classlist.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 classlist.dtx +%makeindex -s gind.ist classlist.idx +%pdflatex classlist.dtx +%makeindex -s gind.ist classlist.idx +%pdflatex classlist.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2005/06/19 v1.0} +% \item +% First published version +% (comp.text.tex, CTAN). +% \end{Version} +% \begin{Version}{2005/06/19 v1.1} +% \item +% After \cs{documentclass} the package looks +% at \cs{@filelist} instead of aborting with error. +% \end{Version} +% \begin{Version}{2006/02/20 v1.2} +% \item +% DTX framework. +% \item +% Fix for \cs{@@fileswith@pti@ns}. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/colonequals.dtx b/Master/texmf-dist/source/latex/oberdiek/colonequals.dtx new file mode 100644 index 00000000000..0c28915581f --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/colonequals.dtx @@ -0,0 +1,525 @@ +% \iffalse meta-comment +% +% Copyright (C) 2006 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 colonequals.dtx +% and the derived files +% colonequals.sty, colonequals.pdf, colonequals.ins, colonequals.drv. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/colonequals.dtx +% CTAN:macros/latex/contrib/oberdiek/colonequals.pdf +% +% Unpacking: +% (a) If colonequals.ins is present: +% tex colonequals.ins +% (b) Without colonequals.ins: +% tex colonequals.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{colonequals.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If colonequals.drv is present: +% latex colonequals.drv +% (b) Without colonequals.drv: +% latex colonequals.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 colonequals.dtx +% makeindex -s gind.ist colonequals.idx +% pdflatex colonequals.dtx +% makeindex -s gind.ist colonequals.idx +% pdflatex colonequals.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/colonequals.sty +% TDS:doc/latex/oberdiek/colonequals.pdf +% TDS:source/latex/oberdiek/colonequals.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: colonequals 2006/08/01 v1.0 Colon equals symbols (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2006 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 colonequals.dtx +and the derived files + colonequals.sty, colonequals.pdf, colonequals.ins, colonequals.drv. + +\endpreamble + +\generate{% + \file{colonequals.ins}{\from{colonequals.dtx}{install}}% + \file{colonequals.drv}{\from{colonequals.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{colonequals.sty}{\from{colonequals.dtx}{package}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* colonequals.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `colonequals.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{colonequals.drv}% + [2006/08/01 v1.0 Colon equals symbols (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\usepackage{colonequals} +\usepackage{array} +\usepackage{capt-of} +\usepackage{longtable} +\begin{document} + \DocInput{colonequals.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{92} +% +% \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{colonequals.drv} +% +% \title{The \xpackage{colonequals} package} +% \date{2006/08/01 v1.0} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% Package \xpackage{colonequals} defines poor man's symbols +% for math relation symbols such as ``colon equals''. +% The colon is centered around the horizontal math axis. +% \end{abstract} +% +% \tableofcontents +% +% \section{User interface} +% +% \subsection{Introduction} +% +% Math symbols consisting of the colon character can be +% constructed with the colon text character, if the math font +% lacks of the complete symbol. Often, however, the colon text +% character is not centered around the math axis. Especially +% combined with the equals symbol the composed symbol does not +% look symmetrically. Thus this packages defines a colon +% math symbol \cs{ratio} that is centered around the horizontal +% math axis. Also math symbols are provided that consist of the +% colon symbol. The package is not necessary, if the math +% font contains the composed symbols. Examples are \textsf{txfonts} +% (\cite{txfonts}) or \textsf{mathabx} (\cite{mathabx}). +% +% \subsection{Symbols} +% +% All symbols of this package are relation symbols. +% The relation property can be changed by the appropriate +% \TeX\ command \cs{mathbin}, \cs{mathord}, \dots +% +% \begin{center} +% \captionof{table}{Unicode mathematical operators} +% \kern1ex +% \begin{tabular}{l>{\scshape}l>{$}l<{$}l} +% U+2236 & ratio & \ratio & \cs{ratio} \\ +% U+2237 & proportion & \coloncolon & \cs{coloncolon} \\ +% U+2239 & excess & \colonminus & \cs{colonminus} \\ +% U+2254 & colon equals & \colonequals & \cs{colonequals} \\ +% U+2255 & equals colon & \equalscolon & \cs{equalscolon} \\ +% \end{tabular} +% \end{center} +% +% The following grammar generates all symbols that are supported by +% this package: +% \begin{center} +% \captionof{table}{Symbol grammar} +% \kern1ex +% \begin{tabular}{@{}l>{$}r<{$}l@{}} +% symbols & \coloncolonequals & col \\ +% & \mid & col symbol \\ +% & \mid & symbol col \\ +% & ; & \\[1ex] +% col & \coloncolonequals & '\texttt{:}' \\ +% & \mid & '\texttt{::}' \\ +% & ; & \\[1ex] +% symbol & \coloncolonequals & '\texttt{=}' \\ +% & \mid & '\texttt{-}' \\ +% & \mid & '$\approx$' \\ +% & \mid & '$\sim$' \\ +% & ; & +% \end{tabular} +% \end{center} +% +% \def\entry#1{\csname #1\endcsname&\cs{#1}\\} +% \def\entryset#1{^^A +% \entry{colon#1}^^A +% \entry{coloncolon#1}^^A +% \entry{#1colon}^^A +% \entry{#1coloncolon}^^A +% } +% \begin{longtable}{>{$}l<{$}l} +% \caption{All relation symbols}\\ +% \entry{ratio} +% \entry{coloncolon} +% \entryset{equals} +% \entryset{minus} +% \entryset{approx} +% \entryset{sim} +% \end{longtable} +% +% \subsection{Fine tuning} +% +% The distances in composed symbols can be configured: +% +% \begin{declcs}{colonsep} +% \end{declcs} +% Macro \cs{colonsep} is executed between the colon and +% the other symbol. +% +% \begin{declcs}{doublecolonsep} +% \end{declcs} +% Macro \cs{doublecolonsep} controls the distance between +% two colons. +% +% \subsubsection{Example} +% \begin{quote} +% \verb|\renewcommand*{\colonsep}{\mskip-.5\thinmuskip}| +% \end{quote} +% +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \subsection{Identification} +% +% \begin{macrocode} +%<*package> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{colonequals}% + [2006/08/01 v1.0 Colon equals symbols (HO)] +% \end{macrocode} +% +% \subsection{Distance control} +% +% \begin{macro}{\colonsep} +% \begin{macrocode} +\newcommand*{\colonsep}{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\doublecolonsep} +% \begin{macrocode} +\newcommand*{\doublecolonsep}{} +% \end{macrocode} +% \end{macro} +% +% \subsection{Centered colons} +% +% \begin{macrocode} +\def\@center@colon{% + \mathpalette\@center@math{:}% +} +\def\@center@math#1#2{% + \vcenter{% + \m@th + \hbox{$#1#2$}% + }% +} +% \end{macrocode} +% +% \begin{macro}{\ratio} +% Because the name \cs{colon} is already in use, the Unicode name +% \cs{ratio} is used for the centered colon relation symbol. +% (The \cs{ratio} of package \textsf{calc} is not used outside +% calc expressions.) +% \begin{macrocode} +\newcommand*{\ratio}{% + \ensuremath{% + \mathrel{% + \@center@colon + }% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\coloncolon} +% \begin{macrocode} +\newcommand*{\coloncolon}{% + \ensuremath{% + \mathrel{% + \@center@colon + \doublecolonsep + \@center@colon + }% + }% +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Combined symbols} +% +% \begin{macrocode} +\def\@make@colon@set#1#2{% + \begingroup + \let\@center@colon\relax + \let\newcommand\relax + \let\ensuremath\relax + \let\mathrel\relax + \let\colonsep\relax + \let\doublecolonsep\relax + \def\csx##1{% + \expandafter\noexpand\csname ##1\endcsname + }% + \edef\x{\endgroup + \newcommand*{\csx{colon#1}}{% + \ensuremath{% + \mathrel{% + \@center@colon + \colonsep + {#2}% + }% + }% + }% + \newcommand*{\csx{coloncolon#1}}{% + \ensuremath{% + \mathrel{% + \@center@colon + \doublecolonsep + \@center@colon + \colonsep + {#2}% + }% + }% + }% + \newcommand*{\csx{#1colon}}{% + \ensuremath{% + \mathrel{% + {#2}% + \colonsep + \@center@colon + }% + }% + }% + \newcommand*{\csx{#1coloncolon}}{% + \ensuremath{% + \mathrel{% + {#2}% + \colonsep + \@center@colon + \doublecolonsep + \@center@colon + }% + }% + }% + }% + \x +} +% \end{macrocode} +% +% \begin{macrocode} +\@make@colon@set{equals}{=}% +\@make@colon@set{minus}{-}% +\@make@colon@set{approx}{\approx} +\@make@colon@set{sim}{\sim} +% \end{macrocode} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/colonequals.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/colonequals.pdf}] Documentation. +% \end{description} +% +% \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 colonequals.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@{}} +% colonequals.sty & tex/latex/oberdiek/colonequals.sty\\ +% colonequals.pdf & doc/latex/oberdiek/colonequals.pdf\\ +% colonequals.dtx & source/latex/oberdiek/colonequals.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 colonequals.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{colonequals.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 colonequals.dtx +%makeindex -s gind.ist colonequals.idx +%pdflatex colonequals.dtx +%makeindex -s gind.ist colonequals.idx +%pdflatex colonequals.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{thebibliography}{9} +% +% \bibitem{txfonts} +% Young Ryu: \textit{The TX Fonts}; +% 2000/12/15; +% \CTAN{fonts/txfonts/}. +% +% \bibitem{mathabx} +% Anthony Phan: \textit{Mathabx font series}; +% 2005/05/16; +% \CTAN{fonts/mathabx/}. +% +% \end{thebibliography} +% +% \begin{History} +% \begin{Version}{2006/08/01 v1.0} +% \item +% First version. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/dvipscol.dtx b/Master/texmf-dist/source/latex/oberdiek/dvipscol.dtx new file mode 100644 index 00000000000..bb77bc11d9c --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/dvipscol.dtx @@ -0,0 +1,406 @@ +% \iffalse meta-comment +% +% Copyright (C) 2000, 2006 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 dvipscol.dtx +% and the derived files +% dvipscol.sty, dvipscol.pdf, dvipscol.ins, dvipscol.drv. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/dvipscol.dtx +% CTAN:macros/latex/contrib/oberdiek/dvipscol.pdf +% +% Unpacking: +% (a) If dvipscol.ins is present: +% tex dvipscol.ins +% (b) Without dvipscol.ins: +% tex dvipscol.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{dvipscol.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If dvipscol.drv is present: +% latex dvipscol.drv +% (b) Without dvipscol.drv: +% latex dvipscol.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 dvipscol.dtx +% makeindex -s gind.ist dvipscol.idx +% pdflatex dvipscol.dtx +% makeindex -s gind.ist dvipscol.idx +% pdflatex dvipscol.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/dvipscol.sty +% TDS:doc/latex/oberdiek/dvipscol.pdf +% TDS:source/latex/oberdiek/dvipscol.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: dvipscol 2006/02/20 v1.1 Fix for dvips.def (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2000, 2006 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 dvipscol.dtx +and the derived files + dvipscol.sty, dvipscol.pdf, dvipscol.ins, dvipscol.drv. + +\endpreamble + +\generate{% + \file{dvipscol.ins}{\from{dvipscol.dtx}{install}}% + \file{dvipscol.drv}{\from{dvipscol.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{dvipscol.sty}{\from{dvipscol.dtx}{package}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* dvipscol.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `dvipscol.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{dvipscol.drv}% + [2006/02/20 v1.1 Fix for dvips.def (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\begin{document} + \DocInput{dvipscol.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{49} +% +% \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{dvipscol.drv} +% +% \title{The \xpackage{dvipscol} package} +% \date{2006/02/20 v1.1} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% Color support for dvips in \xfile{dvips.def} involves the +% color stack of dvips. The package tries to remove unnecessary +% uses of the stack to avoid the error ``out of coor stack space''. +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% \subsection{Introduction} +% +% This package tries a solution, if the program +% dvips complains: +% \begin{quote} +% |! out of color stack space| +% \end{quote} +% The driver file \xfile{dvips.def} contains the +% low level color commands for the package \xpackage{color}. +% Each time a color is set, the current color is +% pushed on the color stack before and after the +% current group the old color is popped from +% the stack and set again (via \cs{aftergroup}). +% But the color stack size of dvips is limited, +% so a stack overflow can occur, if there are +% too many color setting operations in a group. +% +% Only at the bottom group level (no group), +% the color can be set directly without pushing +% the current color on the stack before, because +% there is no group at bottom level that can end. +% +% With \eTeX\ the group level can easily be +% detected (\cs{currentgrouplevel}). Alone with +% \TeX\ this is not possible. +% +% \subsection{Usage} +% +% \subsubsection{With \eTeX} +% +% With e-TeX the package fixes \cs{set@color}, therefore +% no interaction with the user is required. Just load the package: +% \begin{quote} +% |\usepackage[dvips]{color}|\\ +% |\usepackage{dvipscol}| +% \end{quote} +% +% \subsubsection{Without \eTeX} +% +% \begin{quote} +% |\usepackage[dvips]{color}|\\ +% |\usepackage{dvipscol}| +% \end{quote} +% Without \eTeX\ the package does not know, which \cs{color} +% do not need the stack. Therefore it defines \cs{nogroupcolor}, +% that the user can use manually instead of \cs{color}. +% But caution: it should only be used outside of all +% groups, for example the following will not work: +% \begin{quote} +% |\textcolor{black}{\nogroupcolor{blue}...}| +% \end{quote} +% +% The use of \eTeX is strongly recommended. +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% Package identification. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{dvipscol}% + [2006/02/20 v1.1 Fix for dvips.def (HO)] +% \end{macrocode} +% +% \begin{macrocode} +\@ifundefined{ver@dvips.def}{% + \PackageWarningNoLine{dvipscol}{% + Nothing to fix, because \string`dvips.def\string' not loaded% + }% + \endinput +} +% \end{macrocode} +% \begin{macrocode} +\CheckCommand*{\set@color}{% + \special{color push \current@color}% + \aftergroup\reset@color +} +% \end{macrocode} +% \begin{macro}{\nogroupcolor} +% \begin{macrocode} +\newcommand*{\nogroupcolor}{% + \let\saved@org@set@color\set@color + \def\set@color{% + \let\set@color\saved@org@set@color + \special{color \current@color}% + }% + \color +} +% \end{macrocode} +% \end{macro} +% +% Patch for \eTeX\ users. +% \begin{macrocode} +\ifx\currentgrouplevel\@undefined + \PackageWarningNoLine{dvipscol}{% + \string\set@color\space cannot be fixed, % + because the\MessageBreak + e-TeX extensions are not available% + }% + \expandafter\endinput +\fi +% \end{macrocode} +% \begin{macrocode} +\def\set@color{% + \ifcase\currentgrouplevel + \special{color \current@color}% + \else + \special{color push \current@color}% + \aftergroup\reset@color + \fi +} +% \end{macrocode} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/dvipscol.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/dvipscol.pdf}] Documentation. +% \end{description} +% +% \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 dvipscol.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@{}} +% dvipscol.sty & tex/latex/oberdiek/dvipscol.sty\\ +% dvipscol.pdf & doc/latex/oberdiek/dvipscol.pdf\\ +% dvipscol.dtx & source/latex/oberdiek/dvipscol.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 dvipscol.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{dvipscol.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 dvipscol.dtx +%makeindex -s gind.ist dvipscol.idx +%pdflatex dvipscol.dtx +%makeindex -s gind.ist dvipscol.idx +%pdflatex dvipscol.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2000/08/31 v1.0} +% \item +% First public release created as answer to +% a question of Deepak Goel in \xnewsgroup{comp.text.tex}:\\ +% |\color{} problems.. :Out of stack space..| +% \end{Version} +% \begin{Version}{2006/02/20 v1.1} +% \item +% DTX framework. +% \item +% Code is not changed. +% \item +% LPPL 1.3 +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/embedfile.dtx b/Master/texmf-dist/source/latex/oberdiek/embedfile.dtx new file mode 100644 index 00000000000..bd94e2639a3 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/embedfile.dtx @@ -0,0 +1,857 @@ +% \iffalse meta-comment +% +% Copyright (C) 2006 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 embedfile.dtx +% and the derived files +% embedfile.sty, embedfile.pdf, embedfile.ins, embedfile.drv, +% dtx-attach.sty, embedfile-example-plain.tex. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/embedfile.dtx +% CTAN:macros/latex/contrib/oberdiek/embedfile.pdf +% +% Unpacking: +% (a) If embedfile.ins is present: +% tex embedfile.ins +% (b) Without embedfile.ins: +% tex embedfile.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{embedfile.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If embedfile.drv is present: +% latex embedfile.drv +% (b) Without embedfile.drv: +% latex embedfile.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 embedfile.dtx +% makeindex -s gind.ist embedfile.idx +% pdflatex embedfile.dtx +% makeindex -s gind.ist embedfile.idx +% pdflatex embedfile.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/embedfile.sty +% TDS:tex/latex/oberdiek/dtx-attach.sty +% TDS:doc/latex/oberdiek/embedfile.pdf +% TDS:doc/latex/oberdiek/embedfile-example-plain.tex +% TDS:source/latex/oberdiek/embedfile.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: embedfile 2006/08/16 v1.0 embed files into PDF (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2006 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 embedfile.dtx +and the derived files + embedfile.sty, embedfile.pdf, embedfile.ins, embedfile.drv, + dtx-attach.sty, embedfile-example-plain.tex. + +\endpreamble + +\generate{% + \file{embedfile.ins}{\from{embedfile.dtx}{install}}% + \file{embedfile.drv}{\from{embedfile.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{embedfile.sty}{\from{embedfile.dtx}{package}}% + \file{dtx-attach.sty}{\from{embedfile.dtx}{dtxattach}}% + \usedir{doc/latex/oberdiek}% + \file{embedfile-example-plain.tex}{\from{embedfile.dtx}{exampleplain}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* embedfile.sty, dtx-attach.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `embedfile.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{embedfile.drv}% + [2006/08/16 v1.0 embed files into PDF (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\begin{document} + \DocInput{embedfile.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{430} +% +% \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{embedfile.drv} +% +% \title{The \xpackage{embedfile} package} +% \date{2006/08/16 v1.0} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% This package embeds files to a PDF document. +% Currently \pdfTeX\ >= 1.30 in PDF mode is supported only. +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% \subsection{Introduction} +% +% The PDF format (\cite{pdfspec}) allows the inclusion of files +% inside the PDF document. The included files can be bound to an +% annotation on a page. Or they can be recorded in a sorted +% list of embedded files. The packages \xpackage{attachfile} +% or \xpackage{attachfile2} follow the first approach, this +% package uses the latter method. +% +% \subsubsection{Future development} +% +% My dream is a large package that merges the features of +% all these packages meantioned before: +% \begin{itemize} +% \item Files can be attached to a page. +% \item Files can be attached to the document. +% \item An easy user interface for simple, common tasks and +% beginners. +% \item An interface for the advanced users that want to setup +% every detail. +% \item Support of many drivers (pdftex, dvips, dvipdfm, \dots). +% \item \dots +% \end{itemize} +% However, I have not managed to take the time for this project. +% Instead: +% \begin{itemize} +% \item First I experimented with package \xpackage{attachfile}, +% adding driver support, fixing bugs, \dots. The result is +% currently named as \xpackage{attachfile2}. It uses an external +% script to get file properties (size, date, checksum, \dots). +% \item In order to avoid an external program for getting basic +% file properties I provided a patch ``EscapeAndOther'' for +% pdfTeX that was accepted for version 1.30. +% \item This package closes a gap left by the packages for attaching +% files and allows the embedding of files to the document. +% Also it makes use of the new primitives of \pdfTeX. +% \end{itemize} +% +% \subsection{User interface} +% +% This package \xpackage{embedfile} can be used with both +% \LaTeX\ and \plainTeX. See \autoref{sec:plain} that +% explains the use with \plainTeX\ by an example. +% In \LaTeX\ the package is loaded as usually. There are no options. +% \begin{quote} +% \verb|\usepackage{embedfile}| +% \end{quote} +% +% \begin{declcs}{embedfile} +% |[|\meta{options}|]| \M{file} +% \end{declcs} +% The macro \cs{embedfile} includes file \meta{file} and +% attaches it to the PDF document. At the end of the document +% the sorted list of embedded files are written. Thus you can +% safely use \cs{embedfile} before \verb|\end{document}|. +% Embedding files using \cs{AtEndDocument} will only work, +% if \cs{AtEndDocument} is called before loading the package +% \xpackage{embedfile} +% +% The \meta{options} are give as key value pairs. The following +% keys are supported: +% \begin{description} +% \item[\xoption{filespec}] +% This allows to override the file name +% that appears in the PDF file. If you are using other than +% simple file names (8bit, path separators, \dots), look into +% the PDF specification (\cite{pdfspec}). +% There are rules how these file names +% must be written/encoded. +% \item[\xoption{filesystem}] +% This sets the entry \verb|/FS| in +% the file specification dictionary, see PDF specification +% (\cite{pdfspec}). +% Example: \verb|filesystem=URL|. +% \item[\xoption{mimetype}] +% This sets the mime type (\cite{mime}) of the file, +% see \autoref{sec:plain} for examples and \cite{types} +% for a list of officially registered types. +% \item[\xoption{desc}] +% The description for the file. +% \item[\xoption{stringmethod}] +% The package must convert the values of the keys \xoption{filespec} +% and \xoption{desc} into a PDF string. If \xpackage{hyperref} +% is found, then its \cs{pdfstringdef} will be used, otherwise +% \pdfTeX's \cs{pdfescapestring} is used. Value \verb|psd| +% forces the use of \cs{pdfstringdef}, value \verb|escape| +% the use of \cs{pdfescapestring}. +% \end{description} +% +% \subsection{Examples} +% +% \subsubsection{\plainTeX}\label{sec:plain} +% +% The package can be used with \plainTeX. Because is uses +% package \xpackage{keyval} and \cs{@ifnextchar}, it needs +% a little help from \xfile{miniltx.tex}. +% +% If additionally package \xpackage{keyval} (\xpackage{graphicx}) +% is needed, load it first. Then package \xpackage{embedfile} avoids +% a duplicate loading of package \xpackage{keyval}. +% +% Because \plainTeX\ does not provide a hook at end of the document, +% you have to call \cs{embedfilefinish} manually at the end +% after the last embedded file. +% \begin{macrocode} +%<*exampleplain> + % Load packages +\input miniltx + % \def\Gin@driver{pdftex.def} + % \input graphicx.sty +\input embedfile.sty +\resetatcatcode + + % default setting +\embedfilesetup{ + mimetype=text/plain +} + + % Embed files +\embedfile[ + filespec=example.tex, + desc={Source code (plain-TeX) of this example} +]{embedfile-example-plain.tex} + +\embedfile[ + desc={Source of package `embedfile'} +]{embedfile.dtx} + +\embedfile[ + mimetype=application/pdf, + desc={Documentation of package `embedfile'} +]{embedfile.pdf} + + % Some text +This example document contains three embedded files. + + % End of document +\embedfilefinish % don't forget +\bye +%</exampleplain> +% \end{macrocode} +% +% \subsection{Package \xpackage{dtx-attach}} +% +% Package \xpackage{dtx-attach} is just a small application of +% package \xpackage{embedfile}. I am using it for the CTAN +% documentation of my packages in \CTAN{macros/latex/contrib/oberdiek/}. +% It also serves as small example for the use of the package with \LaTeX. +% +% \begin{macrocode} +%<*dtxattach> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{dtx-attach} + [2006/08/16 v1.0 Embed \string\jobname.dtx (HO)] +\RequirePackage{embedfile}[2006/08/16] +\embedfile[ + stringmethod=escape, + mimetype=plain/text, + desc={LaTeX docstrip source archive for package `\jobname'} +]{\jobname.dtx} +%</dtxattach> +% \end{macrocode} +% +% \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 + \expandafter\let\expandafter\x\csname ver@embedfile.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{embedfile}{The package is already loaded}% + \endgroup + \expandafter\endinput + \fi +\endgroup +% \end{macrocode} +% Package identification: +% \begin{macrocode} +\begingroup + \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@embedfile.sty\endcsname +\ProvidesPackage{embedfile}% + [2006/08/16 v1.0 embed files into PDF (HO)] +% \end{macrocode} +% +% \begin{macrocode} +\edef\EmbedFileRestoreCatcodes{% + \catcode39 \the\catcode39 % ' + \catcode40 \the\catcode40 % ( + \catcode41 \the\catcode41 % ) + \catcode47 \the\catcode47 % / + \catcode60 \the\catcode60 % < + \catcode62 \the\catcode62 % > + \catcode64 \the\catcode64 % @ + \catcode91 \the\catcode91 % [ + \catcode93 \the\catcode93 % ] + \catcode96 \the\catcode96 % ` +} +\catcode39 12 % ' +\catcode40 12 % ( +\catcode41 12 % ) +\catcode47 12 % / +\catcode60 12 % < +\catcode62 12 % > +\catcode64 11 % @ +\catcode91 12 % [ +\catcode93 12 % ] +\catcode96 12 % ` +% \end{macrocode} +% +% \subsection{Tools} +% +% \begin{macro}{\EmbedFile@PackageError} +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname PackageError\endcsname\relax + \def\EmbedFile@PackageError#1#2{% + \errhelp{#2}% + \errmessage{Package embedfile Error: #1.}% + }% +\else + \def\EmbedFile@PackageError#1#2{% + \begingroup + \let\on@line\empty + \PackageError{embedfile}{#1}{#2}% + \endgroup + }% +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\EmbedFile@RequirePackage} +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname RequirePackage\endcsname\relax + \def\EmbedFile@RequirePackage#1#2{% + \expandafter\ifx\csname #2\encsname\relax + \input #1.sty\relax + \fi + }% +\else + \def\EmbedFile@RequirePackage#1#2{% + \expandafter\ifx\csname #2\endcsname\relax + \RequirePackage{#1}% + \fi + }% +\fi +% \end{macrocode} +% \end{macro} +% +% \subsection{Check for recent \pdfTeX\ in PDF mode} +% +% Load package \xpackage{ifpdf} and check mode. +% \begin{macrocode} +\EmbedFile@RequirePackage{ifpdf}{ifpdf} +\ifpdf +\else + \EmbedFile@PackageError{% + Missing pdfTeX in PDF mode% + }{% + Currently other drivers are not supported. Package loading is aborted.% + }% + \EmbedFileRestoreCatcodes + \expandafter\endinput +\fi +% \end{macrocode} +% Check version. +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname pdffilesize\endcsname\relax + \EmbedFile@PackageError{% + Unsupported pdfTeX version% + }{% + At least version 1.30 is necessary. Package loading is aborted.% + }% + \EmbedFileRestoreCatcodes + \expandafter\endinput +\fi +% \end{macrocode} +% +% \subsection{Key value definitions} +% +% \begin{macrocode} +\EmbedFile@RequirePackage{keyval}{define@key} +% \end{macrocode} +% +% \begin{macrocode} +\def\EmbedFile@DefineKey#1#2{% + \define@key{EmbedFile}{#1}{% + \expandafter\def\csname EmbedFile@#1\endcsname{##1}% + }% + \expandafter\def\csname EmbedFile@#1\endcsname{#2}% +} +% \end{macrocode} +% Subtype of the embedded file (optional). +% \begin{macrocode} +\EmbedFile@DefineKey{mimetype}{} +% \end{macrocode} +% File specification string. +% \begin{macrocode} +\EmbedFile@DefineKey{filespec}{\EmbedFile@file} +% \end{macrocode} +% File system (optional). +% \begin{macrocode} +\EmbedFile@DefineKey{filesystem}{} +% \end{macrocode} +% Description (optional). +% \begin{macrocode} +\EmbedFile@DefineKey{desc}{} +% \end{macrocode} +% Method for converting text to PDF strings. +% \begin{macrocode} +\EmbedFile@DefineKey{stringmethod}{% + \ifx\pdfstringdef\@undefined + escape% + \else + \ifx\pdfstringdef\relax + escape% + \else + psd% + \fi + \fi +} +% \end{macrocode} +% +% \begin{macro}{\embedfilesetup} +% \begin{macrocode} +\def\embedfilesetup{% + \setkeys{EmbedFile}% +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Embed the file} +% +% \begin{macro}{\embedfile} +% \begin{macrocode} +\def\embedfile{% + \@ifnextchar[\EmbedFile@embedfile{\EmbedFile@embedfile[]}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EmbedFile@embedfile} +% \begin{macrocode} +\def\EmbedFile@embedfile[#1]#2{% + \ifEmbedFile@finished + \EmbedFile@PackageError{% + \string\embedfile\space after \string\embedfilefinish + }{% + The list of embedded files is already written.% + }% + \else + \begingroup + \def\EmbedFile@file{#2}% + \setkeys{EmbedFile}{#1}% + \expandafter\ifx\expandafter\\\pdffilesize{\EmbedFile@file}\\% + \EmbedFile@PackageError{% + File `\EmbedFile@file' not found% + }{% + The unknown file is not embedded.% + }% + \else + \EmbedFile@convert\EmbedFile@filespec\EmbedFile@@filespec + \ifx\EmbedFile@desc\empty + \let\EmbedFile@@desc\empty + \else + \EmbedFile@convert\EmbedFile@desc\EmbedFile@@desc + \fi + \immediate\pdfobj stream attr{% + /Type/EmbeddedFile% + \ifx\EmbedFile@mimetype\empty + \else + /Subtype/\pdfescapename{\EmbedFile@mimetype}% + \fi + /Params<<% + /ModDate(\pdffilemoddate{\EmbedFile@file})% + /Size \pdffilesize{\EmbedFile@file}% + /CheckSum<\pdfmdfivesum file{\EmbedFile@file}>% + >>% + }file{\EmbedFile@file}\relax + \immediate\pdfobj{% + <<% + /Type/Filespec% + \ifx\EmbedFile@filesystem\empty + \else + /FS/\pdfescapename{\EmbedFile@filesystem}% + \fi + /F(\EmbedFile@@filespec)% + \ifx\EmbedFile@@desc\empty + \else + /Desc(\EmbedFile@@desc)% + \fi + /EF<<% + /F \the\pdflastobj\space 0 R% + >>% + >>% + }% + \EmbedFile@add{% + \EmbedFile@@filespec + }{\the\pdflastobj\space 0 R}% + \fi + \endgroup + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EmbedFile@convert} +% \begin{macrocode} +\def\EmbedFile@convert#1#2{% + \ifnum\pdfstrcmp{\EmbedFile@stringmethod}{psd}=0 % + \pdfstringdef\EmbedFile@temp{#1}% + \let#2\EmbedFile@temp + \else + \edef#2{\pdfescapestring{#1}}% + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\global\let\EmbedFile@list\empty +% \end{macrocode} +% \begin{macro}{\EmbedFile@add} +% Sorting is done by the insertion sort algorithm. +% Probably the sorting could be done more reliable. +% However, the PDF specification is not too clear to me +% regarding precise sorting rules (how to deal with +% different encodings, escaped characters, \dots). +% \begin{macrocode} +\def\EmbedFile@add#1#2{% + \begingroup + \edef\key{\pdfescapehex{#1}}% + \ifx\EmbedFile@list\empty + \xdef\EmbedFile@list{\noexpand\do{\key}{#2}}% + \else + \def\do##1##2{% + \ifnum\pdfstrcmp{##1}{\key}>0 % + \edef\x{% + \toks@{% + \the\toks@% + \noexpand\do{\key}{#2}% + \noexpand\do{##1}{##2}% + }% + }% + \x + \def\do####1####2{% + \toks@\expandafter{\the\toks@\do{####1}{####2}}% + }% + \def\stop{% + \xdef\EmbedFile@list{\the\toks@}% + }% + \else + \toks@\expandafter{\the\toks@\do{##1}{##2}}% + \fi + }% + \def\stop{% + \xdef\EmbedFile@list{\the\toks@\noexpand\do{\key}{#2}}% + }% + \toks@{}% + \EmbedFile@list\stop + \fi + \endgroup +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\newif\ifEmbedFile@finished +% \end{macrocode} +% \begin{macro}{\embedfilefinish} +% \begin{macrocode} +\def\embedfilefinish{% + \ifEmbedFile@finished + \EmbedFile@PackageError{% + Too many invocations of \string\embedfilefinish + }{% + The list of embedded files is already written.% + }% + \else + \ifx\EmbedFile@list\empty + \else + \global\EmbedFile@finishedtrue + \begingroup + \def\do##1##2{% + <##1>##2% + }% + \immediate\pdfobj{% + <<% + /Names[\EmbedFile@list]% + >>% + }% + \pdfnames{% + /EmbeddedFiles \the\pdflastobj\space 0 R% + }% + \endgroup + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname AtEndDocument\endcsname\relax +\else + \AtEndDocument{\embedfilefinish}% +\fi +% \end{macrocode} +% +% \begin{macrocode} +\EmbedFileRestoreCatcodes +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/embedfile.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/embedfile.pdf}] Documentation. +% \end{description} +% +% \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 embedfile.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@{}} +% embedfile.sty & tex/latex/oberdiek/embedfile.sty\\ +% dtx-attach.sty & tex/latex/oberdiek/dtx-attach.sty\\ +% embedfile.pdf & doc/latex/oberdiek/embedfile.pdf\\ +% embedfile-example-plain.tex & doc/latex/oberdiek/embedfile-example-plain.tex\\ +% embedfile.dtx & source/latex/oberdiek/embedfile.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 embedfile.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{embedfile.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 embedfile.dtx +%makeindex -s gind.ist embedfile.idx +%pdflatex embedfile.dtx +%makeindex -s gind.ist embedfile.idx +%pdflatex embedfile.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{thebibliography}{9} +% \bibitem{attachfile} +% Scott Pakin: \textit{The \xpackage{attachfile} package}; +% 2005/02/20 v1.2; +% \CTAN{macros/latex/contrib/attachfile/}. +% +% \bibitem{attachfile2} +% Heiko Oberdiek: \textit{The \xpackage{attachfile2} package}; +% 2006/08/16 v2.2; +% \CTAN{macros/latex/contrib/oberdiek/attachfile2.pdf}. +% +% \bibitem{pdfspec} +% Adobe Systems Incorporated: +% \href{http://partners.adobe.com/public/developer/en/pdf/PDFReference16.pdf}% +% {\textit{PDF Reference, Fifth Edition, Version 1.6}},% +% November 2004; +% \url{http://partners.adobe.com/public/developer/pdf/index_reference.html}. +% +% \bibitem{mime} +% Network Working Group: RFC 2046, \textit{Multipurpose Internet Mail Extensions (MIME) Part Two: +% Media Types}, November 1996; \url{http://www.rfc-editor.org/}. +% +% \bibitem{types} +% IANA (Internet Assigned Numbers Authority): +% \textit{MIME Media Types}, May 2006; +% \url{http://www.iana.org/assignments/media-types/}. +% +% \end{thebibliography} +% +% \begin{History} +% \begin{Version}{2006/08/16 v1.0} +% \item +% First public version, +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/engord.dtx b/Master/texmf-dist/source/latex/oberdiek/engord.dtx new file mode 100644 index 00000000000..cc3e34747ec --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/engord.dtx @@ -0,0 +1,677 @@ +% \iffalse meta-comment +% +% Copyright (C) 2000, 2003, 2006 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 engord.dtx +% and the derived files +% engord.sty, engord.pdf, engord.ins, engord.drv. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/engord.dtx +% CTAN:macros/latex/contrib/oberdiek/engord.pdf +% +% Unpacking: +% (a) If engord.ins is present: +% tex engord.ins +% (b) Without engord.ins: +% tex engord.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{engord.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If engord.drv is present: +% latex engord.drv +% (b) Without engord.drv: +% latex engord.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 engord.dtx +% makeindex -s gind.ist engord.idx +% pdflatex engord.dtx +% makeindex -s gind.ist engord.idx +% pdflatex engord.dtx +% +% Installation: +% TDS:tex/generic/oberdiek/engord.sty +% TDS:doc/latex/oberdiek/engord.pdf +% TDS:source/latex/oberdiek/engord.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: engord 2006/02/20 v1.2 Provides the ifpdf switch (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2000, 2003, 2006 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 engord.dtx +and the derived files + engord.sty, engord.pdf, engord.ins, engord.drv. + +\endpreamble + +\generate{% + \file{engord.ins}{\from{engord.dtx}{install}}% + \file{engord.drv}{\from{engord.dtx}{driver}}% + \usedir{tex/generic/oberdiek}% + \file{engord.sty}{\from{engord.dtx}{package}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* engord.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `engord.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{engord.drv}% + [2006/02/20 v1.2 Provides the ifpdf switch (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\begin{document} + \DocInput{engord.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{274} +% +% \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{engord.drv} +% +% \title{The \xpackage{engord} package} +% \date{2006/02/20 v1.2} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% The package generates the suffix of English ordinal numbers. +% It can be used with plain and \LaTeX\ formats. +% \end{abstract} +% +% \tableofcontents +% +% \section{Usage} +% +% \begin{declcs}{engord}\,\M{\LaTeX\ counter name} +% \end{declcs} +% It prints the value of the \LaTeX\ counter as English +% ordinal number. It can be used in the same way as +% \cs{arabic}, \cs{roman}, or \cs{alph}. The command is +% not available in \plainTeX. +% +% \begin{declcs}{engordnumber}\,\M{any \TeX\ number} +% \end{declcs} +% It prints the number as English ordinal number. +% +% \begin{declcs}{engordletters}\,|{#1}| +% \end{declcs} +% This command formats the English ordinal letters +% after the number. It defaults to \cs{textsuperscript}. +% +% \begin{declcs}{engorderror}\,|{#1}| +% \end{declcs} +% It can be redefined, if an other error handling is +% wanted. The argument is a negative number or zero. +% +% \begin{declcs}{engordraisetrue}\\ +% \SpecialUsageIndex{\engordraisefalse}\cs{engordraisefalse} +% \end{declcs} +% These commands set the switch \cs{ifengordraise} that is +% asked by the default \cs{engordletters} before raising the +% ordinal letters. +% +% \subsection{Package options} +% +% \begin{description} +% \item[\xoption{normal}:] \cs{engordraisefalse} +% \item[\xoption{raise}:] \cs{engordraisetrue} +% \end{description} +% Default is \xoption{raise}. +% +% \subsection{Examples} +% +% \begin{itemize} +% \item +% |\usepackage[normal]{engord}|\\ +% \begin{tabular}{@{}l@{ $\rightarrow$ }l@{}} +% |\engordnumber{1}| & 1st\\ +% |\engordnumber{12}| & 12th\\ +% |\engordnumber{123}| & 123rd\\ +% |\engord{page}| & 1st (if page has the value of one)\\ +% \multicolumn{2}{@{}l}{\cs{engordraisetrue}}\\ +% |\engordnumber{12}| & 12\textsuperscript{th} +% \end{tabular} +% \item +% The default output of a counter can be redefined: +% \begin{quote} +% |\newcounter{mycounter}|\\ +% |\renewcommand{\theengcounter}{\engord{mycounter}}| +% \end{quote} +% \item +% Because the implementation of \cs{engord} and \cs{engordnumber} +% is kept expandable, these commands can be used to make +% command names with an appropriate definition of +% \cs{engordletters}: +% \begin{quote} +% |\renewcommand*{\engordletters}[#1]{#1}|\\ +% |\@namedef{My\engordnumber{3}Command}{...}| +% \end{quote} +% This generates the command name `\cs{My4rdCommand}'. +% Since version 1.2 the redefinition can be dropped if +% the letters are not raised. +% \item +% If the letters should not be raised, use \LaTeX\ package +% option \xoption{normal} or use +% \begin{quote} +% \cs{engordraisefalse} +% \end{quote} +% Also \cs{engordletters} could be redefined for this purpose: +% \begin{quote} +% |\renewcommand*{\engordletters}[1]{#1}| +% \end{quote} +% \end{itemize} +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \subsection{Reload check and identification} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% Reload check, especially if the package is not used with \LaTeX. +% \begin{macrocode} +\begingroup + \expandafter\let\expandafter\x\csname ver@engord.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{engord}{The package is already loaded}% + \endgroup + \expandafter\endinput + \fi +\endgroup +% \end{macrocode} +% Package identification: +% \begin{macrocode} +\begingroup + \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@engord.sty\endcsname +\ProvidesPackage{engord}% + [2006/02/20 v1.2 Provides the ifpdf switch (HO)] +% \end{macrocode} +% +% \subsection{Help commands for plain compatibility} +% +% \begin{macro}{\EO@atcode} +% Save catcode of |@|. +% \begin{macrocode} +\expandafter\chardef\csname EO@atcode\endcsname\catcode`\@ +\catcode`\@=11 % +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\EO@def} +% Definitions, \cs{newcommand} does not exist in \plainTeX. +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname newcommand\endcsname\relax + \def\EO@def{\def}% +\else + \def\EO@def#1{% + \newcommand*{#1}{}% + \def#1% + }% +\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.% + }% + }% +\else + \def\EO@PackageWarning{\PackageWarning}% +\fi +% \end{macrocode} +% \end{macro} +% +% \subsection{User macros} +% +% \begin{macro}{\ifengordraise} +% The switch \cs{ifengordraise}, whether the ordinal letters +% are raised or not. Default is raised because of compatibility. +% \begin{macrocode} +\newif\ifengordraise +\engordraisetrue +% \end{macrocode} +% \end{macro} +% In \LaTeX\ this also can be controlled by option \xoption{normal} +% or \xoption{raise}. +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname DeclareOption\endcsname\relax +\else + \DeclareOption{normal}{\engordraisefalse}% + \DeclareOption{raise}{\engordraisetrue}% + \ProcessOptions*\relax +\fi +% \end{macrocode} +% +% \begin{macro}{\engordletters} +% \cs{engordletters} is called with one argument, the english +% ordinal letters, and contains the code to format them. It +% defaults to \cs{textsuperscript} depending on \cs{ifengordraise}. +% \begin{macrocode} +\expandafter\ifx\csname engordletters\endcsname\relax + \EO@def\engordletters{% + \ifengordraise + \expandafter\engordtextsuperscript + \fi + }% +\fi +% \end{macrocode} +% \end{macro} +% \begin{macro}{\engordtextsuperscript} +% For \plainTeX\ the definition is quite ugly, redefine +% \cs{engordtextsuperscript} if you have a better one. +% \begin{macrocode} +\expandafter\ifx\csname engordtextsuperscript\endcsname\relax + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname textsuperscript\endcsname\relax + \def\engordtextsuperscript#1{% + \relax + \ifmmode + ^{\rm#1}% + \else + $^{\rm#1}$% + \fi + }% + \else + \def\engordtextsuperscript{\textsuperscript}% + \fi +\fi +% \end{macrocode} +% \end{macro} +% \begin{macro}{\engorderror} +% \cs{engorderror} is called, if the number is zero +% or negative. +% \begin{macrocode} +\expandafter\ifx\csname engorderror\endcsname\relax + \EO@def\engorderror#1{% + #1\engordletters{!ERROR!}% + \EO@PackageWarning{engord}{% + `#1' is not an ordinal number% + }% + }% +\fi +% \end{macrocode} +% \end{macro} +% \begin{macro}{\engord} +% \cs{engord} expects a \LaTeX\ counter name as argument and +% calls \cs{engordnumber}. It is defined only, if \LaTeX\ is used. +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname newcounter\endcsname\relax +\else + \EO@def\engord#1{% + \engordnumber{\value{#1}}% + }% +\fi +% \end{macrocode} +% \end{macro} +% \begin{macro}{\engordnumber} +% \cs{engordnumber} is the user command to print a number as +% english ordinal number. The argument can be any +% \TeX\ number like explicit numbers, register values, \dots +% +% In a safe way it converts the \TeX\ number argument +% into a form that only consists of decimal digits. +% \begin{macrocode} +\EO@def\engordnumber#1{% + \expandafter\EO@number\expandafter{\number#1}% +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Suffix generation} +% +% \begin{macro}{\EO@number} +% \cs{EO@number} expects a number with decimal digits as +% argument and looks at the size of the number and +% the count of the digits: +% \begin{macrocode} +\def\EO@number#1{% + \ifnum#1<1 % handle the error case + \engorderror{#1}% + \else + \ifnum#1<21 + \EO@ord{#1}% + \else + \ifnum#1<100 + \EO@twodigits#1% + \else + \@ReturnAfterFi{% + \EO@reverse#1\@nil{}\EO@afterreverse + }% + \fi + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@ReturnAfterFi} +% An internal help macro to prevent a too deep \cs{if} nesting. +% \begin{macrocode} +\long\def\@ReturnAfterFi#1\fi{\fi#1} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EO@ord} +% \cs{EO@ord} prints the number with ord letters.\\ +% |#1|: decimal digits, |#1| $<$ 21 +% \begin{macrocode} +\def\EO@ord#1{% + #1% + \expandafter\engordletters + \ifcase#1{th}\or + {st}\or + {nd}\or + {rd}\else + {th}% + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EO@twodigits} +% \cs{EO@twodigits} expects a number with two digits,\\ +% 20 $<$ number $<$ 100 +% \begin{macrocode} +\def\EO@twodigits#1#2{% + #1\EO@ord{#2}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EO@reverse} +% \cs{EO@reverse} reverses the digits of the number.\\ +% |#1|: next digit\\ +% |#2|: rest of the digits\\ +% |#3|: already reversed digits\\ +% |#4|: next command to call with the reversed number +% as argument +% \begin{macrocode} +\def\EO@reverse#1#2\@nil#3#4{% + \ifx\\#2\\% + #4{#1#3}% + \else + \@ReturnAfterFi{% + \EO@reverse#2\@nil{#1#3}{#4}% + }% + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EO@afterreverse} +% \cs{EO@afterreverse} calls \cs{EO@reverseback} so that +% \cs{EO@reverseback} can inspect the digits of the number. +% \begin{macrocode} +\def\EO@afterreverse#1{% + \EO@reverseback#1\@nil +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EO@reverseback} +% \cs{EO@reverseback} reverses the reversion.\\ +% |#1|: the last digit of the number\\ +% |#2|: the second last digit of the number\\ +% |#3|: first digits of the number in reversed order, +% it is not empty, because \cs{EO@reverseback} is +% only called with numbers $>$ 100. +% \begin{macrocode} +\def\EO@reverseback#1#2#3\@nil{% + \EO@reverse#3\@nil{}\@firstofone + \ifnum#2#1<21 + \EO@ord{#2#1}% + \else + #2\EO@ord{#1}% + \fi +} +% \end{macrocode} +% \end{macro} +% +% Restore catcode of |@|. +% \begin{macrocode} +\catcode`\@=\EO@atcode +% \end{macrocode} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/engord.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/engord.pdf}] Documentation. +% \end{description} +% +% \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 engord.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@{}} +% engord.sty & tex/generic/oberdiek/engord.sty\\ +% engord.pdf & doc/latex/oberdiek/engord.pdf\\ +% engord.dtx & source/latex/oberdiek/engord.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 engord.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{engord.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 engord.dtx +%makeindex -s gind.ist engord.idx +%pdflatex engord.dtx +%makeindex -s gind.ist engord.idx +%pdflatex engord.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2000/05/23 v1.0} +% \item +% First public release. +% \end{Version} +% \begin{Version}{2003/04/28 v1.1} +% \item +% Bug fix for 30, 40, 50, \dots, 100, 130, \dots +% \item +% \cs{ordletters} renamed to documented \cs{engordletters}. +% \end{Version} +% \begin{Version}{2006/02/20 v1.2} +% \item +% Support for \plainTeX. +% \item +% Switch \cs{ifengordraise} added. +% \item +% Package options \xoption{raise} and \xoption{normal} added. +% \item +% DTX framework. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/epstopdf.dtx b/Master/texmf-dist/source/latex/oberdiek/epstopdf.dtx new file mode 100644 index 00000000000..d59d929a4c1 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/epstopdf.dtx @@ -0,0 +1,488 @@ +% \iffalse meta-comment +% +% Copyright (C) 2001, 2006 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 epstopdf.dtx +% and the derived files +% epstopdf.sty, epstopdf.pdf, epstopdf.ins, epstopdf.drv. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/epstopdf.dtx +% CTAN:macros/latex/contrib/oberdiek/epstopdf.pdf +% +% Unpacking: +% (a) If epstopdf.ins is present: +% tex epstopdf.ins +% (b) Without epstopdf.ins: +% tex epstopdf.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{epstopdf.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If epstopdf.drv is present: +% latex epstopdf.drv +% (b) Without epstopdf.drv: +% latex epstopdf.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 epstopdf.dtx +% makeindex -s gind.ist epstopdf.idx +% pdflatex epstopdf.dtx +% makeindex -s gind.ist epstopdf.idx +% pdflatex epstopdf.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/epstopdf.sty +% TDS:doc/latex/oberdiek/epstopdf.pdf +% TDS:source/latex/oberdiek/epstopdf.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: epstopdf 2006/08/26 v1.3 Conversion with epstopdf on the fly (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2001, 2006 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 epstopdf.dtx +and the derived files + epstopdf.sty, epstopdf.pdf, epstopdf.ins, epstopdf.drv. + +\endpreamble + +\generate{% + \file{epstopdf.ins}{\from{epstopdf.dtx}{install}}% + \file{epstopdf.drv}{\from{epstopdf.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{epstopdf.sty}{\from{epstopdf.dtx}{package}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* epstopdf.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `epstopdf.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{epstopdf.drv}% + [2006/08/26 v1.3 Conversion with epstopdf on the fly (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\begin{document} + \DocInput{epstopdf.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{182} +% +% \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{epstopdf.drv} +% +% \title{The \xpackage{epstopdf} package} +% \date{2006/08/26 v1.3} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% This packages adds support of handling eps images +% to package \xpackage{graphics} or \xpackage{graphicx} +% with option \xoption{pdftex}. If an eps image is detected, +% epstopdf is automatically called to convert it to pdf format. +% \end{abstract} +% +% \tableofcontents +% +% \section{Usage} +%\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. +%\end{verbatim} +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% \subsection{Relead check and identification} +% Reload check, especially if the package is not used with \LaTeX. +% \begin{macrocode} +\begingroup + \expandafter\let\expandafter\x\csname ver@epstopdf.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{epstopdf}{The package is already loaded}% + \endgroup + \expandafter\endinput + \fi +\endgroup +% \end{macrocode} +% Package identification: +% \begin{macrocode} +\begingroup + \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@epstopdf.sty\endcsname +\ProvidesPackage{epstopdf}% + [2006/08/26 v1.3 Conversion with epstopdf on the fly (HO)] +% \end{macrocode} +% +% \subsection{Help macros for miniltx mode} +% +% \begin{macrocode} +\@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}% + }% +}{} +\@ifundefined{on@line}{% + \def\on@line{ on input line \the\inputlineno}% +}{} +\@ifundefined{@spaces}{% + \def\@spaces{\space\space\space\space}% +}{} +% \end{macrocode} +% +% \subsection{Checks} +% +% Check, whether package graphics is loaded +% (also graphicx loads graphics). +% Because miniltx.tex does not know \cs{@ifpackageloaded} +% we test for \cs{Gin@setfile} instead. +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname Gin@setfile\endcsname\relax + \PackageWarningNoLine{epstopdf}{% + No graphics package \string`graphic{s,x}\string' found% + }% + \expandafter\endinput +\fi +% \end{macrocode} +% +% Check, whether pdftex.def is loaded. \cs{ver@pdftex.def} is not +% available with miniltx.tex, thus we test for \cs{Gin@driver}. +% \begin{macrocode} +\begingroup + \def\x{pdftex.def}% + \ifx\Gin@driver\x + \else + \PackageWarningNoLine{epstopdf}{% + Graphics driver file \string`pdftex.def\string' not found% + } + \expandafter\endgroup\expandafter\endinput + \fi +\endgroup +% \end{macrocode} +% +% Check, whether the shell escape feature is enabled. +% +% \begin{macrocode} +\begingroup + \expandafter\ifx\csname pdfshellescape\endcsname\relax + \else + \ifnum\pdfshellescape>0 % + \else + \PackageWarningNoLine{epstopdf}{% + Shell escape feature is not enabled% + }% + \fi + \fi +\endgroup +% \end{macrocode} +% +% \subsection{Adding conversion support} +% +% Patch \cs{Gin@setfile} to execute |#3|, if it contains +% a command. +% \begin{macrocode} +\let\ETEorg@Gin@setfile\Gin@setfile +\def\Gin@setfile#1#2#3{% + \if`\@car #3\relax\@nil + \immediate\write18{\@cdr #3\@empty\@nil}% + \ETEorg@Gin@setfile{#1}{#2}{\Gin@base #2}% + \else + \ETEorg@Gin@setfile{#1}{#2}{#3}% + \fi +} +% \end{macrocode} +% +% Adding .eps at the end of the list of extensions, +% defined by \cs{DeclareGraphicsExtensions}. +% \begin{macrocode} +\@ifundefined{Gin@extensions}{% + \def\Gin@extensions{.eps}% +}{% + \expandafter\ifx\expandafter\indent\Gin@extensions\indent + \def\Gin@extensions{.eps}% + \else + \expandafter\def\expandafter\Gin@extensions\expandafter{% + \Gin@extensions,.eps% + }% + \fi +} +% \end{macrocode} +% +% \cs{DeclareGraphicsRule} for .eps +% \begin{macrocode} +\@namedef{Gin@rule@.eps}#1{{pdf}{.pdf}{`epstopdf #1}} +% \end{macrocode} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/epstopdf.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/epstopdf.pdf}] Documentation. +% \end{description} +% +% \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 epstopdf.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@{}} +% epstopdf.sty & tex/latex/oberdiek/epstopdf.sty\\ +% epstopdf.pdf & doc/latex/oberdiek/epstopdf.pdf\\ +% epstopdf.dtx & source/latex/oberdiek/epstopdf.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 epstopdf.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{epstopdf.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 epstopdf.dtx +%makeindex -s gind.ist epstopdf.idx +%pdflatex epstopdf.dtx +%makeindex -s gind.ist epstopdf.idx +%pdflatex epstopdf.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2001/01/06 v1.0} +% \item +% First public version, +% published in the \pdfTeX\ mailing list. +% \end{Version} +% \begin{Version}{2001/02/04 v1.1} +% \item +% Minor documentation update. +% \item +% CTAN. +% \end{Version} +% \begin{Version}{2006/02/20 v1.2} +% \item +% DTX framework. +% \item +% Compatibility for \xfile{miniltx.tex}. +% \end{Version} +% \begin{Version}{2006/08/26 v1.3} +% \item +% Check for \cs{write18} if available and print a warning +% if the feature is not enabled. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/grffile.dtx b/Master/texmf-dist/source/latex/oberdiek/grffile.dtx new file mode 100644 index 00000000000..e4e8ee5a404 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/grffile.dtx @@ -0,0 +1,640 @@ +% \iffalse meta-comment +% +% Copyright (C) 2006 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 grffile.dtx +% and the derived files +% grffile.sty, grffile.pdf, grffile.ins, grffile.drv. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/grffile.dtx +% CTAN:macros/latex/contrib/oberdiek/grffile.pdf +% +% Unpacking: +% (a) If grffile.ins is present: +% tex grffile.ins +% (b) Without grffile.ins: +% tex grffile.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{grffile.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If grffile.drv is present: +% latex grffile.drv +% (b) Without grffile.drv: +% latex grffile.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 grffile.dtx +% makeindex -s gind.ist grffile.idx +% pdflatex grffile.dtx +% makeindex -s gind.ist grffile.idx +% pdflatex grffile.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/grffile.sty +% TDS:doc/latex/oberdiek/grffile.pdf +% TDS:source/latex/oberdiek/grffile.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: grffile 2006/08/17 v1.1 Extended file name support for graphics (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2006 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 grffile.dtx +and the derived files + grffile.sty, grffile.pdf, grffile.ins, grffile.drv. + +\endpreamble + +\generate{% + \file{grffile.ins}{\from{grffile.dtx}{install}}% + \file{grffile.drv}{\from{grffile.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{grffile.sty}{\from{grffile.dtx}{package}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* grffile.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `grffile.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{grffile.drv}% + [2006/08/17 v1.1 Extended file name support for graphics (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\begin{document} + \DocInput{grffile.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{346} +% +% \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{grffile.drv} +% +% \title{The \xpackage{grffile} package} +% \date{2006/08/17 v1.1} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% The package extends the file name processing of package \xpackage{graphics} +% to support a larger range of file names. For example, the file name +% may contain several dots. Or in case of \pdfTeX\ in PDF mode the file name may +% contain spaces. +% \end{abstract} +% +% \tableofcontents +% +% \section{Usage} +% +% \subsection{Option \xoption{multidot}} +% +% The file name parsing of package \xpackage{graphics} is changed, in order +% to detect known extensions. This allows both the use of dots inside the +% base file name and extensions with several dots. +% +% Assume there are two files in the currect directory: \texttt{Hello.World.eps} +% and \texttt{Hello.World.pdf}. \verb|\includegraphics{Hello.World}| will find +% \verb|Hello.World.pdf| with driver \xoption{pdftex} or +% \verb|Hello.World.eps| with driver \xoption{dvips}. +% +% \paragraph{Limitations:} Problem could occur on systems, which don't +% use the dot as extension delimiter. These systems needs an own +% \verb|texsys.cfg| containing definitions for \verb|\filename@parse|. +% The author could not test that, due to a missing example. +% +% \subsection{Option \xoption{extendedchars}} +% +% If the input encoding is the same encoding as the encoding that +% is used for file names and the driver allows non-ascii characters, +% then this option can be used to use file names with such characters. +% +% Example: +% \begin{verbatim} +% \usepackage[latin1]{inputenc} +% \usepackage[extendedchars]{grffile} +% \includegraphics{Bäckerstraße} +% \end{verbatim} +% +% If the \verb|draft| option of the graphics package is enabled, the +% file name is printed with the current font encoding for \verb|\ttfamily|. +% Thus it is possible, that such characters are omitted or the wrong +% characters are displayed, if the font encoding is not the same as +% the file name encoding. +% +% \paragraph{Limitations:} As mentioned above. The \verb|inputenc| package +% is used to determine the encoding of the special characters in the file +% name. What if the document uses utf-8 inputenc, but the system use latin1 +% encoding to create files? The option "extendedchar" will work anyway, but +% the file name has to be handed over to \verb|\includegraphics| using latin1 +% encoding. +% +% \subsection{Option \xoption{space}} +% +% This option allows graphics file names that contain spaces +% if possible. +% +% In general it is not possible to use space inside file names, +% because \TeX\ considers the space character as termination in its +% syntax for commands that expect a file name. +% +% Regarding graphics inclusion with the package \xpackage{graphics} +% file names are used in two or three contexts: +% \begin{enumerate} +% \item The basic \cs{special} statement or primitive command for +% graphics inclusion. The \cs{special} statements for +% drivers \xoption{dvips} or \xoption{dvipdfm} do not allow +% spaces. However \pdfTeX's primitive \cs{pdfximage} +% uses curly braces to delimit the file name and allows spaces. +% \item \cs{includegraphics} checks the existence of the file. +% Also it looks for the right extension if the extension is +% not given. If \pdfTeX\ 1.30 is given, the file existence test +% can be rewritten using a new primitive that allows spaces. +% This works in both modes DVI and PDF. +% \item Sometimes files are read as \TeX\ input files. For example, +% \verb|.bb| files or MPS files. +% \end{enumerate} +% If \pdfTeX\ 1.30 or greater is used in PDF mode then the +% graphics file names may contain spaces except for MPS files. +% Therefore option \xoption{space} is only enabled by default, +% if the supported \pdfTeX\ in PDF mode is detected. +% You can enable the option manually, if you know, your DVI driver +% supports spaces in its \cs{special} syntax and if there is no +% need to read the image file as \TeX\ input file (third context). +% +% \subsection{General use} +% +% The options can be given at many places: +% +% \begin{enumerate} +% \item As package options:\\ +% \verb|\usepackage[<options>]{grffile}| +% \item Setup command of package \xpackage{grffile}:\\ +% \verb|\grffilesetup{<options>}| +% \item The options are also available as options +% for package \xpackage{graphicx}:\\ +% \verb|\setkeys{Gin}{<options>}| +% \item If package \xpackage{graphicx} is loaded the options can also be +% applied for a single image:\\ +% \verb|\includegraphics[<options>]{...}| +% \end{enumerate} +% +% \subsection{Default settings} +% +% \begin{quote} +% \begin{tabular}{@{}lll@{}} +% \xoption{multidot} & \verb|true|\\ +% \xoption{extendedchars} & \verb|false|\\ +% \xoption{space} & \verb|true| & if \pdfTeX\ 1.30 or greater is used in PDF mode\\ +% & \verb|false| & otherwise +% \end{tabular} +% \end{quote} +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \subsection{Identification} +% +% \begin{macrocode} +%<*package> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{grffile}% + [2006/08/17 v1.1 Extended file name support for graphics (HO)] +% \end{macrocode} +% +% \subsection{Catcode stuff} +% +% \begin{macrocode} +\edef\grffile@RestoreCatcodes{% + \catcode`\noexpand\=\the\catcode`\=\relax + \catcode`\noexpand\:\the\catcode`\:\relax + \catcode`\noexpand\.\the\catcode`\.\relax + \catcode`\noexpand\'\the\catcode`\'\relax + \catcode`\noexpand\<\the\catcode`\<\relax + \catcode`\noexpand\>\the\catcode`\>\relax + \catcode`\noexpand\*\the\catcode`\*\relax + \catcode`\noexpand\^\the\catcode`\^\relax + \catcode`\noexpand\~\the\catcode`\~\relax +} +\@makeother\= +\@makeother\: +\@makeother\. +\@makeother\' +\@makeother\< +\@makeother\> +\@makeother\* +\catcode`\^=7 % +\catcode`\~=\active +% \end{macrocode} +% +% \subsection{Options} +% +% \begin{macrocode} +\RequirePackage{ifpdf} +\RequirePackage{kvoptions}[2006/08/17] +\SetupKeyvalOptions{ + family=Gin, + prefix=grffile@ +} +\DeclareBoolOption[true]{multidot} +\DeclareBoolOption[false]{extendedchars} +\DeclareBoolOption{space} +\DeclareDefaultOption{% + \PassOptionsToPackage\CurrentOption{graphics}% +} +% \end{macrocode} +% Default setting for option \xoption{space}. +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname pdffilesize\endcsname\relax + \grffile@spacefalse + \let\grffile@space@disabled\@empty + \def\grffile@spacetrue{% + \PackageWarning{grffile}{% + Option `space' is not available,\MessageBreak + because it needs pdfTeX >= 1.30% + }% + }% +\else + \ifpdf + \grffile@spacetrue + \else + \grffile@spacefalse + \fi +\fi +% \end{macrocode} +% \begin{macrocode} +\ProcessKeyvalOptions* +% \end{macrocode} +% \begin{macrocode} +\RequirePackage{graphics} +% \end{macrocode} +% +% \begin{macro}{\grffilesetup} +% \begin{macrocode} +\newcommand*{\grffilesetup}{% + \setkeys{Gin}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\let\grffile@org@Ginclude@graphics\Ginclude@graphics +\renewcommand*{\Ginclude@graphics}{% + \ifgrffile@extendedchars + \begingroup +% \end{macrocode} +% Support of babel's shorthand characters. +% \begin{macrocode} + \csname @safe@activestrue\endcsname +% \end{macrocode} +% Support of active tilde. +% \begin{macrocode} + \edef~{\string~}% +% \end{macrocode} +% Support of characters controlled by package \xpackage{inputenc}. +% \begin{macrocode} + \grffile@inputenc@loop\^^A\^^H% + \grffile@inputenc@loop\^^K\^^K% + \grffile@inputenc@loop\^^N\^^_% + \grffile@inputenc@loop\^^?\^^ff% + \expandafter\grffile@extchar@Ginclude@graphics + \else + \expandafter\grffile@Ginclude@graphics + \fi +} +\def\grffile@extchar@Ginclude@graphics#1{% + \edef\x{\endgroup + \noexpand\grffile@Ginclude@graphics{#1}% + }% + \x +} +\def\grffile@inputenc@loop#1#2{% + \count@=`#1\relax + \loop + \begingroup + \uccode`\~=\count@ + \uppercase{% + \endgroup + \edef~{\string~}% + }% + \ifnum\count@<`#2\relax + \advance\count@\@ne + \repeat +} +% \end{macrocode} +% Support for option \xoption{space} +% \begin{macrocode} +\def\grffile@space@getbase#1{% + \edef\grffile@tempa{% + \def\noexpand\@tempa####1#1\noexpand\@nil{% + \def\noexpand\Gin@base{####1}% + }% + }% + \grffile@IfFileExists{\filename@area\filename@base#1}{% + \grffile@tempa + \expandafter\@tempa\grffile@file@found\@nil + \edef\Gin@ext{#1}% + }{% + }% +} +\def\grffile@IfFileExists#1{% + \expandafter\ifx\expandafter\\\pdffilesize{#1}\\% + \let\reserved@a\@secondoftwo + \ifx\input@path\@undefined + \else + \expandafter\@tfor\expandafter\reserved@b\expandafter + :\expandafter=\input@path\do{% + \expandafter\ifx\expandafter\\\pdffilesize{\reserved@b#1}\\% + \else + \edef\grffile@file@found{\reserved@b#1}% + \let\reserved@a\@firstoftwo + \@break@tfor + \fi + }% + \fi + \expandafter\reserved@a + \else + \edef\grffile@file@found{#1}% + \expandafter\@firstoftwo + \fi +} + +\def\grffile@Ginclude@graphics#1{% + \begingroup + \ifgrffile@space + \let\Gin@getbase\grffile@space@getbase + \fi + \ifgrffile@multidot + \let\filename@base\@empty + \let\filename@simple\grffile@filename@simple + \fi + \grffile@org@Ginclude@graphics{#1}% + \endgroup +}% + +\def\grffile@filename@simple#1.#2\\{% + \ifx\\#2\\% + \let\filename@ext\relax + \else + \expandafter\ifx\csname + Gin@rule@.\filename@dot #2\\\endcsname\relax + \edef\filename@base{\filename@base #1.}% + \grffile@ReturnAfterFiFiBase{\grffile@filename@simple #2\\}% + \else + \edef\filename@ext{\filename@dot #2\\}% + \fi + \fi + \edef\filename@base{\filename@base #1}% +} +\def\grffile@ReturnAfterFiFiBase#1#2\filename@base#3{\fi\fi#1} +% \end{macrocode} +% +% Print current option setting +% \begin{macrocode} +\def\grffile@option@status#1{% + \begingroup + \let\on@line\@empty + \PackageInfo{grffile}{% + Option `#1' is % + \expandafter\ifx\csname ifgrffile@#1\expandafter\endcsname + \csname iftrue\endcsname + set to `true'% + \else + \expandafter\ifx\csname grffile@#1@disabled\endcsname\@empty + not available% + \else + set to `false'% + \fi + \fi + }% + \endgroup +} +\grffile@option@status{multidot} +\grffile@option@status{extendedchars} +\grffile@option@status{space} +% \end{macrocode} +% +% \begin{macrocode} +\grffile@RestoreCatcodes +% \end{macrocode} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/grffile.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/grffile.pdf}] Documentation. +% \end{description} +% +% \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 grffile.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@{}} +% grffile.sty & tex/latex/oberdiek/grffile.sty\\ +% grffile.pdf & doc/latex/oberdiek/grffile.pdf\\ +% grffile.dtx & source/latex/oberdiek/grffile.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 grffile.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{grffile.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 grffile.dtx +%makeindex -s gind.ist grffile.idx +%pdflatex grffile.dtx +%makeindex -s gind.ist grffile.idx +%pdflatex grffile.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{thebibliography}{9} +% +% \bibitem{graphics} +% David Carlisle, Sebastian Rahtz: \textit{The \xpackage{graphics} package}; +% 2006/02/20 v1.0o; +% \CTAN{macros/latex/required/graphics/graphics.dtx}. +% +% \bibitem{graphicx} +% Sebastian Rahtz, Heiko Oberdiek: +% \textit{The \xpackage{graphicx} package}; +% 1999/02/16 v1.0f; +% \CTAN{macros/latex/required/graphics/graphicx.dtx}. +% +% \end{thebibliography} +% +% \begin{History} +% \begin{Version}{2004/07/18 v0.5} +% \item +% First version. +% \end{Version} +% \begin{Version}{2006/08/15 v1.0} +% \item +% File existence check by new primitives of pdfTeX 1.30. +% \item +% Implementation partly rewritten. +% \item +% New DTX framework. +% \end{Version} +% \begin{Version}{2006/08/17 v1.1} +% \item +% Adaptation to version 2.3 of package \xpackage{kvoptions}. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/holtxdoc.dtx b/Master/texmf-dist/source/latex/oberdiek/holtxdoc.dtx new file mode 100644 index 00000000000..e247d88abe0 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/holtxdoc.dtx @@ -0,0 +1,511 @@ +% \iffalse meta-comment +% +% Copyright (C) 1999-2006 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 holtxdoc.dtx +% and the derived files +% holtxdoc.sty, holtxdoc.pdf, holtxdoc.ins, holtxdoc.drv. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/holtxdoc.dtx +% CTAN:macros/latex/contrib/oberdiek/holtxdoc.pdf +% +% Unpacking: +% (a) If holtxdoc.ins is present: +% tex holtxdoc.ins +% (b) Without holtxdoc.ins: +% tex holtxdoc.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{holtxdoc.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If holtxdoc.drv is present: +% latex holtxdoc.drv +% (b) Without holtxdoc.drv: +% latex holtxdoc.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 holtxdoc.dtx +% makeindex -s gind.ist holtxdoc.idx +% pdflatex holtxdoc.dtx +% makeindex -s gind.ist holtxdoc.idx +% pdflatex holtxdoc.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/holtxdoc.sty +% TDS:doc/latex/oberdiek/holtxdoc.pdf +% TDS:source/latex/oberdiek/holtxdoc.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: holtxdoc 2006/06/02 v0.7 Private additional ltxdoc support (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 1999-2006 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 holtxdoc.dtx +and the derived files + holtxdoc.sty, holtxdoc.pdf, holtxdoc.ins, holtxdoc.drv. + +\endpreamble + +\generate{% + \file{holtxdoc.ins}{\from{holtxdoc.dtx}{install}}% + \file{holtxdoc.drv}{\from{holtxdoc.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{holtxdoc.sty}{\from{holtxdoc.dtx}{package}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* holtxdoc.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `holtxdoc.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{holtxdoc.drv}% + [2006/06/02 v0.7 Private additional ltxdoc support (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\begin{document} + \DocInput{holtxdoc.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{240} +% +% \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{holtxdoc.drv} +% +% \title{The \xpackage{holtxdoc} package} +% \date{2006/06/02 v0.7} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% The package is used for the documentation of my packages in +% DTX format. It contains some private macros and setup for +% my needs. Thus do not use it. I have separated the part +% that may be useful for others in package \xpackage{hypdoc}. +% \end{abstract} +% +% \tableofcontents +% +% \section{No usage} +% +% Caution: \emph{This package is not intended for public use!} +% +% It contains the macros and settings to generate the +% documentation of my packages in \CTAN{macros/latex/contrib/oberdiek/}. +% Thus the package does not know anything about compatibility. Only +% my current packages' documentation must compile. +% +% Older versions were more interesting, because they contained code +% to add \xpackage{hyperref}'s features to \LaTeX's \xpackage{doc} +% system, e.g. bookmarks and index links. I separated this stuff +% and made a new package \xpackage{hypdoc}. +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% Package identification. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{holtxdoc}% + [2006/06/02 v0.7 Private additional ltxdoc support (HO)] +% \end{macrocode} +% +% \begin{macrocode} +\RequirePackage[numbered]{hypdoc} +\RequirePackage{array} +% \end{macrocode} +% +% \subsection{Help macros} +% +% \begin{macrocode} +\def\hld@info#1{% + \PackageInfo{holtxdoc}{#1\@gobble}% +} +\def\hld@warn#1{% + \PackageWarningNoLine{holtxdoc}{#1}% +} +% \end{macrocode} +% +% \subsection{History} +% +% \begin{macrocode} +\newcommand*{\StartHistory}{% + \section{History}% +} +\newcommand*{\HistVersion}[1]{% + \subsection*{% + \phantomsection + \addcontentsline{toc}{subsection}{[#1]}% + [#1]% + }% + \def\HistLabel##1{% + \begingroup + \edef\x{[#1]}% + \let\@currentlabel\x + \label{##1}% + \endgroup + }% +} +\newenvironment{History}{% + \StartHistory + \def\Version##1{% + \HistVersion{##1}% + \itemize + }% + \let\endVersion\enditemize +}{} +% \end{macrocode} +% +% \subsection{Formatting macros} +% +% \cs{UrlFoot}\\ +% |#1|: text\\ +% |#2|: url +% \begin{macrocode} +\newcommand{\URL}[2]{% + #1\footnote{Url: \url{#2}}% +} +% \end{macrocode} +% \cs{NameEmail}\\ +% |#1|: name\\ +% |#2|: email address +% \begin{macrocode} +\newcommand*{\NameEmail}[2]{% + \expandafter\hld@NameEmail\expandafter{#2}{#1}% +} +\def\hld@NameEmail#1#2{% + \expandafter\hld@@NameEmail\expandafter{#2}{#1}% +} +\def\hld@@NameEmail#1#2{% + \ifx\\#1#2\\% + \hld@warn{% + Command \string\NameEmail\space without name and email% + }% + \else + \ifx\\#1\\% + \href{mailto:#2}{\nolinkurl{#2}}% + \else + #1% + \ifx\\#2\\% + \else + \footnote{% + #1's email address: % + \href{mailto:#2}{\nolinkurl{#2}}% + }% + \fi + \fi + \fi +} +% \end{macrocode} +% +% \begin{macrocode} +\newcommand*{\Package}[1]{\texttt{#1}} +\newcommand*{\File}[1]{\texttt{#1}} +\newcommand*{\Verb}[1]{\texttt{#1}} +\newcommand*{\CS}[1]{\texttt{\expandafter\@gobble\string\\#1}} +% \end{macrocode} +% +% \begin{macrocode} +\newcommand*{\CTAN}[1]{% + \href{ftp://ftp.ctan.org/tex-archive/#1}{\nolinkurl{CTAN:#1}}% +} +% \end{macrocode} +% \begin{macrocode} +\newcommand*{\Newsgroup}[1]{% + \href{http://groups.google.com/group/#1}{\nolinkurl{news:#1}}% +} +% \end{macrocode} +% +% \begin{macrocode} +\newcommand*{\xpackage}[1]{\textsf{#1}} +\newcommand*{\xclass}[1]{\textsf{#1}} +\newcommand*{\xoption}[1]{\textsf{#1}} +\newcommand*{\xfile}[1]{\texttt{#1}} +\newcommand*{\xext}[1]{\texttt{.#1}} +\newcommand*{\xemail}[1]{% + \textless\texttt{#1}\textgreater% +} +\newcommand*{\xnewsgroup}[1]{\texttt{#1}} +% \end{macrocode} +% +% The following environment |declcs| is derived from +% environment |decl| of \xfile{ltxguide.cls}: +% \begin{macrocode} +\newenvironment{declcs}[1]{% + \par + \addvspace{4.5ex plus 1ex}% + \vskip -\parskip + \noindent + \hspace{-\leftmargini}% + \def\M##1{\texttt{\{}\meta{##1}\texttt{\}}}% + \def\*{\unskip\,\texttt{*}}% + \begin{tabular}{|l|}% + \hline + \expandafter\SpecialUsageIndex\csname #1\endcsname + \cs{#1}% +}{% + \\% + \hline + \end{tabular}% + \nobreak + \par + \nobreak + \vspace{2.3ex}% + \vskip -\parskip + \noindent + \ignorespacesafterend +} +% \end{macrocode} +% +% \subsection{Names} +% +% \begin{macrocode} +\providecommand*{\eTeX}{\mbox{$\varepsilon$-\TeX}} +\providecommand*{\pdfTeX}{pdf\TeX} +\providecommand*{\pdfLaTeX}{pdf\LaTeX} +\providecommand*{\teTeX}{te\TeX} +\providecommand*{\mikTeX}{mik\TeX} +\providecommand*{\MakeIndex}{\textsl{MakeIndex}} +\providecommand*{\docstrip}{\textsf{docstrip}} +\providecommand*{\plainTeX}{\mbox{plain-\TeX}} +\providecommand*{\VTeX}{V\TeX} +% \end{macrocode} +% +% \subsection{Setup} +% +% \subsubsection{Package \xpackage{doc}} +% +% \begin{macrocode} +\CodelineIndex +\EnableCrossrefs +\setcounter{IndexColumns}{2} +% \end{macrocode} +% \begin{macrocode} +\DoNotIndex{\begingroup,\endgroup,\bgroup,\egroup} +\DoNotIndex{\def,\edef,\xdef,\global,\long,\let} +\DoNotIndex{\expandafter,\noexpand,\string} +\DoNotIndex{\else,\fi,\or} +\DoNotIndex{\relax} +% \end{macrocode} +% +% \subsubsection{Page layout} +% \begin{macrocode} +\addtolength{\textheight}{\headheight} +\addtolength{\textheight}{\headsep} +\setlength{\headheight}{0pt} +\setlength{\headsep}{0pt} +% \end{macrocode} +% \begin{macrocode} +\addtolength{\topmargin}{-10mm} +\addtolength{\textheight}{20mm} +% \end{macrocode} +% \begin{macrocode} +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/holtxdoc.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/holtxdoc.pdf}] Documentation. +% \end{description} +% +% \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 holtxdoc.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@{}} +% holtxdoc.sty & tex/latex/oberdiek/holtxdoc.sty\\ +% holtxdoc.pdf & doc/latex/oberdiek/holtxdoc.pdf\\ +% holtxdoc.dtx & source/latex/oberdiek/holtxdoc.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 holtxdoc.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{holtxdoc.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 holtxdoc.dtx +%makeindex -s gind.ist holtxdoc.idx +%pdflatex holtxdoc.dtx +%makeindex -s gind.ist holtxdoc.idx +%pdflatex holtxdoc.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{1999/06/26 v0.3} +% \item +% \dots +% \end{Version} +% \begin{Version}{2000/08/14 v0.4} +% \item +% \dots +% \end{Version} +% \begin{Version}{2001/08/27 v0.5} +% \item +% \dots +% \end{Version} +% \begin{Version}{2001/09/02 v0.6} +% \item +% \dots +% \end{Version} +% \begin{Version}{2006/06/02 v0.7} +% \item +% Major change: most is put into a new package \xpackage{hypdoc}. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/hypbmsec.dtx b/Master/texmf-dist/source/latex/oberdiek/hypbmsec.dtx index 8c65281e06c..a0d60c5bb66 100644 --- a/Master/texmf-dist/source/latex/oberdiek/hypbmsec.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/hypbmsec.dtx @@ -1,81 +1,181 @@ % \iffalse meta-comment % -% hypbmsec.dtx -% -% This file is part of the package `hypbmsec' for use with LaTeX2e. -% -% Function: Bookmarks in sectioning commands. -% -% Copyright (C) 1998,1999,2000 Heiko Oberdiek. -% -% This program may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either version 1.2 -% 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.2 or later is part of all distributions of LaTeX -% version 1999/12/01 or later. -% -% Please send error reports and suggestions for improvements to -% Heiko Oberdiek <oberdiek@ruf.uni-freiburg.de>. -% -%<*dtx> - \ProvidesFile{hypbmsec.dtx} -%</dtx> -%<package>\NeedsTeXFormat{LaTeX2e} -%<package>\ProvidesPackage{hypbmsec} -%<driver>\ProvidesFile{hypbmsec.drv} -% \fi -% \ProvidesFile{hypbmsec.dtx} - [2000/03/22 v2.1 Bookmarks in sectioning commands (HO).] -% -% \GetFileInfo{hypbmsec.dtx} -% -% \CheckSum{159} -% -%% \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 \~} -%% -% \iffalse +% Copyright (C) 1998-2000, 2006 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 hypbmsec.dtx +% and the derived files +% hypbmsec.sty, hypbmsec.pdf, hypbmsec.ins, hypbmsec.drv. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/hypbmsec.dtx +% CTAN:macros/latex/contrib/oberdiek/hypbmsec.pdf +% +% Unpacking: +% (a) If hypbmsec.ins is present: +% tex hypbmsec.ins +% (b) Without hypbmsec.ins: +% tex hypbmsec.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{hypbmsec.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If hypbmsec.drv is present: +% latex hypbmsec.drv +% (b) Without hypbmsec.drv: +% latex hypbmsec.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 hypbmsec.dtx +% makeindex -s gind.ist hypbmsec.idx +% pdflatex hypbmsec.dtx +% makeindex -s gind.ist hypbmsec.idx +% pdflatex hypbmsec.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/hypbmsec.sty +% TDS:doc/latex/oberdiek/hypbmsec.pdf +% TDS:source/latex/oberdiek/hypbmsec.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: hypbmsec 2006/02/20 v2.2 Bookmarks in sectioning commands (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 1998-2000, 2006 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 hypbmsec.dtx +and the derived files + hypbmsec.sty, hypbmsec.pdf, hypbmsec.ins, hypbmsec.drv. + +\endpreamble + +\generate{% + \file{hypbmsec.ins}{\from{hypbmsec.dtx}{install}}% + \file{hypbmsec.drv}{\from{hypbmsec.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{hypbmsec.sty}{\from{hypbmsec.dtx}{package}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* hypbmsec.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `hypbmsec.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> %<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{hypbmsec.drv}% + [2006/02/20 v2.2 Bookmarks in sectioning commands (HO)] \documentclass{ltxdoc} \usepackage{holtxdoc} \begin{document} - \DocInput{hypbmsec.dtx} + \DocInput{hypbmsec.dtx} \end{document} %</driver> % \fi % -% \DoNotIndex{\csname,\endcsname,\expandafter,\noexpand,\string} -% \DoNotIndex{\begingroup,\endgroup,\def,\xdef,\long,\let} -% \DoNotIndex{\ifx,\newcommand,\renewcommand} -% -% \newcommand{\type}[1]{\textsf{#1}} +% \CheckSum{161} +% +% \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{hypbmsec.drv} +% +% \title{The \xpackage{hypbmsec} package} +% \date{2006/02/20 v2.2} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} % -% \SetupTitle{hyperref,section,bookmark,pdf,LaTeX} % \maketitle % % \begin{abstract} -% This package expands the syntax of the sectioning commands. If the -% argument of the sectioning commands isn't usable as outline entry, -% a replacement for the bookmarks can be given. +% This package expands the syntax of the sectioning commands. If the +% argument of the sectioning commands isn't usable as outline entry, +% a replacement for the bookmarks can be given. % \end{abstract} % % \tableofcontents % +% \newcommand{\type}[1]{\textsf{#1}} +% +% ^^A No thread support. +% \newenvironment{article}[1]{}{} +% % \section{Usage} % % \subsection{Bookmarks restrictions}\label{sec:restrictions} @@ -252,14 +352,19 @@ % |\section(outlines(bookmarks{)}){text, toc}| % \end{quote} % -% \Installation -% -% \StopEventually{} +% \StopEventually{ +% } % % \section{Implementation} % \begin{macrocode} %<*package> % \end{macrocode} +% Package identification. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{hypbmsec}% + [2006/02/20 v2.2 Bookmarks in sectioning commands (HO)] +% \end{macrocode} % % Because of redifining the sectioning commands, it is dangerous % to reload the package several times. @@ -451,30 +556,135 @@ % \begin{macrocode} %</package> % \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/hypbmsec.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/hypbmsec.pdf}] Documentation. +% \end{description} +% +% \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 hypbmsec.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@{}} +% hypbmsec.sty & tex/latex/oberdiek/hypbmsec.sty\\ +% hypbmsec.pdf & doc/latex/oberdiek/hypbmsec.pdf\\ +% hypbmsec.dtx & source/latex/oberdiek/hypbmsec.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 hypbmsec.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{hypbmsec.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 hypbmsec.dtx +%makeindex -s gind.ist hypbmsec.idx +%pdflatex hypbmsec.dtx +%makeindex -s gind.ist hypbmsec.idx +%pdflatex hypbmsec.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{1998/11/20 v1.0} +% \item +% First version. +% \item +% It merges package \xpackage{hysecopt} and +% \item +% package \xpackage{hypbmpar}. +% \item +% Published for the DANTE'99 meating^^A +% \URL{}{http://dante99.cs.uni-dortmund.de/handouts/oberdiek/hypbmsec.sty}. +% \end{Version} +% \begin{Version}{1999/04/12 v2.0} +% \item +% Adaptation to \Package{hyperref} version 6.54. +% \item +% Documentation in dtx format. +% \item +% Copyright: LPPL (\CTAN{macros/latex/base/lppl.txt}) +% \item +% First CTAN release. +% \end{Version} +% \begin{Version}{2000/03/22 v2.1} +% \item +% Bug fix in redefinition of \cmd{\chapter}. +% \item +% Copyright: LPPL 1.2 +% \end{Version} +% \begin{Version}{2006/02/20 v2.2} +% \item +% Code is not changed. +% \item +% New DTX framework. +% \item +% LPPL 1.3 +% \end{Version} +% \end{History} % -% \StartHistory -% \HistVersion{1998/11/20 v1.0} -% \begin{itemize} -% \item First version. -% \item It merges package \Package{hysecopt} and -% package \Package{hypbmpar}. -% \item Published for the DANTE'99 meating^^A -%\URL{}{http://dante99.cs.uni-dortmund.de/handouts/oberdiek/hypbmsec.sty}. -% \end{itemize} -% \HistVersion{1999/04/12 v2.0} -% \begin{itemize} -% \item Adaptation to \Package{hyperref} version 6.54. -% \item Documentation in dtx format. -% \item Copyright: LPPL (\CTAN{macros/latex/base/lppl.txt}) -% \item First CTAN release. -% \end{itemize} -% \HistVersion{2000/03/22 v2.1} -% \begin{itemize} -% \item Bug fix in redefinition of \cmd{\chapter}. -% \item Copyright: LPPL 1.2 -% \end{itemize} -% -% \hfuzz10pt % \PrintIndex % % \Finale diff --git a/Master/texmf-dist/source/latex/oberdiek/hypbmsec.ins b/Master/texmf-dist/source/latex/oberdiek/hypbmsec.ins deleted file mode 100644 index 5eee3aae7d6..00000000000 --- a/Master/texmf-dist/source/latex/oberdiek/hypbmsec.ins +++ /dev/null @@ -1,76 +0,0 @@ -% hypbmsec.ins -% -% This file is part of the package `hypbmsec' for use with LaTeX2e. -% -% Function: Bookmarks in sectioning commands. -% -% Copyright (C) 1998,1999,2000 Heiko Oberdiek. -% -% This program may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either version 1.2 -% 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.2 or later is part of all distributions of LaTeX -% version 1999/12/01 or later. -% -% Please send error reports and suggestions for improvements to -% Heiko Oberdiek <oberdiek@ruf.uni-freiburg.de>. -% - -\def\batchfile{hypbmsec.ins} -\input docstrip.tex -{\ifx\generate\undefined -\Msg{**********************************************} -\Msg{*} -\Msg{* This installation requires docstrip} -\Msg{* version 2.3c or later.} -\Msg{*} -\Msg{* An older version of docstrip has been input} -\Msg{*} -\Msg{**********************************************} -\errhelp{Move or rename old `docstrip.tex'.} -\errmessage{Old docstrip in input path} -\batchmode -\csname @@end\endcsname -\fi} - -\keepsilent - -\preamble - -This file is part of the package `hypbmsec' for use with LaTeX2e. - -Function: Bookmarks in sectioning commands. - -Copyright (C) 1998,1999,2000 Heiko Oberdiek. - -This program may be distributed and/or modified under the -conditions of the LaTeX Project Public License, either version 1.2 -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.2 or later is part of all distributions of LaTeX -version 1999/12/01 or later. - -Please send error reports and suggestions for improvements to - Heiko Oberdiek <oberdiek@ruf.uni-freiburg.de>. - -\endpreamble - -\generateFile{hypbmsec.sty}{f}{\from{hypbmsec.dtx}{package}} -%\generateFile{hypbmsec.drv}{f}{\from{hypbmsec.dtx}{driver}} - -\Msg{***********************************************************} -\Msg{* To finish the installation you have to move the following} -\Msg{* file into a directory searched by TeX:} -\Msg{*} -\Msg{* \space\space hypbmsec.sty} -\Msg{*} -\Msg{* To produce the documentation run the file `hypbmsec.dtx'} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing} -\Msg{***********************************************************} - -\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/hypcap.dtx b/Master/texmf-dist/source/latex/oberdiek/hypcap.dtx index e43a8755f6c..21ec65d87dc 100644 --- a/Master/texmf-dist/source/latex/oberdiek/hypcap.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/hypcap.dtx @@ -1,78 +1,176 @@ % \iffalse meta-comment % -% hypcap.dtx -% -% This file is part of the package `hypcap' for use with LaTeX2e. -% -% Function: Adjusting anchors of captions. -% -% Copyright (C) 1999-2001 Heiko Oberdiek. -% -% This program may be distributed and/or modified under -% the conditions of the LaTeX Project Public License, -% either version 1.2 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.2 or later is part of all distributions -% of LaTeX version 1999/12/01 or later. -% -% Please send error reports and suggestions for improvements to -% Heiko Oberdiek <oberdiek@uni-freiburg.de>. -% -%<*dtx> -\ProvidesFile{hypcap.dtx} -%</dtx> -%<package>\ProvidesPackage{hypcap} -%<driver>\ProvidesFile{hypcap.drv} -% \fi -% \ProvidesFile{hypcap.dtx} - [2001/08/27 v1.3 Adjusting anchors of captions (HO)] -% -% \GetFileInfo{hypcap.dtx} -% \CheckSum{131} -% -%% \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 \~} -%% -% \iffalse +% Copyright (C) 1999-2001, 2006 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 hypcap.dtx +% and the derived files +% hypcap.sty, hypcap.pdf, hypcap.ins, hypcap.drv. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/hypcap.dtx +% CTAN:macros/latex/contrib/oberdiek/hypcap.pdf +% +% Unpacking: +% (a) If hypcap.ins is present: +% tex hypcap.ins +% (b) Without hypcap.ins: +% tex hypcap.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{hypcap.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If hypcap.drv is present: +% latex hypcap.drv +% (b) Without hypcap.drv: +% latex hypcap.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 hypcap.dtx +% makeindex -s gind.ist hypcap.idx +% pdflatex hypcap.dtx +% makeindex -s gind.ist hypcap.idx +% pdflatex hypcap.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/hypcap.sty +% TDS:doc/latex/oberdiek/hypcap.pdf +% TDS:source/latex/oberdiek/hypcap.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: hypcap 2006/02/20 v1.5 Adjusting anchors of captions (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 1999-2001, 2006 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 hypcap.dtx +and the derived files + hypcap.sty, hypcap.pdf, hypcap.ins, hypcap.drv. + +\endpreamble + +\generate{% + \file{hypcap.ins}{\from{hypcap.dtx}{install}}% + \file{hypcap.drv}{\from{hypcap.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{hypcap.sty}{\from{hypcap.dtx}{package}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* hypcap.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `hypcap.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> %<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{hypcap.drv}% + [2006/02/20 v1.5 Adjusting anchors of captions (HO)] \documentclass{ltxdoc} \usepackage{holtxdoc} \begin{document} - \DocInput{hypcap.dtx} + \DocInput{hypcap.dtx} \end{document} %</driver> % \fi % -% \DoNotIndex{\else,\fi,\csname,\endcsname} -% \DoNotIndex{\def,\edef,\long,\begingroup,\endgroup} -% \DoNotIndex{\the,\relax,\expandafter} +% \CheckSum{133} +% +% \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{hypcap.drv} +% +% \title{The \xpackage{hypcap} package} +% \date{2006/02/20 v1.5} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} % -% \SetupTitle{hyperref, caption, anchor, TeX} % \maketitle % % \begin{abstract} -% This package tries a solution of the problem with -% hyperref, that links to floats points below the -% caption and not at the beginning of the float. -% Therefore this package divides the task into two -% part, the link setting with \cmd{\capstart} or -% automatically at the beginning of a float and -% the rest in the \cmd{\caption} command. +% This package tries a solution of the problem with +% hyperref, that links to floats points below the +% caption and not at the beginning of the float. +% Therefore this package divides the task into two +% part, the link setting with \cs{capstart} or +% automatically at the beginning of a float and +% the rest in the \cs{caption} command. % \end{abstract} % % \tableofcontents @@ -88,18 +186,18 @@ % \subsection{Package options} % The names of the four float environments |figure|, |figure*|, % |table|, or |table*| can be used as option. Then the package -% overloads the environment in order to insert \cmd{\capstart} +% redefines the environment in order to insert \cmd{\capstart} % (see below) in the beginning of the environment automatically. % -% Option |all| enables the overloading of all four +% Option |all| enables the redefinitions of all four % float environments. For other environments see % the user command \cmd{\hypcapredef}. % % \subsection{User commands} % \begin{description} % \item[\cmd{\capstart}:]\DescribeMacro{\capstart} -% First it increments the counter (\cmd{\@captype}). Then it -% makes an anchor for package \Package{hyperref}. +% First this command increments the counter (\cmd{\@captype}). +% Then it makes an anchor for package \Package{hyperref}. % At last \cmd{\caption} is redefined to remove the % anchor setting part from \Package{hyperref}'s \cmd{\caption}. % @@ -120,10 +218,12 @@ % \end{quote} % And the \cmd{\caption} command itself can be put in a group. % -% The options, described above, safe writing the -% first \cmd{\capstart} in the float environment. -% But also there must be a \cmd{\caption} in every -% environment of this type. +% With the options, described above, the extra +% writing of \cmd{\capstart} can be avoided. +% Consequently, there must be a \cmd{\caption} in every +% environment of this type, specified by the option. +% If you want to use more than one \cmd{\caption} in this +% environment, you have to state \cmd{\capstart} again. % \item[\cmd{\hypcapspace}:]\DescribeMacro{\hypcapspace} % Because it looks poor, if the link points exactly at top of % the figure, there is additional space: \cmd{\hypcapspace}, @@ -150,16 +250,19 @@ % \cmd{\@caption}. % \end{itemize} % -% \Installation -% -% \StopEventually{} +% \StopEventually{ +% } % % \section{Implementation} % \begin{macrocode} %<*package> % \end{macrocode} -% The package identification is done at the top of the |.dtx| file -% in order to use only one identification string. +% Package identification. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{hypcap}% + [2006/02/20 v1.5 Adjusting anchors of captions (HO)] +% \end{macrocode} % % For unique command names this package uses |hc@| as prefix % for internal command names. @@ -318,28 +421,130 @@ % \begin{macrocode} %</package> % \end{macrocode} -% -% \StartHistory -% \HistVersion{1999/02/13 v1.0} -% \begin{itemize} -% \item A beginning version. -% \end{itemize} -% \HistVersion{2000/08/14 v1.1} -% \begin{itemize} -% \item Global assignments of |\if@capstart| -% in order to allow |\caption| in groups. -% \item Option |all| added. -% \end{itemize} -% \HistVersion{2000/09/07 v1.2} -% \begin{itemize} -% \item Package in dtx format. -% \end{itemize} -% \HistVersion{2001/08/27 v1.3} -% \begin{itemize} -% \item Bug fix with hyperref's pdfmark driver\\ -% (\verb|\leavevmode| in -% \verb|\hyper@@anchor|/\verb|\pdf@rect|). -% \end{itemize} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/hypcap.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/hypcap.pdf}] Documentation. +% \end{description} +% +% \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 hypcap.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@{}} +% hypcap.sty & tex/latex/oberdiek/hypcap.sty\\ +% hypcap.pdf & doc/latex/oberdiek/hypcap.pdf\\ +% hypcap.dtx & source/latex/oberdiek/hypcap.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 hypcap.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{hypcap.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 hypcap.dtx +%makeindex -s gind.ist hypcap.idx +%pdflatex hypcap.dtx +%makeindex -s gind.ist hypcap.idx +%pdflatex hypcap.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{1999/02/13 v1.0} +% \item +% A beginning version. +% \end{Version} +% \begin{Version}{2000/08/14 v1.1} +% \item +% Global assignments of \cs{if@capstart} +% in order to allow \cs{caption} in groups. +% \item +% Option \texttt{all} added. +% \end{Version} +% \begin{Version}{2000/09/07 v1.2} +% \item +% Package in dtx format. +% \end{Version} +% \begin{Version}{2001/08/27 v1.3} +% \item +% Bug fix with hyperref's pdfmark driver\\ +% (\cs{leavevmode} in +% \cs{hyper@@anchor}/\cs{pdf@rect}). +% \end{Version} +% \begin{Version}{2001/09/06 v1.4} +% \item +% Small fixes in the dtx file. +% \end{Version} +% \begin{Version}{2006/02/20 v1.5} +% \item +% Code is not changed. +% \item +% New DTX framework. +% \end{Version} +% \end{History} % % \PrintIndex % diff --git a/Master/texmf-dist/source/latex/oberdiek/hypcap.ins b/Master/texmf-dist/source/latex/oberdiek/hypcap.ins deleted file mode 100644 index 185f234452b..00000000000 --- a/Master/texmf-dist/source/latex/oberdiek/hypcap.ins +++ /dev/null @@ -1,79 +0,0 @@ -% File: hypcap.ins -% Version: 2001/08/27 -% -% This file is part of the package `hypcap' for use with LaTeX2e. -% -% Function: Adjusting anchors of captions. -% -% Copyright (C) 1999-2001 Heiko Oberdiek. -% -% This program may be distributed and/or modified under -% the conditions of the LaTeX Project Public License, -% either version 1.2 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.2 or later is part of all distributions -% of LaTeX version 1999/12/01 or later. -% -% Please send error reports and suggestions for improvements to -% Heiko Oberdiek <oberdiek@uni-freiburg.de>. -% - -\def\batchfile{hypcap.ins} -\input docstrip.tex -{\ifx\generate\undefined -\Msg{**********************************************} -\Msg{*} -\Msg{* This installation requires docstrip} -\Msg{* version 2.3c or later.} -\Msg{*} -\Msg{* An older version of docstrip has been input} -\Msg{*} -\Msg{**********************************************} -\errhelp{Move or rename old `docstrip.tex'.} -\errmessage{Old docstrip in input path} -\batchmode -\csname @@end\endcsname -\fi} - -\keepsilent - -\preamble - -This file is part of the package `hypcap' for use with LaTeX2e. - -Function: Adjusting anchors of captions. - -Copyright (C) 1999-2001 Heiko Oberdiek. - -This program may be distributed and/or modified under -the conditions of the LaTeX Project Public License, -either version 1.2 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.2 or later is part of all distributions -of LaTeX version 1999/12/01 or later. - -Please send error reports and suggestions for improvements to - Heiko Oberdiek <oberdiek@uni-freiburg.de>. - -\endpreamble - -\generateFile{hypcap.sty}{f}{\from{hypcap.dtx}{package}} -%\generateFile{hypcap.drv}{f}{\from{hypcap.dtx}{driver}} - -\Msg{***********************************************************} -\Msg{* To finish the installation you have to move the following} -\Msg{* file into a directory searched by TeX:} -\Msg{*} -\Msg{* \space\space hypcap.sty} -\Msg{*} -\Msg{* To produce the documentation run the file `hypcap.dtx'} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing} -\Msg{***********************************************************} - -\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/hypdestopt.dtx b/Master/texmf-dist/source/latex/oberdiek/hypdestopt.dtx new file mode 100644 index 00000000000..8d0907415fe --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/hypdestopt.dtx @@ -0,0 +1,816 @@ +% \iffalse meta-comment +% +% Copyright (C) 2006 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 hypdestopt.dtx +% and the derived files +% hypdestopt.sty, hypdestopt.pdf, hypdestopt.ins, hypdestopt.drv. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/hypdestopt.dtx +% CTAN:macros/latex/contrib/oberdiek/hypdestopt.pdf +% +% Unpacking: +% (a) If hypdestopt.ins is present: +% tex hypdestopt.ins +% (b) Without hypdestopt.ins: +% tex hypdestopt.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{hypdestopt.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If hypdestopt.drv is present: +% latex hypdestopt.drv +% (b) Without hypdestopt.drv: +% latex hypdestopt.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 hypdestopt.dtx +% makeindex -s gind.ist hypdestopt.idx +% pdflatex hypdestopt.dtx +% makeindex -s gind.ist hypdestopt.idx +% pdflatex hypdestopt.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/hypdestopt.sty +% TDS:doc/latex/oberdiek/hypdestopt.pdf +% TDS:source/latex/oberdiek/hypdestopt.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: hypdestopt 2006/06/01 v2.0 Hyperref destination optimizer (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2006 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 hypdestopt.dtx +and the derived files + hypdestopt.sty, hypdestopt.pdf, hypdestopt.ins, hypdestopt.drv. + +\endpreamble + +\generate{% + \file{hypdestopt.ins}{\from{hypdestopt.dtx}{install}}% + \file{hypdestopt.drv}{\from{hypdestopt.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{hypdestopt.sty}{\from{hypdestopt.dtx}{package}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* hypdestopt.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `hypdestopt.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{hypdestopt.drv}% + [2006/06/01 v2.0 Hyperref destination optimizer (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\begin{document} + \DocInput{hypdestopt.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{514} +% +% \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{hypdestopt.drv} +% +% \title{The \xpackage{hypdestopt} package} +% \date{2006/06/01 v2.0} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% Package \xpackage{hypdestopt} supports \xpackage{hyperref}'s +% \xoption{pdftex} driver. It removes unnecessary destinations +% and shortens the destination names or uses numbered destinations +% to get smaller PDF files. +% \end{abstract} +% +% \tableofcontents +% +% \section{User interface} +% +% \subsection{Introduction} +% +% Before PDF-1.5 annotations and destinations cannot be compressed. +% If the destination names are not needed for external use, the +% file size can be decreased by the following means: +% \begin{itemize} +% \item Unused destinations are removed. +% \item The destination names are shortened (option \xoption{name}). +% \item Using numbered destinations (option \xoption{num}). +% \end{itemize} +% +% \subsection{Requirements} +% +% \begin{itemize} +% \item Package \xpackage{hyperref} 2006/06/01 v6.75a or newer +% (\cite{hyperref}). +% \item Package \xpackage{alphalph} 2006/05/30 v1.4 or newer +% (\cite{alphalph}), if option \xoption{name} is used. +% \item Package \xpackage{ifpdf} (\cite{ifpdf}). +% \item \pdfTeX\ 1.30.0 or newer. +% \item \pdfTeX\ in PDF mode. +% \item \eTeX\ extensions enabled. +% \item Probably an additional compile run of \pdfLaTeX\ is necessary. +% \end{itemize} +% +% In the first compile runs you can get warnings such as: +%\begin{quote} +%\begin{verbatim} +%! pdfTeX warning (dest): name{...} has been referenced ... +%\end{verbatim} +%\end{quote} +% These warnings should vanish in later compile runs. +% However these warnings also can occur without this package. +% The package does not cure them, thus these warnings will remain, +% but the destination name can be different. In such cases test +% without package, too. +% +% \subsection{Use} +% +% If the requirements are met, load the package: +%\begin{quote} +%\verb|\usepackage{hypdestopt}| +%\end{quote} +% +% The following options are supported: +% \begin{description} +% \item[\xoption{verbose}:] Verbose debug output is enabled and written +% in the protocol file. +% \item[\xoption{num}:] Numbered destinations are used. The file size +% is smaller, because names are no longer used. +% This is the default. +% \item[\xoption{name}:] Destinations are identified by names. +% \end{description} +% +% \subsection{Limitations} +% +% \begin{itemize} +% \item Forget this package, if you need preserved destination names. +% \item Destination name strings use all bytes (0..255) except +% the carriage return (13), left parenthesis (40), right +% parenthesis (41), and backslash (92), because they +% must be quoted in general and therefore occupy two bytes +% instead of one. +% +% Further the zero byte (0) is avoided for programs +% that implement strings using zero terminated C strings. +% And 255 (0xFF) is avoided to get rid of a possible +% unicode marker at the begin. +% +% So far I have not seen problems with: +% \begin{itemize} +% \item AcrobatReader 5.08/Linux +% \item AcrobatReader 7.0/Linux +% \item xpdf 3.00 +% \item Ghostscript 8.50 +% \item gv 3.5.8 +% \item GSview 4.6 +% \end{itemize} +% But I have not tested all and all possible PDF viewers. +% \item Use of named destinations (\cs{pdfdest}, \cs{pdfoutline}, +% \cs{pdfstartlink}, \dots) that are not supported by this +% package. +% \item Currently only \xpackage{hyperref} with \pdfTeX\ in PDF +% mode is supported. +% \end{itemize} +% +% \subsection{Future} +% +% A more general approach is a PDF postprocessor that takes +% a PDF file, performs some transformations and writes the +% result in a more optimized PDF file. Then it does not depend, +% how the original PDF file was generated and further improvements +% are easier to apply. For example, the destination names could be sorted: +% often used destination names would then be shorter than seldom used ones. +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \subsection{Identification} +% +% \begin{macrocode} +%<*package> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{hypdestopt}% + [2006/06/01 v2.0 Hyperref destination optimizer (HO)] +% \end{macrocode} +% +% \subsection{Options} +% +% \subsubsection{Option \xoption{verbose}} +% +% \begin{macrocode} +\newif\ifHypDest@Verbose +\DeclareOption{verbose}{\HypDest@Verbosetrue} +% \end{macrocode} +% +% \begin{macro}{\HypDest@VerboseInfo} +% Wrapper for verbose messages. +% \begin{macrocode} +\def\HypDest@VerboseInfo#1{% + \ifHypDest@Verbose + \PackageInfo{hypdestopt}{#1}% + \fi +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Options \xoption{num} and \xoption{name}} +% +% The options \xoption{num} or \xoption{name} specify +% the method, how destinations are referenced (by name or +% number). Default is option \xoption{num}. +% \begin{macrocode} +\newif\ifHypDest@name +\DeclareOption{num}{\HypDest@namefalse} +\DeclareOption{name}{\HypDest@nametrue} +% \end{macrocode} +% +% \begin{macrocode} +\ProcessOptions*\relax +% \end{macrocode} +% +% \subsection{Check requirements} +% +% First \pdfTeX\ must running in PDF mode. +% \begin{macrocode} +\RequirePackage{ifpdf} +\ifpdf +\else + \PackageError{hypdestopt}{% + This package requires pdfTeX in PDF mode% + }\@ehc + \expandafter\endinput +\fi +% \end{macrocode} +% The version of \pdfTeX\ must not be too old, because +% \cs{pdfescapehex} and \cs{pdfunescapehex} are used. +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname pdfescapehex\endcsname\relax + \PackageError{hypdestopt}{% + This pdfTeX is too old, at least 1.30.0 is required% + }\@ehc + \expandafter\endinput +\fi +% \end{macrocode} +% Features of \eTeX\ are used, e.g. \cs{numexpr}. +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname numexpr\endcsname\relax + \PackageError{hypdestopt}{% + e-TeX features are missing% + }\@ehc + \expandafter\endinput +\fi +% \end{macrocode} +% Package \xpackage{alphalph} provides \cs{newalphalph} since +% version 2006/05/30 v1.4. +% \begin{macrocode} +\ifHypDest@name + \RequirePackage{alphalph}[2006/05/30] +\fi +% \end{macrocode} +% \begin{macrocode} +\RequirePackage{auxhook} +% \end{macrocode} +% +% \subsection{Preamble for auxiliary file} +% +% Provide dummy definitions for the macros that are used in the +% auxiliary files. If the package is used no longer, then these +% commands will not generate errors. +% +% \begin{macro}{\HypDest@PrependDocument} +% We add our stuff in front of the \cs{AtBeginDocument} hook +% to ensure that we are before \xpackage{hyperref}'s stuff. +% \begin{macrocode} +\long\def\HypDest@PrependDocument#1{% + \begingroup + \toks\z@{#1}% + \toks\tw@\expandafter{\@begindocumenthook}% + \xdef\@begindocumenthook{\the\toks\z@\the\toks\tw@}% + \endgroup +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\AddLineBeginAux{% + \string\providecommand{\string\HypDest@Use}[1]{}% +} +% \end{macrocode} +% +% \subsection{Generation of destination names} +% +% Counter |HypDest| is used for identifying destinations. +% \begin{macrocode} +\newcounter{HypDest} +% \end{macrocode} +% +% \begin{macrocode} +\ifHypDest@name +% \end{macrocode} +% +% \begin{macro}{\HypDest@HexChar} +% Destination names are generated by automatically +% numbering with the help of package \xpackage{alphalph}. +% \cs{HypDest@HexChar} converts a number of the range 1 until 252 +% into the hexadecimal representation of the string character. +% \begin{macrocode} + \def\HypDest@HexChar#1{% + \ifcase#1\or +% \end{macrocode} +% Avoid zero byte because of C strings in PDF viewer +% applications. +% \begin{macrocode} + 01\or 02\or 03\or 04\or 05\or 06\or 07\or +% \end{macrocode} +% Omit carriage return (13/\verb|^^0d|). +% It needs quoting, otherwise it would be converted +% to line feed (10/\verb|^^0a|). +% \begin{macrocode} + 08\or 09\or 0A\or 0B\or 0C\or 0E\or 0F\or + 10\or 11\or 12\or 13\or 14\or 15\or 16\or 17\or + 18\or 19\or 1A\or 1B\or 1C\or 1D\or 1E\or 1F\or + 20\or 21\or 22\or 23\or 24\or 25\or 26\or 27\or +% \end{macrocode} +% Omit left and right parentheses (40/\verb|^^28|, 41/\verb|^^39|), +% they need quoting in general. +% \begin{macrocode} + 2A\or 2B\or 2C\or 2D\or 2E\or 2F\or + 30\or 31\or 32\or 33\or 34\or 35\or 36\or 37\or + 38\or 39\or 3A\or 3B\or 3C\or 3D\or 3E\or 3F\or + 40\or 41\or 42\or 43\or 44\or 45\or 46\or 47\or + 48\or 49\or 4A\or 4B\or 4C\or 4D\or 4E\or 4F\or + 50\or 51\or 52\or 53\or 54\or 55\or 56\or 57\or +% \end{macrocode} +% Omit backslash (92/\verb|^^5C|), it needs quoting. +% \begin{macrocode} + 58\or 59\or 5A\or 5B\or 5D\or 5E\or 5F\or + 60\or 61\or 62\or 63\or 64\or 65\or 66\or 67\or + 68\or 69\or 6A\or 6B\or 6C\or 6D\or 6E\or 6F\or + 70\or 71\or 72\or 73\or 74\or 75\or 76\or 77\or + 78\or 79\or 7A\or 7B\or 7C\or 7D\or 7E\or 7F\or + 80\or 81\or 82\or 83\or 84\or 85\or 86\or 87\or + 88\or 89\or 8A\or 8B\or 8C\or 8D\or 8E\or 8F\or + 90\or 91\or 92\or 93\or 94\or 95\or 96\or 97\or + 98\or 99\or 9A\or 9B\or 9C\or 9D\or 9E\or 9F\or + A0\or A1\or A2\or A3\or A4\or A5\or A6\or A7\or + A8\or A9\or AA\or AB\or AC\or AD\or AE\or AF\or + B0\or B1\or B2\or B3\or B4\or B5\or B6\or B7\or + B8\or B9\or BA\or BB\or BC\or BD\or BE\or BF\or + C0\or C1\or C2\or C3\or C4\or C5\or C6\or C7\or + C8\or C9\or CA\or CB\or CC\or CD\or CE\or CF\or + D0\or D1\or D2\or D3\or D4\or D5\or D6\or D7\or + D8\or D9\or DA\or DB\or DC\or DD\or DE\or DF\or + E0\or E1\or E2\or E3\or E4\or E5\or E6\or E7\or + E8\or E9\or EA\or EB\or EC\or ED\or EE\or EF\or + F0\or F1\or F2\or F3\or F4\or F5\or F6\or F7\or +% \end{macrocode} +% Avoid 255 (0xFF) to get rid of a possible unicode +% marker at the begin of the string. +% \begin{macrocode} + F8\or F9\or FA\or FB\or FC\or FD\or FE% + \fi + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{HypDest@HexString} +% Now package \xpackage{alphalph} comes into play. +% \cs{HypDest@HexString} is defined and converts +% a positive number into a string, given in hexadecimal +% representation. +% \begin{macrocode} + \newalphalph\HypDest@HexString\HypDest@HexChar{250}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\theHypDest} +% For use, the hexadecimal string is converted back. +% \begin{macrocode} + \renewcommand*{\theHypDest}{% + \pdfunescapehex{\HypDest@HexString{\value{HypDest}}}% + }% +% \end{macrocode} +% \end{macro} +% +% With option \xoption{num} we use the number directly. +% \begin{macrocode} +\else + \renewcommand*{\theHypDest}{% + \number\value{HypDest}% + }% +\fi +% \end{macrocode} +% +% \subsection{Assign destination names} +% +% \begin{macro}{\HypDest@Prefix} +% The new destination names are remembered in macros whose names +% start with prefix \cs{HypDest@Prefix}. +% \begin{macrocode} +\edef\HypDest@Prefix{HypDest\string:} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HypDest@Use} +% During the first read of the auxiliary files, the used destinations +% get fresh generated short destination names. Also for the old +% destination names we use the hexadecimal representation. That +% avoid problems with arbitrary names. +% \begin{macrocode} +\def\HypDest@Use#1{% + \begingroup + \edef\x{% + \expandafter\noexpand + \csname\HypDest@Prefix\pdfunescapehex{#1}\endcsname + }% + \expandafter\ifx\x\relax + \stepcounter{HypDest}% + \expandafter\xdef\x{\theHypDest}% + \let\on@line\@empty + \ifHypDest@name + \HypDest@VerboseInfo{% + Use: (\pdfunescapehex{#1}) -\string> % + 0x\pdfescapehex{\x} (\number\value{HypDest})% + }% + \else + \HypDest@VerboseInfo{% + Use: (\pdfunescapehex{#1}) -\string> num \x + }% + \fi + \fi + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% After the first \xfile{.aux} file processing the destination names +% are assigned and we can disable \cs{HypDest@Use}. +% \begin{macrocode} +\AtBeginDocument{% + \let\HypDest@Use\@gobble +} +% \end{macrocode} +% +% \begin{macro}{\HypDest@MarkUsed} +% Destinations that are actually used are marked by \cs{HypDest@MarkUsed}. +% \cs{nofiles} is respected. +% \begin{macrocode} +\def\HypDest@MarkUsed#1{% + \HypDest@VerboseInfo{% + MarkUsed: (#1)% + }% + \if@filesw + \immediate\write\@auxout{% + \string\HypDest@Use{\pdfescapehex{#1}}% + }% + \fi +}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Redefinition of \xpackage{hyperref}'s hooks} +% +% Package \xpackage{hyperref} can be loaded later, therefore +% we redefine \xpackage{hyperref}'s macros at |\begin{document}|. +% \begin{macrocode} +\HypDest@PrependDocument{% +% \end{macrocode} +% +% Check hyperref version. +% \begin{macrocode} + \@ifpackagelater{hyperref}{2006/06/01}{}{% + \PackageError{hypdestopt}{% + hyperref 2006/06/01 v6.75a or later is required% + }\@ehc + }% +% \end{macrocode} +% +% \subsubsection{Destination setting} +% +% \begin{macrocode} + \ifHypDest@name + \let\HypDest@Org@DestName\Hy@DestName + \renewcommand*{\Hy@DestName}[2]{% + \@ifundefined{\HypDest@Prefix#1}{% + \HypDest@VerboseInfo{% + DestName: (#1) unused% + }% + }{% + \HypDest@Org@DestName{\csname\HypDest@Prefix#1\endcsname}{#2}% + \HypDest@VerboseInfo{% + DestName: (#1) % + 0x\pdfescapehex{\csname\HypDest@Prefix#1\endcsname}% + }% + }% + }% + \else + \renewcommand*{\Hy@DestName}[2]{% + \@ifundefined{\HypDest@Prefix#1}{% + \HypDest@VerboseInfo{% + DestName: (#1) unused% + }% + }{% + \pdfdest num\csname\HypDest@Prefix#1\endcsname#2\relax + \HypDest@VerboseInfo{% + DestName: (#1) % + num \csname\HypDest@Prefix#1\endcsname + }% + }% + }% + \fi +% \end{macrocode} +% +% \subsubsection{Links} +% +% \begin{macrocode} + \let\HypDest@Org@StartlinkName\Hy@StartlinkName + \ifHypDest@name + \renewcommand*{\Hy@StartlinkName}[2]{% + \HypDest@MarkUsed{#2}% + \HypDest@Org@StartlinkName{#1}{% + \@ifundefined{\HypDest@Prefix#2}{% + #2% + }{% + \csname\HypDest@Prefix#2\endcsname + }% + }% + }% + \else + \renewcommand*{\Hy@StartlinkName}[2]{% + \HypDest@MarkUsed{#2}% + \@ifundefined{\HypDest@Prefix#2}{% + \HypDest@Org@StartlinkName{#1}{#2}% + }{% + \pdfstartlink attr{#1}% + goto num\csname\HypDest@Prefix#2\endcsname + \relax + }% + }% + \fi +% \end{macrocode} +% +% \subsubsection{Outlines} +% +% \begin{macrocode} + \let\HypDest@Org@OutlineName\Hy@OutlineName + \ifHypDest@name + \renewcommand*{\Hy@OutlineName}[4]{% + \HypDest@Org@OutlineName{#1}{% + \@ifundefined{\HypDest@Prefix#2}{% + #2% + }{% + \csname\HypDest@Prefix#2\endcsname + }% + }{#3}{#4}% + }% + \else + \renewcommand*{\Hy@OutlineName}[4]{% + \@ifundefined{\HypDest@Prefix#2}{% + \HypDest@Org@OutlineName{#1}{#2}{#3}{#4}% + }{% + \pdfoutline goto num\csname\HypDest@Prefix#2\endcsname + count#3{#4}% + }% + }% + \fi +% \end{macrocode} +% Because \cs{Hy@OutlineName} is called after the \xfile{.out} file +% is written in the previous run. Therefore we mark the destination +% earlier in \cs{@@writetorep}. +% \begin{macrocode} + \let\HypDest@Org@@writetorep\@@writetorep + \renewcommand*{\@@writetorep}[5]{% + \begingroup + \edef\Hy@tempa{#5}% + \ifx\Hy@tempa\Hy@bookmarkstype + \HypDest@MarkUsed{#3}% + \fi + \endgroup + \HypDest@Org@@writetorep{#1}{#2}{#3}{#4}{#5}% + }% +% \end{macrocode} +% +% \begin{macrocode} +} +% \end{macrocode} +% +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/hypdestopt.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/hypdestopt.pdf}] Documentation. +% \end{description} +% +% \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 hypdestopt.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@{}} +% hypdestopt.sty & tex/latex/oberdiek/hypdestopt.sty\\ +% hypdestopt.pdf & doc/latex/oberdiek/hypdestopt.pdf\\ +% hypdestopt.dtx & source/latex/oberdiek/hypdestopt.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 hypdestopt.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{hypdestopt.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 hypdestopt.dtx +%makeindex -s gind.ist hypdestopt.idx +%pdflatex hypdestopt.dtx +%makeindex -s gind.ist hypdestopt.idx +%pdflatex hypdestopt.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{thebibliography}{9} +% +% \bibitem{alphalph} +% Heiko Oberdiek: \textit{The \xpackage{alphalph} package}; +% 2006/05/30 v1.4; +% \CTAN{macros/latex/contrib/oberdiek/alphalph.pdf}. +% +% \bibitem{hyperref} +% Sebastian Rahtz, Heiko Oberdiek: +% \textit{The \xpackage{hyperref} package}; +% 2006/06/01 v6.75a; +% \CTAN{macros/latex/contrib/hyperref/}. +% +% \bibitem{ifpdf} +% Heiko Oberdiek: \textit{The \xpackage{ifpdf} package}; +% 2006/02/20 v1.4; +% \CTAN{macros/latex/contrib/oberdiek/ifpdf.pdf}. +% +% \end{thebibliography} +% +% \begin{History} +% \begin{Version}{2006/06/01 v1.0} +% \item +% First version. +% \end{Version} +% \begin{Version}{2006/06/01 v2.0} +% \item +% New method for referencing destinations by number; an idea +% proposed by Lars Hellstr\"om in the mailing list LATEX-L. +% \item +% Options \xoption{name} and \xoption{num} added. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/hypdoc.dtx b/Master/texmf-dist/source/latex/oberdiek/hypdoc.dtx new file mode 100644 index 00000000000..1c058c30a29 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/hypdoc.dtx @@ -0,0 +1,941 @@ +% \iffalse meta-comment +% +% Copyright (C) 2002, 2006 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 hypdoc.dtx +% and the derived files +% hypdoc.sty, hypdoc.pdf, hypdoc.ins, hypdoc.drv. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/hypdoc.dtx +% CTAN:macros/latex/contrib/oberdiek/hypdoc.pdf +% +% Unpacking: +% (a) If hypdoc.ins is present: +% tex hypdoc.ins +% (b) Without hypdoc.ins: +% tex hypdoc.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{hypdoc.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If hypdoc.drv is present: +% latex hypdoc.drv +% (b) Without hypdoc.drv: +% latex hypdoc.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 hypdoc.dtx +% makeindex -s gind.ist hypdoc.idx +% pdflatex hypdoc.dtx +% makeindex -s gind.ist hypdoc.idx +% pdflatex hypdoc.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/hypdoc.sty +% TDS:doc/latex/oberdiek/hypdoc.pdf +% TDS:source/latex/oberdiek/hypdoc.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: hypdoc 2006/06/02 v1.4 Hyper extensions for doc.sty (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2002, 2006 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 hypdoc.dtx +and the derived files + hypdoc.sty, hypdoc.pdf, hypdoc.ins, hypdoc.drv. + +\endpreamble + +\generate{% + \file{hypdoc.ins}{\from{hypdoc.dtx}{install}}% + \file{hypdoc.drv}{\from{hypdoc.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{hypdoc.sty}{\from{hypdoc.dtx}{package}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* hypdoc.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `hypdoc.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{hypdoc.drv}% + [2006/06/02 v1.4 Hyper extensions for doc.sty (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\begin{document} + \DocInput{hypdoc.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{682} +% +% \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{hypdoc.drv} +% +% \title{The \xpackage{hypdoc} package} +% \date{2006/06/02 v1.4} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% This package adds hyper features to the package +% \xpackage{doc} that is used in the documentation +% system of \LaTeXe. Bookmarks are added and references +% are linked as far as possible. +% \end{abstract} +% +% \tableofcontents +% +% \section{Features} +% +% The package adds the following features: +% \begin{description} +% \item[Bookmarks:] +% For supporting bookmarks package \verb|hyperref| is loaded. +% Some \TeX\ code inside section titles can cause problems +% during bookmark processing; these can be warnings, ugly +% bookmark titles or even errors. With the help of +% \verb|\pdfstringdefDisableCommands| or \verb|\texorpdfstring| +% you can manage these things, see \verb|hyperref|'s package +% documentation. +% \item[Additional bookmarks:] +% Unnumbered bookmark entries are generated for: +% \begin{itemize} +% \item Table of contents +% \item List of figures +% \item List of tables +% \item Index +% \item Glossary +% \end{itemize} +% Option \texttt{numbered} controls, whether these section or +% chapters should be numbered. The exception is the table +% of contents if this it would be the first numbered +% section. Then just a bookmark is added. +% \item[Metadata:] +% The loaded package \verb|hyperref|, enforced by +% option \verb|pdfusetitle|, tries to detect \verb|\title| +% and \verb|\author| and sets the corresponding PDF +% information fields. In case of problems see the previous +% item about bookmarks. +% These enries can be overwritten or new ones added by +% \verb|\hypersetup| after the packages is loaded, see +% documentation of package \verb|hyperref|. +% \item[References, links:] Because of package \verb|\hyperref| +% |\ref| become links, also \verb|\url|, footnote referencing +% are supported. +% \item[Index:] +% The main part of this package deals with index links in order +% to support the kind of index that package \verb|doc| provides. +% \item[Thumbnails:] +% Package \verb|thumbpdf| is loaded for the case that the +% PDF file also should contain thumbnails, see the documentation +% of this package. But thumbnail embedding is not really +% necessary, because nowadays AcrobatReader is able to +% generate and view thumbnails on the fly. +% \end{description} +% +% \section{Usage} +% +% The purpose of this packages is to add PDF features to +% the documentation of LaTeX packages. Thus just load +% the package in the driver file that generates the +% documentation: +% \begin{quote} +% \verb|\usepackage{hypdoc}| +% \end{quote} +% Package \verb|doc| is loaded by \verb|hypdoc|, thus you +% also can replace a \verb|\usepackage{doc}| with this line. +% At any case, the package must be loaded before macros of +% package \verb|doc| such as \verb|\CodelineIndex| or +% \verb|\PageIndex| are used. +% +% If the class \verb|ltxdoc| is used, you can also use +% the configuration file for this class to add +% package \verb|hypdoc|. Add the following line +% to the file \verb|ltxdoc.cfg| (or create a new one): +% \begin{quote} +%\begin{verbatim} +%\AtEndOfClass{\RequirePackage{hypdoc}} +%\end{verbatim} +% \end{quote} +% +% \subsection{Options} +% +% There is one option \texttt{numbered}. It controls, +% whether the starred versions of section or chapter +% inside \cs{tableofcontents}, \cs{listoffigures}, \dots +% should be replaced by the non-star versions. +% +% \subsection{Simple example} +% Example of a simple driver file \verb|foobar.drv| +% of a package \verb|foobar|. Often the driver file +% is packed in the file \verb|foobar.dtx| and can +% be extracted by docstrip or if an instruction file +% for docstrip is provided by: +% \begin{quote} +% \verb|tex foobar.ins| +% \end{quote} +% Note that although docstrip doesn't rely on \LaTeX, +% sometimes you need to run the \verb|.ins| file through +% \LaTeX. Oddly enough, often the only \LaTeX\ feature +% in use is \verb|\NeedsTeXFormat{LaTeX2e}| in the first line. +% \begin{quote} +%\begin{verbatim} +%\documentclass{ltxdoc} +%\usepackage{hypdoc} +%\RecordChanges +%\EnableCrossrefs +%\CodelineIndex +%\begin{document} +%\title{Title for package \texttt{foobar}} +%\author{Author of package \texttt{foobar}} +%\date{...} +%\maketitle +%\tableofcontents +%\DocInput{foobar.dtx} +%\PrintChanges +%\PrintIndex +%\end{document} +%\end{verbatim} +% \end{quote} +% +% Then compile it, for example with pdf\LaTeX. +% \begin{quote} +%\begin{verbatim} +%pdflatex foobar.drv +%makeindex -s gind.ist foobar.idx +%makeindex -s gglo.ist -o foobar.gls foobar.glo +%pdflatex foobar.drv +%\end{verbatim} +% \end{quote} +% You will need several cycles until the cross references +% and similar things are correct. +% +% \subsection{Example \texttt{source2e.tex}} +% +% The source code of the base of \LaTeX\ is available as +% a bunch of \verb|.dtx| files. \LaTeX\ provides the file +% \verb|source2e.tex| to merge them all together. +% +% Now you can either load package \verb|hypdoc| in a private copy +% of this file (please, respect the LPPL) or use the configuration +% file \verb|ltxdoc.cfg|. Example that also sets A4 paper size: +% \begin{quote} +%\begin{verbatim} +%\PassOptionsToClass{a4paper}{article} +%\AtEndOfClass{\RequirePackage{hypdoc}} +%\end{verbatim} +% \end{quote} +% +% Then \verb|source2e.tex| can be compiled by pdf\TeX, for example: +% \begin{quote} +%\begin{verbatim} +%pdflatex source2e +%makeindex -s gind.ist source2e.idx +%makeindex -s gglo.ist -o source2e.glo source2e.gls +%pdflatex source2e +%makeindex -s gind.ist source2e.idx +%makeindex -s gglo.ist -o source2e.glo source2e.gls +%pdflatex source2e +%\end{verbatim} +% \end{quote} +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \begin{macrocode} +%<*package> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{hypdoc}% + [2006/06/02 v1.4 Hyper extensions for doc.sty (HO)] +% \end{macrocode} +% The package identification is done at the top of the |.dtx| file +% in order to use only one identification string. +% +% For unique command names this package uses |HD@| as prefix +% +% \begin{macrocode} +% +\newif\ifHD@numbered +\DeclareOption{numbered}{\HD@numberedtrue} +\ProcessOptions*\relax + +\RequirePackage{doc} + +\ifx\numexpr\@undefined + \RequirePackage{calc} +\fi +\RequirePackage[% + hyperindex=false,% + pdfusetitle,% + colorlinks,% + pdfpagelabels,% +]{hyperref}[2002/05/09]% +\hypersetup{% + plainpages=false,% + bookmarksopen,% + bookmarksnumbered,% + bookmarksopenlevel=0,% + pdfstartview={FitBH \hypercalcbp{% + \paperheight-\topmargin-1in-\headheight-\headsep + }},% +} +\RequirePackage{thumbpdf} + +\newcounter{HD@unique} +\renewcommand{\theHD@unique}{% + \number\value{HD@unique}% +} + +\g@addto@macro\Hy@UseMaketitleInfos{% + \@ifundefined{fileinfo}{}{% + \ifx\@pdfsubject\@empty + \hypersetup{pdfsubject={\fileinfo}}% + \fi + }% +} + +\pdfstringdefDisableCommands{% + \let\thanks\@gobble + \let\footnote\@gobble + \def\cs#1{\textbackslash #1}% + \let\normalfont\@empty + \let\scshape\@empty + \def\and{and }% +} + +%%% Bookmarks + +\def\HD@sectionpatch{% + \ifHD@numbered + \HD@@sectionpatch{section}% + \HD@@sectionpatch{chapter}% + \else + \let\Hy@writebookmark\HD@disable@writebookmark + \fi +} +\def\HD@@sectionpatch#1{% + \expandafter\let\csname HDorg@@#1\expandafter\endcsname + \csname #1\endcsname + \@namedef{#1}{% + \@ifstar{\@nameuse{HDorg@@#1}}{\@nameuse{HDorg@@#1}}% + }% +} +\def\HD@disable@writebookmark#1#2#3#4#5{} + +% A wild guessing of the toclevel. There is the hope, that +% the macro \verb|#1| starts with a sectioning command. +\def\HD@guesstoclevel#1{% + \expandafter\HD@@guesstoclevel#1\section\HD@end +} +\def\HD@@guesstoclevel#1#2\HD@end{% + \@ifundefined{toclevel@\expandafter\@gobble\string#1\@empty}{% + 1% + }{% + \@nameuse{toclevel@\expandafter\@gobble\string#1\@empty}% + }% +} + +\let\HDorg@tableofcontents\tableofcontents +\def\tableofcontents{% + % As first section the table of contents shouldn't + % go into the toc itself. Also a number looks too funny then. + % Just a bookmark is enough in this case. + \begingroup + \@ifundefined{c@section}{% + \def\c@section{0}% + }{}% + \expandafter\endgroup + \ifcase\c@section + \stepcounter{HD@unique}% + \pdfbookmark[\HD@guesstoclevel{\HDorg@tableofcontents}] + {\contentsname}{toc\theHD@unique}% + \HDorg@tableofcontents + \else + \ifHD@numbered + \else + \stepcounter{HD@unique}% + \pdfbookmark[\HD@guesstoclevel{\HDorg@tableofcontents}] + {\contentsname}{toc\theHD@unique}% + \fi + \begingroup + \HD@sectionpatch + \HDorg@tableofcontents + \endgroup + \fi +} + +\let\HDorg@listoffigures\listoffigures +\def\listoffigures{% + \ifHD@numbered + \else + \stepcounter{HD@unique}% + \pdfbookmark[\HD@guesstoclevel{\HDorg@listoffigures}] + {\contentsname}{toc\theHd@unique}% + \fi + \begingroup + \HD@sectionpatch + \HDorg@listoffigures + \endgroup +} + +\let\HDorg@listoftables\listoftables +\def\listoftables{% + \ifHD@numbered + \else + \stepcounter{HD@unique}% + \pdfbookmark[\HD@guesstoclevel{\HDorg@listoftables}] + {\contentsname}{toc\theHD@unique}% + \fi + \begingroup + \HD@sectionpatch + \HDorg@listoftables + \endgroup +} + +\let\HDorg@thebibliography\thebibliography +\def\thebibliography{% + \ifHD@numbered + \else + \stepcounter{HD@unique}% + \pdfbookmark[\HD@guesstoclevel{\HDorg@thebibliography}] + {\@ifundefined{chapter}{\refname}{\bibname}}{bib\theHD@unique}% + \fi + \HD@sectionpatch + \HDorg@thebibliography +} + +\let\HDorg@theindex\theindex +\def\theindex{% + \let\HDorg@index@prologue\index@prologue + \let\HDorg@writebookmark\Hy@writebookmark + \HD@sectionpatch + \g@addto@macro\IndexParms{% + \ifHD@numbered + \else + \let\Hy@writebookmark\HDorg@writebookmark + \fi + \let\bfseries\HD@bfseries + }% + \edef\HD@toclevel@index{\HD@guesstoclevel{\index@prologue}}% + \begingroup + \count@=\HD@toclevel@index\relax + \advance\count@ by 1 % + \xdef\HD@toclevel@subindex{\the\count@}% + \endgroup + \def\index@prologue{% + \ifHD@numbered + \else + \begingroup + \stepcounter{HD@unique}% + \let\Hy@writebookmark\HDorg@writebookmark + \pdfbookmark[\HD@toclevel@index]% + {\indexname}{index\theHD@unique}% + \endgroup + \fi + \HDorg@index@prologue + }% + \HDorg@theindex +} +\let\HDorg@bfseries\bfseries +\def\HD@bfseries{\futurelet\HD@hfil\HD@@bfseries}% +\def\HD@@bfseries{% + \HDorg@bfseries + \ifx\HD@hfil\hfil + \expandafter\HD@@@bfseries + \fi +}% +\def\HD@@@bfseries\hfil#1\hfil{% + \ifx\\#1\\% + \else + \raisebox{\baselineskip}[0pt]{% + \kern-\HD@margin\relax + \pdfbookmark[\HD@toclevel@subindex]{#1}{HD.#1}% + \kern\HD@margin\relax + }% + \fi + \hfil#1\hfil +}% +\def\HD@margin{1mm} + +\let\HDorg@theglossary\theglossary +\def\theglossary{% + \let\HDorg@glossary@prologue\glossary@prologue + \let\HDorg@writebookmark\Hy@writebookmark + \HD@sectionpatch + \def\glossary@prologue{% + \ifHD@numbered + \else + \begingroup + \let\Hy@writebookmark\HDorg@writebookmark + \stepcounter{HD@unique}% + \pdfbookmark[\HD@guesstoclevel{\HDorg@glossary@prologue}] + {\glossaryname}{glossary\theHD@unique}% + \endgroup + \fi + \HDorg@glossary@prologue + }% + \HDorg@theglossary +} +\providecommand*{\glossaryname}{Change History} + +%%% Index stuff + +\newcounter{HD@hypercount} +\newlength{\HD@helplength} +\newif\ifHD@savedest +\HD@savedesttrue +\AtBeginDocument{% + \HD@savedest@init +} +\begingroup + \catcode`\^^M=\active +\@firstofone{\endgroup + \def\HD@savedest@init{% + \ifHD@savedest + \let\HDorg@tilde~% + \let~\HD@savedest@entry + \edef\HDorg@catcodeM{\the\catcode`\^^M}% + \catcode`\^^M=\active + \def^^M{}% + \InputIfFileExists{\jobname.hd}{}{}% + \let~\HDorg@tilde + \catcode`\^^M=\HDorg@catcodeM\relax + \newwrite\HD@savedest@out + \immediate\openout\HD@savedest@out=\jobname.hd\relax + \AtEndDocument{\immediate\closeout\HD@savedest@out}% + \else + \let\HD@savedest@add\@gobble + \fi + }% + \def\HD@savedest@entry#1^^M{% + \@namedef{HD.#1}{}% + }% +} +\def\HD@savedest@add#1{% + \immediate\write\HD@savedest@out{\string~#1}% +} + +\newif\ifHD@targetraise +\HD@targetraisetrue + +\def\HD@target{% + \ifHD@targetraise + \ifhmode + \settoheight{\HD@helplength}{[H]}% + \addtolength{\HD@helplength}{0.4ex}% + \raisebox{\HD@helplength}{% + \HD@maketarget + }% + \else + \HD@maketarget + \fi + \else + \HD@maketarget + \fi +} +\def\HD@maketarget{% + \stepcounter{HD@hypercount}% + \def\HD@next{% + \llap{\hypertarget{HD.\the\c@HD@hypercount}{}\,}% + }% + \ifHD@savedest + \expandafter\ifx\csname HD.\the\c@HD@hypercount\endcsname\@empty + \else + \let\HD@next\relax + \fi + \fi + \HD@next +} + +\g@addto@macro\CodelineIndex{% + \let\special@index\HD@codeline@wrindex +} +\g@addto@macro\PageIndex{% + \let\special@index\HD@page@wrindex +} + +\def\HD@codeline@wrindex#1{% + \begingroup + \let\HDorg@encapchar\encapchar + \def\encapchar##1\encapchar##2\@nil{% + \HDorg@encapchar + hdclindex{\the\c@HD@hypercount}{##1}% + }% + \codeline@wrindex{% + #1\encapchar\encapchar\@nil + }% + \endgroup +} +\def\HD@page@wrindex#1{% + \begingroup + \let\HDorg@encapchar\encapchar + \def\encapchar##1\encapchar##2\@nil{% + \HDorg@encapchar + hdpindex{##1}% + }% + \HDorg@index{#1\encapchar\encapchar\@nil}% + \endgroup +} + +\def\hdclindex#1#2#3{% + \csname\ifx\\#2\\relax\else#2\fi\endcsname{% + \hyperlink{HD.#1}{#3}% + \HD@savedest@add{#1}% + }% +} +\def\hdpindex#1#2{% + \csname\ifx\\#1\\relax\else#1\fi\endcsname{% + \hyperpage{#2}% + }% +} + +\let\HDorg@PrintDescribeMacro\PrintDescribeMacro +\renewcommand\PrintDescribeMacro[1]{% + \begingroup + \let\HDorg@MacroFont\MacroFont + \def\MacroFont{% + \HD@target + \HDorg@MacroFont + }% + \HDorg@PrintDescribeMacro{#1}% + \endgroup +} + +\let\HDorg@PrintMacroName\PrintMacroName +\renewcommand\PrintMacroName[1]{% + \begingroup + \let\HDorg@MacroFont\MacroFont + \def\MacroFont{% + \HD@target + \HDorg@MacroFont + }% + \HDorg@PrintMacroName{#1}% + \endgroup +} + +\let\HDorg@theCodelineNo\theCodelineNo +\renewcommand*\theCodelineNo{% + \settowidth{\HD@helplength}{\HDorg@theCodelineNo\ }% + \ifdim\HD@helplength<\MacroIndent + \addtolength{\HD@helplength}{-\MacroIndent}% + \llap{% + \begingroup\HD@target\endgroup + \hspace*{-\HD@helplength}% + }% + \else + \HD@target + \fi + \HDorg@theCodelineNo +} + +\AtBeginDocument{% + \let\HDorg@index\index +} + +\let\HDorg@SpecialUsageIndex\SpecialUsageIndex +\renewcommand*\SpecialUsageIndex[1]{% + \@bsphack + \begingroup + \HD@target + \let\index\HDorg@index + \let\HDorg@encapchar\encapchar + \edef\encapchar usage{% + \HDorg@encapchar hdclindex{\the\c@HD@hypercount}{usage}% + }% + \HDorg@SpecialUsageIndex{#1}% + \endgroup + \@esphack +} + +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname autoindex\endcsname\relax +\else + \let\HDorg@autoindex\autoindex + \renewcommand*\autoindex[1]{% + \@bsphack + \begingroup + \HD@target + \let\index\HDorg@index + \let\HDorg@encapchar\encapchar + \edef\encapchar usage{% + \HDorg@encapchar hdclindex{\the\c@HD@hypercount}{usage}% + }% + \HDorg@autoindex{#1}% + \endgroup + \@esphack + } +\fi + +\let\HDorg@SpecialEnvIndex\SpecialEnvIndex +\renewcommand*\SpecialEnvIndex[1]{% + \@bsphack + \begingroup + \HD@target + \let\HDorg@encapchar\encapchar + \edef\encapchar usage{% + \HDorg@encapchar hdclindex{\the\c@HD@hypercount}{usage}% + }% + \HDorg@SpecialEnvIndex{#1}% + \endgroup + \@esphack +} + +\let\HDorg@SortIndex\SortIndex +\renewcommand*{\SortIndex}[2]{% + \@bsphack + \begingroup + \let\index\HD@page@wrindex + \HDorg@SortIndex{#1}{#2}% + \endgroup + \@esphack +} + + +%%% glossary stuff + +\let\HDorg@wrglossary\@wrglossary +\def\@wrglossary#1{% + \let\HDorg@encapchar\encapchar + \def\encapchar##1\encapchar##2\@nil{% + \HDorg@encapchar + hdpindex{##1}% + }% + \HDorg@wrglossary{#1\encapchar\encapchar\@nil}% +} + +%%% \MacroIndent automatically calculated + +\AtEndDocument{% + \if@filesw + \immediate\write\@auxout{% + \noexpand\HD@SetMacroIndent{\number\value{CodelineNo}}% + }% + \fi +} +\def\HD@SetMacroIndent#1{% + \begingroup + \value{CodelineNo}=#1\relax + \settowidth{\MacroIndent}{\HDorg@theCodelineNo\ }% + \global\MacroIndent\MacroIndent + \endgroup +} +% \end{macrocode} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/hypdoc.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/hypdoc.pdf}] Documentation. +% \end{description} +% +% \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 hypdoc.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@{}} +% hypdoc.sty & tex/latex/oberdiek/hypdoc.sty\\ +% hypdoc.pdf & doc/latex/oberdiek/hypdoc.pdf\\ +% hypdoc.dtx & source/latex/oberdiek/hypdoc.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 hypdoc.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{hypdoc.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 hypdoc.dtx +%makeindex -s gind.ist hypdoc.idx +%pdflatex hypdoc.dtx +%makeindex -s gind.ist hypdoc.idx +%pdflatex hypdoc.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2002/05/10 v1.0} +% \item +% First standalone version. +% \end{Version} +% \begin{Version}{2006/02/20 v1.1} +% \item +% Option \xoption{numbered} added. +% \item +% \cs{HD@savedest@init} fixed (empty \xext{.hd} file triggered +% first page with fl ligature). +% \item +% Bookmarks for \cs{listoffigures} and \cs{listoftables}. +% \item +% Documentation: features and usage added. +% \item +% LPPL 1.3. +% \end{Version} +% \begin{Version}{2006/04/27 v1.2} +% \item +% \cs{HD@target} fixed (\xfile{multicol.dtx}). +% \end{Version} +% \begin{Version}{2006/06/01 v1.3} +% \item +% Support for package \xpackage{amsdtx}'s \cs{autoindex} added. +% \end{Version} +% \begin{Version}{2006/06/02 v1.4} +% \item +% Bookmark fixed if there are several table of contents, +% bibliographies, glossaries, \dots +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/ifdraft.dtx b/Master/texmf-dist/source/latex/oberdiek/ifdraft.dtx new file mode 100644 index 00000000000..d439ebe56e1 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/ifdraft.dtx @@ -0,0 +1,429 @@ +% \iffalse meta-comment +% +% Copyright (C) 1999, 2005, 2006 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 ifdraft.dtx +% and the derived files +% ifdraft.sty, ifdraft.pdf, ifdraft.ins, ifdraft.drv. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/ifdraft.dtx +% CTAN:macros/latex/contrib/oberdiek/ifdraft.pdf +% +% Unpacking: +% (a) If ifdraft.ins is present: +% tex ifdraft.ins +% (b) Without ifdraft.ins: +% tex ifdraft.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{ifdraft.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If ifdraft.drv is present: +% latex ifdraft.drv +% (b) Without ifdraft.drv: +% latex ifdraft.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 ifdraft.dtx +% makeindex -s gind.ist ifdraft.idx +% pdflatex ifdraft.dtx +% makeindex -s gind.ist ifdraft.idx +% pdflatex ifdraft.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/ifdraft.sty +% TDS:doc/latex/oberdiek/ifdraft.pdf +% TDS:source/latex/oberdiek/ifdraft.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: ifdraft 2006/02/20 v1.2 Switch for option draft (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 1999, 2005, 2006 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 ifdraft.dtx +and the derived files + ifdraft.sty, ifdraft.pdf, ifdraft.ins, ifdraft.drv. + +\endpreamble + +\generate{% + \file{ifdraft.ins}{\from{ifdraft.dtx}{install}}% + \file{ifdraft.drv}{\from{ifdraft.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{ifdraft.sty}{\from{ifdraft.dtx}{package}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* ifdraft.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `ifdraft.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{ifdraft.drv}% + [2006/02/20 v1.2 Switch for option draft (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\begin{document} + \DocInput{ifdraft.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{43} +% +% \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{ifdraft.drv} +% +% \title{The \xpackage{ifdraft} package} +% \date{2006/02/20 v1.2} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% The package provides an interface for selecting code depending +% on the options \xoption{draft} and \xoption{final}. +% \end{abstract} +% +% \tableofcontents +% +% \section{Usage} +% +% \subsection{Package loading} +% +% In order to detect the global class options \xoption{draft} +% and \xoption{final}, load this package somewhere after +% \cs{documentclass} without options: +% \begin{quote} +% |\usepackage{ifdraft}| +% \end{quote} +% +% \subsection{User macros} +% +% \begin{declcs}{ifdraft}\ \M{draft case} \M{final case}\\ +% \SpecialUsageIndex{\ifoptiondraft}^^A +% \cs{ifoptiondraft}\ \M{option draft is given}\ ^^A +% \M{option draft is not given}\\ +% \SpecialUsageIndex{\ifoptionfinal}^^A +% \cs{ifoptionfinal}\ \M{option final is given}\ ^^A +% \M{option final is not given} +% \end{declcs} +% If none of the options \xoption{draft} or \xoption{final} is used, +% then this package assumes \xoption{final} as default setting +% for \cs{ifdraft}. All classes that are known to me behave this way. +% (Otherwise you can find out with +% \cs{ifoptiondraft} and \cs{ifoptionfinal}, whether none of +% the options is set.) +% +% If either \xoption{draft} or \xoption{final} is used, \cs{ifdraft} is +% sufficient to distinguish between these cases. +% +% Both options \xoption{draft} and \xoption{final} should not be used +% at the same time. This is contradictionary input. +% Which option is more important? The result is +% unpredictable in general: +% \begin{itemize} +% \item +% \xclass{article}, \xclass{report}, \xclass{book}, +% \xclass{scrartcl}, \xclass{scrreprt}, \xclass{scrbook}:\\ +% \xoption{draft}, \xoption{final} +% $\rightarrow$ \xoption{final} is effective.\\ +% \xoption{final}, \xoption{draft} +% $\rightarrow$ \xoption{final} is effective.\\ +% $\Rightarrow$ \xoption{final} wins, if given. +% \item +% \xclass{memoir}:\\ +% \xoption{draft}, \xoption{final} +% $\rightarrow$ \xoption{draft} is effective.\\ +% \xoption{final}, \xoption{draft} +% $\rightarrow$ \xoption{draft} is effective.\\ +% $\Rightarrow$ \xoption{draft} wins if given. +% \end{itemize} +% These classes evaluates the options in declaration order. +% Because the declaration order of these options in this +% package is not really interesting, this packages evaluates +% the options in the order specified in the calling commands: +% \begin{itemize} +% \item +% \xpackage{ifdraft}:\\ +% \xoption{draft}, \xoption{final} +% $\rightarrow$ \cs{ifdraft} selects \xoption{final} clause.\\ +% \xoption{final}, \xoption{draft} +% $\rightarrow$ \cs{ifdraft} selects \xoption{draft} clause.\\ +% $\Rightarrow$ latest given option wins. +% \end{itemize} +% Thus you know with \cs{ifdraft} the latest given option +% and you can emulate the behaviour of the different +% classes with the help of \cs{ifoptiondraft} and +% \cs{ifoptionfinal}. +% +% Summary: \cs{ifdraft} is sufficient to deal with the +% normal use cases: one or none out of \xoption{draft} and \xoption{final}. +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% Package identification. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{ifdraft}% + [2006/02/20 v1.2 Switch for option draft (HO)] +% \end{macrocode} +% +% \begin{macrocode} +\newif\if@draft +\newif\if@option@draft +\newif\if@option@final +\DeclareOption{draft}{% + \@drafttrue + \@option@drafttrue +} +\DeclareOption{final}{% + \@draftfalse + \@option@finaltrue +} +\ProcessOptions*\relax +% \end{macrocode} +% \begin{macro}{\ifdraft} +% \begin{macrocode} +\newcommand*{\ifdraft}{% + \if@draft + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ifoptiondraft} +% \begin{macrocode} +\newcommand*{\ifoptiondraft}{% + \if@option@draft + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ifoptionfinal} +% \begin{macrocode} +\newcommand*{\ifoptionfinal}{% + \if@option@final + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/ifdraft.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/ifdraft.pdf}] Documentation. +% \end{description} +% +% \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 ifdraft.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@{}} +% ifdraft.sty & tex/latex/oberdiek/ifdraft.sty\\ +% ifdraft.pdf & doc/latex/oberdiek/ifdraft.pdf\\ +% ifdraft.dtx & source/latex/oberdiek/ifdraft.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 ifdraft.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{ifdraft.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 ifdraft.dtx +%makeindex -s gind.ist ifdraft.idx +%pdflatex ifdraft.dtx +%makeindex -s gind.ist ifdraft.idx +%pdflatex ifdraft.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{1999/12/28 v1.0} +% \item +% First public release. +% \item +% LPPL 1.1 +% \end{Version} +% \begin{Version}{2005/10/05 v1.1} +% \item +% \cs{ifoptiondraft} and \cs{ifoptionfinal} added. +% \item +% \cs{ProcessOptions} changed to \cs{ProcessOptions*}. +% (Order of given class options matters instead +% of the order of option declaration in this +% package.) +% \item +% LPPL 1.3 +% \end{Version} +% \begin{Version}{2006/02/20 v1.2} +% \item +% DTX framework. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/ifpdf.dtx b/Master/texmf-dist/source/latex/oberdiek/ifpdf.dtx new file mode 100644 index 00000000000..29bc07f5267 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/ifpdf.dtx @@ -0,0 +1,569 @@ +% \iffalse meta-comment +% +% Copyright (C) 2001, 2005, 2006 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 ifpdf.dtx +% and the derived files +% ifpdf.sty, ifpdf.pdf, ifpdf.ins, ifpdf.drv. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/ifpdf.dtx +% CTAN:macros/latex/contrib/oberdiek/ifpdf.pdf +% +% Unpacking: +% (a) If ifpdf.ins is present: +% tex ifpdf.ins +% (b) Without ifpdf.ins: +% tex ifpdf.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{ifpdf.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If ifpdf.drv is present: +% latex ifpdf.drv +% (b) Without ifpdf.drv: +% latex ifpdf.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 ifpdf.dtx +% makeindex -s gind.ist ifpdf.idx +% pdflatex ifpdf.dtx +% makeindex -s gind.ist ifpdf.idx +% pdflatex ifpdf.dtx +% +% Installation: +% TDS:tex/generic/oberdiek/ifpdf.sty +% TDS:doc/latex/oberdiek/ifpdf.pdf +% TDS:source/latex/oberdiek/ifpdf.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: ifpdf 2006/02/20 v1.4 Provides the ifpdf switch (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2001, 2005, 2006 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 ifpdf.dtx +and the derived files + ifpdf.sty, ifpdf.pdf, ifpdf.ins, ifpdf.drv. + +\endpreamble + +\generate{% + \file{ifpdf.ins}{\from{ifpdf.dtx}{install}}% + \file{ifpdf.drv}{\from{ifpdf.dtx}{driver}}% + \usedir{tex/generic/oberdiek}% + \file{ifpdf.sty}{\from{ifpdf.dtx}{package}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* ifpdf.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `ifpdf.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{ifpdf.drv}% + [2006/02/20 v1.4 Provides the ifpdf switch (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\begin{document} + \DocInput{ifpdf.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{156} +% +% \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{ifpdf.drv} +% +% \title{The \xpackage{ifpdf} package} +% \date{2006/02/20 v1.4} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% This package looks for pdfTeX in pdf mode and +% implements and sets the switch \cs{ifpdf}. +% The detection is based on \cs{pdfoutput} and +% the package will not change this value. +% It works with plain or LaTeX formats. +% \end{abstract} +% +% \tableofcontents +% +% \hypersetup{bookmarksopenlevel=2} +% \section{Documentation} +% +% \subsection{Introduction} +% +% It is commonly known that H\`an Th\^e Th\`anh's \pdfTeX\ generates +% PDF output directly and many people uses \pdfTeX\ for this purpose. +% However the DVI output was never thrown away. In contrary, he +% new features for typesetting that works in both PDF and DVI mode. +% +% In the meantime many \TeX\ distributions replace the traditional +% \TeX\ binary with \pdfTeX. Then, for example, called as |latex| +% \pdfTeX\ works in DVI mode with the \LaTeX\ format preloaded, +% called as |pdflatex| \pdfTeX\ starts in PDF mode. +% +% Often packages or users want to know, whether the current document +% is typset by \pdfTeX\ in PDF mode, because the different modes +% have different capabilities (color setting, graphics inclusion, +% \dots). For this purpose \pdfTeX's +% \cs{pdfoutput} can be asked. +% +% As regulary reader of \TeX\ newsgroups and mailing lists I could +% observe many problems with this task. Common errors are: +% \begin{itemize} +% \item +% \pdfTeX\ has \emph{two} modes. Using \pdfTeX\ does not mean +% that the user always want to have PDF mode. For example, the +% PostScript support is better in DVI mode in conjunction with a +% PostScript aware DVI driver (e.g. dvips). Also the additional +% typesetting features are mode independent and also available +% in DVI mode. +% \item +% \LaTeX's \cs{@ifundefined} inherited the side effect from +% \cs{csname}. Unknown commands are defined with the meaning +% of \cs{relax}. If it is checked, whether \cs{pdfoutput} is +% defined, then this should not be forgotten. +% \item +% Having \cs{pdfoutput} does not automatically mean PDF mode. +% Also the value of \cs{pdfoutput} must be asked. +% \item +% \cs{pdfoutput} must not be destroyed in some way. Later +% code and packages are fooled then and will perhaps make +% wrong decisions. For example they may drop support for +% PDF mode, because they do not know that \pdfTeX\ is +% running at all. +% \end{itemize} +% +% Robin Fairbairns provides an entry for this topic in his +% excellent FAQ (\url{http://www.tex.ac.uk/faq}): +% \href{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=ifpdf}^^A +% {Am I using PDFTeX?} +% +% \subsection{Usage} +% +% The package \xpackage{ifpdf} can be used with both \plainTeX\ +% and \LaTeX: +% \begin{description} +% \item[\plainTeX:] |\input ifpdf.sty| +% \item[\LaTeXe:] |\usepackage{ifpdf}|\\ +% \end{description} +% +% \DescribeMacro{\ifpdf} +% The package provides the switch \cs{ifpdf}: +% \begin{quote} +% |\ifpdf|\\ +% \hspace{1.5em}\dots\ do things, if \pdfTeX\ is running in pdf mode \dots\\ +% |\else|\\ +% \hspace{1.5em}\dots\ other \TeX\ or \pdfTeX\ in dvi mode \dots\\ +% |\fi| +% \end{quote} +% Users of the package \xpackage{ifthen} can use the switch as boolean: +% \begin{quote} +% |\boolean{ifpdf}| +% \end{quote} +% The package can also be used to set global +% documentclass options: +% \begin{quote} +% |\RequirePackage{ifpdf}|\\ +% |\ifpdf|\\ +% \hspace{1.5em}|\documentclass[pdftex,|\dots|]{|\dots|}|\\ +% |\else|\\ +% \hspace{1.5em}|\documentclass[|\dots|]{|\dots|}|\\ +% |\fi| +% \end{quote} +% +% \subsection{Specification} +% +% The package have the following properties: +% \begin{itemize} +% \item It asks the setting of \cs{pdfoutput} for detecting +% \pdfTeX\ in PDF mode. +% \item It never changes \cs{pdfoutput}. +% \item It can be used with many formats including +% \plainTeX\ and \LaTeX. +% \end{itemize} +% The mode detection implements the following algorithm: +% \begin{quote} +% \def\={${:}{=}$} +% \def\>{\null\qquad\ignorespaces} +% \def\comment#1{^^A +% \textrm{\itshape\% #1}^^A +% } +% \sffamily +% if undefined(\cs{pdfoutput})\\ +% \> \cs{ifpdf} \= \cs{iffalse} \comment{\pdfTeX is not running}\\ +% else\\ +% \> if \cs{pdfoutput} $\leq$ 0\\ +% \>\> \cs{ifpdf} \= \cs{iffalse} \comment{\pdfTeX\ in DVI mode}\\ +% \> else\\ +% \>\> \cs{ifpdf} \= \cs{iftrue} \comment{\pdfTeX\ in PDF mode}\\ +% \> fi\\ +% fi +% \end{quote} +% The function \textsf{undefined} checks both cases, undefined command +% and \cs{relax}. +% +% \subsection{Future} +% +% Currently the package can be fooled, by redefining/undefining +% \cs{pdfoutput}. Therefore the package will use the \cs{primitive} +% feature that is discussed currently on the \pdfTeX\ developer +% list (2006), if it hits a stable release. Of course the package +% will then remain usable with older \pdfTeX\ versions as usual. +% +% \hypersetup{bookmarksopenlevel=1} +% +% \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 + \expandafter\let\expandafter\x\csname ver@ifpdf.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{ifpdf}{The package is already loaded}% + \endgroup + \expandafter\endinput + \fi +\endgroup +% \end{macrocode} +% Package identification: +% \begin{macrocode} +\begingroup + \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@ifpdf.sty\endcsname +\ProvidesPackage{ifpdf}% + [2006/02/20 v1.4 Provides the ifpdf switch (HO)] +% \end{macrocode} +% +% \subsection{Check for previously defined \cs{ifpdf}} +% +% \begin{macrocode} +\begingroup + \expandafter\ifx\csname ifpdf\endcsname\relax + \else + \edef\i/{\expandafter\string\csname ifpdf\endcsname}% + \expandafter\ifx\csname PackageError\endcsname\relax + \def\x#1#2{% + \edef\z{#2}% + \expandafter\errhelp\expandafter{\z}% + \errmessage{Package ifpdf Error: #1}% + }% + \def\y{^^J}% + \newlinechar=10 + \else + \def\x#1#2{% + \PackageError{ifpdf}{#1}{#2}% + }% + \def\y{\MessageBreak}% + \fi + \x{Name clash, \i/ is already defined}{% + Incompatible versions of \i/ can cause problems,\y + therefore package loading is aborted.% + }% + \endgroup + \expandafter\endinput + \fi +\endgroup +% \end{macrocode} +% +% \subsection{\cs{ifpdf}} +% +% \begin{macro}{\ifpdf} +% Create and set the switch. \cs{newif} initializes the +% switch with \cs{iffalse}. +% \begin{macrocode} +\newif\ifpdf +% \end{macrocode} +% Test \cs{pdfoutput}. Is it defined and different from +% \cs{relax}? Someone could have used \LaTeX\ internal +% \cs{@ifundefined}, or something else involving. +% Notice, \cs{csname} is executed inside a group for the test +% to cancel the side effect of \cs{csname}. +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname pdfoutput\endcsname\relax +\else + \ifnum\pdfoutput<1 % +% \end{macrocode} +% \cs{pdfoutput}|=0| or negative, so not generating pdf. +% \begin{macrocode} + \else + \pdftrue + \fi +\fi +% \end{macrocode} +% \end{macro} +% +% \subsection{Protocol entry} +% +% Log comment: +% \begin{macrocode} +\begingroup + \expandafter\ifx\csname PackageInfo\endcsname\relax + \def\x#1#2{% + \immediate\write-1{Package #1 Info: #2.}% + }% + \else + \let\x\PackageInfo + \expandafter\let\csname on@line\endcsname\empty + \fi + \x{ifpdf}{pdfTeX in pdf mode \ifpdf\else not \fi detected}% +\endgroup +% \end{macrocode} +% \begin{macrocode} +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/ifpdf.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/ifpdf.pdf}] Documentation. +% \end{description} +% +% \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 ifpdf.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@{}} +% ifpdf.sty & tex/generic/oberdiek/ifpdf.sty\\ +% ifpdf.pdf & doc/latex/oberdiek/ifpdf.pdf\\ +% ifpdf.dtx & source/latex/oberdiek/ifpdf.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 ifpdf.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{ifpdf.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 ifpdf.dtx +%makeindex -s gind.ist ifpdf.idx +%pdflatex ifpdf.dtx +%makeindex -s gind.ist ifpdf.idx +%pdflatex ifpdf.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2001/06/14 v1.0} +% \item +% First public version, +% \end{Version} +% \begin{Version}{2001/07/14 v1.1} +% \item +% Documentation addition: global options +% \end{Version} +% \begin{Version}{2001/09/26 v1.2} +% \item +% Documentation typo corrected. +% \item +% Version number corrected. +% \item +% Line number in log entry removed. +% \end{Version} +% \begin{Version}{2005/07/22 v1.3} +% \item +% Some source code comments from Robin Fairbairns added. +% \item +% Bug fix for negative values of \cs{pdfoutput} +% (Oleg Katsitadze) +% \item +% LPPL 1.3 +% \item +% Installation section with locations added. +% \end{Version} +% \begin{Version}{2006/02/20 v1.4} +% \item +% DTX framework. +% \item +% More robust check in case of undefined \cs{pdfoutput}. +% \item +% Extended documentation. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/ifvtex.dtx b/Master/texmf-dist/source/latex/oberdiek/ifvtex.dtx new file mode 100644 index 00000000000..62554aeaa77 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/ifvtex.dtx @@ -0,0 +1,491 @@ +% \iffalse meta-comment +% +% Copyright (C) 2001, 2006 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 ifvtex.dtx +% and the derived files +% ifvtex.sty, ifvtex.pdf, ifvtex.ins, ifvtex.drv. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/ifvtex.dtx +% CTAN:macros/latex/contrib/oberdiek/ifvtex.pdf +% +% Unpacking: +% (a) If ifvtex.ins is present: +% tex ifvtex.ins +% (b) Without ifvtex.ins: +% tex ifvtex.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{ifvtex.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If ifvtex.drv is present: +% latex ifvtex.drv +% (b) Without ifvtex.drv: +% latex ifvtex.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 ifvtex.dtx +% makeindex -s gind.ist ifvtex.idx +% pdflatex ifvtex.dtx +% makeindex -s gind.ist ifvtex.idx +% pdflatex ifvtex.dtx +% +% Installation: +% TDS:tex/generic/oberdiek/ifvtex.sty +% TDS:doc/latex/oberdiek/ifvtex.pdf +% TDS:source/latex/oberdiek/ifvtex.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: ifvtex 2006/02/20 v1.1 Provides the ifpdf switch (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2001, 2006 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 ifvtex.dtx +and the derived files + ifvtex.sty, ifvtex.pdf, ifvtex.ins, ifvtex.drv. + +\endpreamble + +\generate{% + \file{ifvtex.ins}{\from{ifvtex.dtx}{install}}% + \file{ifvtex.drv}{\from{ifvtex.dtx}{driver}}% + \usedir{tex/generic/oberdiek}% + \file{ifvtex.sty}{\from{ifvtex.dtx}{package}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* ifvtex.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `ifvtex.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{ifvtex.drv}% + [2006/02/20 v1.1 Provides the ifpdf switch (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\begin{document} + \DocInput{ifvtex.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{224} +% +% \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{ifvtex.drv} +% +% \title{The \xpackage{ifvtex} package} +% \date{2006/02/20 v1.1} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% This package looks for \VTeX, implements +% and sets the switches \cs{ifvtex}, \cs{ifvtex}\texttt{\meta{mode}}, +% \cs{ifvtexgex}. It works with plain or \LaTeX\ formats. +% \end{abstract} +% +% \tableofcontents +% +% \section{Usage} +% +% The package \xpackage{ifvtex} can be used with both \plainTeX\ +% and \LaTeX: +% \begin{description} +% \item[\plainTeX:] |\input ifvtex.sty| +% \item[\LaTeXe:] |\usepackage{ifvtex}|\\ +% \end{description} +% +% The package implements switches for \VTeX\ and its different +% modes and interprets \cs{VTeXversion}, \cs{OpMode}, and \cs{gexmode}. +% +% \begin{declcs}{ifvtex} +% \end{declcs} +% The package provides the switch \cs{ifvtex}: +% \begin{quote} +% |\ifvtex|\\ +% \hspace{1.5em}\dots\ do things, if \VTeX\ is running \dots\\ +% |\else|\\ +% \hspace{1.5em}\dots\ other \TeX\ compiler \dots\\ +% |\fi| +% \end{quote} +% Users of the package \xpackage{ifthen} can use the switch as boolean: +% \begin{quote} +% |\boolean{ifvtex}| +% \end{quote} +% +% \begin{declcs}{ifvtexdvi}\\ +% \cs{ifvtexpdf}\SpecialUsageIndex{\ifvtexpdf}\\ +% \cs{ifvtexps}\SpecialUsageIndex{\ifvtexps}\\ +% \cs{ifvtexhtml}\SpecialUsageIndex{\ifvtexhtml} +% \end{declcs} +% \VTeX\ knows different output modes that can be asked by these +% switches. +% +% \begin{declcs}{ifvtexgex} +% \end{declcs} +% This switch shows, whether GeX is available. +% +% \StopEventually{ +% } +% +% \section{Implemenation} +% +% \subsection{Reload check and package identification} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% Reload check, especially if the package is not used with \LaTeX. +% \begin{macrocode} +\begingroup + \expandafter\let\expandafter\x\csname ver@ifvtex.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{ifvtex}{The package is already loaded}% + \endgroup + \expandafter\endinput + \fi +\endgroup +% \end{macrocode} +% Package identification: +% \begin{macrocode} +\begingroup + \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@ifvtex.sty\endcsname +\ProvidesPackage{ifvtex}% + [2006/02/20 v1.1 Provides the ifpdf switch (HO)] +% \end{macrocode} +% +% +% \subsection{Check for previously defined \cs{ifvtex}} +% +% \begin{macrocode} +\begingroup + \expandafter\ifx\csname ifvtex\endcsname\relax + \else + \edef\i/{\expandafter\string\csname ifvtex\endcsname}% + \expandafter\ifx\csname PackageError\endcsname\relax + \def\x#1#2{% + \edef\z{#2}% + \expandafter\errhelp\expandafter{\z}% + \errmessage{Package ifvtex Error: #1}% + }% + \def\y{^^J}% + \newlinechar=10 + \else + \def\x#1#2{% + \PackageError{ifvtex}{#1}{#2}% + }% + \def\y{\MessageBreak}% + \fi + \x{Name clash, \i/ is already defined}{% + Incompatible versions of \i/ can cause problems,\y + therefore package loading is aborted.% + }% + \endgroup + \expandafter\endinput + \fi +\endgroup +% \end{macrocode} +% +% \subsection{\cs{ifvtex}} +% +% \begin{macro}{\ifvtex} +% Create and set the switch. \cs{newif} initializes the +% switch with \cs{iffalse}. +% \begin{macrocode} +\newif\ifvtex +% \end{macrocode} +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname VTeXversion\endcsname\relax +\else + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname OpMOde\endcsname\relax + \else + \vtextrue + \fi +\fi +% \end{macrocode} +% \end{macro} +% +% \subsection{Mode and GeX switches} +% +% \begin{macrocode} +\newif\ifvtexdvi +\newif\ifvtexpdf +\newif\ifvtexps +\newif\ifvtexhtml +\newif\ifvtexgex +\ifvtex + \ifcase\OpMode\relax + \vtexdvitrue + \or % 1 + \vtexpdftrue + \or % 2 + \vtexpstrue + \or % 3 + \vtexpstrue + \or\or\or\or\or\or\or % 10 + \vtexhtmltrue + \fi + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname gexmode\endcsname\relax + \else + \ifnum\gexmode>0 % + \vtexgextrue + \fi + \fi +\fi +% \end{macrocode} +% +% \subsection{Protocol entry} +% +% Log comment: +% \begin{macrocode} +\begingroup + \expandafter\ifx\csname PackageInfo\endcsname\relax + \def\x#1#2{% + \immediate\write-1{Package #1 Info: #2.}% + }% + \else + \let\x\PackageInfo + \expandafter\let\csname on@line\endcsname\empty + \fi + \x{ifvtex}{% + VTeX % + \ifvtex + in \ifvtexdvi DVI\fi + \ifvtexpdf PDF\fi + \ifvtexps PS\fi + \ifvtexhtml HTML\fi + \space mode % + with\ifvtexgex\else out\fi\space GeX % + \else + not % + \fi + detected% + }% +\endgroup +% \end{macrocode} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/ifvtex.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/ifvtex.pdf}] Documentation. +% \end{description} +% +% \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 ifvtex.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@{}} +% ifvtex.sty & tex/generic/oberdiek/ifvtex.sty\\ +% ifvtex.pdf & doc/latex/oberdiek/ifvtex.pdf\\ +% ifvtex.dtx & source/latex/oberdiek/ifvtex.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 ifvtex.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{ifvtex.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 ifvtex.dtx +%makeindex -s gind.ist ifvtex.idx +%pdflatex ifvtex.dtx +%makeindex -s gind.ist ifvtex.idx +%pdflatex ifvtex.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2001/09/26 v1.0} +% \item +% First public version. +% \end{Version} +% \begin{Version}{2006/02/20 v1.1} +% \item +% DTX framework. +% \item +% Undefined tests changed. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/inputenx.dtx b/Master/texmf-dist/source/latex/oberdiek/inputenx.dtx new file mode 100644 index 00000000000..c5a5022ed0d --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/inputenx.dtx @@ -0,0 +1,8587 @@ +% \iffalse meta-comment +% +% Copyright (C) 2006 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 inputenx.dtx +% and the derived files +% inputenx.sty, inputenx.pdf, inputenx.ins, inputenx.drv, +% ix-alias.def, ix-math.def, ix-name.def, ix-slot.def, +% ix-uc.def, ix-utf8enc.dfu, x-ascii.def, x-iso-8859-1.def, +% x-iso-8859-2.def, x-iso-8859-3.def, x-iso-8859-4.def, +% x-iso-8859-9.def, x-iso-8859-10.def, x-iso-8859-13.def, +% x-iso-8859-14.def, x-iso-8859-15.def, x-iso-8859-16.def, +% x-cp437.def, x-cp850.def, x-cp852.def, x-cp858.def, +% x-cp865.def, x-cp1250.def, x-cp1252.def, x-cp1257.def, +% x-mac-roman.def, x-mac-ce.def, x-nextstep.def, +% x-dec-mcs.def, inputenx-licrcmds.txt, inputenx-utf8enc.txt. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/inputenx.dtx +% CTAN:macros/latex/contrib/oberdiek/inputenx.pdf +% +% Unpacking: +% (a) If inputenx.ins is present: +% tex inputenx.ins +% (b) Without inputenx.ins: +% tex inputenx.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{inputenx.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If inputenx.drv is present: +% latex inputenx.drv +% (b) Without inputenx.drv: +% latex inputenx.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 inputenx.dtx +% makeindex -s gind.ist inputenx.idx +% pdflatex inputenx.dtx +% makeindex -s gind.ist inputenx.idx +% pdflatex inputenx.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/inputenx.sty +% TDS:tex/latex/oberdiek/ix-alias.def +% TDS:tex/latex/oberdiek/ix-math.def +% TDS:tex/latex/oberdiek/ix-name.def +% TDS:tex/latex/oberdiek/ix-slot.def +% TDS:tex/latex/oberdiek/ix-uc.def +% TDS:tex/latex/oberdiek/ix-utf8enc.dfu +% TDS:tex/latex/oberdiek/x-ascii.def +% TDS:tex/latex/oberdiek/x-iso-8859-1.def +% TDS:tex/latex/oberdiek/x-iso-8859-2.def +% TDS:tex/latex/oberdiek/x-iso-8859-3.def +% TDS:tex/latex/oberdiek/x-iso-8859-4.def +% TDS:tex/latex/oberdiek/x-iso-8859-9.def +% TDS:tex/latex/oberdiek/x-iso-8859-10.def +% TDS:tex/latex/oberdiek/x-iso-8859-13.def +% TDS:tex/latex/oberdiek/x-iso-8859-14.def +% TDS:tex/latex/oberdiek/x-iso-8859-15.def +% TDS:tex/latex/oberdiek/x-iso-8859-16.def +% TDS:tex/latex/oberdiek/x-cp437.def +% TDS:tex/latex/oberdiek/x-cp850.def +% TDS:tex/latex/oberdiek/x-cp852.def +% TDS:tex/latex/oberdiek/x-cp858.def +% TDS:tex/latex/oberdiek/x-cp865.def +% TDS:tex/latex/oberdiek/x-cp1250.def +% TDS:tex/latex/oberdiek/x-cp1252.def +% TDS:tex/latex/oberdiek/x-cp1257.def +% TDS:tex/latex/oberdiek/x-mac-roman.def +% TDS:tex/latex/oberdiek/x-mac-ce.def +% TDS:tex/latex/oberdiek/x-nextstep.def +% TDS:tex/latex/oberdiek/x-dec-mcs.def +% TDS:doc/latex/oberdiek/inputenx.pdf +% TDS:doc/latex/oberdiek/inputenx-licrcmds.txt +% TDS:doc/latex/oberdiek/inputenx-utf8enc.txt +% TDS:source/latex/oberdiek/inputenx.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: inputenx 2006/08/24 v1.0 Enhanced input encoding handling (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2006 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 inputenx.dtx +and the derived files + inputenx.sty, inputenx.pdf, inputenx.ins, inputenx.drv, + ix-alias.def, ix-math.def, ix-name.def, ix-slot.def, + ix-uc.def, ix-utf8enc.dfu, x-ascii.def, x-iso-8859-1.def, + x-iso-8859-2.def, x-iso-8859-3.def, x-iso-8859-4.def, + x-iso-8859-9.def, x-iso-8859-10.def, x-iso-8859-13.def, + x-iso-8859-14.def, x-iso-8859-15.def, x-iso-8859-16.def, + x-cp437.def, x-cp850.def, x-cp852.def, x-cp858.def, + x-cp865.def, x-cp1250.def, x-cp1252.def, x-cp1257.def, + x-mac-roman.def, x-mac-ce.def, x-nextstep.def, + x-dec-mcs.def, inputenx-licrcmds.txt, inputenx-utf8enc.txt. + +\endpreamble + +\generate{% + \file{inputenx.ins}{\from{inputenx.dtx}{install}}% + \file{inputenx.drv}{\from{inputenx.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{inputenx.sty}{\from{inputenx.dtx}{package}}% + \file{ix-alias.def}{\from{inputenx.dtx}{alias}}% + \file{ix-math.def}{\from{inputenx.dtx}{math}}% + \file{ix-name.def}{\from{inputenx.dtx}{name}}% + \file{ix-slot.def}{\from{inputenx.dtx}{slot}}% + \file{ix-uc.def}{\from{inputenx.dtx}{uc}}% + \file{ix-utf8enc.dfu}{\from{inputenx.dtx}{dfu}}% + \file{x-ascii.def}{\from{inputenx.dtx}{ascii}}% + \file{x-iso-8859-1.def}{\from{inputenx.dtx}{iso-8859-1}}% + \file{x-iso-8859-2.def}{\from{inputenx.dtx}{iso-8859-2}}% + \file{x-iso-8859-3.def}{\from{inputenx.dtx}{iso-8859-3}}% + \file{x-iso-8859-4.def}{\from{inputenx.dtx}{iso-8859-4}}% + \file{x-iso-8859-9.def}{\from{inputenx.dtx}{iso-8859-9}}% + \file{x-iso-8859-10.def}{\from{inputenx.dtx}{iso-8859-10}}% + \file{x-iso-8859-13.def}{\from{inputenx.dtx}{iso-8859-13}}% + \file{x-iso-8859-14.def}{\from{inputenx.dtx}{iso-8859-14}}% + \file{x-iso-8859-15.def}{\from{inputenx.dtx}{iso-8859-15}}% + \file{x-iso-8859-16.def}{\from{inputenx.dtx}{iso-8859-16}}% + \file{x-cp437.def}{\from{inputenx.dtx}{cp437}}% + \file{x-cp850.def}{\from{inputenx.dtx}{cp850}}% + \file{x-cp852.def}{\from{inputenx.dtx}{cp852}}% + \file{x-cp858.def}{\from{inputenx.dtx}{cp858}}% + \file{x-cp865.def}{\from{inputenx.dtx}{cp865}}% + \file{x-cp1250.def}{\from{inputenx.dtx}{cp1250}}% + \file{x-cp1252.def}{\from{inputenx.dtx}{cp1252}}% + \file{x-cp1257.def}{\from{inputenx.dtx}{cp1257}}% + \file{x-mac-roman.def}{\from{inputenx.dtx}{mac-roman}}% + \file{x-mac-ce.def}{\from{inputenx.dtx}{mac-ce}}% + \file{x-nextstep.def}{\from{inputenx.dtx}{nextstep}}% + \file{x-dec-mcs.def}{\from{inputenx.dtx}{dec-mcs}}% + \usedir{doc/latex/oberdiek}% + \file{inputenx-licrcmds.txt}{\from{inputenx.dtx}{licrcmds}}% + \file{inputenx-utf8enc.txt}{\from{inputenx.dtx}{dfudoc}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* inputenx.sty, ix-alias.def, ix-math.def, ix-name.def,} +\Msg{* ix-slot.def, ix-uc.def, ix-utf8enc.dfu, x-ascii.def,} +\Msg{* x-iso-8859-1.def, x-iso-8859-2.def, x-iso-8859-3.def,} +\Msg{* x-iso-8859-4.def, x-iso-8859-9.def, x-iso-8859-10.def,} +\Msg{* x-iso-8859-13.def, x-iso-8859-14.def, x-iso-8859-15.def,} +\Msg{* x-iso-8859-16.def, x-cp437.def, x-cp850.def, x-cp852.def,} +\Msg{* x-cp858.def, x-cp865.def, x-cp1250.def, x-cp1252.def,} +\Msg{* x-cp1257.def, x-mac-roman.def, x-mac-ce.def, x-nextstep.def,} +\Msg{* x-dec-mcs.def} +\Msg{*} +\Msg{* To produce the documentation run the file `inputenx.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{inputenx.drv}% + [2006/08/24 v1.0 Enhanced input encoding handling (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\usepackage{longtable} +\begin{document} + \DocInput{inputenx.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{7200} +% +% \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{inputenx.drv} +% +% \title{The \xpackage{inputenx} package} +% \date{2006/08/24 v1.0} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% This package deals with input encodings. The first stage +% is already available. It provides input encodings using +% standard mappings and covers nearly all slots. Thus it +% serves as more uptodate replacement for package \xpackage{inputenc}. +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% This project is unfinished. The main goal is to have a package +% that allows the selection and defining input encodings by the +% characters in question itself. Then the whole TeX file could +% transparently be recoded without changing the specification of +% the input encoding. +% +% However, the first stage is already available. Here the encoding +% tables are build with mappings to Unicode. +% +% \subsection{Definition files} +% +% The input encoding definition files are prefixed with \verb|x-| +% to distinguish them from the names package \xpackage{inputenc} uses. +% The definition files of \xpackage{inputenx} may also be used +% by package \xpackage{inputenc}, eg.: +% \begin{quote} +% \verb|\usepackage[x-iso-8859-1]{inputenc}| +% \end{quote} +% As option for package \xpackage{inputenx} the prefix may be dropped: +% \begin{quote} +% \verb|\usepackage[iso-8859-1]{inputenx}| +% \end{quote} +% The following definition files are available. The second column +% lists alternative option names for \xpackage{inputenx}: +% \begin{longtable}{@{}lll@{}} +% \xfile{x-ascii.def} & \xoption{ascii}, \xoption{us-ascii} & ASCII encoding, 8bit characters disabled\\ +% \xfile{x-cp437.def} & \xoption{cp437}, \xoption{cp437de} & Code page 437\\ +% \xfile{x-cp850.def} & \xoption{cp850} & Code page 850\\ +% \xfile{x-cp852.def} & \xoption{cp852} & Code page 852\\ +% \xfile{x-cp858.def} & \xoption{cp858} & Code page 858\\ +% \xfile{x-cp865.def} & \xoption{cp865} & Code page 865\\ +% \xfile{x-cp1250.def} & \xoption{cp1250} & Code page 1250\\ +% \xfile{x-cp1252.def} & \xoption{cp1252}, \xoption{ansinew} & Code page 1252\\ +% \xfile{x-cp1257.def} & \xoption{cp1257} & Code page 1257\\ +% \xfile{x-dec-mcs.def} & \xoption{dec-mcs}, \xoption{decmulti} & DEC Multinational\\ +% \xfile{x-iso-8859-1.def} & \xoption{iso-8859-1}, \xoption{latin1} & ISO-8859-1\\ +% \xfile{x-iso-8859-2.def} & \xoption{iso-8859-2}, \xoption{latin2} & ISO-8859-2\\ +% \xfile{x-iso-8859-3.def} & \xoption{iso-8859-3}, \xoption{latin3} & ISO-8859-3\\ +% \xfile{x-iso-8859-4.def} & \xoption{iso-8859-4}, \xoption{latin4} & ISO-8859-4\\ +% \xfile{x-iso-8859-9.def} & \xoption{iso-8859-9}, \xoption{latin5} & ISO-8859-9\\ +% \xfile{x-iso-8859-10.def} & \xoption{iso-8859-10}, \xoption{latin6} & ISO-8859-10\\ +% \xfile{x-iso-8859-13.def} & \xoption{iso-8859-13}, \xoption{latin7} & ISO-8859-13\\ +% \xfile{x-iso-8859-14.def} & \xoption{iso-8859-14}, \xoption{latin8} & ISO-8859-14\\ +% \xfile{x-iso-8859-15.def} & \xoption{iso-8859-15}, \xoption{latin9} & ISO-8859-15\\ +% \xfile{x-iso-8859-16.def} & \xoption{iso-8859-16}, \xoption{latin10} & ISO-8859-16\\ +% \xfile{x-mac-ce.def} & \xoption{mac-ce}, \xoption{macce} & MAC OS Central European\\ +% \xfile{x-mac-roman.def} & \xoption{mac-roman}, \xoption{applemac} & MAC OS Roman\\ +% \xfile{x-nextstep} & \xoption{nextstep}, \xoption{next} & NextStep Encoding\\ +% \end{longtable} +% +% Also the box drawings characters of some older DOS code pages +% (cp437, cp850, cp852, cp858, cp865) can be used. +% They are provided by package \xpackage{pmboxdraw}. +% +% For the following characters I didn't find suitable LICR (\LaTeX\ Internal +% Character Representation): +% \begin{quote} +%\begin{verbatim} +%\DeclareUnicodeCharacter{2015}{} +% % HORIZONTAL BAR +% % QUOTATION DASH +% % iso-8859-10[0xBD/189] +% +%\DeclareUnicodeCharacter{2017}{} +% % DOUBLE LOW LINE +% % SPACING DOUBLE UNDERSCORE +% % cp850[0xF2/242] cp858[0xF2/242] +% +%\DeclareUnicodeCharacter{2310}{} +% % REVERSED NOT SIGN +% % cp437[0xA9/169] cp865[0xA9/169] +% +%\DeclareUnicodeCharacter{2320}{} +% % TOP HALF INTEGRAL +% % cp437[0xF4/244] cp865[0xF4/244] +% +%\DeclareUnicodeCharacter{2321}{} +% % BOTTOM HALF INTEGRAL +% % cp437[0xF5/245] cp865[0xF5/245] +% +%\DeclareUnicodeCharacter{F8FF}{} +% % <Private Use, Last> +% % mac-roman[0xF0/240] +%\end{verbatim} +% \end{quote} +% +% \subsection{Unicode} +% +% File \xfile{ix-utf8enc.dfu} provides additions to \xpackage{inputenc}'s +% file \xfile{utf8enc.dfu}. +% +% \subsection{Math} +% +% The current philosophy of \LaTeX/package \xpackage{inputenc} is not to +% declare characters for math only. Instead there is a experimental +% package \xpackage{inpmath} that extends package \xpackage{inputenc}, +% to change the behaviour of input characters if used in math mode. +% File \xfile{ix-math.def} provides some definitions of math characters. +% +% \subsection{ToDo} +% +% \begin{itemize} +% \item Implementing the remaining main features. +% \item Documentation. +% \end{itemize} +% +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \subsection{Identification} +% +% \begin{macrocode} +%<*package> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{inputenx}% + [2006/08/24 v1.0 Enhanced input encoding handling (HO)] +% \end{macrocode} +% +% \subsection{Encoding names} +% +% \subsubsection{Record current encoding names} +% +% \begin{macro}{\CurrentInputEncodingName} +% \begin{macrocode} +\providecommand*{\CurrentInputEncodingName}{} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\CurrentInputEncodingOption} +% \begin{macrocode} +\providecommand*{\CurrentInputEncodingOption}{} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Aliases for encoding names} +% +% \begin{macrocode} +\def\IEX@LookupEncoding#1{% + \edef\CurrentInputEncodingName{#1}% + \@onelevel@sanitize\CurrentInputEncodingName + \let\CurrentInputEncodingOption\@empty + \@ifundefined{IEX@enc@\CurrentInputEncodingName}{% + \global\expandafter\let + \csname IEX@enc@\CurrentInputEncodingName\endcsname + \CurrentInputEncodingName + \IEX@DoLookup + }{}% + \edef\CurrentInputEncodingOption{% + \csname IEX@enc@\CurrentInputEncodingName\endcsname + }% + \ifx\CurrentInputEncodingOption\@empty + \PackageWarning{inputenx}{% + Encoding `\CurrentInputEncodingName' is not available\MessageBreak + and therefore ignored% + }% + \else + \IfFileExists{\CurrentInputEncodingOption.def}{% + \PackageInfo{inputenx}{% + Encoding name: \CurrentInputEncodingName\MessageBreak + Encoding file: \CurrentInputEncodingOption.def\MessageBreak + }% + }{% + \PackageError{inputenx}{% + Cannot load encoding `\CurrentInputEncodingName'.\MessageBreak + A valid encoding alias was not found and\MessageBreak + encoding file `\CurrentInputEncodingOption.def' does not exist% + }\@ehc + \global\expandafter\let + \csname IEX@enc@\CurrentInputEncodingName\endcsname\@empty + \let\CurrentInputEncodingName\@empty + \let\CurrentInputEncodingOption\@empty + }% + \fi +} +% \end{macrocode} +% Encoding is in \cs{CurrentInputEncodingName}. Search the +% alias file until an entry is found and define +% |IEX@enc@\CurrentInputEncodingName|. +% \begin{macrocode} +\def\IEX@DoLookup{% + \begingroup + \advance\endlinechar\@M + \IfFileExists{ix-alias.cfg}{% + \input{ix-alias.cfg}% + }{% + \input{ix-alias.def}% + }% + \advance\endlinechar-\@M + \endgroup +} +% \end{macrocode} +% \begin{macrocode} +\def\InputenxAlias#1#2{% + \edef\IEX@temp{#1}% + \@onelevel@sanitize\IEX@temp + \ifx\IEX@temp\CurrentInputEncodingName + \edef\IEX@temp{#2}% + \@onelevel@sanitize\IEX@temp + \IfFileExists{\IEX@temp.def}{% + \global\expandafter\let + \csname IEX@enc@\CurrentInputEncodingName\endcsname\IEX@temp + \expandafter\endinput + }{% + \PackageWarning{inputenx}{% + Missing encoding file `\IEX@temp.def'\MessageBreak + for encoding `\CurrentInputEncodingName', continuing\MessageBreak + with lookup search% + }% + }% + \fi +} +% \end{macrocode} +% +% \subsection{Package options} +% +% \subsubsection{Declare and process options} +% +% \begin{macrocode} +\newif\ifIEX@math +\DeclareOption{math}{\IEX@mathtrue} +\let\IEX@enclist\@empty +\DeclareOption*{% + \ifx\IEX@enclist\@empty + \let\IEX@enclist\CurrentOption + \else + \edef\IEX@enclist{\IEX@enclist,\CurrentOption}% + \fi +} +\ProcessOptions* +% \end{macrocode} +% +% \subsubsection{Load \xpackage{inputenc} with encoding options} +% +% \begin{macrocode} +\@for\CurrentOption:=\IEX@enclist\do{% + \IEX@LookupEncoding\CurrentOption + \ifx\CurrentInputEncodingOption\@empty + \else + \PassOptionsToPackage{\CurrentInputEncodingOption}{inputenc}% + \fi +} +\RequirePackage{inputenc} +% \end{macrocode} +% +% \subsubsection{\cs{InputEncoding}} +% +% \begin{macro}{\InputEncoding} +% \cs{InputEncoding} is basically the same as \cs{inputencoding} +% of package \xpackage{inputenc}. However aliases are supported. +% \begin{macrocode} +\newcommand*{\InputEncoding}[1]{% + \IEX@LookupEncoding{#1}% + \ifx\CurrentInputEncodingOption\@empty + \else + \inputencoding{\CurrentInputEncodingOption}% +% \ifx\PassOptionsToPackage\@notprerr +% \else +% \expandafter\PassOptionsToPackage\expandafter{% +% \CurrentInputEncodingOption +% }{inputenc}% +% \ifx\CurrentInputEncodingName\CurrentInputEncodingOption +% \else +% \expandafter\PassOptionsToPackage\expandafter{% +% \CurrentInputEncodingName +% }{inputenc}% +% \fi +% \fi + \fi +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Option \xoption{math}} +% +% \begin{macrocode} +\ifIEX@math + \RequirePackage{inpmath} + \IfFileExists{ix-math.cfg}{% + \input{ix-math.cfg}% + }{% + \input{ix-math.def}% + }% +\fi +% \end{macrocode} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% +% \subsection{Alias encoding file} +% +% \begin{macrocode} +%<*alias> +\ProvidesFile{ix-alias.def}[2006/08/24 v1.0 Alias list (inputenx)] +% \end{macrocode} +% The alias mechanism is also used to hide the prefix |x-|: +% \begin{macrocode} +\InputenxAlias{ascii}{x-ascii} +\InputenxAlias{iso-8859-1}{x-iso-8859-1} +\InputenxAlias{iso-8859-2}{x-iso-8859-2} +\InputenxAlias{iso-8859-3}{x-iso-8859-3} +\InputenxAlias{iso-8859-4}{x-iso-8859-4} +\InputenxAlias{iso-8859-9}{x-iso-8859-9} +\InputenxAlias{iso-8859-10}{x-iso-8859-10} +\InputenxAlias{iso-8859-13}{x-iso-8859-13} +\InputenxAlias{iso-8859-14}{x-iso-8859-14} +\InputenxAlias{iso-8859-15}{x-iso-8859-15} +\InputenxAlias{iso-8859-16}{x-iso-8859-16} +\InputenxAlias{cp437}{x-cp437} +\InputenxAlias{cp850}{x-cp850} +\InputenxAlias{cp852}{x-cp852} +\InputenxAlias{cp858}{x-cp858} +\InputenxAlias{cp865}{x-cp865} +\InputenxAlias{cp1250}{x-cp1250} +\InputenxAlias{cp1252}{x-cp1252} +\InputenxAlias{cp1257}{x-cp1257} +\InputenxAlias{mac-roman}{x-mac-roman} +\InputenxAlias{mac-ce}{x-mac-ce} +\InputenxAlias{nextstep}{x-nextstep} +\InputenxAlias{dec-mcs}{x-dec-mcs} +% \end{macrocode} +% Now the real aliases start: +% \begin{macrocode} +\InputenxAlias{ansinew}{x-cp1252} +\InputenxAlias{applemac}{x-mac-roman} +\InputenxAlias{cp437de}{x-cp437} +\InputenxAlias{decmulti}{x-dec-mcs} +\InputenxAlias{latin1}{x-iso-8859-1} +\InputenxAlias{latin10}{x-iso-8859-16} +\InputenxAlias{latin2}{x-iso-8859-2} +\InputenxAlias{latin3}{x-iso-8859-3} +\InputenxAlias{latin4}{x-iso-8859-4} +\InputenxAlias{latin5}{x-iso-8859-9} +\InputenxAlias{latin6}{x-iso-8859-10} +\InputenxAlias{latin7}{x-iso-8859-13} +\InputenxAlias{latin8}{x-iso-8859-14} +\InputenxAlias{latin9}{x-iso-8859-15} +\InputenxAlias{macce}{x-mac-ce} +\InputenxAlias{next}{x-nextstep} +\InputenxAlias{us-ascii}{x-ascii} +% \end{macrocode} +% +% \begin{macrocode} +%</alias> +% \end{macrocode} +% +% \subsection{Encoding files} +% +% \subsubsection{Encoding ascii} +% +% The encoding file \xfile{ascii.def} of package \xpackage{inputenc} +% before 2006/03/04 v1.1b generate a unnecessary warning. Therefore +% a separate variant is provided here. +% \begin{macrocode} +%<*ascii> +\ProvidesFile{x-ascii.def}% + [2006/08/24 v1.0 Input encoding ascii (inputenx)] +\@inpenc@test +%</ascii> +% \end{macrocode} +% +% \subsubsection{Encoding iso-8859-1} +% +% \begin{macrocode} +%<*iso-8859-1> +\ProvidesFile{x-iso-8859-1.def}% + [2006/08/24 v1.0 Input encoding iso-8859-1 (inputenx)] +\ProvideTextCommandDefault{\textasciiacute}{% + \@tabacckludge'{}% +} +\ProvideTextCommandDefault{\textasciidieresis}{% + \"{}% +} +\ProvideTextCommandDefault{\textasciimacron}{% + \@tabacckludge={}% +} +\ProvideTextCommandDefault{\textbrokenbar}{% + \TextSymbolUnavailable\textbrokenbar +} +\ProvideTextCommandDefault{\textcent}{% + \TextSymbolUnavailable\textcent +} +\ProvideTextCommandDefault{\textcurrency}{% + \TextSymbolUnavailable\textcurrency +} +\ProvideTextCommandDefault{\textdegree}{% + \ensuremath{{^\circ}}% +} +\ProvideTextCommandDefault{\textdiv}{% + \TextSymbolUnavailable\textdiv +} +\ProvideTextCommandDefault{\textlnot}{% + \ensuremath\lnot +} +\ProvideTextCommandDefault{\textmu}{% + \ensuremath\mu +} +\ProvideTextCommandDefault{\textonehalf}{% + \ensuremath{\frac12}% +} +\ProvideTextCommandDefault{\textonequarter}{% + \ensuremath{\frac14}% +} +\ProvideTextCommandDefault{\textonesuperior}{% + \ensuremath{{^1}}% +} +\ProvideTextCommandDefault{\textpm}{% + \ensuremath\pm +} +\ProvideTextCommandDefault{\textthreequarters}{% + \ensuremath{\frac34}% +} +\ProvideTextCommandDefault{\textthreesuperior}{% + \ensuremath{{^3}}% +} +\ProvideTextCommandDefault{\texttimes}{% + \ensuremath\times +} +\ProvideTextCommandDefault{\texttwosuperior}{% + \ensuremath{{^2}}% +} +\ProvideTextCommandDefault{\textyen}{% + \TextSymbolUnavailable\textyen +} +\DeclareInputText{160}{\nobreakspace} +\DeclareInputText{161}{\textexclamdown} +\DeclareInputText{162}{\textcent} +\DeclareInputText{163}{\textsterling} +\DeclareInputText{164}{\textcurrency} +\DeclareInputText{165}{\textyen} +\DeclareInputText{166}{\textbrokenbar} +\DeclareInputText{167}{\textsection} +\DeclareInputText{168}{\textasciidieresis} +\DeclareInputText{169}{\textcopyright} +\DeclareInputText{170}{\textordfeminine} +\DeclareInputText{171}{\guillemotleft} +\DeclareInputText{172}{\textlnot} +\DeclareInputText{173}{\-} +\DeclareInputText{174}{\textregistered} +\DeclareInputText{175}{\textasciimacron} +\DeclareInputText{176}{\textdegree} +\DeclareInputText{177}{\textpm} +\DeclareInputText{178}{\texttwosuperior} +\DeclareInputText{179}{\textthreesuperior} +\DeclareInputText{180}{\textasciiacute} +\DeclareInputText{181}{\textmu} +\DeclareInputText{182}{\textparagraph} +\DeclareInputText{183}{\textperiodcentered} +\DeclareInputText{184}{\c\ } +\DeclareInputText{185}{\textonesuperior} +\DeclareInputText{186}{\textordmasculine} +\DeclareInputText{187}{\guillemotright} +\DeclareInputText{188}{\textonequarter} +\DeclareInputText{189}{\textonehalf} +\DeclareInputText{190}{\textthreequarters} +\DeclareInputText{191}{\textquestiondown} +\DeclareInputText{192}{\@tabacckludge`A} +\DeclareInputText{193}{\@tabacckludge'A} +\DeclareInputText{194}{\^A} +\DeclareInputText{195}{\~A} +\DeclareInputText{196}{\"A} +\DeclareInputText{197}{\r A} +\DeclareInputText{198}{\AE} +\DeclareInputText{199}{\c C} +\DeclareInputText{200}{\@tabacckludge`E} +\DeclareInputText{201}{\@tabacckludge'E} +\DeclareInputText{202}{\^E} +\DeclareInputText{203}{\"E} +\DeclareInputText{204}{\@tabacckludge`I} +\DeclareInputText{205}{\@tabacckludge'I} +\DeclareInputText{206}{\^I} +\DeclareInputText{207}{\"I} +\DeclareInputText{208}{\DH} +\DeclareInputText{209}{\~N} +\DeclareInputText{210}{\@tabacckludge`O} +\DeclareInputText{211}{\@tabacckludge'O} +\DeclareInputText{212}{\^O} +\DeclareInputText{213}{\~O} +\DeclareInputText{214}{\"O} +\DeclareInputText{215}{\texttimes} +\DeclareInputText{216}{\O} +\DeclareInputText{217}{\@tabacckludge`U} +\DeclareInputText{218}{\@tabacckludge'U} +\DeclareInputText{219}{\^U} +\DeclareInputText{220}{\"U} +\DeclareInputText{221}{\@tabacckludge'Y} +\DeclareInputText{222}{\TH} +\DeclareInputText{223}{\ss} +\DeclareInputText{224}{\@tabacckludge`a} +\DeclareInputText{225}{\@tabacckludge'a} +\DeclareInputText{226}{\^a} +\DeclareInputText{227}{\~a} +\DeclareInputText{228}{\"a} +\DeclareInputText{229}{\r a} +\DeclareInputText{230}{\ae} +\DeclareInputText{231}{\c c} +\DeclareInputText{232}{\@tabacckludge`e} +\DeclareInputText{233}{\@tabacckludge'e} +\DeclareInputText{234}{\^e} +\DeclareInputText{235}{\"e} +\DeclareInputText{236}{\@tabacckludge`\i} +\DeclareInputText{237}{\@tabacckludge'\i} +\DeclareInputText{238}{\^\i} +\DeclareInputText{239}{\"\i} +\DeclareInputText{240}{\dh} +\DeclareInputText{241}{\~n} +\DeclareInputText{242}{\@tabacckludge`o} +\DeclareInputText{243}{\@tabacckludge'o} +\DeclareInputText{244}{\^o} +\DeclareInputText{245}{\~o} +\DeclareInputText{246}{\"o} +\DeclareInputText{247}{\textdiv} +\DeclareInputText{248}{\o} +\DeclareInputText{249}{\@tabacckludge`u} +\DeclareInputText{250}{\@tabacckludge'u} +\DeclareInputText{251}{\^u} +\DeclareInputText{252}{\"u} +\DeclareInputText{253}{\@tabacckludge'y} +\DeclareInputText{254}{\th} +\DeclareInputText{255}{\"y} +%</iso-8859-1> +% \end{macrocode} +% +% \subsubsection{Encoding iso-8859-2} +% +% \begin{macrocode} +%<*iso-8859-2> +\ProvidesFile{x-iso-8859-2.def}% + [2006/08/24 v1.0 Input encoding iso-8859-2 (inputenx)] +\ProvideTextCommandDefault{\textacutedbl}{% + \H{}% +} +\ProvideTextCommandDefault{\textasciiacute}{% + \@tabacckludge'{}% +} +\ProvideTextCommandDefault{\textasciibreve}{% + \u{}% +} +\ProvideTextCommandDefault{\textasciicaron}{% + \v{}% +} +\ProvideTextCommandDefault{\textasciidieresis}{% + \"{}% +} +\ProvideTextCommandDefault{\textcurrency}{% + \TextSymbolUnavailable\textcurrency +} +\ProvideTextCommandDefault{\textdegree}{% + \ensuremath{{^\circ}}% +} +\ProvideTextCommandDefault{\textdiv}{% + \TextSymbolUnavailable\textdiv +} +\ProvideTextCommandDefault{\texttimes}{% + \ensuremath\times +} +\DeclareInputText{160}{\nobreakspace} +\DeclareInputText{161}{\k A} +\DeclareInputText{162}{\textasciibreve} +\DeclareInputText{163}{\L} +\DeclareInputText{164}{\textcurrency} +\DeclareInputText{165}{\v L} +\DeclareInputText{166}{\@tabacckludge'S} +\DeclareInputText{167}{\textsection} +\DeclareInputText{168}{\textasciidieresis} +\DeclareInputText{169}{\v S} +\DeclareInputText{170}{\c S} +\DeclareInputText{171}{\v T} +\DeclareInputText{172}{\@tabacckludge'Z} +\DeclareInputText{173}{\-} +\DeclareInputText{174}{\v Z} +\DeclareInputText{175}{\.Z} +\DeclareInputText{176}{\textdegree} +\DeclareInputText{177}{\k a} +\DeclareInputText{178}{\k{}} +\DeclareInputText{179}{\l} +\DeclareInputText{180}{\textasciiacute} +\DeclareInputText{181}{\v l} +\DeclareInputText{182}{\@tabacckludge's} +\DeclareInputText{183}{\textasciicaron} +\DeclareInputText{184}{\c\ } +\DeclareInputText{185}{\v s} +\DeclareInputText{186}{\c s} +\DeclareInputText{187}{\v t} +\DeclareInputText{188}{\@tabacckludge'z} +\DeclareInputText{189}{\textacutedbl} +\DeclareInputText{190}{\v z} +\DeclareInputText{191}{\.z} +\DeclareInputText{192}{\@tabacckludge'R} +\DeclareInputText{193}{\@tabacckludge'A} +\DeclareInputText{194}{\^A} +\DeclareInputText{195}{\u A} +\DeclareInputText{196}{\"A} +\DeclareInputText{197}{\@tabacckludge'L} +\DeclareInputText{198}{\@tabacckludge'C} +\DeclareInputText{199}{\c C} +\DeclareInputText{200}{\v C} +\DeclareInputText{201}{\@tabacckludge'E} +\DeclareInputText{202}{\k E} +\DeclareInputText{203}{\"E} +\DeclareInputText{204}{\v E} +\DeclareInputText{205}{\@tabacckludge'I} +\DeclareInputText{206}{\^I} +\DeclareInputText{207}{\v D} +\DeclareInputText{208}{\DJ} +\DeclareInputText{209}{\@tabacckludge'N} +\DeclareInputText{210}{\v N} +\DeclareInputText{211}{\@tabacckludge'O} +\DeclareInputText{212}{\^O} +\DeclareInputText{213}{\H O} +\DeclareInputText{214}{\"O} +\DeclareInputText{215}{\texttimes} +\DeclareInputText{216}{\v R} +\DeclareInputText{217}{\r U} +\DeclareInputText{218}{\@tabacckludge'U} +\DeclareInputText{219}{\H U} +\DeclareInputText{220}{\"U} +\DeclareInputText{221}{\@tabacckludge'Y} +\DeclareInputText{222}{\c T} +\DeclareInputText{223}{\ss} +\DeclareInputText{224}{\@tabacckludge'r} +\DeclareInputText{225}{\@tabacckludge'a} +\DeclareInputText{226}{\^a} +\DeclareInputText{227}{\u a} +\DeclareInputText{228}{\"a} +\DeclareInputText{229}{\@tabacckludge'l} +\DeclareInputText{230}{\@tabacckludge'c} +\DeclareInputText{231}{\c c} +\DeclareInputText{232}{\v c} +\DeclareInputText{233}{\@tabacckludge'e} +\DeclareInputText{234}{\k e} +\DeclareInputText{235}{\"e} +\DeclareInputText{236}{\v e} +\DeclareInputText{237}{\@tabacckludge'\i} +\DeclareInputText{238}{\^\i} +\DeclareInputText{239}{\v d} +\DeclareInputText{240}{\dj} +\DeclareInputText{241}{\@tabacckludge'n} +\DeclareInputText{242}{\v n} +\DeclareInputText{243}{\@tabacckludge'o} +\DeclareInputText{244}{\^o} +\DeclareInputText{245}{\H o} +\DeclareInputText{246}{\"o} +\DeclareInputText{247}{\textdiv} +\DeclareInputText{248}{\v r} +\DeclareInputText{249}{\r u} +\DeclareInputText{250}{\@tabacckludge'u} +\DeclareInputText{251}{\H u} +\DeclareInputText{252}{\"u} +\DeclareInputText{253}{\@tabacckludge'y} +\DeclareInputText{254}{\c t} +\DeclareInputText{255}{\.{}} +%</iso-8859-2> +% \end{macrocode} +% +% \subsubsection{Encoding iso-8859-3} +% +% \begin{macrocode} +%<*iso-8859-3> +\ProvidesFile{x-iso-8859-3.def}% + [2006/08/24 v1.0 Input encoding iso-8859-3 (inputenx)] +\ProvideTextCommandDefault{\textasciiacute}{% + \@tabacckludge'{}% +} +\ProvideTextCommandDefault{\textasciibreve}{% + \u{}% +} +\ProvideTextCommandDefault{\textasciidieresis}{% + \"{}% +} +\ProvideTextCommandDefault{\textcurrency}{% + \TextSymbolUnavailable\textcurrency +} +\ProvideTextCommandDefault{\textdegree}{% + \ensuremath{{^\circ}}% +} +\ProvideTextCommandDefault{\textdiv}{% + \TextSymbolUnavailable\textdiv +} +\ProvideTextCommandDefault{\textmalteseH}{% + \TextSymbolUnavailable\textmalteseH +} +\ProvideTextCommandDefault{\textmalteseh}{% + \TextSymbolUnavailable\textmalteseh +} +\ProvideTextCommandDefault{\textmu}{% + \ensuremath\mu +} +\ProvideTextCommandDefault{\textonehalf}{% + \ensuremath{\frac12}% +} +\ProvideTextCommandDefault{\textthreesuperior}{% + \ensuremath{{^3}}% +} +\ProvideTextCommandDefault{\texttimes}{% + \ensuremath\times +} +\ProvideTextCommandDefault{\texttwosuperior}{% + \ensuremath{{^2}}% +} +\DeclareInputText{160}{\nobreakspace} +\DeclareInputText{161}{\textmalteseH} +\DeclareInputText{162}{\textasciibreve} +\DeclareInputText{163}{\textsterling} +\DeclareInputText{164}{\textcurrency} +\DeclareInputText{166}{\^H} +\DeclareInputText{167}{\textsection} +\DeclareInputText{168}{\textasciidieresis} +\DeclareInputText{169}{\.I} +\DeclareInputText{170}{\c S} +\DeclareInputText{171}{\u G} +\DeclareInputText{172}{\^J} +\DeclareInputText{173}{\-} +\DeclareInputText{175}{\.Z} +\DeclareInputText{176}{\textdegree} +\DeclareInputText{177}{\textmalteseh} +\DeclareInputText{178}{\texttwosuperior} +\DeclareInputText{179}{\textthreesuperior} +\DeclareInputText{180}{\textasciiacute} +\DeclareInputText{181}{\textmu} +\DeclareInputText{182}{\^h} +\DeclareInputText{183}{\textperiodcentered} +\DeclareInputText{184}{\c\ } +\DeclareInputText{185}{\i} +\DeclareInputText{186}{\c s} +\DeclareInputText{187}{\u g} +\DeclareInputText{188}{\^j} +\DeclareInputText{189}{\textonehalf} +\DeclareInputText{191}{\.z} +\DeclareInputText{192}{\@tabacckludge`A} +\DeclareInputText{193}{\@tabacckludge'A} +\DeclareInputText{194}{\^A} +\DeclareInputText{196}{\"A} +\DeclareInputText{197}{\.C} +\DeclareInputText{198}{\^C} +\DeclareInputText{199}{\c C} +\DeclareInputText{200}{\@tabacckludge`E} +\DeclareInputText{201}{\@tabacckludge'E} +\DeclareInputText{202}{\^E} +\DeclareInputText{203}{\"E} +\DeclareInputText{204}{\@tabacckludge`I} +\DeclareInputText{205}{\@tabacckludge'I} +\DeclareInputText{206}{\^I} +\DeclareInputText{207}{\"I} +\DeclareInputText{209}{\~N} +\DeclareInputText{210}{\@tabacckludge`O} +\DeclareInputText{211}{\@tabacckludge'O} +\DeclareInputText{212}{\^O} +\DeclareInputText{213}{\.G} +\DeclareInputText{214}{\"O} +\DeclareInputText{215}{\texttimes} +\DeclareInputText{216}{\^G} +\DeclareInputText{217}{\@tabacckludge`U} +\DeclareInputText{218}{\@tabacckludge'U} +\DeclareInputText{219}{\^U} +\DeclareInputText{220}{\"U} +\DeclareInputText{221}{\u U} +\DeclareInputText{222}{\^S} +\DeclareInputText{223}{\ss} +\DeclareInputText{224}{\@tabacckludge`a} +\DeclareInputText{225}{\@tabacckludge'a} +\DeclareInputText{226}{\^a} +\DeclareInputText{228}{\"a} +\DeclareInputText{229}{\.c} +\DeclareInputText{230}{\^c} +\DeclareInputText{231}{\c c} +\DeclareInputText{232}{\@tabacckludge`e} +\DeclareInputText{233}{\@tabacckludge'e} +\DeclareInputText{234}{\^e} +\DeclareInputText{235}{\"e} +\DeclareInputText{236}{\@tabacckludge`\i} +\DeclareInputText{237}{\@tabacckludge'\i} +\DeclareInputText{238}{\^\i} +\DeclareInputText{239}{\"\i} +\DeclareInputText{241}{\~n} +\DeclareInputText{242}{\@tabacckludge`o} +\DeclareInputText{243}{\@tabacckludge'o} +\DeclareInputText{244}{\^o} +\DeclareInputText{245}{\.g} +\DeclareInputText{246}{\"o} +\DeclareInputText{247}{\textdiv} +\DeclareInputText{248}{\^g} +\DeclareInputText{249}{\@tabacckludge`u} +\DeclareInputText{250}{\@tabacckludge'u} +\DeclareInputText{251}{\^u} +\DeclareInputText{252}{\"u} +\DeclareInputText{253}{\u u} +\DeclareInputText{254}{\^s} +\DeclareInputText{255}{\.{}} +%</iso-8859-3> +% \end{macrocode} +% +% \subsubsection{Encoding iso-8859-4} +% +% \begin{macrocode} +%<*iso-8859-4> +\ProvidesFile{x-iso-8859-4.def}% + [2006/08/24 v1.0 Input encoding iso-8859-4 (inputenx)] +\ProvideTextCommandDefault{\textTstroke}{% + \TextSymbolUnavailable\textTstroke +} +\ProvideTextCommandDefault{\textasciiacute}{% + \@tabacckludge'{}% +} +\ProvideTextCommandDefault{\textasciicaron}{% + \v{}% +} +\ProvideTextCommandDefault{\textasciidieresis}{% + \"{}% +} +\ProvideTextCommandDefault{\textasciimacron}{% + \@tabacckludge={}% +} +\ProvideTextCommandDefault{\textcurrency}{% + \TextSymbolUnavailable\textcurrency +} +\ProvideTextCommandDefault{\textdegree}{% + \ensuremath{{^\circ}}% +} +\ProvideTextCommandDefault{\textdiv}{% + \TextSymbolUnavailable\textdiv +} +\ProvideTextCommandDefault{\textkra}{% + \TextSymbolUnavailable\textkra +} +\ProvideTextCommandDefault{\texttimes}{% + \ensuremath\times +} +\ProvideTextCommandDefault{\texttstroke}{% + \TextSymbolUnavailable\texttstroke +} +\DeclareInputText{160}{\nobreakspace} +\DeclareInputText{161}{\k A} +\DeclareInputText{162}{\textkra} +\DeclareInputText{163}{\c R} +\DeclareInputText{164}{\textcurrency} +\DeclareInputText{165}{\~I} +\DeclareInputText{166}{\c L} +\DeclareInputText{167}{\textsection} +\DeclareInputText{168}{\textasciidieresis} +\DeclareInputText{169}{\v S} +\DeclareInputText{170}{\@tabacckludge=E} +\DeclareInputText{171}{\c G} +\DeclareInputText{172}{\textTstroke} +\DeclareInputText{173}{\-} +\DeclareInputText{174}{\v Z} +\DeclareInputText{175}{\textasciimacron} +\DeclareInputText{176}{\textdegree} +\DeclareInputText{177}{\k a} +\DeclareInputText{178}{\k{}} +\DeclareInputText{179}{\c r} +\DeclareInputText{180}{\textasciiacute} +\DeclareInputText{181}{\~\i} +\DeclareInputText{182}{\c l} +\DeclareInputText{183}{\textasciicaron} +\DeclareInputText{184}{\c\ } +\DeclareInputText{185}{\v s} +\DeclareInputText{186}{\@tabacckludge=e} +\DeclareInputText{187}{\c g} +\DeclareInputText{188}{\texttstroke} +\DeclareInputText{189}{\NG} +\DeclareInputText{190}{\v z} +\DeclareInputText{191}{\ng} +\DeclareInputText{192}{\@tabacckludge=A} +\DeclareInputText{193}{\@tabacckludge'A} +\DeclareInputText{194}{\^A} +\DeclareInputText{195}{\~A} +\DeclareInputText{196}{\"A} +\DeclareInputText{197}{\r A} +\DeclareInputText{198}{\AE} +\DeclareInputText{199}{\k I} +\DeclareInputText{200}{\v C} +\DeclareInputText{201}{\@tabacckludge'E} +\DeclareInputText{202}{\k E} +\DeclareInputText{203}{\"E} +\DeclareInputText{204}{\.E} +\DeclareInputText{205}{\@tabacckludge'I} +\DeclareInputText{206}{\^I} +\DeclareInputText{207}{\@tabacckludge=I} +\DeclareInputText{208}{\DJ} +\DeclareInputText{209}{\c N} +\DeclareInputText{210}{\@tabacckludge=O} +\DeclareInputText{211}{\c K} +\DeclareInputText{212}{\^O} +\DeclareInputText{213}{\~O} +\DeclareInputText{214}{\"O} +\DeclareInputText{215}{\texttimes} +\DeclareInputText{216}{\O} +\DeclareInputText{217}{\k U} +\DeclareInputText{218}{\@tabacckludge'U} +\DeclareInputText{219}{\^U} +\DeclareInputText{220}{\"U} +\DeclareInputText{221}{\~U} +\DeclareInputText{222}{\@tabacckludge=U} +\DeclareInputText{223}{\ss} +\DeclareInputText{224}{\@tabacckludge=a} +\DeclareInputText{225}{\@tabacckludge'a} +\DeclareInputText{226}{\^a} +\DeclareInputText{227}{\~a} +\DeclareInputText{228}{\"a} +\DeclareInputText{229}{\r a} +\DeclareInputText{230}{\ae} +\DeclareInputText{231}{\k i} +\DeclareInputText{232}{\v c} +\DeclareInputText{233}{\@tabacckludge'e} +\DeclareInputText{234}{\k e} +\DeclareInputText{235}{\"e} +\DeclareInputText{236}{\.e} +\DeclareInputText{237}{\@tabacckludge'\i} +\DeclareInputText{238}{\^\i} +\DeclareInputText{239}{\@tabacckludge=\i} +\DeclareInputText{240}{\dj} +\DeclareInputText{241}{\c n} +\DeclareInputText{242}{\@tabacckludge=o} +\DeclareInputText{243}{\c k} +\DeclareInputText{244}{\^o} +\DeclareInputText{245}{\~o} +\DeclareInputText{246}{\"o} +\DeclareInputText{247}{\textdiv} +\DeclareInputText{248}{\o} +\DeclareInputText{249}{\k u} +\DeclareInputText{250}{\@tabacckludge'u} +\DeclareInputText{251}{\^u} +\DeclareInputText{252}{\"u} +\DeclareInputText{253}{\~u} +\DeclareInputText{254}{\@tabacckludge=u} +\DeclareInputText{255}{\.{}} +%</iso-8859-4> +% \end{macrocode} +% +% \subsubsection{Encoding iso-8859-9} +% +% \begin{macrocode} +%<*iso-8859-9> +\ProvidesFile{x-iso-8859-9.def}% + [2006/08/24 v1.0 Input encoding iso-8859-9 (inputenx)] +\ProvideTextCommandDefault{\textasciiacute}{% + \@tabacckludge'{}% +} +\ProvideTextCommandDefault{\textasciidieresis}{% + \"{}% +} +\ProvideTextCommandDefault{\textasciimacron}{% + \@tabacckludge={}% +} +\ProvideTextCommandDefault{\textbrokenbar}{% + \TextSymbolUnavailable\textbrokenbar +} +\ProvideTextCommandDefault{\textcent}{% + \TextSymbolUnavailable\textcent +} +\ProvideTextCommandDefault{\textcurrency}{% + \TextSymbolUnavailable\textcurrency +} +\ProvideTextCommandDefault{\textdegree}{% + \ensuremath{{^\circ}}% +} +\ProvideTextCommandDefault{\textdiv}{% + \TextSymbolUnavailable\textdiv +} +\ProvideTextCommandDefault{\textlnot}{% + \ensuremath\lnot +} +\ProvideTextCommandDefault{\textmu}{% + \ensuremath\mu +} +\ProvideTextCommandDefault{\textonehalf}{% + \ensuremath{\frac12}% +} +\ProvideTextCommandDefault{\textonequarter}{% + \ensuremath{\frac14}% +} +\ProvideTextCommandDefault{\textonesuperior}{% + \ensuremath{{^1}}% +} +\ProvideTextCommandDefault{\textpm}{% + \ensuremath\pm +} +\ProvideTextCommandDefault{\textthreequarters}{% + \ensuremath{\frac34}% +} +\ProvideTextCommandDefault{\textthreesuperior}{% + \ensuremath{{^3}}% +} +\ProvideTextCommandDefault{\texttimes}{% + \ensuremath\times +} +\ProvideTextCommandDefault{\texttwosuperior}{% + \ensuremath{{^2}}% +} +\ProvideTextCommandDefault{\textyen}{% + \TextSymbolUnavailable\textyen +} +\DeclareInputText{160}{\nobreakspace} +\DeclareInputText{161}{\textexclamdown} +\DeclareInputText{162}{\textcent} +\DeclareInputText{163}{\textsterling} +\DeclareInputText{164}{\textcurrency} +\DeclareInputText{165}{\textyen} +\DeclareInputText{166}{\textbrokenbar} +\DeclareInputText{167}{\textsection} +\DeclareInputText{168}{\textasciidieresis} +\DeclareInputText{169}{\textcopyright} +\DeclareInputText{170}{\textordfeminine} +\DeclareInputText{171}{\guillemotleft} +\DeclareInputText{172}{\textlnot} +\DeclareInputText{173}{\-} +\DeclareInputText{174}{\textregistered} +\DeclareInputText{175}{\textasciimacron} +\DeclareInputText{176}{\textdegree} +\DeclareInputText{177}{\textpm} +\DeclareInputText{178}{\texttwosuperior} +\DeclareInputText{179}{\textthreesuperior} +\DeclareInputText{180}{\textasciiacute} +\DeclareInputText{181}{\textmu} +\DeclareInputText{182}{\textparagraph} +\DeclareInputText{183}{\textperiodcentered} +\DeclareInputText{184}{\c\ } +\DeclareInputText{185}{\textonesuperior} +\DeclareInputText{186}{\textordmasculine} +\DeclareInputText{187}{\guillemotright} +\DeclareInputText{188}{\textonequarter} +\DeclareInputText{189}{\textonehalf} +\DeclareInputText{190}{\textthreequarters} +\DeclareInputText{191}{\textquestiondown} +\DeclareInputText{192}{\@tabacckludge`A} +\DeclareInputText{193}{\@tabacckludge'A} +\DeclareInputText{194}{\^A} +\DeclareInputText{195}{\~A} +\DeclareInputText{196}{\"A} +\DeclareInputText{197}{\r A} +\DeclareInputText{198}{\AE} +\DeclareInputText{199}{\c C} +\DeclareInputText{200}{\@tabacckludge`E} +\DeclareInputText{201}{\@tabacckludge'E} +\DeclareInputText{202}{\^E} +\DeclareInputText{203}{\"E} +\DeclareInputText{204}{\@tabacckludge`I} +\DeclareInputText{205}{\@tabacckludge'I} +\DeclareInputText{206}{\^I} +\DeclareInputText{207}{\"I} +\DeclareInputText{208}{\u G} +\DeclareInputText{209}{\~N} +\DeclareInputText{210}{\@tabacckludge`O} +\DeclareInputText{211}{\@tabacckludge'O} +\DeclareInputText{212}{\^O} +\DeclareInputText{213}{\~O} +\DeclareInputText{214}{\"O} +\DeclareInputText{215}{\texttimes} +\DeclareInputText{216}{\O} +\DeclareInputText{217}{\@tabacckludge`U} +\DeclareInputText{218}{\@tabacckludge'U} +\DeclareInputText{219}{\^U} +\DeclareInputText{220}{\"U} +\DeclareInputText{221}{\.I} +\DeclareInputText{222}{\c S} +\DeclareInputText{223}{\ss} +\DeclareInputText{224}{\@tabacckludge`a} +\DeclareInputText{225}{\@tabacckludge'a} +\DeclareInputText{226}{\^a} +\DeclareInputText{227}{\~a} +\DeclareInputText{228}{\"a} +\DeclareInputText{229}{\r a} +\DeclareInputText{230}{\ae} +\DeclareInputText{231}{\c c} +\DeclareInputText{232}{\@tabacckludge`e} +\DeclareInputText{233}{\@tabacckludge'e} +\DeclareInputText{234}{\^e} +\DeclareInputText{235}{\"e} +\DeclareInputText{236}{\@tabacckludge`\i} +\DeclareInputText{237}{\@tabacckludge'\i} +\DeclareInputText{238}{\^\i} +\DeclareInputText{239}{\"\i} +\DeclareInputText{240}{\u g} +\DeclareInputText{241}{\~n} +\DeclareInputText{242}{\@tabacckludge`o} +\DeclareInputText{243}{\@tabacckludge'o} +\DeclareInputText{244}{\^o} +\DeclareInputText{245}{\~o} +\DeclareInputText{246}{\"o} +\DeclareInputText{247}{\textdiv} +\DeclareInputText{248}{\o} +\DeclareInputText{249}{\@tabacckludge`u} +\DeclareInputText{250}{\@tabacckludge'u} +\DeclareInputText{251}{\^u} +\DeclareInputText{252}{\"u} +\DeclareInputText{253}{\i} +\DeclareInputText{254}{\c s} +\DeclareInputText{255}{\"y} +%</iso-8859-9> +% \end{macrocode} +% +% \subsubsection{Encoding iso-8859-10} +% +% \begin{macrocode} +%<*iso-8859-10> +\ProvidesFile{x-iso-8859-10.def}% + [2006/08/24 v1.0 Input encoding iso-8859-10 (inputenx)] +\ProvideTextCommandDefault{\textTstroke}{% + \TextSymbolUnavailable\textTstroke +} +\ProvideTextCommandDefault{\textdegree}{% + \ensuremath{{^\circ}}% +} +\ProvideTextCommandDefault{\textkra}{% + \TextSymbolUnavailable\textkra +} +\ProvideTextCommandDefault{\texttstroke}{% + \TextSymbolUnavailable\texttstroke +} +\DeclareInputText{160}{\nobreakspace} +\DeclareInputText{161}{\k A} +\DeclareInputText{162}{\@tabacckludge=E} +\DeclareInputText{163}{\c G} +\DeclareInputText{164}{\@tabacckludge=I} +\DeclareInputText{165}{\~I} +\DeclareInputText{166}{\c K} +\DeclareInputText{167}{\textsection} +\DeclareInputText{168}{\c L} +\DeclareInputText{169}{\DJ} +\DeclareInputText{170}{\v S} +\DeclareInputText{171}{\textTstroke} +\DeclareInputText{172}{\v Z} +\DeclareInputText{173}{\-} +\DeclareInputText{174}{\@tabacckludge=U} +\DeclareInputText{175}{\NG} +\DeclareInputText{176}{\textdegree} +\DeclareInputText{177}{\k a} +\DeclareInputText{178}{\@tabacckludge=e} +\DeclareInputText{179}{\c g} +\DeclareInputText{180}{\@tabacckludge=\i} +\DeclareInputText{181}{\~\i} +\DeclareInputText{182}{\c k} +\DeclareInputText{183}{\textperiodcentered} +\DeclareInputText{184}{\c l} +\DeclareInputText{185}{\dj} +\DeclareInputText{186}{\v s} +\DeclareInputText{187}{\texttstroke} +\DeclareInputText{188}{\v z} +\DeclareInputText{190}{\@tabacckludge=u} +\DeclareInputText{191}{\ng} +\DeclareInputText{192}{\@tabacckludge=A} +\DeclareInputText{193}{\@tabacckludge'A} +\DeclareInputText{194}{\^A} +\DeclareInputText{195}{\~A} +\DeclareInputText{196}{\"A} +\DeclareInputText{197}{\r A} +\DeclareInputText{198}{\AE} +\DeclareInputText{199}{\k I} +\DeclareInputText{200}{\v C} +\DeclareInputText{201}{\@tabacckludge'E} +\DeclareInputText{202}{\k E} +\DeclareInputText{203}{\"E} +\DeclareInputText{204}{\.E} +\DeclareInputText{205}{\@tabacckludge'I} +\DeclareInputText{206}{\^I} +\DeclareInputText{207}{\"I} +\DeclareInputText{208}{\DH} +\DeclareInputText{209}{\c N} +\DeclareInputText{210}{\@tabacckludge=O} +\DeclareInputText{211}{\@tabacckludge'O} +\DeclareInputText{212}{\^O} +\DeclareInputText{213}{\~O} +\DeclareInputText{214}{\"O} +\DeclareInputText{215}{\~U} +\DeclareInputText{216}{\O} +\DeclareInputText{217}{\k U} +\DeclareInputText{218}{\@tabacckludge'U} +\DeclareInputText{219}{\^U} +\DeclareInputText{220}{\"U} +\DeclareInputText{221}{\@tabacckludge'Y} +\DeclareInputText{222}{\TH} +\DeclareInputText{223}{\ss} +\DeclareInputText{224}{\@tabacckludge=a} +\DeclareInputText{225}{\@tabacckludge'a} +\DeclareInputText{226}{\^a} +\DeclareInputText{227}{\~a} +\DeclareInputText{228}{\"a} +\DeclareInputText{229}{\r a} +\DeclareInputText{230}{\ae} +\DeclareInputText{231}{\k i} +\DeclareInputText{232}{\v c} +\DeclareInputText{233}{\@tabacckludge'e} +\DeclareInputText{234}{\k e} +\DeclareInputText{235}{\"e} +\DeclareInputText{236}{\.e} +\DeclareInputText{237}{\@tabacckludge'\i} +\DeclareInputText{238}{\^\i} +\DeclareInputText{239}{\"\i} +\DeclareInputText{240}{\dh} +\DeclareInputText{241}{\c n} +\DeclareInputText{242}{\@tabacckludge=o} +\DeclareInputText{243}{\@tabacckludge'o} +\DeclareInputText{244}{\^o} +\DeclareInputText{245}{\~o} +\DeclareInputText{246}{\"o} +\DeclareInputText{247}{\~u} +\DeclareInputText{248}{\o} +\DeclareInputText{249}{\k u} +\DeclareInputText{250}{\@tabacckludge'u} +\DeclareInputText{251}{\^u} +\DeclareInputText{252}{\"u} +\DeclareInputText{253}{\@tabacckludge'y} +\DeclareInputText{254}{\th} +\DeclareInputText{255}{\textkra} +%</iso-8859-10> +% \end{macrocode} +% +% \subsubsection{Encoding iso-8859-13} +% +% \begin{macrocode} +%<*iso-8859-13> +\ProvidesFile{x-iso-8859-13.def}% + [2006/08/24 v1.0 Input encoding iso-8859-13 (inputenx)] +\ProvideTextCommandDefault{\textbrokenbar}{% + \TextSymbolUnavailable\textbrokenbar +} +\ProvideTextCommandDefault{\textcent}{% + \TextSymbolUnavailable\textcent +} +\ProvideTextCommandDefault{\textcurrency}{% + \TextSymbolUnavailable\textcurrency +} +\ProvideTextCommandDefault{\textdegree}{% + \ensuremath{{^\circ}}% +} +\ProvideTextCommandDefault{\textdiv}{% + \TextSymbolUnavailable\textdiv +} +\ProvideTextCommandDefault{\textlnot}{% + \ensuremath\lnot +} +\ProvideTextCommandDefault{\textmu}{% + \ensuremath\mu +} +\ProvideTextCommandDefault{\textonehalf}{% + \ensuremath{\frac12}% +} +\ProvideTextCommandDefault{\textonequarter}{% + \ensuremath{\frac14}% +} +\ProvideTextCommandDefault{\textonesuperior}{% + \ensuremath{{^1}}% +} +\ProvideTextCommandDefault{\textpm}{% + \ensuremath\pm +} +\ProvideTextCommandDefault{\textthreequarters}{% + \ensuremath{\frac34}% +} +\ProvideTextCommandDefault{\textthreesuperior}{% + \ensuremath{{^3}}% +} +\ProvideTextCommandDefault{\texttimes}{% + \ensuremath\times +} +\ProvideTextCommandDefault{\texttwosuperior}{% + \ensuremath{{^2}}% +} +\DeclareInputText{160}{\nobreakspace} +\DeclareInputText{161}{\textquotedblright} +\DeclareInputText{162}{\textcent} +\DeclareInputText{163}{\textsterling} +\DeclareInputText{164}{\textcurrency} +\DeclareInputText{165}{\quotedblbase} +\DeclareInputText{166}{\textbrokenbar} +\DeclareInputText{167}{\textsection} +\DeclareInputText{168}{\O} +\DeclareInputText{169}{\textcopyright} +\DeclareInputText{170}{\c R} +\DeclareInputText{171}{\guillemotleft} +\DeclareInputText{172}{\textlnot} +\DeclareInputText{173}{\-} +\DeclareInputText{174}{\textregistered} +\DeclareInputText{175}{\AE} +\DeclareInputText{176}{\textdegree} +\DeclareInputText{177}{\textpm} +\DeclareInputText{178}{\texttwosuperior} +\DeclareInputText{179}{\textthreesuperior} +\DeclareInputText{180}{\textquotedblleft} +\DeclareInputText{181}{\textmu} +\DeclareInputText{182}{\textparagraph} +\DeclareInputText{183}{\textperiodcentered} +\DeclareInputText{184}{\o} +\DeclareInputText{185}{\textonesuperior} +\DeclareInputText{186}{\c r} +\DeclareInputText{187}{\guillemotright} +\DeclareInputText{188}{\textonequarter} +\DeclareInputText{189}{\textonehalf} +\DeclareInputText{190}{\textthreequarters} +\DeclareInputText{191}{\ae} +\DeclareInputText{192}{\k A} +\DeclareInputText{193}{\k I} +\DeclareInputText{194}{\@tabacckludge=A} +\DeclareInputText{195}{\@tabacckludge'C} +\DeclareInputText{196}{\"A} +\DeclareInputText{197}{\r A} +\DeclareInputText{198}{\k E} +\DeclareInputText{199}{\@tabacckludge=E} +\DeclareInputText{200}{\v C} +\DeclareInputText{201}{\@tabacckludge'E} +\DeclareInputText{202}{\@tabacckludge'Z} +\DeclareInputText{203}{\.E} +\DeclareInputText{204}{\c G} +\DeclareInputText{205}{\c K} +\DeclareInputText{206}{\@tabacckludge=I} +\DeclareInputText{207}{\c L} +\DeclareInputText{208}{\v S} +\DeclareInputText{209}{\@tabacckludge'N} +\DeclareInputText{210}{\c N} +\DeclareInputText{211}{\@tabacckludge'O} +\DeclareInputText{212}{\@tabacckludge=O} +\DeclareInputText{213}{\~O} +\DeclareInputText{214}{\"O} +\DeclareInputText{215}{\texttimes} +\DeclareInputText{216}{\k U} +\DeclareInputText{217}{\L} +\DeclareInputText{218}{\@tabacckludge'S} +\DeclareInputText{219}{\@tabacckludge=U} +\DeclareInputText{220}{\"U} +\DeclareInputText{221}{\.Z} +\DeclareInputText{222}{\v Z} +\DeclareInputText{223}{\ss} +\DeclareInputText{224}{\k a} +\DeclareInputText{225}{\k i} +\DeclareInputText{226}{\@tabacckludge=a} +\DeclareInputText{227}{\@tabacckludge'c} +\DeclareInputText{228}{\"a} +\DeclareInputText{229}{\r a} +\DeclareInputText{230}{\k e} +\DeclareInputText{231}{\@tabacckludge=e} +\DeclareInputText{232}{\v c} +\DeclareInputText{233}{\@tabacckludge'e} +\DeclareInputText{234}{\@tabacckludge'z} +\DeclareInputText{235}{\.e} +\DeclareInputText{236}{\c g} +\DeclareInputText{237}{\c k} +\DeclareInputText{238}{\@tabacckludge=\i} +\DeclareInputText{239}{\c l} +\DeclareInputText{240}{\v s} +\DeclareInputText{241}{\@tabacckludge'n} +\DeclareInputText{242}{\c n} +\DeclareInputText{243}{\@tabacckludge'o} +\DeclareInputText{244}{\@tabacckludge=o} +\DeclareInputText{245}{\~o} +\DeclareInputText{246}{\"o} +\DeclareInputText{247}{\textdiv} +\DeclareInputText{248}{\k u} +\DeclareInputText{249}{\l} +\DeclareInputText{250}{\@tabacckludge's} +\DeclareInputText{251}{\@tabacckludge=u} +\DeclareInputText{252}{\"u} +\DeclareInputText{253}{\.z} +\DeclareInputText{254}{\v z} +\DeclareInputText{255}{\textquoteright} +%</iso-8859-13> +% \end{macrocode} +% +% \subsubsection{Encoding iso-8859-14} +% +% \begin{macrocode} +%<*iso-8859-14> +\ProvidesFile{x-iso-8859-14.def}% + [2006/08/24 v1.0 Input encoding iso-8859-14 (inputenx)] +\DeclareInputText{160}{\nobreakspace} +\DeclareInputText{161}{\.B} +\DeclareInputText{162}{\.b} +\DeclareInputText{163}{\textsterling} +\DeclareInputText{164}{\.C} +\DeclareInputText{165}{\.c} +\DeclareInputText{166}{\.D} +\DeclareInputText{167}{\textsection} +\DeclareInputText{168}{\@tabacckludge`W} +\DeclareInputText{169}{\textcopyright} +\DeclareInputText{170}{\@tabacckludge'W} +\DeclareInputText{171}{\.d} +\DeclareInputText{172}{\@tabacckludge`Y} +\DeclareInputText{173}{\-} +\DeclareInputText{174}{\textregistered} +\DeclareInputText{175}{\"Y} +\DeclareInputText{176}{\.F} +\DeclareInputText{177}{\.f} +\DeclareInputText{178}{\.G} +\DeclareInputText{179}{\.g} +\DeclareInputText{180}{\.M} +\DeclareInputText{181}{\.m} +\DeclareInputText{182}{\textparagraph} +\DeclareInputText{183}{\.P} +\DeclareInputText{184}{\@tabacckludge`w} +\DeclareInputText{185}{\.p} +\DeclareInputText{186}{\@tabacckludge'w} +\DeclareInputText{187}{\.S} +\DeclareInputText{188}{\@tabacckludge`y} +\DeclareInputText{189}{\"W} +\DeclareInputText{190}{\"w} +\DeclareInputText{191}{\.s} +\DeclareInputText{192}{\@tabacckludge`A} +\DeclareInputText{193}{\@tabacckludge'A} +\DeclareInputText{194}{\^A} +\DeclareInputText{195}{\~A} +\DeclareInputText{196}{\"A} +\DeclareInputText{197}{\r A} +\DeclareInputText{198}{\AE} +\DeclareInputText{199}{\c C} +\DeclareInputText{200}{\@tabacckludge`E} +\DeclareInputText{201}{\@tabacckludge'E} +\DeclareInputText{202}{\^E} +\DeclareInputText{203}{\"E} +\DeclareInputText{204}{\@tabacckludge`I} +\DeclareInputText{205}{\@tabacckludge'I} +\DeclareInputText{206}{\^I} +\DeclareInputText{207}{\"I} +\DeclareInputText{208}{\^W} +\DeclareInputText{209}{\~N} +\DeclareInputText{210}{\@tabacckludge`O} +\DeclareInputText{211}{\@tabacckludge'O} +\DeclareInputText{212}{\^O} +\DeclareInputText{213}{\~O} +\DeclareInputText{214}{\"O} +\DeclareInputText{215}{\.T} +\DeclareInputText{216}{\O} +\DeclareInputText{217}{\@tabacckludge`U} +\DeclareInputText{218}{\@tabacckludge'U} +\DeclareInputText{219}{\^U} +\DeclareInputText{220}{\"U} +\DeclareInputText{221}{\@tabacckludge'Y} +\DeclareInputText{222}{\^Y} +\DeclareInputText{223}{\ss} +\DeclareInputText{224}{\@tabacckludge`a} +\DeclareInputText{225}{\@tabacckludge'a} +\DeclareInputText{226}{\^a} +\DeclareInputText{227}{\~a} +\DeclareInputText{228}{\"a} +\DeclareInputText{229}{\r a} +\DeclareInputText{230}{\ae} +\DeclareInputText{231}{\c c} +\DeclareInputText{232}{\@tabacckludge`e} +\DeclareInputText{233}{\@tabacckludge'e} +\DeclareInputText{234}{\^e} +\DeclareInputText{235}{\"e} +\DeclareInputText{236}{\@tabacckludge`\i} +\DeclareInputText{237}{\@tabacckludge'\i} +\DeclareInputText{238}{\^\i} +\DeclareInputText{239}{\"\i} +\DeclareInputText{240}{\^w} +\DeclareInputText{241}{\~n} +\DeclareInputText{242}{\@tabacckludge`o} +\DeclareInputText{243}{\@tabacckludge'o} +\DeclareInputText{244}{\^o} +\DeclareInputText{245}{\~o} +\DeclareInputText{246}{\"o} +\DeclareInputText{247}{\.t} +\DeclareInputText{248}{\o} +\DeclareInputText{249}{\@tabacckludge`u} +\DeclareInputText{250}{\@tabacckludge'u} +\DeclareInputText{251}{\^u} +\DeclareInputText{252}{\"u} +\DeclareInputText{253}{\@tabacckludge'y} +\DeclareInputText{254}{\^y} +\DeclareInputText{255}{\"y} +%</iso-8859-14> +% \end{macrocode} +% +% \subsubsection{Encoding iso-8859-15} +% +% \begin{macrocode} +%<*iso-8859-15> +\ProvidesFile{x-iso-8859-15.def}% + [2006/08/24 v1.0 Input encoding iso-8859-15 (inputenx)] +\ProvideTextCommandDefault{\textasciimacron}{% + \@tabacckludge={}% +} +\ProvideTextCommandDefault{\textcent}{% + \TextSymbolUnavailable\textcent +} +\ProvideTextCommandDefault{\textdegree}{% + \ensuremath{{^\circ}}% +} +\ProvideTextCommandDefault{\textdiv}{% + \TextSymbolUnavailable\textdiv +} +\ProvideTextCommandDefault{\texteuro}{% + \TextSymbolUnavailable\texteuro +} +\ProvideTextCommandDefault{\textlnot}{% + \ensuremath\lnot +} +\ProvideTextCommandDefault{\textmu}{% + \ensuremath\mu +} +\ProvideTextCommandDefault{\textonesuperior}{% + \ensuremath{{^1}}% +} +\ProvideTextCommandDefault{\textpm}{% + \ensuremath\pm +} +\ProvideTextCommandDefault{\textthreesuperior}{% + \ensuremath{{^3}}% +} +\ProvideTextCommandDefault{\texttimes}{% + \ensuremath\times +} +\ProvideTextCommandDefault{\texttwosuperior}{% + \ensuremath{{^2}}% +} +\ProvideTextCommandDefault{\textyen}{% + \TextSymbolUnavailable\textyen +} +\DeclareInputText{160}{\nobreakspace} +\DeclareInputText{161}{\textexclamdown} +\DeclareInputText{162}{\textcent} +\DeclareInputText{163}{\textsterling} +\DeclareInputText{164}{\texteuro} +\DeclareInputText{165}{\textyen} +\DeclareInputText{166}{\v S} +\DeclareInputText{167}{\textsection} +\DeclareInputText{168}{\v s} +\DeclareInputText{169}{\textcopyright} +\DeclareInputText{170}{\textordfeminine} +\DeclareInputText{171}{\guillemotleft} +\DeclareInputText{172}{\textlnot} +\DeclareInputText{173}{\-} +\DeclareInputText{174}{\textregistered} +\DeclareInputText{175}{\textasciimacron} +\DeclareInputText{176}{\textdegree} +\DeclareInputText{177}{\textpm} +\DeclareInputText{178}{\texttwosuperior} +\DeclareInputText{179}{\textthreesuperior} +\DeclareInputText{180}{\v Z} +\DeclareInputText{181}{\textmu} +\DeclareInputText{182}{\textparagraph} +\DeclareInputText{183}{\textperiodcentered} +\DeclareInputText{184}{\v z} +\DeclareInputText{185}{\textonesuperior} +\DeclareInputText{186}{\textordmasculine} +\DeclareInputText{187}{\guillemotright} +\DeclareInputText{188}{\OE} +\DeclareInputText{189}{\oe} +\DeclareInputText{190}{\"Y} +\DeclareInputText{191}{\textquestiondown} +\DeclareInputText{192}{\@tabacckludge`A} +\DeclareInputText{193}{\@tabacckludge'A} +\DeclareInputText{194}{\^A} +\DeclareInputText{195}{\~A} +\DeclareInputText{196}{\"A} +\DeclareInputText{197}{\r A} +\DeclareInputText{198}{\AE} +\DeclareInputText{199}{\c C} +\DeclareInputText{200}{\@tabacckludge`E} +\DeclareInputText{201}{\@tabacckludge'E} +\DeclareInputText{202}{\^E} +\DeclareInputText{203}{\"E} +\DeclareInputText{204}{\@tabacckludge`I} +\DeclareInputText{205}{\@tabacckludge'I} +\DeclareInputText{206}{\^I} +\DeclareInputText{207}{\"I} +\DeclareInputText{208}{\DH} +\DeclareInputText{209}{\~N} +\DeclareInputText{210}{\@tabacckludge`O} +\DeclareInputText{211}{\@tabacckludge'O} +\DeclareInputText{212}{\^O} +\DeclareInputText{213}{\~O} +\DeclareInputText{214}{\"O} +\DeclareInputText{215}{\texttimes} +\DeclareInputText{216}{\O} +\DeclareInputText{217}{\@tabacckludge`U} +\DeclareInputText{218}{\@tabacckludge'U} +\DeclareInputText{219}{\^U} +\DeclareInputText{220}{\"U} +\DeclareInputText{221}{\@tabacckludge'Y} +\DeclareInputText{222}{\TH} +\DeclareInputText{223}{\ss} +\DeclareInputText{224}{\@tabacckludge`a} +\DeclareInputText{225}{\@tabacckludge'a} +\DeclareInputText{226}{\^a} +\DeclareInputText{227}{\~a} +\DeclareInputText{228}{\"a} +\DeclareInputText{229}{\r a} +\DeclareInputText{230}{\ae} +\DeclareInputText{231}{\c c} +\DeclareInputText{232}{\@tabacckludge`e} +\DeclareInputText{233}{\@tabacckludge'e} +\DeclareInputText{234}{\^e} +\DeclareInputText{235}{\"e} +\DeclareInputText{236}{\@tabacckludge`\i} +\DeclareInputText{237}{\@tabacckludge'\i} +\DeclareInputText{238}{\^\i} +\DeclareInputText{239}{\"\i} +\DeclareInputText{240}{\dh} +\DeclareInputText{241}{\~n} +\DeclareInputText{242}{\@tabacckludge`o} +\DeclareInputText{243}{\@tabacckludge'o} +\DeclareInputText{244}{\^o} +\DeclareInputText{245}{\~o} +\DeclareInputText{246}{\"o} +\DeclareInputText{247}{\textdiv} +\DeclareInputText{248}{\o} +\DeclareInputText{249}{\@tabacckludge`u} +\DeclareInputText{250}{\@tabacckludge'u} +\DeclareInputText{251}{\^u} +\DeclareInputText{252}{\"u} +\DeclareInputText{253}{\@tabacckludge'y} +\DeclareInputText{254}{\th} +\DeclareInputText{255}{\"y} +%</iso-8859-15> +% \end{macrocode} +% +% \subsubsection{Encoding iso-8859-16} +% +% \begin{macrocode} +%<*iso-8859-16> +\ProvidesFile{x-iso-8859-16.def}% + [2006/08/24 v1.0 Input encoding iso-8859-16 (inputenx)] +\ProvideTextCommandDefault{\textcommabelow}[1]{% + \hmode@bgroup + \ooalign{% + \null#1\crcr + \hidewidth + \raise-.31ex\hbox{% + \check@mathfonts + \fontsize\ssf@size\z@ + \math@fontsfalse\selectfont,% + }% + \hidewidth + }% + \egroup +} +\ProvideTextCommandDefault{\textdegree}{% + \ensuremath{{^\circ}}% +} +\ProvideTextCommandDefault{\texteuro}{% + \TextSymbolUnavailable\texteuro +} +\ProvideTextCommandDefault{\textpm}{% + \ensuremath\pm +} +\DeclareInputText{160}{\nobreakspace} +\DeclareInputText{161}{\k A} +\DeclareInputText{162}{\k a} +\DeclareInputText{163}{\L} +\DeclareInputText{164}{\texteuro} +\DeclareInputText{165}{\quotedblbase} +\DeclareInputText{166}{\v S} +\DeclareInputText{167}{\textsection} +\DeclareInputText{168}{\v s} +\DeclareInputText{169}{\textcopyright} +\DeclareInputText{170}{\textcommabelow S} +\DeclareInputText{171}{\guillemotleft} +\DeclareInputText{172}{\@tabacckludge'Z} +\DeclareInputText{173}{\-} +\DeclareInputText{174}{\@tabacckludge'z} +\DeclareInputText{175}{\.Z} +\DeclareInputText{176}{\textdegree} +\DeclareInputText{177}{\textpm} +\DeclareInputText{178}{\v C} +\DeclareInputText{179}{\l} +\DeclareInputText{180}{\v Z} +\DeclareInputText{181}{\textquotedblright} +\DeclareInputText{182}{\textparagraph} +\DeclareInputText{183}{\textperiodcentered} +\DeclareInputText{184}{\v z} +\DeclareInputText{185}{\v c} +\DeclareInputText{186}{\textcommabelow s} +\DeclareInputText{187}{\guillemotright} +\DeclareInputText{188}{\OE} +\DeclareInputText{189}{\oe} +\DeclareInputText{190}{\"Y} +\DeclareInputText{191}{\.z} +\DeclareInputText{192}{\@tabacckludge`A} +\DeclareInputText{193}{\@tabacckludge'A} +\DeclareInputText{194}{\^A} +\DeclareInputText{195}{\u A} +\DeclareInputText{196}{\"A} +\DeclareInputText{197}{\@tabacckludge'C} +\DeclareInputText{198}{\AE} +\DeclareInputText{199}{\c C} +\DeclareInputText{200}{\@tabacckludge`E} +\DeclareInputText{201}{\@tabacckludge'E} +\DeclareInputText{202}{\^E} +\DeclareInputText{203}{\"E} +\DeclareInputText{204}{\@tabacckludge`I} +\DeclareInputText{205}{\@tabacckludge'I} +\DeclareInputText{206}{\^I} +\DeclareInputText{207}{\"I} +\DeclareInputText{208}{\DJ} +\DeclareInputText{209}{\@tabacckludge'N} +\DeclareInputText{210}{\@tabacckludge`O} +\DeclareInputText{211}{\@tabacckludge'O} +\DeclareInputText{212}{\^O} +\DeclareInputText{213}{\H O} +\DeclareInputText{214}{\"O} +\DeclareInputText{215}{\@tabacckludge'S} +\DeclareInputText{216}{\H U} +\DeclareInputText{217}{\@tabacckludge`U} +\DeclareInputText{218}{\@tabacckludge'U} +\DeclareInputText{219}{\^U} +\DeclareInputText{220}{\"U} +\DeclareInputText{221}{\k E} +\DeclareInputText{222}{\textcommabelow T} +\DeclareInputText{223}{\ss} +\DeclareInputText{224}{\@tabacckludge`a} +\DeclareInputText{225}{\@tabacckludge'a} +\DeclareInputText{226}{\^a} +\DeclareInputText{227}{\u a} +\DeclareInputText{228}{\"a} +\DeclareInputText{229}{\@tabacckludge'c} +\DeclareInputText{230}{\ae} +\DeclareInputText{231}{\c c} +\DeclareInputText{232}{\@tabacckludge`e} +\DeclareInputText{233}{\@tabacckludge'e} +\DeclareInputText{234}{\^e} +\DeclareInputText{235}{\"e} +\DeclareInputText{236}{\@tabacckludge`\i} +\DeclareInputText{237}{\@tabacckludge'\i} +\DeclareInputText{238}{\^\i} +\DeclareInputText{239}{\"\i} +\DeclareInputText{240}{\dj} +\DeclareInputText{241}{\@tabacckludge'n} +\DeclareInputText{242}{\@tabacckludge`o} +\DeclareInputText{243}{\@tabacckludge'o} +\DeclareInputText{244}{\^o} +\DeclareInputText{245}{\H o} +\DeclareInputText{246}{\"o} +\DeclareInputText{247}{\@tabacckludge's} +\DeclareInputText{248}{\H u} +\DeclareInputText{249}{\@tabacckludge`u} +\DeclareInputText{250}{\@tabacckludge'u} +\DeclareInputText{251}{\^u} +\DeclareInputText{252}{\"u} +\DeclareInputText{253}{\k e} +\DeclareInputText{254}{\textcommabelow t} +\DeclareInputText{255}{\"y} +%</iso-8859-16> +% \end{macrocode} +% +% \subsubsection{Encoding cp437} +% +% \begin{macrocode} +%<*cp437> +\ProvidesFile{x-cp437.def}% + [2006/08/24 v1.0 Input encoding cp437 (inputenx)] +\ProvideTextCommandDefault{\textGamma}{% + \ensuremath\Gamma +} +\ProvideTextCommandDefault{\textOmega}{% + \ensuremath\Omega +} +\ProvideTextCommandDefault{\textPhi}{% + \ensuremath\Phi +} +\ProvideTextCommandDefault{\textSigma}{% + \ensuremath\Sigma +} +\ProvideTextCommandDefault{\textTheta}{% + \ensuremath\Theta +} +\ProvideTextCommandDefault{\textalpha}{% + \ensuremath\alpha +} +\ProvideTextCommandDefault{\textapproxequal}{% + \ensuremath\approx +} +\ProvideTextCommandDefault{\textblacksquare}{% + \vrule \@width .3em \@height .4em \@depth -.1em\relax +} +\ProvideTextCommandDefault{\textcent}{% + \TextSymbolUnavailable\textcent +} +\ProvideTextCommandDefault{\textdegree}{% + \ensuremath{{^\circ}}% +} +\ProvideTextCommandDefault{\textdelta}{% + \ensuremath\delta +} +\ProvideTextCommandDefault{\textdiv}{% + \TextSymbolUnavailable\textdiv +} +\ProvideTextCommandDefault{\textepsilon}{% + \ensuremath\varepsilon +} +\ProvideTextCommandDefault{\textequivalence}{% + \ensuremath\equiv +} +\ProvideTextCommandDefault{\textflorin}{% + \textit{f}% +} +\ProvideTextCommandDefault{\textgreaterequal}{% + \ensuremath\geq +} +\ProvideTextCommandDefault{\textinfinity}{% + \ensuremath\infty +} +\ProvideTextCommandDefault{\textintersection}{% + \ensuremath\cap +} +\ProvideTextCommandDefault{\textlessequal}{% + \ensuremath\leq +} +\ProvideTextCommandDefault{\textlnot}{% + \ensuremath\lnot +} +\ProvideTextCommandDefault{\textmu}{% + \ensuremath\mu +} +\ProvideTextCommandDefault{\textnsuperior}{% + \ensuremath{{^n}}% +} +\ProvideTextCommandDefault{\textonehalf}{% + \ensuremath{\frac12}% +} +\ProvideTextCommandDefault{\textonequarter}{% + \ensuremath{\frac14}% +} +\ProvideTextCommandDefault{\textpeseta}{% + Pt% +} +\ProvideTextCommandDefault{\textphi}{% + \ensuremath\phi +} +\ProvideTextCommandDefault{\textpi}{% + \ensuremath\pi +} +\ProvideTextCommandDefault{\textpm}{% + \ensuremath\pm +} +\ProvideTextCommandDefault{\textsigma}{% + \ensuremath\sigma +} +\ProvideTextCommandDefault{\textsurd}{% + \ensuremath\surd +} +\ProvideTextCommandDefault{\texttau}{% + \ensuremath\tau +} +\ProvideTextCommandDefault{\texttwosuperior}{% + \ensuremath{{^2}}% +} +\ProvideTextCommandDefault{\textyen}{% + \TextSymbolUnavailable\textyen +} +\DeclareInputText{128}{\c C} +\DeclareInputText{129}{\"u} +\DeclareInputText{130}{\@tabacckludge'e} +\DeclareInputText{131}{\^a} +\DeclareInputText{132}{\"a} +\DeclareInputText{133}{\@tabacckludge`a} +\DeclareInputText{134}{\r a} +\DeclareInputText{135}{\c c} +\DeclareInputText{136}{\^e} +\DeclareInputText{137}{\"e} +\DeclareInputText{138}{\@tabacckludge`e} +\DeclareInputText{139}{\"\i} +\DeclareInputText{140}{\^\i} +\DeclareInputText{141}{\@tabacckludge`\i} +\DeclareInputText{142}{\"A} +\DeclareInputText{143}{\r A} +\DeclareInputText{144}{\@tabacckludge'E} +\DeclareInputText{145}{\ae} +\DeclareInputText{146}{\AE} +\DeclareInputText{147}{\^o} +\DeclareInputText{148}{\"o} +\DeclareInputText{149}{\@tabacckludge`o} +\DeclareInputText{150}{\^u} +\DeclareInputText{151}{\@tabacckludge`u} +\DeclareInputText{152}{\"y} +\DeclareInputText{153}{\"O} +\DeclareInputText{154}{\"U} +\DeclareInputText{155}{\textcent} +\DeclareInputText{156}{\textsterling} +\DeclareInputText{157}{\textyen} +\DeclareInputText{158}{\textpeseta} +\DeclareInputText{159}{\textflorin} +\DeclareInputText{160}{\@tabacckludge'a} +\DeclareInputText{161}{\@tabacckludge'\i} +\DeclareInputText{162}{\@tabacckludge'o} +\DeclareInputText{163}{\@tabacckludge'u} +\DeclareInputText{164}{\~n} +\DeclareInputText{165}{\~N} +\DeclareInputText{166}{\textordfeminine} +\DeclareInputText{167}{\textordmasculine} +\DeclareInputText{168}{\textquestiondown} +\DeclareInputText{170}{\textlnot} +\DeclareInputText{171}{\textonehalf} +\DeclareInputText{172}{\textonequarter} +\DeclareInputText{173}{\textexclamdown} +\DeclareInputText{174}{\guillemotleft} +\DeclareInputText{175}{\guillemotright} +\DeclareInputText{176}{\textltshade} +\DeclareInputText{177}{\textshade} +\DeclareInputText{178}{\textdkshade} +\DeclareInputText{179}{\textSFxi} +\DeclareInputText{180}{\textSFix} +\DeclareInputText{181}{\textSFxix} +\DeclareInputText{182}{\textSFxx} +\DeclareInputText{183}{\textSFxxi} +\DeclareInputText{184}{\textSFxxii} +\DeclareInputText{185}{\textSFxxiii} +\DeclareInputText{186}{\textSFxxiv} +\DeclareInputText{187}{\textSFxxv} +\DeclareInputText{188}{\textSFxxvi} +\DeclareInputText{189}{\textSFxxvii} +\DeclareInputText{190}{\textSFxxviii} +\DeclareInputText{191}{\textSFiii} +\DeclareInputText{192}{\textSFii} +\DeclareInputText{193}{\textSFvii} +\DeclareInputText{194}{\textSFvi} +\DeclareInputText{195}{\textSFviii} +\DeclareInputText{196}{\textSFx} +\DeclareInputText{197}{\textSFv} +\DeclareInputText{198}{\textSFxxxvi} +\DeclareInputText{199}{\textSFxxxvii} +\DeclareInputText{200}{\textSFxxxviii} +\DeclareInputText{201}{\textSFxxxix} +\DeclareInputText{202}{\textSFxl} +\DeclareInputText{203}{\textSFxli} +\DeclareInputText{204}{\textSFxlii} +\DeclareInputText{205}{\textSFxliii} +\DeclareInputText{206}{\textSFxliv} +\DeclareInputText{207}{\textSFxlv} +\DeclareInputText{208}{\textSFxlvi} +\DeclareInputText{209}{\textSFxlvii} +\DeclareInputText{210}{\textSFxlviii} +\DeclareInputText{211}{\textSFxlix} +\DeclareInputText{212}{\textSFl} +\DeclareInputText{213}{\textSFli} +\DeclareInputText{214}{\textSFlii} +\DeclareInputText{215}{\textSFliii} +\DeclareInputText{216}{\textSFliv} +\DeclareInputText{217}{\textSFiv} +\DeclareInputText{218}{\textSFi} +\DeclareInputText{219}{\textblock} +\DeclareInputText{220}{\textdnblock} +\DeclareInputText{221}{\textlfblock} +\DeclareInputText{222}{\textrtblock} +\DeclareInputText{223}{\textupblock} +\DeclareInputText{224}{\textalpha} +\DeclareInputText{225}{\ss} +\DeclareInputText{226}{\textGamma} +\DeclareInputText{227}{\textpi} +\DeclareInputText{228}{\textSigma} +\DeclareInputText{229}{\textsigma} +\DeclareInputText{230}{\textmu} +\DeclareInputText{231}{\texttau} +\DeclareInputText{232}{\textPhi} +\DeclareInputText{233}{\textTheta} +\DeclareInputText{234}{\textOmega} +\DeclareInputText{235}{\textdelta} +\DeclareInputText{236}{\textinfinity} +\DeclareInputText{237}{\textphi} +\DeclareInputText{238}{\textepsilon} +\DeclareInputText{239}{\textintersection} +\DeclareInputText{240}{\textequivalence} +\DeclareInputText{241}{\textpm} +\DeclareInputText{242}{\textgreaterequal} +\DeclareInputText{243}{\textlessequal} +\DeclareInputText{246}{\textdiv} +\DeclareInputText{247}{\textapproxequal} +\DeclareInputText{248}{\textdegree} +\DeclareInputText{249}{\textbullet} +\DeclareInputText{250}{\textperiodcentered} +\DeclareInputText{251}{\textsurd} +\DeclareInputText{252}{\textnsuperior} +\DeclareInputText{253}{\texttwosuperior} +\DeclareInputText{254}{\textblacksquare} +\DeclareInputText{255}{\nobreakspace} +%</cp437> +% \end{macrocode} +% +% \subsubsection{Encoding cp850} +% +% \begin{macrocode} +%<*cp850> +\ProvidesFile{x-cp850.def}% + [2006/08/24 v1.0 Input encoding cp850 (inputenx)] +\ProvideTextCommandDefault{\textasciiacute}{% + \@tabacckludge'{}% +} +\ProvideTextCommandDefault{\textasciidieresis}{% + \"{}% +} +\ProvideTextCommandDefault{\textasciimacron}{% + \@tabacckludge={}% +} +\ProvideTextCommandDefault{\textblacksquare}{% + \vrule \@width .3em \@height .4em \@depth -.1em\relax +} +\ProvideTextCommandDefault{\textbrokenbar}{% + \TextSymbolUnavailable\textbrokenbar +} +\ProvideTextCommandDefault{\textcent}{% + \TextSymbolUnavailable\textcent +} +\ProvideTextCommandDefault{\textcurrency}{% + \TextSymbolUnavailable\textcurrency +} +\ProvideTextCommandDefault{\textdegree}{% + \ensuremath{{^\circ}}% +} +\ProvideTextCommandDefault{\textdiv}{% + \TextSymbolUnavailable\textdiv +} +\ProvideTextCommandDefault{\textflorin}{% + \textit{f}% +} +\ProvideTextCommandDefault{\textlnot}{% + \ensuremath\lnot +} +\ProvideTextCommandDefault{\textmu}{% + \ensuremath\mu +} +\ProvideTextCommandDefault{\textonehalf}{% + \ensuremath{\frac12}% +} +\ProvideTextCommandDefault{\textonequarter}{% + \ensuremath{\frac14}% +} +\ProvideTextCommandDefault{\textonesuperior}{% + \ensuremath{{^1}}% +} +\ProvideTextCommandDefault{\textpm}{% + \ensuremath\pm +} +\ProvideTextCommandDefault{\textthreequarters}{% + \ensuremath{\frac34}% +} +\ProvideTextCommandDefault{\textthreesuperior}{% + \ensuremath{{^3}}% +} +\ProvideTextCommandDefault{\texttimes}{% + \ensuremath\times +} +\ProvideTextCommandDefault{\texttwosuperior}{% + \ensuremath{{^2}}% +} +\ProvideTextCommandDefault{\textyen}{% + \TextSymbolUnavailable\textyen +} +\DeclareInputText{128}{\c C} +\DeclareInputText{129}{\"u} +\DeclareInputText{130}{\@tabacckludge'e} +\DeclareInputText{131}{\^a} +\DeclareInputText{132}{\"a} +\DeclareInputText{133}{\@tabacckludge`a} +\DeclareInputText{134}{\r a} +\DeclareInputText{135}{\c c} +\DeclareInputText{136}{\^e} +\DeclareInputText{137}{\"e} +\DeclareInputText{138}{\@tabacckludge`e} +\DeclareInputText{139}{\"\i} +\DeclareInputText{140}{\^\i} +\DeclareInputText{141}{\@tabacckludge`\i} +\DeclareInputText{142}{\"A} +\DeclareInputText{143}{\r A} +\DeclareInputText{144}{\@tabacckludge'E} +\DeclareInputText{145}{\ae} +\DeclareInputText{146}{\AE} +\DeclareInputText{147}{\^o} +\DeclareInputText{148}{\"o} +\DeclareInputText{149}{\@tabacckludge`o} +\DeclareInputText{150}{\^u} +\DeclareInputText{151}{\@tabacckludge`u} +\DeclareInputText{152}{\"y} +\DeclareInputText{153}{\"O} +\DeclareInputText{154}{\"U} +\DeclareInputText{155}{\o} +\DeclareInputText{156}{\textsterling} +\DeclareInputText{157}{\O} +\DeclareInputText{158}{\texttimes} +\DeclareInputText{159}{\textflorin} +\DeclareInputText{160}{\@tabacckludge'a} +\DeclareInputText{161}{\@tabacckludge'\i} +\DeclareInputText{162}{\@tabacckludge'o} +\DeclareInputText{163}{\@tabacckludge'u} +\DeclareInputText{164}{\~n} +\DeclareInputText{165}{\~N} +\DeclareInputText{166}{\textordfeminine} +\DeclareInputText{167}{\textordmasculine} +\DeclareInputText{168}{\textquestiondown} +\DeclareInputText{169}{\textregistered} +\DeclareInputText{170}{\textlnot} +\DeclareInputText{171}{\textonehalf} +\DeclareInputText{172}{\textonequarter} +\DeclareInputText{173}{\textexclamdown} +\DeclareInputText{174}{\guillemotleft} +\DeclareInputText{175}{\guillemotright} +\DeclareInputText{176}{\textltshade} +\DeclareInputText{177}{\textshade} +\DeclareInputText{178}{\textdkshade} +\DeclareInputText{179}{\textSFxi} +\DeclareInputText{180}{\textSFix} +\DeclareInputText{181}{\@tabacckludge'A} +\DeclareInputText{182}{\^A} +\DeclareInputText{183}{\@tabacckludge`A} +\DeclareInputText{184}{\textcopyright} +\DeclareInputText{185}{\textSFxxiii} +\DeclareInputText{186}{\textSFxxiv} +\DeclareInputText{187}{\textSFxxv} +\DeclareInputText{188}{\textSFxxvi} +\DeclareInputText{189}{\textcent} +\DeclareInputText{190}{\textyen} +\DeclareInputText{191}{\textSFiii} +\DeclareInputText{192}{\textSFii} +\DeclareInputText{193}{\textSFvii} +\DeclareInputText{194}{\textSFvi} +\DeclareInputText{195}{\textSFviii} +\DeclareInputText{196}{\textSFx} +\DeclareInputText{197}{\textSFv} +\DeclareInputText{198}{\~a} +\DeclareInputText{199}{\~A} +\DeclareInputText{200}{\textSFxxxviii} +\DeclareInputText{201}{\textSFxxxix} +\DeclareInputText{202}{\textSFxl} +\DeclareInputText{203}{\textSFxli} +\DeclareInputText{204}{\textSFxlii} +\DeclareInputText{205}{\textSFxliii} +\DeclareInputText{206}{\textSFxliv} +\DeclareInputText{207}{\textcurrency} +\DeclareInputText{208}{\dh} +\DeclareInputText{209}{\DH} +\DeclareInputText{210}{\^E} +\DeclareInputText{211}{\"E} +\DeclareInputText{212}{\@tabacckludge`E} +\DeclareInputText{213}{\i} +\DeclareInputText{214}{\@tabacckludge'I} +\DeclareInputText{215}{\^I} +\DeclareInputText{216}{\"I} +\DeclareInputText{217}{\textSFiv} +\DeclareInputText{218}{\textSFi} +\DeclareInputText{219}{\textblock} +\DeclareInputText{220}{\textdnblock} +\DeclareInputText{221}{\textbrokenbar} +\DeclareInputText{222}{\@tabacckludge`I} +\DeclareInputText{223}{\textupblock} +\DeclareInputText{224}{\@tabacckludge'O} +\DeclareInputText{225}{\ss} +\DeclareInputText{226}{\^O} +\DeclareInputText{227}{\@tabacckludge`O} +\DeclareInputText{228}{\~o} +\DeclareInputText{229}{\~O} +\DeclareInputText{230}{\textmu} +\DeclareInputText{231}{\th} +\DeclareInputText{232}{\TH} +\DeclareInputText{233}{\@tabacckludge'U} +\DeclareInputText{234}{\^U} +\DeclareInputText{235}{\@tabacckludge`U} +\DeclareInputText{236}{\@tabacckludge'y} +\DeclareInputText{237}{\@tabacckludge'Y} +\DeclareInputText{238}{\textasciimacron} +\DeclareInputText{239}{\textasciiacute} +\DeclareInputText{240}{\-} +\DeclareInputText{241}{\textpm} +\DeclareInputText{243}{\textthreequarters} +\DeclareInputText{244}{\textparagraph} +\DeclareInputText{245}{\textsection} +\DeclareInputText{246}{\textdiv} +\DeclareInputText{247}{\c\ } +\DeclareInputText{248}{\textdegree} +\DeclareInputText{249}{\textasciidieresis} +\DeclareInputText{250}{\textperiodcentered} +\DeclareInputText{251}{\textonesuperior} +\DeclareInputText{252}{\textthreesuperior} +\DeclareInputText{253}{\texttwosuperior} +\DeclareInputText{254}{\textblacksquare} +\DeclareInputText{255}{\nobreakspace} +%</cp850> +% \end{macrocode} +% +% \subsubsection{Encoding cp852} +% +% \begin{macrocode} +%<*cp852> +\ProvidesFile{x-cp852.def}% + [2006/08/24 v1.0 Input encoding cp852 (inputenx)] +\ProvideTextCommandDefault{\textacutedbl}{% + \H{}% +} +\ProvideTextCommandDefault{\textasciiacute}{% + \@tabacckludge'{}% +} +\ProvideTextCommandDefault{\textasciibreve}{% + \u{}% +} +\ProvideTextCommandDefault{\textasciicaron}{% + \v{}% +} +\ProvideTextCommandDefault{\textasciidieresis}{% + \"{}% +} +\ProvideTextCommandDefault{\textblacksquare}{% + \vrule \@width .3em \@height .4em \@depth -.1em\relax +} +\ProvideTextCommandDefault{\textcurrency}{% + \TextSymbolUnavailable\textcurrency +} +\ProvideTextCommandDefault{\textdegree}{% + \ensuremath{{^\circ}}% +} +\ProvideTextCommandDefault{\textdiv}{% + \TextSymbolUnavailable\textdiv +} +\ProvideTextCommandDefault{\textlnot}{% + \ensuremath\lnot +} +\ProvideTextCommandDefault{\texttimes}{% + \ensuremath\times +} +\DeclareInputText{128}{\c C} +\DeclareInputText{129}{\"u} +\DeclareInputText{130}{\@tabacckludge'e} +\DeclareInputText{131}{\^a} +\DeclareInputText{132}{\"a} +\DeclareInputText{133}{\r u} +\DeclareInputText{134}{\@tabacckludge'c} +\DeclareInputText{135}{\c c} +\DeclareInputText{136}{\l} +\DeclareInputText{137}{\"e} +\DeclareInputText{138}{\H O} +\DeclareInputText{139}{\H o} +\DeclareInputText{140}{\^\i} +\DeclareInputText{141}{\@tabacckludge'Z} +\DeclareInputText{142}{\"A} +\DeclareInputText{143}{\@tabacckludge'C} +\DeclareInputText{144}{\@tabacckludge'E} +\DeclareInputText{145}{\@tabacckludge'L} +\DeclareInputText{146}{\@tabacckludge'l} +\DeclareInputText{147}{\^o} +\DeclareInputText{148}{\"o} +\DeclareInputText{149}{\v L} +\DeclareInputText{150}{\v l} +\DeclareInputText{151}{\@tabacckludge'S} +\DeclareInputText{152}{\@tabacckludge's} +\DeclareInputText{153}{\"O} +\DeclareInputText{154}{\"U} +\DeclareInputText{155}{\v T} +\DeclareInputText{156}{\v t} +\DeclareInputText{157}{\L} +\DeclareInputText{158}{\texttimes} +\DeclareInputText{159}{\v c} +\DeclareInputText{160}{\@tabacckludge'a} +\DeclareInputText{161}{\@tabacckludge'\i} +\DeclareInputText{162}{\@tabacckludge'o} +\DeclareInputText{163}{\@tabacckludge'u} +\DeclareInputText{164}{\k A} +\DeclareInputText{165}{\k a} +\DeclareInputText{166}{\v Z} +\DeclareInputText{167}{\v z} +\DeclareInputText{168}{\k E} +\DeclareInputText{169}{\k e} +\DeclareInputText{170}{\textlnot} +\DeclareInputText{171}{\@tabacckludge'z} +\DeclareInputText{172}{\v C} +\DeclareInputText{173}{\c s} +\DeclareInputText{174}{\guillemotleft} +\DeclareInputText{175}{\guillemotright} +\DeclareInputText{176}{\textltshade} +\DeclareInputText{177}{\textshade} +\DeclareInputText{178}{\textdkshade} +\DeclareInputText{179}{\textSFxi} +\DeclareInputText{180}{\textSFix} +\DeclareInputText{181}{\@tabacckludge'A} +\DeclareInputText{182}{\^A} +\DeclareInputText{183}{\v E} +\DeclareInputText{184}{\c S} +\DeclareInputText{185}{\textSFxxiii} +\DeclareInputText{186}{\textSFxxiv} +\DeclareInputText{187}{\textSFxxv} +\DeclareInputText{188}{\textSFxxvi} +\DeclareInputText{189}{\.Z} +\DeclareInputText{190}{\.z} +\DeclareInputText{191}{\textSFiii} +\DeclareInputText{192}{\textSFii} +\DeclareInputText{193}{\textSFvii} +\DeclareInputText{194}{\textSFvi} +\DeclareInputText{195}{\textSFviii} +\DeclareInputText{196}{\textSFx} +\DeclareInputText{197}{\textSFv} +\DeclareInputText{198}{\u A} +\DeclareInputText{199}{\u a} +\DeclareInputText{200}{\textSFxxxviii} +\DeclareInputText{201}{\textSFxxxix} +\DeclareInputText{202}{\textSFxl} +\DeclareInputText{203}{\textSFxli} +\DeclareInputText{204}{\textSFxlii} +\DeclareInputText{205}{\textSFxliii} +\DeclareInputText{206}{\textSFxliv} +\DeclareInputText{207}{\textcurrency} +\DeclareInputText{208}{\dj} +\DeclareInputText{209}{\DJ} +\DeclareInputText{210}{\v D} +\DeclareInputText{211}{\"E} +\DeclareInputText{212}{\v d} +\DeclareInputText{213}{\v N} +\DeclareInputText{214}{\@tabacckludge'I} +\DeclareInputText{215}{\^I} +\DeclareInputText{216}{\v e} +\DeclareInputText{217}{\textSFiv} +\DeclareInputText{218}{\textSFi} +\DeclareInputText{219}{\textblock} +\DeclareInputText{220}{\textdnblock} +\DeclareInputText{221}{\c T} +\DeclareInputText{222}{\r U} +\DeclareInputText{223}{\textupblock} +\DeclareInputText{224}{\@tabacckludge'O} +\DeclareInputText{225}{\ss} +\DeclareInputText{226}{\^O} +\DeclareInputText{227}{\@tabacckludge'N} +\DeclareInputText{228}{\@tabacckludge'n} +\DeclareInputText{229}{\v n} +\DeclareInputText{230}{\v S} +\DeclareInputText{231}{\v s} +\DeclareInputText{232}{\@tabacckludge'R} +\DeclareInputText{233}{\@tabacckludge'U} +\DeclareInputText{234}{\@tabacckludge'r} +\DeclareInputText{235}{\H U} +\DeclareInputText{236}{\@tabacckludge'y} +\DeclareInputText{237}{\@tabacckludge'Y} +\DeclareInputText{238}{\c t} +\DeclareInputText{239}{\textasciiacute} +\DeclareInputText{240}{\-} +\DeclareInputText{241}{\textacutedbl} +\DeclareInputText{242}{\k{}} +\DeclareInputText{243}{\textasciicaron} +\DeclareInputText{244}{\textasciibreve} +\DeclareInputText{245}{\textsection} +\DeclareInputText{246}{\textdiv} +\DeclareInputText{247}{\c\ } +\DeclareInputText{248}{\textdegree} +\DeclareInputText{249}{\textasciidieresis} +\DeclareInputText{250}{\.{}} +\DeclareInputText{251}{\H u} +\DeclareInputText{252}{\v R} +\DeclareInputText{253}{\v r} +\DeclareInputText{254}{\textblacksquare} +\DeclareInputText{255}{\nobreakspace} +%</cp852> +% \end{macrocode} +% +% \subsubsection{Encoding cp858} +% +% \begin{macrocode} +%<*cp858> +\ProvidesFile{x-cp858.def}% + [2006/08/24 v1.0 Input encoding cp858 (inputenx)] +\ProvideTextCommandDefault{\textasciiacute}{% + \@tabacckludge'{}% +} +\ProvideTextCommandDefault{\textasciidieresis}{% + \"{}% +} +\ProvideTextCommandDefault{\textasciimacron}{% + \@tabacckludge={}% +} +\ProvideTextCommandDefault{\textblacksquare}{% + \vrule \@width .3em \@height .4em \@depth -.1em\relax +} +\ProvideTextCommandDefault{\textbrokenbar}{% + \TextSymbolUnavailable\textbrokenbar +} +\ProvideTextCommandDefault{\textcent}{% + \TextSymbolUnavailable\textcent +} +\ProvideTextCommandDefault{\textcurrency}{% + \TextSymbolUnavailable\textcurrency +} +\ProvideTextCommandDefault{\textdegree}{% + \ensuremath{{^\circ}}% +} +\ProvideTextCommandDefault{\textdiv}{% + \TextSymbolUnavailable\textdiv +} +\ProvideTextCommandDefault{\texteuro}{% + \TextSymbolUnavailable\texteuro +} +\ProvideTextCommandDefault{\textflorin}{% + \textit{f}% +} +\ProvideTextCommandDefault{\textlnot}{% + \ensuremath\lnot +} +\ProvideTextCommandDefault{\textmu}{% + \ensuremath\mu +} +\ProvideTextCommandDefault{\textonehalf}{% + \ensuremath{\frac12}% +} +\ProvideTextCommandDefault{\textonequarter}{% + \ensuremath{\frac14}% +} +\ProvideTextCommandDefault{\textonesuperior}{% + \ensuremath{{^1}}% +} +\ProvideTextCommandDefault{\textpm}{% + \ensuremath\pm +} +\ProvideTextCommandDefault{\textthreequarters}{% + \ensuremath{\frac34}% +} +\ProvideTextCommandDefault{\textthreesuperior}{% + \ensuremath{{^3}}% +} +\ProvideTextCommandDefault{\texttimes}{% + \ensuremath\times +} +\ProvideTextCommandDefault{\texttwosuperior}{% + \ensuremath{{^2}}% +} +\ProvideTextCommandDefault{\textyen}{% + \TextSymbolUnavailable\textyen +} +\DeclareInputText{128}{\c C} +\DeclareInputText{129}{\"u} +\DeclareInputText{130}{\@tabacckludge'e} +\DeclareInputText{131}{\^a} +\DeclareInputText{132}{\"a} +\DeclareInputText{133}{\@tabacckludge`a} +\DeclareInputText{134}{\r a} +\DeclareInputText{135}{\c c} +\DeclareInputText{136}{\^e} +\DeclareInputText{137}{\"e} +\DeclareInputText{138}{\@tabacckludge`e} +\DeclareInputText{139}{\"\i} +\DeclareInputText{140}{\^\i} +\DeclareInputText{141}{\@tabacckludge`\i} +\DeclareInputText{142}{\"A} +\DeclareInputText{143}{\r A} +\DeclareInputText{144}{\@tabacckludge'E} +\DeclareInputText{145}{\ae} +\DeclareInputText{146}{\AE} +\DeclareInputText{147}{\^o} +\DeclareInputText{148}{\"o} +\DeclareInputText{149}{\@tabacckludge`o} +\DeclareInputText{150}{\^u} +\DeclareInputText{151}{\@tabacckludge`u} +\DeclareInputText{152}{\"y} +\DeclareInputText{153}{\"O} +\DeclareInputText{154}{\"U} +\DeclareInputText{155}{\o} +\DeclareInputText{156}{\textsterling} +\DeclareInputText{157}{\O} +\DeclareInputText{158}{\texttimes} +\DeclareInputText{159}{\textflorin} +\DeclareInputText{160}{\@tabacckludge'a} +\DeclareInputText{161}{\@tabacckludge'\i} +\DeclareInputText{162}{\@tabacckludge'o} +\DeclareInputText{163}{\@tabacckludge'u} +\DeclareInputText{164}{\~n} +\DeclareInputText{165}{\~N} +\DeclareInputText{166}{\textordfeminine} +\DeclareInputText{167}{\textordmasculine} +\DeclareInputText{168}{\textquestiondown} +\DeclareInputText{169}{\textregistered} +\DeclareInputText{170}{\textlnot} +\DeclareInputText{171}{\textonehalf} +\DeclareInputText{172}{\textonequarter} +\DeclareInputText{173}{\textexclamdown} +\DeclareInputText{174}{\guillemotleft} +\DeclareInputText{175}{\guillemotright} +\DeclareInputText{176}{\textltshade} +\DeclareInputText{177}{\textshade} +\DeclareInputText{178}{\textdkshade} +\DeclareInputText{179}{\textSFxi} +\DeclareInputText{180}{\textSFix} +\DeclareInputText{181}{\@tabacckludge'A} +\DeclareInputText{182}{\^A} +\DeclareInputText{183}{\@tabacckludge`A} +\DeclareInputText{184}{\textcopyright} +\DeclareInputText{185}{\textSFxxiii} +\DeclareInputText{186}{\textSFxxiv} +\DeclareInputText{187}{\textSFxxv} +\DeclareInputText{188}{\textSFxxvi} +\DeclareInputText{189}{\textcent} +\DeclareInputText{190}{\textyen} +\DeclareInputText{191}{\textSFiii} +\DeclareInputText{192}{\textSFii} +\DeclareInputText{193}{\textSFvii} +\DeclareInputText{194}{\textSFvi} +\DeclareInputText{195}{\textSFviii} +\DeclareInputText{196}{\textSFx} +\DeclareInputText{197}{\textSFv} +\DeclareInputText{198}{\~a} +\DeclareInputText{199}{\~A} +\DeclareInputText{200}{\textSFxxxviii} +\DeclareInputText{201}{\textSFxxxix} +\DeclareInputText{202}{\textSFxl} +\DeclareInputText{203}{\textSFxli} +\DeclareInputText{204}{\textSFxlii} +\DeclareInputText{205}{\textSFxliii} +\DeclareInputText{206}{\textSFxliv} +\DeclareInputText{207}{\textcurrency} +\DeclareInputText{208}{\dh} +\DeclareInputText{209}{\DH} +\DeclareInputText{210}{\^E} +\DeclareInputText{211}{\"E} +\DeclareInputText{212}{\@tabacckludge`E} +\DeclareInputText{213}{\texteuro} +\DeclareInputText{214}{\@tabacckludge'I} +\DeclareInputText{215}{\^I} +\DeclareInputText{216}{\"I} +\DeclareInputText{217}{\textSFiv} +\DeclareInputText{218}{\textSFi} +\DeclareInputText{219}{\textblock} +\DeclareInputText{220}{\textdnblock} +\DeclareInputText{221}{\textbrokenbar} +\DeclareInputText{222}{\@tabacckludge`I} +\DeclareInputText{223}{\textupblock} +\DeclareInputText{224}{\@tabacckludge'O} +\DeclareInputText{225}{\ss} +\DeclareInputText{226}{\^O} +\DeclareInputText{227}{\@tabacckludge`O} +\DeclareInputText{228}{\~o} +\DeclareInputText{229}{\~O} +\DeclareInputText{230}{\textmu} +\DeclareInputText{231}{\th} +\DeclareInputText{232}{\TH} +\DeclareInputText{233}{\@tabacckludge'U} +\DeclareInputText{234}{\^U} +\DeclareInputText{235}{\@tabacckludge`U} +\DeclareInputText{236}{\@tabacckludge'y} +\DeclareInputText{237}{\@tabacckludge'Y} +\DeclareInputText{238}{\textasciimacron} +\DeclareInputText{239}{\textasciiacute} +\DeclareInputText{240}{\-} +\DeclareInputText{241}{\textpm} +\DeclareInputText{243}{\textthreequarters} +\DeclareInputText{244}{\textparagraph} +\DeclareInputText{245}{\textsection} +\DeclareInputText{246}{\textdiv} +\DeclareInputText{247}{\c\ } +\DeclareInputText{248}{\textdegree} +\DeclareInputText{249}{\textasciidieresis} +\DeclareInputText{250}{\textperiodcentered} +\DeclareInputText{251}{\textonesuperior} +\DeclareInputText{252}{\textthreesuperior} +\DeclareInputText{253}{\texttwosuperior} +\DeclareInputText{254}{\textblacksquare} +\DeclareInputText{255}{\nobreakspace} +%</cp858> +% \end{macrocode} +% +% \subsubsection{Encoding cp865} +% +% \begin{macrocode} +%<*cp865> +\ProvidesFile{x-cp865.def}% + [2006/08/24 v1.0 Input encoding cp865 (inputenx)] +\ProvideTextCommandDefault{\textGamma}{% + \ensuremath\Gamma +} +\ProvideTextCommandDefault{\textOmega}{% + \ensuremath\Omega +} +\ProvideTextCommandDefault{\textPhi}{% + \ensuremath\Phi +} +\ProvideTextCommandDefault{\textSigma}{% + \ensuremath\Sigma +} +\ProvideTextCommandDefault{\textTheta}{% + \ensuremath\Theta +} +\ProvideTextCommandDefault{\textalpha}{% + \ensuremath\alpha +} +\ProvideTextCommandDefault{\textapproxequal}{% + \ensuremath\approx +} +\ProvideTextCommandDefault{\textblacksquare}{% + \vrule \@width .3em \@height .4em \@depth -.1em\relax +} +\ProvideTextCommandDefault{\textcurrency}{% + \TextSymbolUnavailable\textcurrency +} +\ProvideTextCommandDefault{\textdegree}{% + \ensuremath{{^\circ}}% +} +\ProvideTextCommandDefault{\textdelta}{% + \ensuremath\delta +} +\ProvideTextCommandDefault{\textdiv}{% + \TextSymbolUnavailable\textdiv +} +\ProvideTextCommandDefault{\textepsilon}{% + \ensuremath\varepsilon +} +\ProvideTextCommandDefault{\textequivalence}{% + \ensuremath\equiv +} +\ProvideTextCommandDefault{\textflorin}{% + \textit{f}% +} +\ProvideTextCommandDefault{\textgreaterequal}{% + \ensuremath\geq +} +\ProvideTextCommandDefault{\textinfinity}{% + \ensuremath\infty +} +\ProvideTextCommandDefault{\textintersection}{% + \ensuremath\cap +} +\ProvideTextCommandDefault{\textlessequal}{% + \ensuremath\leq +} +\ProvideTextCommandDefault{\textlnot}{% + \ensuremath\lnot +} +\ProvideTextCommandDefault{\textmu}{% + \ensuremath\mu +} +\ProvideTextCommandDefault{\textnsuperior}{% + \ensuremath{{^n}}% +} +\ProvideTextCommandDefault{\textonehalf}{% + \ensuremath{\frac12}% +} +\ProvideTextCommandDefault{\textonequarter}{% + \ensuremath{\frac14}% +} +\ProvideTextCommandDefault{\textpeseta}{% + Pt% +} +\ProvideTextCommandDefault{\textphi}{% + \ensuremath\phi +} +\ProvideTextCommandDefault{\textpi}{% + \ensuremath\pi +} +\ProvideTextCommandDefault{\textpm}{% + \ensuremath\pm +} +\ProvideTextCommandDefault{\textsigma}{% + \ensuremath\sigma +} +\ProvideTextCommandDefault{\textsurd}{% + \ensuremath\surd +} +\ProvideTextCommandDefault{\texttau}{% + \ensuremath\tau +} +\ProvideTextCommandDefault{\texttwosuperior}{% + \ensuremath{{^2}}% +} +\DeclareInputText{128}{\c C} +\DeclareInputText{129}{\"u} +\DeclareInputText{130}{\@tabacckludge'e} +\DeclareInputText{131}{\^a} +\DeclareInputText{132}{\"a} +\DeclareInputText{133}{\@tabacckludge`a} +\DeclareInputText{134}{\r a} +\DeclareInputText{135}{\c c} +\DeclareInputText{136}{\^e} +\DeclareInputText{137}{\"e} +\DeclareInputText{138}{\@tabacckludge`e} +\DeclareInputText{139}{\"\i} +\DeclareInputText{140}{\^\i} +\DeclareInputText{141}{\@tabacckludge`\i} +\DeclareInputText{142}{\"A} +\DeclareInputText{143}{\r A} +\DeclareInputText{144}{\@tabacckludge'E} +\DeclareInputText{145}{\ae} +\DeclareInputText{146}{\AE} +\DeclareInputText{147}{\^o} +\DeclareInputText{148}{\"o} +\DeclareInputText{149}{\@tabacckludge`o} +\DeclareInputText{150}{\^u} +\DeclareInputText{151}{\@tabacckludge`u} +\DeclareInputText{152}{\"y} +\DeclareInputText{153}{\"O} +\DeclareInputText{154}{\"U} +\DeclareInputText{155}{\o} +\DeclareInputText{156}{\textsterling} +\DeclareInputText{157}{\O} +\DeclareInputText{158}{\textpeseta} +\DeclareInputText{159}{\textflorin} +\DeclareInputText{160}{\@tabacckludge'a} +\DeclareInputText{161}{\@tabacckludge'\i} +\DeclareInputText{162}{\@tabacckludge'o} +\DeclareInputText{163}{\@tabacckludge'u} +\DeclareInputText{164}{\~n} +\DeclareInputText{165}{\~N} +\DeclareInputText{166}{\textordfeminine} +\DeclareInputText{167}{\textordmasculine} +\DeclareInputText{168}{\textquestiondown} +\DeclareInputText{170}{\textlnot} +\DeclareInputText{171}{\textonehalf} +\DeclareInputText{172}{\textonequarter} +\DeclareInputText{173}{\textexclamdown} +\DeclareInputText{174}{\guillemotleft} +\DeclareInputText{175}{\textcurrency} +\DeclareInputText{176}{\textltshade} +\DeclareInputText{177}{\textshade} +\DeclareInputText{178}{\textdkshade} +\DeclareInputText{179}{\textSFxi} +\DeclareInputText{180}{\textSFix} +\DeclareInputText{181}{\textSFxix} +\DeclareInputText{182}{\textSFxx} +\DeclareInputText{183}{\textSFxxi} +\DeclareInputText{184}{\textSFxxii} +\DeclareInputText{185}{\textSFxxiii} +\DeclareInputText{186}{\textSFxxiv} +\DeclareInputText{187}{\textSFxxv} +\DeclareInputText{188}{\textSFxxvi} +\DeclareInputText{189}{\textSFxxvii} +\DeclareInputText{190}{\textSFxxviii} +\DeclareInputText{191}{\textSFiii} +\DeclareInputText{192}{\textSFii} +\DeclareInputText{193}{\textSFvii} +\DeclareInputText{194}{\textSFvi} +\DeclareInputText{195}{\textSFviii} +\DeclareInputText{196}{\textSFx} +\DeclareInputText{197}{\textSFv} +\DeclareInputText{198}{\textSFxxxvi} +\DeclareInputText{199}{\textSFxxxvii} +\DeclareInputText{200}{\textSFxxxviii} +\DeclareInputText{201}{\textSFxxxix} +\DeclareInputText{202}{\textSFxl} +\DeclareInputText{203}{\textSFxli} +\DeclareInputText{204}{\textSFxlii} +\DeclareInputText{205}{\textSFxliii} +\DeclareInputText{206}{\textSFxliv} +\DeclareInputText{207}{\textSFxlv} +\DeclareInputText{208}{\textSFxlvi} +\DeclareInputText{209}{\textSFxlvii} +\DeclareInputText{210}{\textSFxlviii} +\DeclareInputText{211}{\textSFxlix} +\DeclareInputText{212}{\textSFl} +\DeclareInputText{213}{\textSFli} +\DeclareInputText{214}{\textSFlii} +\DeclareInputText{215}{\textSFliii} +\DeclareInputText{216}{\textSFliv} +\DeclareInputText{217}{\textSFiv} +\DeclareInputText{218}{\textSFi} +\DeclareInputText{219}{\textblock} +\DeclareInputText{220}{\textdnblock} +\DeclareInputText{221}{\textlfblock} +\DeclareInputText{222}{\textrtblock} +\DeclareInputText{223}{\textupblock} +\DeclareInputText{224}{\textalpha} +\DeclareInputText{225}{\ss} +\DeclareInputText{226}{\textGamma} +\DeclareInputText{227}{\textpi} +\DeclareInputText{228}{\textSigma} +\DeclareInputText{229}{\textsigma} +\DeclareInputText{230}{\textmu} +\DeclareInputText{231}{\texttau} +\DeclareInputText{232}{\textPhi} +\DeclareInputText{233}{\textTheta} +\DeclareInputText{234}{\textOmega} +\DeclareInputText{235}{\textdelta} +\DeclareInputText{236}{\textinfinity} +\DeclareInputText{237}{\textphi} +\DeclareInputText{238}{\textepsilon} +\DeclareInputText{239}{\textintersection} +\DeclareInputText{240}{\textequivalence} +\DeclareInputText{241}{\textpm} +\DeclareInputText{242}{\textgreaterequal} +\DeclareInputText{243}{\textlessequal} +\DeclareInputText{246}{\textdiv} +\DeclareInputText{247}{\textapproxequal} +\DeclareInputText{248}{\textdegree} +\DeclareInputText{249}{\textbullet} +\DeclareInputText{250}{\textperiodcentered} +\DeclareInputText{251}{\textsurd} +\DeclareInputText{252}{\textnsuperior} +\DeclareInputText{253}{\texttwosuperior} +\DeclareInputText{254}{\textblacksquare} +\DeclareInputText{255}{\nobreakspace} +%</cp865> +% \end{macrocode} +% +% \subsubsection{Encoding cp1250} +% +% \begin{macrocode} +%<*cp1250> +\ProvidesFile{x-cp1250.def}% + [2006/08/24 v1.0 Input encoding cp1250 (inputenx)] +\ProvideTextCommandDefault{\textacutedbl}{% + \H{}% +} +\ProvideTextCommandDefault{\textasciiacute}{% + \@tabacckludge'{}% +} +\ProvideTextCommandDefault{\textasciibreve}{% + \u{}% +} +\ProvideTextCommandDefault{\textasciicaron}{% + \v{}% +} +\ProvideTextCommandDefault{\textasciidieresis}{% + \"{}% +} +\ProvideTextCommandDefault{\textbrokenbar}{% + \TextSymbolUnavailable\textbrokenbar +} +\ProvideTextCommandDefault{\textcurrency}{% + \TextSymbolUnavailable\textcurrency +} +\ProvideTextCommandDefault{\textdegree}{% + \ensuremath{{^\circ}}% +} +\ProvideTextCommandDefault{\textdiv}{% + \TextSymbolUnavailable\textdiv +} +\ProvideTextCommandDefault{\texteuro}{% + \TextSymbolUnavailable\texteuro +} +\ProvideTextCommandDefault{\textlnot}{% + \ensuremath\lnot +} +\ProvideTextCommandDefault{\textmu}{% + \ensuremath\mu +} +\ProvideTextCommandDefault{\textpm}{% + \ensuremath\pm +} +\ProvideTextCommandDefault{\texttimes}{% + \ensuremath\times +} +\DeclareInputText{128}{\texteuro} +\DeclareInputText{130}{\quotesinglbase} +\DeclareInputText{132}{\quotedblbase} +\DeclareInputText{133}{\textellipsis} +\DeclareInputText{134}{\textdagger} +\DeclareInputText{135}{\textdaggerdbl} +\DeclareInputText{137}{\textperthousand} +\DeclareInputText{138}{\v S} +\DeclareInputText{139}{\guilsinglleft} +\DeclareInputText{140}{\@tabacckludge'S} +\DeclareInputText{141}{\v T} +\DeclareInputText{142}{\v Z} +\DeclareInputText{143}{\@tabacckludge'Z} +\DeclareInputText{145}{\textquoteleft} +\DeclareInputText{146}{\textquoteright} +\DeclareInputText{147}{\textquotedblleft} +\DeclareInputText{148}{\textquotedblright} +\DeclareInputText{149}{\textbullet} +\DeclareInputText{150}{\textendash} +\DeclareInputText{151}{\textemdash} +\DeclareInputText{153}{\texttrademark} +\DeclareInputText{154}{\v s} +\DeclareInputText{155}{\guilsinglright} +\DeclareInputText{156}{\@tabacckludge's} +\DeclareInputText{157}{\v t} +\DeclareInputText{158}{\v z} +\DeclareInputText{159}{\@tabacckludge'z} +\DeclareInputText{160}{\nobreakspace} +\DeclareInputText{161}{\textasciicaron} +\DeclareInputText{162}{\textasciibreve} +\DeclareInputText{163}{\L} +\DeclareInputText{164}{\textcurrency} +\DeclareInputText{165}{\k A} +\DeclareInputText{166}{\textbrokenbar} +\DeclareInputText{167}{\textsection} +\DeclareInputText{168}{\textasciidieresis} +\DeclareInputText{169}{\textcopyright} +\DeclareInputText{170}{\c S} +\DeclareInputText{171}{\guillemotleft} +\DeclareInputText{172}{\textlnot} +\DeclareInputText{173}{\-} +\DeclareInputText{174}{\textregistered} +\DeclareInputText{175}{\.Z} +\DeclareInputText{176}{\textdegree} +\DeclareInputText{177}{\textpm} +\DeclareInputText{178}{\k{}} +\DeclareInputText{179}{\l} +\DeclareInputText{180}{\textasciiacute} +\DeclareInputText{181}{\textmu} +\DeclareInputText{182}{\textparagraph} +\DeclareInputText{183}{\textperiodcentered} +\DeclareInputText{184}{\c\ } +\DeclareInputText{185}{\k a} +\DeclareInputText{186}{\c s} +\DeclareInputText{187}{\guillemotright} +\DeclareInputText{188}{\v L} +\DeclareInputText{189}{\textacutedbl} +\DeclareInputText{190}{\v l} +\DeclareInputText{191}{\.z} +\DeclareInputText{192}{\@tabacckludge'R} +\DeclareInputText{193}{\@tabacckludge'A} +\DeclareInputText{194}{\^A} +\DeclareInputText{195}{\u A} +\DeclareInputText{196}{\"A} +\DeclareInputText{197}{\@tabacckludge'L} +\DeclareInputText{198}{\@tabacckludge'C} +\DeclareInputText{199}{\c C} +\DeclareInputText{200}{\v C} +\DeclareInputText{201}{\@tabacckludge'E} +\DeclareInputText{202}{\k E} +\DeclareInputText{203}{\"E} +\DeclareInputText{204}{\v E} +\DeclareInputText{205}{\@tabacckludge'I} +\DeclareInputText{206}{\^I} +\DeclareInputText{207}{\v D} +\DeclareInputText{208}{\DJ} +\DeclareInputText{209}{\@tabacckludge'N} +\DeclareInputText{210}{\v N} +\DeclareInputText{211}{\@tabacckludge'O} +\DeclareInputText{212}{\^O} +\DeclareInputText{213}{\H O} +\DeclareInputText{214}{\"O} +\DeclareInputText{215}{\texttimes} +\DeclareInputText{216}{\v R} +\DeclareInputText{217}{\r U} +\DeclareInputText{218}{\@tabacckludge'U} +\DeclareInputText{219}{\H U} +\DeclareInputText{220}{\"U} +\DeclareInputText{221}{\@tabacckludge'Y} +\DeclareInputText{222}{\c T} +\DeclareInputText{223}{\ss} +\DeclareInputText{224}{\@tabacckludge'r} +\DeclareInputText{225}{\@tabacckludge'a} +\DeclareInputText{226}{\^a} +\DeclareInputText{227}{\u a} +\DeclareInputText{228}{\"a} +\DeclareInputText{229}{\@tabacckludge'l} +\DeclareInputText{230}{\@tabacckludge'c} +\DeclareInputText{231}{\c c} +\DeclareInputText{232}{\v c} +\DeclareInputText{233}{\@tabacckludge'e} +\DeclareInputText{234}{\k e} +\DeclareInputText{235}{\"e} +\DeclareInputText{236}{\v e} +\DeclareInputText{237}{\@tabacckludge'\i} +\DeclareInputText{238}{\^\i} +\DeclareInputText{239}{\v d} +\DeclareInputText{240}{\dj} +\DeclareInputText{241}{\@tabacckludge'n} +\DeclareInputText{242}{\v n} +\DeclareInputText{243}{\@tabacckludge'o} +\DeclareInputText{244}{\^o} +\DeclareInputText{245}{\H o} +\DeclareInputText{246}{\"o} +\DeclareInputText{247}{\textdiv} +\DeclareInputText{248}{\v r} +\DeclareInputText{249}{\r u} +\DeclareInputText{250}{\@tabacckludge'u} +\DeclareInputText{251}{\H u} +\DeclareInputText{252}{\"u} +\DeclareInputText{253}{\@tabacckludge'y} +\DeclareInputText{254}{\c t} +\DeclareInputText{255}{\.{}} +%</cp1250> +% \end{macrocode} +% +% \subsubsection{Encoding cp1252} +% +% \begin{macrocode} +%<*cp1252> +\ProvidesFile{x-cp1252.def}% + [2006/08/24 v1.0 Input encoding cp1252 (inputenx)] +\ProvideTextCommandDefault{\textasciiacute}{% + \@tabacckludge'{}% +} +\ProvideTextCommandDefault{\textasciidieresis}{% + \"{}% +} +\ProvideTextCommandDefault{\textasciimacron}{% + \@tabacckludge={}% +} +\ProvideTextCommandDefault{\textbrokenbar}{% + \TextSymbolUnavailable\textbrokenbar +} +\ProvideTextCommandDefault{\textcent}{% + \TextSymbolUnavailable\textcent +} +\ProvideTextCommandDefault{\textcurrency}{% + \TextSymbolUnavailable\textcurrency +} +\ProvideTextCommandDefault{\textdegree}{% + \ensuremath{{^\circ}}% +} +\ProvideTextCommandDefault{\textdiv}{% + \TextSymbolUnavailable\textdiv +} +\ProvideTextCommandDefault{\texteuro}{% + \TextSymbolUnavailable\texteuro +} +\ProvideTextCommandDefault{\textflorin}{% + \textit{f}% +} +\ProvideTextCommandDefault{\textlnot}{% + \ensuremath\lnot +} +\ProvideTextCommandDefault{\textmu}{% + \ensuremath\mu +} +\ProvideTextCommandDefault{\textonehalf}{% + \ensuremath{\frac12}% +} +\ProvideTextCommandDefault{\textonequarter}{% + \ensuremath{\frac14}% +} +\ProvideTextCommandDefault{\textonesuperior}{% + \ensuremath{{^1}}% +} +\ProvideTextCommandDefault{\textpm}{% + \ensuremath\pm +} +\ProvideTextCommandDefault{\textthreequarters}{% + \ensuremath{\frac34}% +} +\ProvideTextCommandDefault{\textthreesuperior}{% + \ensuremath{{^3}}% +} +\ProvideTextCommandDefault{\texttimes}{% + \ensuremath\times +} +\ProvideTextCommandDefault{\texttwosuperior}{% + \ensuremath{{^2}}% +} +\ProvideTextCommandDefault{\textyen}{% + \TextSymbolUnavailable\textyen +} +\DeclareInputText{128}{\texteuro} +\DeclareInputText{130}{\quotesinglbase} +\DeclareInputText{131}{\textflorin} +\DeclareInputText{132}{\quotedblbase} +\DeclareInputText{133}{\textellipsis} +\DeclareInputText{134}{\textdagger} +\DeclareInputText{135}{\textdaggerdbl} +\DeclareInputText{136}{\textasciicircum} +\DeclareInputText{137}{\textperthousand} +\DeclareInputText{138}{\v S} +\DeclareInputText{139}{\guilsinglleft} +\DeclareInputText{140}{\OE} +\DeclareInputText{142}{\v Z} +\DeclareInputText{145}{\textquoteleft} +\DeclareInputText{146}{\textquoteright} +\DeclareInputText{147}{\textquotedblleft} +\DeclareInputText{148}{\textquotedblright} +\DeclareInputText{149}{\textbullet} +\DeclareInputText{150}{\textendash} +\DeclareInputText{151}{\textemdash} +\DeclareInputText{152}{\textasciitilde} +\DeclareInputText{153}{\texttrademark} +\DeclareInputText{154}{\v s} +\DeclareInputText{155}{\guilsinglright} +\DeclareInputText{156}{\oe} +\DeclareInputText{158}{\v z} +\DeclareInputText{159}{\"Y} +\DeclareInputText{160}{\nobreakspace} +\DeclareInputText{161}{\textexclamdown} +\DeclareInputText{162}{\textcent} +\DeclareInputText{163}{\textsterling} +\DeclareInputText{164}{\textcurrency} +\DeclareInputText{165}{\textyen} +\DeclareInputText{166}{\textbrokenbar} +\DeclareInputText{167}{\textsection} +\DeclareInputText{168}{\textasciidieresis} +\DeclareInputText{169}{\textcopyright} +\DeclareInputText{170}{\textordfeminine} +\DeclareInputText{171}{\guillemotleft} +\DeclareInputText{172}{\textlnot} +\DeclareInputText{173}{\-} +\DeclareInputText{174}{\textregistered} +\DeclareInputText{175}{\textasciimacron} +\DeclareInputText{176}{\textdegree} +\DeclareInputText{177}{\textpm} +\DeclareInputText{178}{\texttwosuperior} +\DeclareInputText{179}{\textthreesuperior} +\DeclareInputText{180}{\textasciiacute} +\DeclareInputText{181}{\textmu} +\DeclareInputText{182}{\textparagraph} +\DeclareInputText{183}{\textperiodcentered} +\DeclareInputText{184}{\c\ } +\DeclareInputText{185}{\textonesuperior} +\DeclareInputText{186}{\textordmasculine} +\DeclareInputText{187}{\guillemotright} +\DeclareInputText{188}{\textonequarter} +\DeclareInputText{189}{\textonehalf} +\DeclareInputText{190}{\textthreequarters} +\DeclareInputText{191}{\textquestiondown} +\DeclareInputText{192}{\@tabacckludge`A} +\DeclareInputText{193}{\@tabacckludge'A} +\DeclareInputText{194}{\^A} +\DeclareInputText{195}{\~A} +\DeclareInputText{196}{\"A} +\DeclareInputText{197}{\r A} +\DeclareInputText{198}{\AE} +\DeclareInputText{199}{\c C} +\DeclareInputText{200}{\@tabacckludge`E} +\DeclareInputText{201}{\@tabacckludge'E} +\DeclareInputText{202}{\^E} +\DeclareInputText{203}{\"E} +\DeclareInputText{204}{\@tabacckludge`I} +\DeclareInputText{205}{\@tabacckludge'I} +\DeclareInputText{206}{\^I} +\DeclareInputText{207}{\"I} +\DeclareInputText{208}{\DH} +\DeclareInputText{209}{\~N} +\DeclareInputText{210}{\@tabacckludge`O} +\DeclareInputText{211}{\@tabacckludge'O} +\DeclareInputText{212}{\^O} +\DeclareInputText{213}{\~O} +\DeclareInputText{214}{\"O} +\DeclareInputText{215}{\texttimes} +\DeclareInputText{216}{\O} +\DeclareInputText{217}{\@tabacckludge`U} +\DeclareInputText{218}{\@tabacckludge'U} +\DeclareInputText{219}{\^U} +\DeclareInputText{220}{\"U} +\DeclareInputText{221}{\@tabacckludge'Y} +\DeclareInputText{222}{\TH} +\DeclareInputText{223}{\ss} +\DeclareInputText{224}{\@tabacckludge`a} +\DeclareInputText{225}{\@tabacckludge'a} +\DeclareInputText{226}{\^a} +\DeclareInputText{227}{\~a} +\DeclareInputText{228}{\"a} +\DeclareInputText{229}{\r a} +\DeclareInputText{230}{\ae} +\DeclareInputText{231}{\c c} +\DeclareInputText{232}{\@tabacckludge`e} +\DeclareInputText{233}{\@tabacckludge'e} +\DeclareInputText{234}{\^e} +\DeclareInputText{235}{\"e} +\DeclareInputText{236}{\@tabacckludge`\i} +\DeclareInputText{237}{\@tabacckludge'\i} +\DeclareInputText{238}{\^\i} +\DeclareInputText{239}{\"\i} +\DeclareInputText{240}{\dh} +\DeclareInputText{241}{\~n} +\DeclareInputText{242}{\@tabacckludge`o} +\DeclareInputText{243}{\@tabacckludge'o} +\DeclareInputText{244}{\^o} +\DeclareInputText{245}{\~o} +\DeclareInputText{246}{\"o} +\DeclareInputText{247}{\textdiv} +\DeclareInputText{248}{\o} +\DeclareInputText{249}{\@tabacckludge`u} +\DeclareInputText{250}{\@tabacckludge'u} +\DeclareInputText{251}{\^u} +\DeclareInputText{252}{\"u} +\DeclareInputText{253}{\@tabacckludge'y} +\DeclareInputText{254}{\th} +\DeclareInputText{255}{\"y} +%</cp1252> +% \end{macrocode} +% +% \subsubsection{Encoding cp1257} +% +% \begin{macrocode} +%<*cp1257> +\ProvidesFile{x-cp1257.def}% + [2006/08/24 v1.0 Input encoding cp1257 (inputenx)] +\ProvideTextCommandDefault{\textasciiacute}{% + \@tabacckludge'{}% +} +\ProvideTextCommandDefault{\textasciicaron}{% + \v{}% +} +\ProvideTextCommandDefault{\textasciidieresis}{% + \"{}% +} +\ProvideTextCommandDefault{\textasciimacron}{% + \@tabacckludge={}% +} +\ProvideTextCommandDefault{\textbrokenbar}{% + \TextSymbolUnavailable\textbrokenbar +} +\ProvideTextCommandDefault{\textcent}{% + \TextSymbolUnavailable\textcent +} +\ProvideTextCommandDefault{\textcurrency}{% + \TextSymbolUnavailable\textcurrency +} +\ProvideTextCommandDefault{\textdegree}{% + \ensuremath{{^\circ}}% +} +\ProvideTextCommandDefault{\textdiv}{% + \TextSymbolUnavailable\textdiv +} +\ProvideTextCommandDefault{\texteuro}{% + \TextSymbolUnavailable\texteuro +} +\ProvideTextCommandDefault{\textlnot}{% + \ensuremath\lnot +} +\ProvideTextCommandDefault{\textmu}{% + \ensuremath\mu +} +\ProvideTextCommandDefault{\textonehalf}{% + \ensuremath{\frac12}% +} +\ProvideTextCommandDefault{\textonequarter}{% + \ensuremath{\frac14}% +} +\ProvideTextCommandDefault{\textonesuperior}{% + \ensuremath{{^1}}% +} +\ProvideTextCommandDefault{\textpm}{% + \ensuremath\pm +} +\ProvideTextCommandDefault{\textthreequarters}{% + \ensuremath{\frac34}% +} +\ProvideTextCommandDefault{\textthreesuperior}{% + \ensuremath{{^3}}% +} +\ProvideTextCommandDefault{\texttimes}{% + \ensuremath\times +} +\ProvideTextCommandDefault{\texttwosuperior}{% + \ensuremath{{^2}}% +} +\DeclareInputText{128}{\texteuro} +\DeclareInputText{130}{\quotesinglbase} +\DeclareInputText{132}{\quotedblbase} +\DeclareInputText{133}{\textellipsis} +\DeclareInputText{134}{\textdagger} +\DeclareInputText{135}{\textdaggerdbl} +\DeclareInputText{137}{\textperthousand} +\DeclareInputText{139}{\guilsinglleft} +\DeclareInputText{141}{\textasciidieresis} +\DeclareInputText{142}{\textasciicaron} +\DeclareInputText{143}{\c\ } +\DeclareInputText{145}{\textquoteleft} +\DeclareInputText{146}{\textquoteright} +\DeclareInputText{147}{\textquotedblleft} +\DeclareInputText{148}{\textquotedblright} +\DeclareInputText{149}{\textbullet} +\DeclareInputText{150}{\textendash} +\DeclareInputText{151}{\textemdash} +\DeclareInputText{153}{\texttrademark} +\DeclareInputText{155}{\guilsinglright} +\DeclareInputText{157}{\textasciimacron} +\DeclareInputText{158}{\k{}} +\DeclareInputText{160}{\nobreakspace} +\DeclareInputText{162}{\textcent} +\DeclareInputText{163}{\textsterling} +\DeclareInputText{164}{\textcurrency} +\DeclareInputText{166}{\textbrokenbar} +\DeclareInputText{167}{\textsection} +\DeclareInputText{168}{\O} +\DeclareInputText{169}{\textcopyright} +\DeclareInputText{170}{\c R} +\DeclareInputText{171}{\guillemotleft} +\DeclareInputText{172}{\textlnot} +\DeclareInputText{173}{\-} +\DeclareInputText{174}{\textregistered} +\DeclareInputText{175}{\AE} +\DeclareInputText{176}{\textdegree} +\DeclareInputText{177}{\textpm} +\DeclareInputText{178}{\texttwosuperior} +\DeclareInputText{179}{\textthreesuperior} +\DeclareInputText{180}{\textasciiacute} +\DeclareInputText{181}{\textmu} +\DeclareInputText{182}{\textparagraph} +\DeclareInputText{183}{\textperiodcentered} +\DeclareInputText{184}{\o} +\DeclareInputText{185}{\textonesuperior} +\DeclareInputText{186}{\c r} +\DeclareInputText{187}{\guillemotright} +\DeclareInputText{188}{\textonequarter} +\DeclareInputText{189}{\textonehalf} +\DeclareInputText{190}{\textthreequarters} +\DeclareInputText{191}{\ae} +\DeclareInputText{192}{\k A} +\DeclareInputText{193}{\k I} +\DeclareInputText{194}{\@tabacckludge=A} +\DeclareInputText{195}{\@tabacckludge'C} +\DeclareInputText{196}{\"A} +\DeclareInputText{197}{\r A} +\DeclareInputText{198}{\k E} +\DeclareInputText{199}{\@tabacckludge=E} +\DeclareInputText{200}{\v C} +\DeclareInputText{201}{\@tabacckludge'E} +\DeclareInputText{202}{\@tabacckludge'Z} +\DeclareInputText{203}{\.E} +\DeclareInputText{204}{\c G} +\DeclareInputText{205}{\c K} +\DeclareInputText{206}{\@tabacckludge=I} +\DeclareInputText{207}{\c L} +\DeclareInputText{208}{\v S} +\DeclareInputText{209}{\@tabacckludge'N} +\DeclareInputText{210}{\c N} +\DeclareInputText{211}{\@tabacckludge'O} +\DeclareInputText{212}{\@tabacckludge=O} +\DeclareInputText{213}{\~O} +\DeclareInputText{214}{\"O} +\DeclareInputText{215}{\texttimes} +\DeclareInputText{216}{\k U} +\DeclareInputText{217}{\L} +\DeclareInputText{218}{\@tabacckludge'S} +\DeclareInputText{219}{\@tabacckludge=U} +\DeclareInputText{220}{\"U} +\DeclareInputText{221}{\.Z} +\DeclareInputText{222}{\v Z} +\DeclareInputText{223}{\ss} +\DeclareInputText{224}{\k a} +\DeclareInputText{225}{\k i} +\DeclareInputText{226}{\@tabacckludge=a} +\DeclareInputText{227}{\@tabacckludge'c} +\DeclareInputText{228}{\"a} +\DeclareInputText{229}{\r a} +\DeclareInputText{230}{\k e} +\DeclareInputText{231}{\@tabacckludge=e} +\DeclareInputText{232}{\v c} +\DeclareInputText{233}{\@tabacckludge'e} +\DeclareInputText{234}{\@tabacckludge'z} +\DeclareInputText{235}{\.e} +\DeclareInputText{236}{\c g} +\DeclareInputText{237}{\c k} +\DeclareInputText{238}{\@tabacckludge=\i} +\DeclareInputText{239}{\c l} +\DeclareInputText{240}{\v s} +\DeclareInputText{241}{\@tabacckludge'n} +\DeclareInputText{242}{\c n} +\DeclareInputText{243}{\@tabacckludge'o} +\DeclareInputText{244}{\@tabacckludge=o} +\DeclareInputText{245}{\~o} +\DeclareInputText{246}{\"o} +\DeclareInputText{247}{\textdiv} +\DeclareInputText{248}{\k u} +\DeclareInputText{249}{\l} +\DeclareInputText{250}{\@tabacckludge's} +\DeclareInputText{251}{\@tabacckludge=u} +\DeclareInputText{252}{\"u} +\DeclareInputText{253}{\.z} +\DeclareInputText{254}{\v z} +\DeclareInputText{255}{\.{}} +%</cp1257> +% \end{macrocode} +% +% \subsubsection{Encoding mac-roman} +% +% \begin{macrocode} +%<*mac-roman> +\ProvidesFile{x-mac-roman.def}% + [2006/08/24 v1.0 Input encoding mac-roman (inputenx)] +\ProvideTextCommandDefault{\textOmega}{% + \ensuremath\Omega +} +\ProvideTextCommandDefault{\textacutedbl}{% + \H{}% +} +\ProvideTextCommandDefault{\textapproxequal}{% + \ensuremath\approx +} +\ProvideTextCommandDefault{\textasciiacute}{% + \@tabacckludge'{}% +} +\ProvideTextCommandDefault{\textasciibreve}{% + \u{}% +} +\ProvideTextCommandDefault{\textasciicaron}{% + \v{}% +} +\ProvideTextCommandDefault{\textasciidieresis}{% + \"{}% +} +\ProvideTextCommandDefault{\textasciimacron}{% + \@tabacckludge={}% +} +\ProvideTextCommandDefault{\textcent}{% + \TextSymbolUnavailable\textcent +} +\ProvideTextCommandDefault{\textdegree}{% + \ensuremath{{^\circ}}% +} +\ProvideTextCommandDefault{\textdiv}{% + \TextSymbolUnavailable\textdiv +} +\ProvideTextCommandDefault{\texteuro}{% + \TextSymbolUnavailable\texteuro +} +\ProvideTextCommandDefault{\textflorin}{% + \textit{f}% +} +\ProvideTextCommandDefault{\textfractionsolidus}{% + /% +} +\ProvideTextCommandDefault{\textgreaterequal}{% + \ensuremath\geq +} +\ProvideTextCommandDefault{\textincrement}{% + \ensuremath\Delta +} +\ProvideTextCommandDefault{\textinfinity}{% + \ensuremath\infty +} +\ProvideTextCommandDefault{\textintegral}{% + \ensuremath\int +} +\ProvideTextCommandDefault{\textlessequal}{% + \ensuremath\leq +} +\ProvideTextCommandDefault{\textlnot}{% + \ensuremath\lnot +} +\ProvideTextCommandDefault{\textlozenge}{% + \ensuremath\diamond +} +\ProvideTextCommandDefault{\textmu}{% + \ensuremath\mu +} +\ProvideTextCommandDefault{\textnotequal}{% + \ensuremath\neq +} +\ProvideTextCommandDefault{\textpartial}{% + \ensuremath\partial +} +\ProvideTextCommandDefault{\textpi}{% + \ensuremath\pi +} +\ProvideTextCommandDefault{\textpm}{% + \ensuremath\pm +} +\ProvideTextCommandDefault{\textproduct}{% + \ensuremath\Pi +} +\ProvideTextCommandDefault{\textsummation}{% + \ensuremath\Sigma +} +\ProvideTextCommandDefault{\textsurd}{% + \ensuremath\surd +} +\ProvideTextCommandDefault{\textyen}{% + \TextSymbolUnavailable\textyen +} +\DeclareInputText{128}{\"A} +\DeclareInputText{129}{\r A} +\DeclareInputText{130}{\c C} +\DeclareInputText{131}{\@tabacckludge'E} +\DeclareInputText{132}{\~N} +\DeclareInputText{133}{\"O} +\DeclareInputText{134}{\"U} +\DeclareInputText{135}{\@tabacckludge'a} +\DeclareInputText{136}{\@tabacckludge`a} +\DeclareInputText{137}{\^a} +\DeclareInputText{138}{\"a} +\DeclareInputText{139}{\~a} +\DeclareInputText{140}{\r a} +\DeclareInputText{141}{\c c} +\DeclareInputText{142}{\@tabacckludge'e} +\DeclareInputText{143}{\@tabacckludge`e} +\DeclareInputText{144}{\^e} +\DeclareInputText{145}{\"e} +\DeclareInputText{146}{\@tabacckludge'\i} +\DeclareInputText{147}{\@tabacckludge`\i} +\DeclareInputText{148}{\^\i} +\DeclareInputText{149}{\"\i} +\DeclareInputText{150}{\~n} +\DeclareInputText{151}{\@tabacckludge'o} +\DeclareInputText{152}{\@tabacckludge`o} +\DeclareInputText{153}{\^o} +\DeclareInputText{154}{\"o} +\DeclareInputText{155}{\~o} +\DeclareInputText{156}{\@tabacckludge'u} +\DeclareInputText{157}{\@tabacckludge`u} +\DeclareInputText{158}{\^u} +\DeclareInputText{159}{\"u} +\DeclareInputText{160}{\textdagger} +\DeclareInputText{161}{\textdegree} +\DeclareInputText{162}{\textcent} +\DeclareInputText{163}{\textsterling} +\DeclareInputText{164}{\textsection} +\DeclareInputText{165}{\textbullet} +\DeclareInputText{166}{\textparagraph} +\DeclareInputText{167}{\ss} +\DeclareInputText{168}{\textregistered} +\DeclareInputText{169}{\textcopyright} +\DeclareInputText{170}{\texttrademark} +\DeclareInputText{171}{\textasciiacute} +\DeclareInputText{172}{\textasciidieresis} +\DeclareInputText{173}{\textnotequal} +\DeclareInputText{174}{\AE} +\DeclareInputText{175}{\O} +\DeclareInputText{176}{\textinfinity} +\DeclareInputText{177}{\textpm} +\DeclareInputText{178}{\textlessequal} +\DeclareInputText{179}{\textgreaterequal} +\DeclareInputText{180}{\textyen} +\DeclareInputText{181}{\textmu} +\DeclareInputText{182}{\textpartial} +\DeclareInputText{183}{\textsummation} +\DeclareInputText{184}{\textproduct} +\DeclareInputText{185}{\textpi} +\DeclareInputText{186}{\textintegral} +\DeclareInputText{187}{\textordfeminine} +\DeclareInputText{188}{\textordmasculine} +\DeclareInputText{189}{\textOmega} +\DeclareInputText{190}{\ae} +\DeclareInputText{191}{\o} +\DeclareInputText{192}{\textquestiondown} +\DeclareInputText{193}{\textexclamdown} +\DeclareInputText{194}{\textlnot} +\DeclareInputText{195}{\textsurd} +\DeclareInputText{196}{\textflorin} +\DeclareInputText{197}{\textapproxequal} +\DeclareInputText{198}{\textincrement} +\DeclareInputText{199}{\guillemotleft} +\DeclareInputText{200}{\guillemotright} +\DeclareInputText{201}{\textellipsis} +\DeclareInputText{202}{\nobreakspace} +\DeclareInputText{203}{\@tabacckludge`A} +\DeclareInputText{204}{\~A} +\DeclareInputText{205}{\~O} +\DeclareInputText{206}{\OE} +\DeclareInputText{207}{\oe} +\DeclareInputText{208}{\textendash} +\DeclareInputText{209}{\textemdash} +\DeclareInputText{210}{\textquotedblleft} +\DeclareInputText{211}{\textquotedblright} +\DeclareInputText{212}{\textquoteleft} +\DeclareInputText{213}{\textquoteright} +\DeclareInputText{214}{\textdiv} +\DeclareInputText{215}{\textlozenge} +\DeclareInputText{216}{\"y} +\DeclareInputText{217}{\"Y} +\DeclareInputText{218}{\textfractionsolidus} +\DeclareInputText{219}{\texteuro} +\DeclareInputText{220}{\guilsinglleft} +\DeclareInputText{221}{\guilsinglright} +\DeclareInputText{222}{fi} +\DeclareInputText{223}{fl} +\DeclareInputText{224}{\textdaggerdbl} +\DeclareInputText{225}{\textperiodcentered} +\DeclareInputText{226}{\quotesinglbase} +\DeclareInputText{227}{\quotedblbase} +\DeclareInputText{228}{\textperthousand} +\DeclareInputText{229}{\^A} +\DeclareInputText{230}{\^E} +\DeclareInputText{231}{\@tabacckludge'A} +\DeclareInputText{232}{\"E} +\DeclareInputText{233}{\@tabacckludge`E} +\DeclareInputText{234}{\@tabacckludge'I} +\DeclareInputText{235}{\^I} +\DeclareInputText{236}{\"I} +\DeclareInputText{237}{\@tabacckludge`I} +\DeclareInputText{238}{\@tabacckludge'O} +\DeclareInputText{239}{\^O} +\DeclareInputText{241}{\@tabacckludge`O} +\DeclareInputText{242}{\@tabacckludge'U} +\DeclareInputText{243}{\^U} +\DeclareInputText{244}{\@tabacckludge`U} +\DeclareInputText{245}{\i} +\DeclareInputText{246}{\textasciicircum} +\DeclareInputText{247}{\textasciitilde} +\DeclareInputText{248}{\textasciimacron} +\DeclareInputText{249}{\textasciibreve} +\DeclareInputText{250}{\.{}} +\DeclareInputText{251}{\r{}} +\DeclareInputText{252}{\c\ } +\DeclareInputText{253}{\textacutedbl} +\DeclareInputText{254}{\k{}} +\DeclareInputText{255}{\textasciicaron} +%</mac-roman> +% \end{macrocode} +% +% \subsubsection{Encoding mac-ce} +% +% \begin{macrocode} +%<*mac-ce> +\ProvidesFile{x-mac-ce.def}% + [2006/08/24 v1.0 Input encoding mac-ce (inputenx)] +\ProvideTextCommandDefault{\textasciicaron}{% + \v{}% +} +\ProvideTextCommandDefault{\textasciidieresis}{% + \"{}% +} +\ProvideTextCommandDefault{\textdegree}{% + \ensuremath{{^\circ}}% +} +\ProvideTextCommandDefault{\textdiv}{% + \TextSymbolUnavailable\textdiv +} +\ProvideTextCommandDefault{\textgreaterequal}{% + \ensuremath\geq +} +\ProvideTextCommandDefault{\textincrement}{% + \ensuremath\Delta +} +\ProvideTextCommandDefault{\textlessequal}{% + \ensuremath\leq +} +\ProvideTextCommandDefault{\textlnot}{% + \ensuremath\lnot +} +\ProvideTextCommandDefault{\textlozenge}{% + \ensuremath\diamond +} +\ProvideTextCommandDefault{\textnotequal}{% + \ensuremath\neq +} +\ProvideTextCommandDefault{\textpartial}{% + \ensuremath\partial +} +\ProvideTextCommandDefault{\textsummation}{% + \ensuremath\Sigma +} +\ProvideTextCommandDefault{\textsurd}{% + \ensuremath\surd +} +\DeclareInputText{128}{\"A} +\DeclareInputText{129}{\@tabacckludge=A} +\DeclareInputText{130}{\@tabacckludge=a} +\DeclareInputText{131}{\@tabacckludge'E} +\DeclareInputText{132}{\k A} +\DeclareInputText{133}{\"O} +\DeclareInputText{134}{\"U} +\DeclareInputText{135}{\@tabacckludge'a} +\DeclareInputText{136}{\k a} +\DeclareInputText{137}{\v C} +\DeclareInputText{138}{\"a} +\DeclareInputText{139}{\v c} +\DeclareInputText{140}{\@tabacckludge'C} +\DeclareInputText{141}{\@tabacckludge'c} +\DeclareInputText{142}{\@tabacckludge'e} +\DeclareInputText{143}{\@tabacckludge'Z} +\DeclareInputText{144}{\@tabacckludge'z} +\DeclareInputText{145}{\v D} +\DeclareInputText{146}{\@tabacckludge'\i} +\DeclareInputText{147}{\v d} +\DeclareInputText{148}{\@tabacckludge=E} +\DeclareInputText{149}{\@tabacckludge=e} +\DeclareInputText{150}{\.E} +\DeclareInputText{151}{\@tabacckludge'o} +\DeclareInputText{152}{\.e} +\DeclareInputText{153}{\^o} +\DeclareInputText{154}{\"o} +\DeclareInputText{155}{\~o} +\DeclareInputText{156}{\@tabacckludge'u} +\DeclareInputText{157}{\v E} +\DeclareInputText{158}{\v e} +\DeclareInputText{159}{\"u} +\DeclareInputText{160}{\textdagger} +\DeclareInputText{161}{\textdegree} +\DeclareInputText{162}{\k E} +\DeclareInputText{163}{\textsterling} +\DeclareInputText{164}{\textsection} +\DeclareInputText{165}{\textbullet} +\DeclareInputText{166}{\textparagraph} +\DeclareInputText{167}{\ss} +\DeclareInputText{168}{\textregistered} +\DeclareInputText{169}{\textcopyright} +\DeclareInputText{170}{\texttrademark} +\DeclareInputText{171}{\k e} +\DeclareInputText{172}{\textasciidieresis} +\DeclareInputText{173}{\textnotequal} +\DeclareInputText{174}{\c g} +\DeclareInputText{175}{\k I} +\DeclareInputText{176}{\k i} +\DeclareInputText{177}{\@tabacckludge=I} +\DeclareInputText{178}{\textlessequal} +\DeclareInputText{179}{\textgreaterequal} +\DeclareInputText{180}{\@tabacckludge=\i} +\DeclareInputText{181}{\c K} +\DeclareInputText{182}{\textpartial} +\DeclareInputText{183}{\textsummation} +\DeclareInputText{184}{\l} +\DeclareInputText{185}{\c L} +\DeclareInputText{186}{\c l} +\DeclareInputText{187}{\v L} +\DeclareInputText{188}{\v l} +\DeclareInputText{189}{\@tabacckludge'L} +\DeclareInputText{190}{\@tabacckludge'l} +\DeclareInputText{191}{\c N} +\DeclareInputText{192}{\c n} +\DeclareInputText{193}{\@tabacckludge'N} +\DeclareInputText{194}{\textlnot} +\DeclareInputText{195}{\textsurd} +\DeclareInputText{196}{\@tabacckludge'n} +\DeclareInputText{197}{\v N} +\DeclareInputText{198}{\textincrement} +\DeclareInputText{199}{\guillemotleft} +\DeclareInputText{200}{\guillemotright} +\DeclareInputText{201}{\textellipsis} +\DeclareInputText{202}{\nobreakspace} +\DeclareInputText{203}{\v n} +\DeclareInputText{204}{\H O} +\DeclareInputText{205}{\~O} +\DeclareInputText{206}{\H o} +\DeclareInputText{207}{\@tabacckludge=O} +\DeclareInputText{208}{\textendash} +\DeclareInputText{209}{\textemdash} +\DeclareInputText{210}{\textquotedblleft} +\DeclareInputText{211}{\textquotedblright} +\DeclareInputText{212}{\textquoteleft} +\DeclareInputText{213}{\textquoteright} +\DeclareInputText{214}{\textdiv} +\DeclareInputText{215}{\textlozenge} +\DeclareInputText{216}{\@tabacckludge=o} +\DeclareInputText{217}{\@tabacckludge'R} +\DeclareInputText{218}{\@tabacckludge'r} +\DeclareInputText{219}{\v R} +\DeclareInputText{220}{\guilsinglleft} +\DeclareInputText{221}{\guilsinglright} +\DeclareInputText{222}{\v r} +\DeclareInputText{223}{\c R} +\DeclareInputText{224}{\c r} +\DeclareInputText{225}{\v S} +\DeclareInputText{226}{\quotesinglbase} +\DeclareInputText{227}{\quotedblbase} +\DeclareInputText{228}{\v s} +\DeclareInputText{229}{\@tabacckludge'S} +\DeclareInputText{230}{\@tabacckludge's} +\DeclareInputText{231}{\@tabacckludge'A} +\DeclareInputText{232}{\v T} +\DeclareInputText{233}{\v t} +\DeclareInputText{234}{\@tabacckludge'I} +\DeclareInputText{235}{\v Z} +\DeclareInputText{236}{\v z} +\DeclareInputText{237}{\@tabacckludge=U} +\DeclareInputText{238}{\@tabacckludge'O} +\DeclareInputText{239}{\^O} +\DeclareInputText{240}{\@tabacckludge=u} +\DeclareInputText{241}{\r U} +\DeclareInputText{242}{\@tabacckludge'U} +\DeclareInputText{243}{\r u} +\DeclareInputText{244}{\H U} +\DeclareInputText{245}{\H u} +\DeclareInputText{246}{\k U} +\DeclareInputText{247}{\k u} +\DeclareInputText{248}{\@tabacckludge'Y} +\DeclareInputText{249}{\@tabacckludge'y} +\DeclareInputText{250}{\c k} +\DeclareInputText{251}{\.Z} +\DeclareInputText{252}{\L} +\DeclareInputText{253}{\.z} +\DeclareInputText{254}{\c G} +\DeclareInputText{255}{\textasciicaron} +%</mac-ce> +% \end{macrocode} +% +% \subsubsection{Encoding nextstep} +% +% \begin{macrocode} +%<*nextstep> +\ProvidesFile{x-nextstep.def}% + [2006/08/24 v1.0 Input encoding nextstep (inputenx)] +\ProvideTextCommandDefault{\textacutedbl}{% + \H{}% +} +\ProvideTextCommandDefault{\textasciiacute}{% + \@tabacckludge'{}% +} +\ProvideTextCommandDefault{\textasciibreve}{% + \u{}% +} +\ProvideTextCommandDefault{\textasciicaron}{% + \v{}% +} +\ProvideTextCommandDefault{\textasciidieresis}{% + \"{}% +} +\ProvideTextCommandDefault{\textasciigrave}{% + \@tabacckludge`{}% +} +\ProvideTextCommandDefault{\textasciimacron}{% + \@tabacckludge={}% +} +\ProvideTextCommandDefault{\textbrokenbar}{% + \TextSymbolUnavailable\textbrokenbar +} +\ProvideTextCommandDefault{\textcent}{% + \TextSymbolUnavailable\textcent +} +\ProvideTextCommandDefault{\textcurrency}{% + \TextSymbolUnavailable\textcurrency +} +\ProvideTextCommandDefault{\textdiv}{% + \TextSymbolUnavailable\textdiv +} +\ProvideTextCommandDefault{\textflorin}{% + \textit{f}% +} +\ProvideTextCommandDefault{\textfractionsolidus}{% + /% +} +\ProvideTextCommandDefault{\textlnot}{% + \ensuremath\lnot +} +\ProvideTextCommandDefault{\textmu}{% + \ensuremath\mu +} +\ProvideTextCommandDefault{\textonehalf}{% + \ensuremath{\frac12}% +} +\ProvideTextCommandDefault{\textonequarter}{% + \ensuremath{\frac14}% +} +\ProvideTextCommandDefault{\textonesuperior}{% + \ensuremath{{^1}}% +} +\ProvideTextCommandDefault{\textpm}{% + \ensuremath\pm +} +\ProvideTextCommandDefault{\textthreequarters}{% + \ensuremath{\frac34}% +} +\ProvideTextCommandDefault{\textthreesuperior}{% + \ensuremath{{^3}}% +} +\ProvideTextCommandDefault{\texttimes}{% + \ensuremath\times +} +\ProvideTextCommandDefault{\texttwosuperior}{% + \ensuremath{{^2}}% +} +\ProvideTextCommandDefault{\textyen}{% + \TextSymbolUnavailable\textyen +} +\DeclareInputText{128}{\nobreakspace} +\DeclareInputText{129}{\@tabacckludge`A} +\DeclareInputText{130}{\@tabacckludge'A} +\DeclareInputText{131}{\^A} +\DeclareInputText{132}{\~A} +\DeclareInputText{133}{\"A} +\DeclareInputText{134}{\r A} +\DeclareInputText{135}{\c C} +\DeclareInputText{136}{\@tabacckludge`E} +\DeclareInputText{137}{\@tabacckludge'E} +\DeclareInputText{138}{\^E} +\DeclareInputText{139}{\"E} +\DeclareInputText{140}{\@tabacckludge`I} +\DeclareInputText{141}{\@tabacckludge'I} +\DeclareInputText{142}{\^I} +\DeclareInputText{143}{\"I} +\DeclareInputText{144}{\DH} +\DeclareInputText{145}{\~N} +\DeclareInputText{146}{\@tabacckludge`O} +\DeclareInputText{147}{\@tabacckludge'O} +\DeclareInputText{148}{\^O} +\DeclareInputText{149}{\~O} +\DeclareInputText{150}{\"O} +\DeclareInputText{151}{\@tabacckludge`U} +\DeclareInputText{152}{\@tabacckludge'U} +\DeclareInputText{153}{\^U} +\DeclareInputText{154}{\"U} +\DeclareInputText{155}{\@tabacckludge'Y} +\DeclareInputText{156}{\TH} +\DeclareInputText{157}{\textmu} +\DeclareInputText{158}{\texttimes} +\DeclareInputText{159}{\textdiv} +\DeclareInputText{160}{\textcopyright} +\DeclareInputText{161}{\textexclamdown} +\DeclareInputText{162}{\textcent} +\DeclareInputText{163}{\textsterling} +\DeclareInputText{164}{\textfractionsolidus} +\DeclareInputText{165}{\textyen} +\DeclareInputText{166}{\textflorin} +\DeclareInputText{167}{\textsection} +\DeclareInputText{168}{\textcurrency} +\DeclareInputText{169}{\textquoteright} +\DeclareInputText{170}{\textquotedblleft} +\DeclareInputText{171}{\guillemotleft} +\DeclareInputText{172}{\guilsinglleft} +\DeclareInputText{173}{\guilsinglright} +\DeclareInputText{174}{fi} +\DeclareInputText{175}{fl} +\DeclareInputText{176}{\textregistered} +\DeclareInputText{177}{\textendash} +\DeclareInputText{178}{\textdagger} +\DeclareInputText{179}{\textdaggerdbl} +\DeclareInputText{180}{\textperiodcentered} +\DeclareInputText{181}{\textbrokenbar} +\DeclareInputText{182}{\textparagraph} +\DeclareInputText{183}{\textbullet} +\DeclareInputText{184}{\quotesinglbase} +\DeclareInputText{185}{\quotedblbase} +\DeclareInputText{186}{\textquotedblright} +\DeclareInputText{187}{\guillemotright} +\DeclareInputText{188}{\textellipsis} +\DeclareInputText{189}{\textperthousand} +\DeclareInputText{190}{\textlnot} +\DeclareInputText{191}{\textquestiondown} +\DeclareInputText{192}{\textonesuperior} +\DeclareInputText{193}{\textasciigrave} +\DeclareInputText{194}{\textasciiacute} +\DeclareInputText{195}{\textasciicircum} +\DeclareInputText{196}{\textasciitilde} +\DeclareInputText{197}{\textasciimacron} +\DeclareInputText{198}{\textasciibreve} +\DeclareInputText{199}{\.{}} +\DeclareInputText{200}{\textasciidieresis} +\DeclareInputText{201}{\texttwosuperior} +\DeclareInputText{202}{\r{}} +\DeclareInputText{203}{\c\ } +\DeclareInputText{204}{\textthreesuperior} +\DeclareInputText{205}{\textacutedbl} +\DeclareInputText{206}{\k{}} +\DeclareInputText{207}{\textasciicaron} +\DeclareInputText{208}{\textemdash} +\DeclareInputText{209}{\textpm} +\DeclareInputText{210}{\textonequarter} +\DeclareInputText{211}{\textonehalf} +\DeclareInputText{212}{\textthreequarters} +\DeclareInputText{213}{\@tabacckludge`a} +\DeclareInputText{214}{\@tabacckludge'a} +\DeclareInputText{215}{\^a} +\DeclareInputText{216}{\~a} +\DeclareInputText{217}{\"a} +\DeclareInputText{218}{\r a} +\DeclareInputText{219}{\c c} +\DeclareInputText{220}{\@tabacckludge`e} +\DeclareInputText{221}{\@tabacckludge'e} +\DeclareInputText{222}{\^e} +\DeclareInputText{223}{\"e} +\DeclareInputText{224}{\@tabacckludge`\i} +\DeclareInputText{225}{\AE} +\DeclareInputText{226}{\@tabacckludge'\i} +\DeclareInputText{227}{\textordfeminine} +\DeclareInputText{228}{\^\i} +\DeclareInputText{229}{\"\i} +\DeclareInputText{230}{\dh} +\DeclareInputText{231}{\~n} +\DeclareInputText{232}{\L} +\DeclareInputText{233}{\O} +\DeclareInputText{234}{\OE} +\DeclareInputText{235}{\textordmasculine} +\DeclareInputText{236}{\@tabacckludge`o} +\DeclareInputText{237}{\@tabacckludge'o} +\DeclareInputText{238}{\^o} +\DeclareInputText{239}{\~o} +\DeclareInputText{240}{\"o} +\DeclareInputText{241}{\ae} +\DeclareInputText{242}{\@tabacckludge`u} +\DeclareInputText{243}{\@tabacckludge'u} +\DeclareInputText{244}{\^u} +\DeclareInputText{245}{\i} +\DeclareInputText{246}{\"u} +\DeclareInputText{247}{\@tabacckludge'y} +\DeclareInputText{248}{\l} +\DeclareInputText{249}{\o} +\DeclareInputText{250}{\oe} +\DeclareInputText{251}{\ss} +\DeclareInputText{252}{\th} +\DeclareInputText{253}{\"y} +%</nextstep> +% \end{macrocode} +% +% \subsubsection{Encoding dec-mcs} +% +% \begin{macrocode} +%<*dec-mcs> +\ProvidesFile{x-dec-mcs.def}% + [2006/08/24 v1.0 Input encoding dec-mcs (inputenx)] +\ProvideTextCommandDefault{\textcent}{% + \TextSymbolUnavailable\textcent +} +\ProvideTextCommandDefault{\textcurrency}{% + \TextSymbolUnavailable\textcurrency +} +\ProvideTextCommandDefault{\textdegree}{% + \ensuremath{{^\circ}}% +} +\ProvideTextCommandDefault{\textmu}{% + \ensuremath\mu +} +\ProvideTextCommandDefault{\textonehalf}{% + \ensuremath{\frac12}% +} +\ProvideTextCommandDefault{\textonequarter}{% + \ensuremath{\frac14}% +} +\ProvideTextCommandDefault{\textonesuperior}{% + \ensuremath{{^1}}% +} +\ProvideTextCommandDefault{\textpm}{% + \ensuremath\pm +} +\ProvideTextCommandDefault{\textthreesuperior}{% + \ensuremath{{^3}}% +} +\ProvideTextCommandDefault{\texttwosuperior}{% + \ensuremath{{^2}}% +} +\ProvideTextCommandDefault{\textyen}{% + \TextSymbolUnavailable\textyen +} +\DeclareInputText{161}{\textexclamdown} +\DeclareInputText{162}{\textcent} +\DeclareInputText{163}{\textsterling} +\DeclareInputText{165}{\textyen} +\DeclareInputText{167}{\textsection} +\DeclareInputText{168}{\textcurrency} +\DeclareInputText{169}{\textcopyright} +\DeclareInputText{170}{\textordfeminine} +\DeclareInputText{171}{\guillemotleft} +\DeclareInputText{176}{\textdegree} +\DeclareInputText{177}{\textpm} +\DeclareInputText{178}{\texttwosuperior} +\DeclareInputText{179}{\textthreesuperior} +\DeclareInputText{181}{\textmu} +\DeclareInputText{182}{\textparagraph} +\DeclareInputText{183}{\textperiodcentered} +\DeclareInputText{185}{\textonesuperior} +\DeclareInputText{186}{\textordmasculine} +\DeclareInputText{187}{\guillemotright} +\DeclareInputText{188}{\textonequarter} +\DeclareInputText{189}{\textonehalf} +\DeclareInputText{191}{\textquestiondown} +\DeclareInputText{192}{\@tabacckludge`A} +\DeclareInputText{193}{\@tabacckludge'A} +\DeclareInputText{194}{\^A} +\DeclareInputText{195}{\~A} +\DeclareInputText{196}{\"A} +\DeclareInputText{197}{\r A} +\DeclareInputText{198}{\AE} +\DeclareInputText{199}{\c C} +\DeclareInputText{200}{\@tabacckludge`E} +\DeclareInputText{201}{\@tabacckludge'E} +\DeclareInputText{202}{\^E} +\DeclareInputText{203}{\"E} +\DeclareInputText{204}{\@tabacckludge`I} +\DeclareInputText{205}{\@tabacckludge'I} +\DeclareInputText{206}{\^I} +\DeclareInputText{207}{\"I} +\DeclareInputText{209}{\~N} +\DeclareInputText{210}{\@tabacckludge`O} +\DeclareInputText{211}{\@tabacckludge'O} +\DeclareInputText{212}{\^O} +\DeclareInputText{213}{\~O} +\DeclareInputText{214}{\"O} +\DeclareInputText{215}{\OE} +\DeclareInputText{216}{\O} +\DeclareInputText{217}{\@tabacckludge`U} +\DeclareInputText{218}{\@tabacckludge'U} +\DeclareInputText{219}{\^U} +\DeclareInputText{220}{\"U} +\DeclareInputText{221}{\"Y} +\DeclareInputText{223}{\ss} +\DeclareInputText{224}{\@tabacckludge`a} +\DeclareInputText{225}{\@tabacckludge'a} +\DeclareInputText{226}{\^a} +\DeclareInputText{227}{\~a} +\DeclareInputText{228}{\"a} +\DeclareInputText{229}{\r a} +\DeclareInputText{230}{\ae} +\DeclareInputText{231}{\c c} +\DeclareInputText{232}{\@tabacckludge`e} +\DeclareInputText{233}{\@tabacckludge'e} +\DeclareInputText{234}{\^e} +\DeclareInputText{235}{\"e} +\DeclareInputText{236}{\@tabacckludge`\i} +\DeclareInputText{237}{\@tabacckludge'\i} +\DeclareInputText{238}{\^\i} +\DeclareInputText{239}{\"\i} +\DeclareInputText{241}{\~n} +\DeclareInputText{242}{\@tabacckludge`o} +\DeclareInputText{243}{\@tabacckludge'o} +\DeclareInputText{244}{\^o} +\DeclareInputText{245}{\~o} +\DeclareInputText{246}{\"o} +\DeclareInputText{247}{\oe} +\DeclareInputText{248}{\o} +\DeclareInputText{249}{\@tabacckludge`u} +\DeclareInputText{250}{\@tabacckludge'u} +\DeclareInputText{251}{\^u} +\DeclareInputText{252}{\"u} +\DeclareInputText{253}{\"y} +%</dec-mcs> +% \end{macrocode} +% +% \subsubsection{Non-Unicode additions} +% +% \begin{macrocode} +%<*mac-roman> +\ProvideTextCommandDefault{\textapplelogo}{% + \TextSymbolUnavailable\textapplelogo +} +\DeclareInputText{240}{\textapplelogo} +%</mac-roman> +% \end{macrocode} +% +% \subsection{Additions for \xfile{utf8enc.dfu}} +% +% \begin{macrocode} +%<*dfu> +\ProvidesFile{ix-utf8enc.dfu}% + [2006/08/24 v1.0 Additions of inputenx for utf8enc.dfu] +\DeclareUnicodeCharacter{00A0}{\nobreakspace} +\DeclareUnicodeCharacter{00AD}{\-} +\DeclareUnicodeCharacter{0100}{\@tabacckludge=A} +\DeclareUnicodeCharacter{0101}{\@tabacckludge=a} +\DeclareUnicodeCharacter{0108}{\^C} +\DeclareUnicodeCharacter{0109}{\^c} +\DeclareUnicodeCharacter{010A}{\.C} +\DeclareUnicodeCharacter{010B}{\.c} +\DeclareUnicodeCharacter{0112}{\@tabacckludge=E} +\DeclareUnicodeCharacter{0113}{\@tabacckludge=e} +\DeclareUnicodeCharacter{0116}{\.E} +\DeclareUnicodeCharacter{0117}{\.e} +\DeclareUnicodeCharacter{011C}{\^G} +\DeclareUnicodeCharacter{011D}{\^g} +\DeclareUnicodeCharacter{0120}{\.G} +\DeclareUnicodeCharacter{0121}{\.g} +\DeclareUnicodeCharacter{0122}{\c G} +\DeclareUnicodeCharacter{0123}{\c g} +\DeclareUnicodeCharacter{0124}{\^H} +\DeclareUnicodeCharacter{0125}{\^h} +\DeclareUnicodeCharacter{0126}{\textmalteseH} +\DeclareUnicodeCharacter{0127}{\textmalteseh} +\DeclareUnicodeCharacter{0128}{\~I} +\DeclareUnicodeCharacter{0129}{\~\i} +\DeclareUnicodeCharacter{012A}{\@tabacckludge=I} +\DeclareUnicodeCharacter{012B}{\@tabacckludge=\i} +\DeclareUnicodeCharacter{012E}{\k I} +\DeclareUnicodeCharacter{012F}{\k i} +\DeclareUnicodeCharacter{0134}{\^J} +\DeclareUnicodeCharacter{0135}{\^j} +\DeclareUnicodeCharacter{0136}{\c K} +\DeclareUnicodeCharacter{0137}{\c k} +\DeclareUnicodeCharacter{0138}{\textkra} +\DeclareUnicodeCharacter{013B}{\c L} +\DeclareUnicodeCharacter{013C}{\c l} +\DeclareUnicodeCharacter{0145}{\c N} +\DeclareUnicodeCharacter{0146}{\c n} +\DeclareUnicodeCharacter{014C}{\@tabacckludge=O} +\DeclareUnicodeCharacter{014D}{\@tabacckludge=o} +\DeclareUnicodeCharacter{0156}{\c R} +\DeclareUnicodeCharacter{0157}{\c r} +\DeclareUnicodeCharacter{015C}{\^S} +\DeclareUnicodeCharacter{015D}{\^s} +\DeclareUnicodeCharacter{0166}{\textTstroke} +\DeclareUnicodeCharacter{0167}{\texttstroke} +\DeclareUnicodeCharacter{0168}{\~U} +\DeclareUnicodeCharacter{0169}{\~u} +\DeclareUnicodeCharacter{016A}{\@tabacckludge=U} +\DeclareUnicodeCharacter{016B}{\@tabacckludge=u} +\DeclareUnicodeCharacter{016C}{\u U} +\DeclareUnicodeCharacter{016D}{\u u} +\DeclareUnicodeCharacter{0172}{\k U} +\DeclareUnicodeCharacter{0173}{\k u} +\DeclareUnicodeCharacter{0174}{\^W} +\DeclareUnicodeCharacter{0175}{\^w} +\DeclareUnicodeCharacter{0176}{\^Y} +\DeclareUnicodeCharacter{0177}{\^y} +\DeclareUnicodeCharacter{1E02}{\.B} +\DeclareUnicodeCharacter{1E03}{\.b} +\DeclareUnicodeCharacter{1E0A}{\.D} +\DeclareUnicodeCharacter{1E0B}{\.d} +\DeclareUnicodeCharacter{1E1E}{\.F} +\DeclareUnicodeCharacter{1E1F}{\.f} +\DeclareUnicodeCharacter{1E40}{\.M} +\DeclareUnicodeCharacter{1E41}{\.m} +\DeclareUnicodeCharacter{1E56}{\.P} +\DeclareUnicodeCharacter{1E57}{\.p} +\DeclareUnicodeCharacter{1E60}{\.S} +\DeclareUnicodeCharacter{1E61}{\.s} +\DeclareUnicodeCharacter{1E6A}{\.T} +\DeclareUnicodeCharacter{1E6B}{\.t} +\DeclareUnicodeCharacter{1E80}{\@tabacckludge`W} +\DeclareUnicodeCharacter{1E81}{\@tabacckludge`w} +\DeclareUnicodeCharacter{1E82}{\@tabacckludge'W} +\DeclareUnicodeCharacter{1E83}{\@tabacckludge'w} +\DeclareUnicodeCharacter{1E84}{\"W} +\DeclareUnicodeCharacter{1E85}{\"w} +\DeclareUnicodeCharacter{1EF2}{\@tabacckludge`Y} +\DeclareUnicodeCharacter{1EF3}{\@tabacckludge`y} +\DeclareUnicodeCharacter{0218}{\textcommabelow S} +\DeclareUnicodeCharacter{0219}{\textcommabelow s} +\DeclareUnicodeCharacter{021A}{\textcommabelow T} +\DeclareUnicodeCharacter{021B}{\textcommabelow t} +\DeclareUnicodeCharacter{02CB}{\textasciigrave} +\DeclareUnicodeCharacter{02D9}{\.{}} +\DeclareUnicodeCharacter{02DA}{\r{}} +\DeclareUnicodeCharacter{02DB}{\k{}} +\DeclareUnicodeCharacter{0393}{\textGamma} +\DeclareUnicodeCharacter{0398}{\textTheta} +\DeclareUnicodeCharacter{03A3}{\textSigma} +\DeclareUnicodeCharacter{03A6}{\textPhi} +\DeclareUnicodeCharacter{03A9}{\textOmega} +\DeclareUnicodeCharacter{03B1}{\textalpha} +\DeclareUnicodeCharacter{03B4}{\textdelta} +\DeclareUnicodeCharacter{03B5}{\textepsilon} +\DeclareUnicodeCharacter{03C0}{\textpi} +\DeclareUnicodeCharacter{03C3}{\textsigma} +\DeclareUnicodeCharacter{03C4}{\texttau} +\DeclareUnicodeCharacter{03C6}{\textphi} +\DeclareUnicodeCharacter{207F}{\textnsuperior} +\DeclareUnicodeCharacter{20A7}{\textpeseta} +\DeclareUnicodeCharacter{2202}{\textpartial} +\DeclareUnicodeCharacter{2206}{\textincrement} +\DeclareUnicodeCharacter{220F}{\textproduct} +\DeclareUnicodeCharacter{2211}{\textsummation} +\DeclareUnicodeCharacter{2219}{\textbullet} +\DeclareUnicodeCharacter{221A}{\textsurd} +\DeclareUnicodeCharacter{221E}{\textinfinity} +\DeclareUnicodeCharacter{2229}{\textintersection} +\DeclareUnicodeCharacter{222B}{\textintegral} +\DeclareUnicodeCharacter{2248}{\textapproxequal} +\DeclareUnicodeCharacter{2260}{\textnotequal} +\DeclareUnicodeCharacter{2261}{\textequivalence} +\DeclareUnicodeCharacter{2264}{\textlessequal} +\DeclareUnicodeCharacter{2265}{\textgreaterequal} +\DeclareUnicodeCharacter{25A0}{\textblacksquare} +\DeclareUnicodeCharacter{25CA}{\textlozenge} +\DeclareUnicodeCharacter{FB01}{fi} +\DeclareUnicodeCharacter{FB02}{fl} +\DeclareUnicodeCharacter{2500}{\textSFx} +\DeclareUnicodeCharacter{2502}{\textSFxi} +\DeclareUnicodeCharacter{250C}{\textSFi} +\DeclareUnicodeCharacter{2510}{\textSFiii} +\DeclareUnicodeCharacter{2514}{\textSFii} +\DeclareUnicodeCharacter{2518}{\textSFiv} +\DeclareUnicodeCharacter{251C}{\textSFviii} +\DeclareUnicodeCharacter{2524}{\textSFix} +\DeclareUnicodeCharacter{252C}{\textSFvi} +\DeclareUnicodeCharacter{2534}{\textSFvii} +\DeclareUnicodeCharacter{253C}{\textSFv} +\DeclareUnicodeCharacter{2550}{\textSFxliii} +\DeclareUnicodeCharacter{2551}{\textSFxxiv} +\DeclareUnicodeCharacter{2552}{\textSFli} +\DeclareUnicodeCharacter{2553}{\textSFlii} +\DeclareUnicodeCharacter{2554}{\textSFxxxix} +\DeclareUnicodeCharacter{2555}{\textSFxxii} +\DeclareUnicodeCharacter{2556}{\textSFxxi} +\DeclareUnicodeCharacter{2557}{\textSFxxv} +\DeclareUnicodeCharacter{2558}{\textSFl} +\DeclareUnicodeCharacter{2559}{\textSFxlix} +\DeclareUnicodeCharacter{255A}{\textSFxxxviii} +\DeclareUnicodeCharacter{255B}{\textSFxxviii} +\DeclareUnicodeCharacter{255C}{\textSFxxvii} +\DeclareUnicodeCharacter{255D}{\textSFxxvi} +\DeclareUnicodeCharacter{255E}{\textSFxxxvi} +\DeclareUnicodeCharacter{255F}{\textSFxxxvii} +\DeclareUnicodeCharacter{2560}{\textSFxlii} +\DeclareUnicodeCharacter{2561}{\textSFxix} +\DeclareUnicodeCharacter{2562}{\textSFxx} +\DeclareUnicodeCharacter{2563}{\textSFxxiii} +\DeclareUnicodeCharacter{2564}{\textSFxlvii} +\DeclareUnicodeCharacter{2565}{\textSFxlviii} +\DeclareUnicodeCharacter{2566}{\textSFxli} +\DeclareUnicodeCharacter{2567}{\textSFxlv} +\DeclareUnicodeCharacter{2568}{\textSFxlvi} +\DeclareUnicodeCharacter{2569}{\textSFxl} +\DeclareUnicodeCharacter{256A}{\textSFliv} +\DeclareUnicodeCharacter{256B}{\textSFliii} +\DeclareUnicodeCharacter{256C}{\textSFxliv} +\DeclareUnicodeCharacter{2580}{\textupblock} +\DeclareUnicodeCharacter{2584}{\textdnblock} +\DeclareUnicodeCharacter{2588}{\textblock} +\DeclareUnicodeCharacter{258C}{\textlfblock} +\DeclareUnicodeCharacter{2590}{\textrtblock} +\DeclareUnicodeCharacter{2591}{\textltshade} +\DeclareUnicodeCharacter{2592}{\textshade} +\DeclareUnicodeCharacter{2593}{\textdkshade} +%</dfu> +% \end{macrocode} +% +% \subsection{Name list} +% +% \begin{macrocode} +%<*name> +\ProvidesFile{ix-name.def}% + [2006/08/24 v1.0 Name list (inputenx)] +% \end{macrocode} +% +% \textit{List omitted here, see \xfile{ix-name.def}.} +% \iffalse +% \begin{macrocode} +\InputenxName{AE}{00C6}% LATIN CAPITAL LETTER AE +\InputenxName{Aacute}{00C1}% LATIN CAPITAL LETTER A WITH ACUTE +\InputenxName{Abreve}{0102}% LATIN CAPITAL LETTER A WITH BREVE +\InputenxName{Acircumflex}{00C2}% LATIN CAPITAL LETTER A WITH CIRCUMFLEX +\InputenxName{Adieresis}{00C4}% LATIN CAPITAL LETTER A WITH DIAERESIS +\InputenxName{Agrave}{00C0}% LATIN CAPITAL LETTER A WITH GRAVE +\InputenxName{Amacron}{0100}% LATIN CAPITAL LETTER A WITH MACRON +\InputenxName{Aogonek}{0104}% LATIN CAPITAL LETTER A WITH OGONEK +\InputenxName{Aring}{00C5}% LATIN CAPITAL LETTER A WITH RING ABOVE +\InputenxName{Atilde}{00C3}% LATIN CAPITAL LETTER A WITH TILDE +\InputenxName{Bdotaccent}{1E02}% LATIN CAPITAL LETTER B WITH DOT ABOVE +\InputenxName{Cacute}{0106}% LATIN CAPITAL LETTER C WITH ACUTE +\InputenxName{Ccaron}{010C}% LATIN CAPITAL LETTER C WITH CARON +\InputenxName{Ccedilla}{00C7}% LATIN CAPITAL LETTER C WITH CEDILLA +\InputenxName{Ccircumflex}{0108}% LATIN CAPITAL LETTER C WITH CIRCUMFLEX +\InputenxName{Cdot}{010A}% LATIN CAPITAL LETTER C WITH DOT ABOVE +\InputenxName{Cdotaccent}{010A}% LATIN CAPITAL LETTER C WITH DOT ABOVE +\InputenxName{DH}{00D0}% LATIN CAPITAL LETTER ETH +\InputenxName{DJ}{0110}% LATIN CAPITAL LETTER D WITH STROKE +\InputenxName{Dcaron}{010E}% LATIN CAPITAL LETTER D WITH CARON +\InputenxName{Dcroat}{0110}% LATIN CAPITAL LETTER D WITH STROKE +\InputenxName{Ddotaccent}{1E0A}% LATIN CAPITAL LETTER D WITH DOT ABOVE +\InputenxName{Delta}{2206}% INCREMENT +\InputenxName{Dslash}{0110}% LATIN CAPITAL LETTER D WITH STROKE +\InputenxName{Eacute}{00C9}% LATIN CAPITAL LETTER E WITH ACUTE +\InputenxName{Ecaron}{011A}% LATIN CAPITAL LETTER E WITH CARON +\InputenxName{Ecircumflex}{00CA}% LATIN CAPITAL LETTER E WITH CIRCUMFLEX +\InputenxName{Edieresis}{00CB}% LATIN CAPITAL LETTER E WITH DIAERESIS +\InputenxName{Edot}{0116}% LATIN CAPITAL LETTER E WITH DOT ABOVE +\InputenxName{Edotaccent}{0116}% LATIN CAPITAL LETTER E WITH DOT ABOVE +\InputenxName{Egrave}{00C8}% LATIN CAPITAL LETTER E WITH GRAVE +\InputenxName{Emacron}{0112}% LATIN CAPITAL LETTER E WITH MACRON +\InputenxName{Eng}{014A}% LATIN CAPITAL LETTER ENG +\InputenxName{Eogonek}{0118}% LATIN CAPITAL LETTER E WITH OGONEK +\InputenxName{Eth}{00D0}% LATIN CAPITAL LETTER ETH +\InputenxName{Euro}{20AC}% EURO SIGN +\InputenxName{Fdotaccent}{1E1E}% LATIN CAPITAL LETTER F WITH DOT ABOVE +\InputenxName{Gamma}{0393}% GREEK CAPITAL LETTER GAMMA +\InputenxName{Gbreve}{011E}% LATIN CAPITAL LETTER G WITH BREVE +\InputenxName{Gcedilla}{0122}% LATIN CAPITAL LETTER G WITH CEDILLA +\InputenxName{Gcircumflex}{011C}% LATIN CAPITAL LETTER G WITH CIRCUMFLEX +\InputenxName{Gcommaaccent}{0122}% LATIN CAPITAL LETTER G WITH CEDILLA +\InputenxName{Gdot}{0120}% LATIN CAPITAL LETTER G WITH DOT ABOVE +\InputenxName{Gdotaccent}{0120}% LATIN CAPITAL LETTER G WITH DOT ABOVE +\InputenxName{Hbar}{0126}% LATIN CAPITAL LETTER H WITH STROKE +\InputenxName{Hcircumflex}{0124}% LATIN CAPITAL LETTER H WITH CIRCUMFLEX +\InputenxName{Iacute}{00CD}% LATIN CAPITAL LETTER I WITH ACUTE +\InputenxName{Icircumflex}{00CE}% LATIN CAPITAL LETTER I WITH CIRCUMFLEX +\InputenxName{Idieresis}{00CF}% LATIN CAPITAL LETTER I WITH DIAERESIS +\InputenxName{Idot}{0130}% LATIN CAPITAL LETTER I WITH DOT ABOVE +\InputenxName{Idotaccent}{0130}% LATIN CAPITAL LETTER I WITH DOT ABOVE +\InputenxName{Igrave}{00CC}% LATIN CAPITAL LETTER I WITH GRAVE +\InputenxName{Imacron}{012A}% LATIN CAPITAL LETTER I WITH MACRON +\InputenxName{Iogonek}{012E}% LATIN CAPITAL LETTER I WITH OGONEK +\InputenxName{Itilde}{0128}% LATIN CAPITAL LETTER I WITH TILDE +\InputenxName{Jcircumflex}{0134}% LATIN CAPITAL LETTER J WITH CIRCUMFLEX +\InputenxName{Kcedilla}{0136}% LATIN CAPITAL LETTER K WITH CEDILLA +\InputenxName{Kcommaaccent}{0136}% LATIN CAPITAL LETTER K WITH CEDILLA +\InputenxName{Lacute}{0139}% LATIN CAPITAL LETTER L WITH ACUTE +\InputenxName{Lcaron}{013D}% LATIN CAPITAL LETTER L WITH CARON +\InputenxName{Lcedilla}{013B}% LATIN CAPITAL LETTER L WITH CEDILLA +\InputenxName{Lcommaaccent}{013B}% LATIN CAPITAL LETTER L WITH CEDILLA +\InputenxName{Lslash}{0141}% LATIN CAPITAL LETTER L WITH STROKE +\InputenxName{Mdotaccent}{1E40}% LATIN CAPITAL LETTER M WITH DOT ABOVE +\InputenxName{NG}{014A}% LATIN CAPITAL LETTER ENG +\InputenxName{Nacute}{0143}% LATIN CAPITAL LETTER N WITH ACUTE +\InputenxName{Ncaron}{0147}% LATIN CAPITAL LETTER N WITH CARON +\InputenxName{Ncedilla}{0145}% LATIN CAPITAL LETTER N WITH CEDILLA +\InputenxName{Ncommaaccent}{0145}% LATIN CAPITAL LETTER N WITH CEDILLA +\InputenxName{Ntilde}{00D1}% LATIN CAPITAL LETTER N WITH TILDE +\InputenxName{OE}{0152}% LATIN CAPITAL LIGATURE OE +\InputenxName{Oacute}{00D3}% LATIN CAPITAL LETTER O WITH ACUTE +\InputenxName{Ocircumflex}{00D4}% LATIN CAPITAL LETTER O WITH CIRCUMFLEX +\InputenxName{Odblacute}{0150}% LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +\InputenxName{Odieresis}{00D6}% LATIN CAPITAL LETTER O WITH DIAERESIS +\InputenxName{Ograve}{00D2}% LATIN CAPITAL LETTER O WITH GRAVE +\InputenxName{Ohungarumlaut}{0150}% LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +\InputenxName{Omacron}{014C}% LATIN CAPITAL LETTER O WITH MACRON +\InputenxName{Omega}{03A9}% GREEK CAPITAL LETTER OMEGA +\InputenxName{Omegagreek}{03A9}% GREEK CAPITAL LETTER OMEGA +\InputenxName{Oslash}{00D8}% LATIN CAPITAL LETTER O WITH STROKE +\InputenxName{Otilde}{00D5}% LATIN CAPITAL LETTER O WITH TILDE +\InputenxName{Pdotaccent}{1E56}% LATIN CAPITAL LETTER P WITH DOT ABOVE +\InputenxName{Phi}{03A6}% GREEK CAPITAL LETTER PHI +\InputenxName{Racute}{0154}% LATIN CAPITAL LETTER R WITH ACUTE +\InputenxName{Rcaron}{0158}% LATIN CAPITAL LETTER R WITH CARON +\InputenxName{Rcedilla}{0156}% LATIN CAPITAL LETTER R WITH CEDILLA +\InputenxName{Rcommaaccent}{0156}% LATIN CAPITAL LETTER R WITH CEDILLA +\InputenxName{SFi}{250C}% BOX DRAWINGS LIGHT DOWN AND RIGHT +\InputenxName{SFii}{2514}% BOX DRAWINGS LIGHT UP AND RIGHT +\InputenxName{SFiii}{2510}% BOX DRAWINGS LIGHT DOWN AND LEFT +\InputenxName{SFiv}{2518}% BOX DRAWINGS LIGHT UP AND LEFT +\InputenxName{SFix}{2524}% BOX DRAWINGS LIGHT VERTICAL AND LEFT +\InputenxName{SFl}{2558}% BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE +\InputenxName{SFli}{2552}% BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE +\InputenxName{SFlii}{2553}% BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE +\InputenxName{SFliii}{256B}% BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE +\InputenxName{SFliv}{256A}% BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE +\InputenxName{SFv}{253C}% BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +\InputenxName{SFvi}{252C}% BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +\InputenxName{SFvii}{2534}% BOX DRAWINGS LIGHT UP AND HORIZONTAL +\InputenxName{SFviii}{251C}% BOX DRAWINGS LIGHT VERTICAL AND RIGHT +\InputenxName{SFx}{2500}% BOX DRAWINGS LIGHT HORIZONTAL +\InputenxName{SFxi}{2502}% BOX DRAWINGS LIGHT VERTICAL +\InputenxName{SFxix}{2561}% BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE +\InputenxName{SFxl}{2569}% BOX DRAWINGS DOUBLE UP AND HORIZONTAL +\InputenxName{SFxli}{2566}% BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL +\InputenxName{SFxlii}{2560}% BOX DRAWINGS DOUBLE VERTICAL AND RIGHT +\InputenxName{SFxliii}{2550}% BOX DRAWINGS DOUBLE HORIZONTAL +\InputenxName{SFxliv}{256C}% BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL +\InputenxName{SFxlix}{2559}% BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE +\InputenxName{SFxlv}{2567}% BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE +\InputenxName{SFxlvi}{2568}% BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE +\InputenxName{SFxlvii}{2564}% BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE +\InputenxName{SFxlviii}{2565}% BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE +\InputenxName{SFxx}{2562}% BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE +\InputenxName{SFxxi}{2556}% BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE +\InputenxName{SFxxii}{2555}% BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE +\InputenxName{SFxxiii}{2563}% BOX DRAWINGS DOUBLE VERTICAL AND LEFT +\InputenxName{SFxxiv}{2551}% BOX DRAWINGS DOUBLE VERTICAL +\InputenxName{SFxxv}{2557}% BOX DRAWINGS DOUBLE DOWN AND LEFT +\InputenxName{SFxxvi}{255D}% BOX DRAWINGS DOUBLE UP AND LEFT +\InputenxName{SFxxvii}{255C}% BOX DRAWINGS UP DOUBLE AND LEFT SINGLE +\InputenxName{SFxxviii}{255B}% BOX DRAWINGS UP SINGLE AND LEFT DOUBLE +\InputenxName{SFxxxix}{2554}% BOX DRAWINGS DOUBLE DOWN AND RIGHT +\InputenxName{SFxxxvi}{255E}% BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE +\InputenxName{SFxxxvii}{255F}% BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE +\InputenxName{SFxxxviii}{255A}% BOX DRAWINGS DOUBLE UP AND RIGHT +\InputenxName{Sacute}{015A}% LATIN CAPITAL LETTER S WITH ACUTE +\InputenxName{Scaron}{0160}% LATIN CAPITAL LETTER S WITH CARON +\InputenxName{Scedilla}{015E}% LATIN CAPITAL LETTER S WITH CEDILLA +\InputenxName{Scircumflex}{015C}% LATIN CAPITAL LETTER S WITH CIRCUMFLEX +\InputenxName{Scommaaccent}{0218}% LATIN CAPITAL LETTER S WITH COMMA BELOW +\InputenxName{Sdotaccent}{1E60}% LATIN CAPITAL LETTER S WITH DOT ABOVE +\InputenxName{Sigma}{03A3}% GREEK CAPITAL LETTER SIGMA +\InputenxName{TH}{00DE}% LATIN CAPITAL LETTER THORN +\InputenxName{Tbar}{0166}% LATIN CAPITAL LETTER T WITH STROKE +\InputenxName{Tcaron}{0164}% LATIN CAPITAL LETTER T WITH CARON +\InputenxName{Tcedilla}{0162}% LATIN CAPITAL LETTER T WITH CEDILLA +\InputenxName{Tcommaaccent}{0162}% LATIN CAPITAL LETTER T WITH CEDILLA +\InputenxName{Tdotaccent}{1E6A}% LATIN CAPITAL LETTER T WITH DOT ABOVE +\InputenxName{Theta}{0398}% GREEK CAPITAL LETTER THETA +\InputenxName{Thorn}{00DE}% LATIN CAPITAL LETTER THORN +\InputenxName{Tstroke}{0166}% LATIN CAPITAL LETTER T WITH STROKE +\InputenxName{Uacute}{00DA}% LATIN CAPITAL LETTER U WITH ACUTE +\InputenxName{Ubreve}{016C}% LATIN CAPITAL LETTER U WITH BREVE +\InputenxName{Ucircumflex}{00DB}% LATIN CAPITAL LETTER U WITH CIRCUMFLEX +\InputenxName{Udblacute}{0170}% LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +\InputenxName{Udieresis}{00DC}% LATIN CAPITAL LETTER U WITH DIAERESIS +\InputenxName{Ugrave}{00D9}% LATIN CAPITAL LETTER U WITH GRAVE +\InputenxName{Uhungarumlaut}{0170}% LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +\InputenxName{Umacron}{016A}% LATIN CAPITAL LETTER U WITH MACRON +\InputenxName{Uogonek}{0172}% LATIN CAPITAL LETTER U WITH OGONEK +\InputenxName{Uring}{016E}% LATIN CAPITAL LETTER U WITH RING ABOVE +\InputenxName{Utilde}{0168}% LATIN CAPITAL LETTER U WITH TILDE +\InputenxName{Wacute}{1E82}% LATIN CAPITAL LETTER W WITH ACUTE +\InputenxName{Wcircumflex}{0174}% LATIN CAPITAL LETTER W WITH CIRCUMFLEX +\InputenxName{Wdieresis}{1E84}% LATIN CAPITAL LETTER W WITH DIAERESIS +\InputenxName{Wgrave}{1E80}% LATIN CAPITAL LETTER W WITH GRAVE +\InputenxName{Yacute}{00DD}% LATIN CAPITAL LETTER Y WITH ACUTE +\InputenxName{Ycircumflex}{0176}% LATIN CAPITAL LETTER Y WITH CIRCUMFLEX +\InputenxName{Ydieresis}{0178}% LATIN CAPITAL LETTER Y WITH DIAERESIS +\InputenxName{Ygrave}{1EF2}% LATIN CAPITAL LETTER Y WITH GRAVE +\InputenxName{Zacute}{0179}% LATIN CAPITAL LETTER Z WITH ACUTE +\InputenxName{Zcaron}{017D}% LATIN CAPITAL LETTER Z WITH CARON +\InputenxName{Zdot}{017B}% LATIN CAPITAL LETTER Z WITH DOT ABOVE +\InputenxName{Zdotaccent}{017B}% LATIN CAPITAL LETTER Z WITH DOT ABOVE +\InputenxName{aacute}{00E1}% LATIN SMALL LETTER A WITH ACUTE +\InputenxName{abreve}{0103}% LATIN SMALL LETTER A WITH BREVE +\InputenxName{acircumflex}{00E2}% LATIN SMALL LETTER A WITH CIRCUMFLEX +\InputenxName{acute}{00B4}% ACUTE ACCENT +\InputenxName{acutedbl}{02DD}% DOUBLE ACUTE ACCENT +\InputenxName{adieresis}{00E4}% LATIN SMALL LETTER A WITH DIAERESIS +\InputenxName{ae}{00E6}% LATIN SMALL LETTER AE +\InputenxName{agrave}{00E0}% LATIN SMALL LETTER A WITH GRAVE +\InputenxName{alpha}{03B1}% GREEK SMALL LETTER ALPHA +\InputenxName{amacron}{0101}% LATIN SMALL LETTER A WITH MACRON +\InputenxName{aogonek}{0105}% LATIN SMALL LETTER A WITH OGONEK +\InputenxName{approxequal}{2248}% ALMOST EQUAL TO +\InputenxName{aring}{00E5}% LATIN SMALL LETTER A WITH RING ABOVE +\InputenxName{asciiacute}{00B4}% ACUTE ACCENT +\InputenxName{asciibreve}{02D8}% BREVE +\InputenxName{asciicaron}{02C7}% CARON +\InputenxName{asciicircum}{02C6}% MODIFIER LETTER CIRCUMFLEX ACCENT +\InputenxName{asciidieresis}{00A8}% DIAERESIS +\InputenxName{asciigrave}{02CB}% MODIFIER LETTER GRAVE ACCENT +\InputenxName{asciimacron}{00AF}% MACRON +\InputenxName{asciitilde}{02DC}% SMALL TILDE +\InputenxName{atilde}{00E3}% LATIN SMALL LETTER A WITH TILDE +\InputenxName{bdotaccent}{1E03}% LATIN SMALL LETTER B WITH DOT ABOVE +\InputenxName{blacksquare}{25A0}% BLACK SQUARE +\InputenxName{block}{2588}% FULL BLOCK +\InputenxName{breve}{02D8}% BREVE +\InputenxName{brokenbar}{00A6}% BROKEN BAR +\InputenxName{bullet}{2022}% BULLET +\InputenxName{bulletoperator}{2219}% BULLET OPERATOR +\InputenxName{cacute}{0107}% LATIN SMALL LETTER C WITH ACUTE +\InputenxName{caron}{02C7}% CARON +\InputenxName{ccaron}{010D}% LATIN SMALL LETTER C WITH CARON +\InputenxName{ccedilla}{00E7}% LATIN SMALL LETTER C WITH CEDILLA +\InputenxName{ccircumflex}{0109}% LATIN SMALL LETTER C WITH CIRCUMFLEX +\InputenxName{cdot}{010B}% LATIN SMALL LETTER C WITH DOT ABOVE +\InputenxName{cdotaccent}{010B}% LATIN SMALL LETTER C WITH DOT ABOVE +\InputenxName{cedilla}{00B8}% CEDILLA +\InputenxName{cent}{00A2}% CENT SIGN +\InputenxName{circumflex}{02C6}% MODIFIER LETTER CIRCUMFLEX ACCENT +\InputenxName{copyright}{00A9}% COPYRIGHT SIGN +\InputenxName{currency}{00A4}% CURRENCY SIGN +\InputenxName{dagger}{2020}% DAGGER +\InputenxName{daggerdbl}{2021}% DOUBLE DAGGER +\InputenxName{dcaron}{010F}% LATIN SMALL LETTER D WITH CARON +\InputenxName{dcroat}{0111}% LATIN SMALL LETTER D WITH STROKE +\InputenxName{ddotaccent}{1E0B}% LATIN SMALL LETTER D WITH DOT ABOVE +\InputenxName{degree}{00B0}% DEGREE SIGN +\InputenxName{delta}{03B4}% GREEK SMALL LETTER DELTA +\InputenxName{dh}{00F0}% LATIN SMALL LETTER ETH +\InputenxName{dieresis}{00A8}% DIAERESIS +\InputenxName{div}{00F7}% DIVISION SIGN +\InputenxName{divide}{00F7}% DIVISION SIGN +\InputenxName{dj}{0111}% LATIN SMALL LETTER D WITH STROKE +\InputenxName{dkshade}{2593}% DARK SHADE +\InputenxName{dmacron}{0111}% LATIN SMALL LETTER D WITH STROKE +\InputenxName{dnblock}{2584}% LOWER HALF BLOCK +\InputenxName{dotaccent}{02D9}% DOT ABOVE +\InputenxName{dotlessi}{0131}% LATIN SMALL LETTER DOTLESS I +\InputenxName{eacute}{00E9}% LATIN SMALL LETTER E WITH ACUTE +\InputenxName{ecaron}{011B}% LATIN SMALL LETTER E WITH CARON +\InputenxName{ecircumflex}{00EA}% LATIN SMALL LETTER E WITH CIRCUMFLEX +\InputenxName{edieresis}{00EB}% LATIN SMALL LETTER E WITH DIAERESIS +\InputenxName{edot}{0117}% LATIN SMALL LETTER E WITH DOT ABOVE +\InputenxName{edotaccent}{0117}% LATIN SMALL LETTER E WITH DOT ABOVE +\InputenxName{egrave}{00E8}% LATIN SMALL LETTER E WITH GRAVE +\InputenxName{ellipsis}{2026}% HORIZONTAL ELLIPSIS +\InputenxName{emacron}{0113}% LATIN SMALL LETTER E WITH MACRON +\InputenxName{emdash}{2014}% EM DASH +\InputenxName{endash}{2013}% EN DASH +\InputenxName{eng}{014B}% LATIN SMALL LETTER ENG +\InputenxName{eogonek}{0119}% LATIN SMALL LETTER E WITH OGONEK +\InputenxName{epsilon}{03B5}% GREEK SMALL LETTER EPSILON +\InputenxName{equivalence}{2261}% IDENTICAL TO +\InputenxName{eth}{00F0}% LATIN SMALL LETTER ETH +\InputenxName{euro}{20AC}% EURO SIGN +\InputenxName{exclamdown}{00A1}% INVERTED EXCLAMATION MARK +\InputenxName{fdotaccent}{1E1F}% LATIN SMALL LETTER F WITH DOT ABOVE +\InputenxName{fi}{FB01}% LATIN SMALL LIGATURE FI +\InputenxName{filledbox}{25A0}% BLACK SQUARE +\InputenxName{fl}{FB02}% LATIN SMALL LIGATURE FL +\InputenxName{florin}{0192}% LATIN SMALL LETTER F WITH HOOK +\InputenxName{fourthtonechinese}{02CB}% MODIFIER LETTER GRAVE ACCENT +\InputenxName{fraction}{2044}% FRACTION SLASH +\InputenxName{fractionsolidus}{2044}% FRACTION SLASH +\InputenxName{gbreve}{011F}% LATIN SMALL LETTER G WITH BREVE +\InputenxName{gcedilla}{0123}% LATIN SMALL LETTER G WITH CEDILLA +\InputenxName{gcircumflex}{011D}% LATIN SMALL LETTER G WITH CIRCUMFLEX +\InputenxName{gcommaaccent}{0123}% LATIN SMALL LETTER G WITH CEDILLA +\InputenxName{gdot}{0121}% LATIN SMALL LETTER G WITH DOT ABOVE +\InputenxName{gdotaccent}{0121}% LATIN SMALL LETTER G WITH DOT ABOVE +\InputenxName{germandbls}{00DF}% LATIN SMALL LETTER SHARP S +\InputenxName{greaterequal}{2265}% GREATER-THAN OR EQUAL TO +\InputenxName{guillemotleft}{00AB}% LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +\InputenxName{guillemotright}{00BB}% RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +\InputenxName{guilsinglleft}{2039}% SINGLE LEFT-POINTING ANGLE QUOTATION MARK +\InputenxName{guilsinglright}{203A}% SINGLE RIGHT-POINTING ANGLE QUOTATION MARK +\InputenxName{hbar}{0127}% LATIN SMALL LETTER H WITH STROKE +\InputenxName{hcircumflex}{0125}% LATIN SMALL LETTER H WITH CIRCUMFLEX +\InputenxName{hungarumlaut}{02DD}% DOUBLE ACUTE ACCENT +\InputenxName{iacute}{00ED}% LATIN SMALL LETTER I WITH ACUTE +\InputenxName{icircumflex}{00EE}% LATIN SMALL LETTER I WITH CIRCUMFLEX +\InputenxName{idieresis}{00EF}% LATIN SMALL LETTER I WITH DIAERESIS +\InputenxName{igrave}{00EC}% LATIN SMALL LETTER I WITH GRAVE +\InputenxName{ilde}{02DC}% SMALL TILDE +\InputenxName{imacron}{012B}% LATIN SMALL LETTER I WITH MACRON +\InputenxName{increment}{2206}% INCREMENT +\InputenxName{infinity}{221E}% INFINITY +\InputenxName{integral}{222B}% INTEGRAL +\InputenxName{intersection}{2229}% INTERSECTION +\InputenxName{iogonek}{012F}% LATIN SMALL LETTER I WITH OGONEK +\InputenxName{itilde}{0129}% LATIN SMALL LETTER I WITH TILDE +\InputenxName{jcircumflex}{0135}% LATIN SMALL LETTER J WITH CIRCUMFLEX +\InputenxName{kcedilla}{0137}% LATIN SMALL LETTER K WITH CEDILLA +\InputenxName{kcommaaccent}{0137}% LATIN SMALL LETTER K WITH CEDILLA +\InputenxName{kgreenlandic}{0138}% LATIN SMALL LETTER KRA +\InputenxName{kra}{0138}% LATIN SMALL LETTER KRA +\InputenxName{lacute}{013A}% LATIN SMALL LETTER L WITH ACUTE +\InputenxName{lcaron}{013E}% LATIN SMALL LETTER L WITH CARON +\InputenxName{lcedilla}{013C}% LATIN SMALL LETTER L WITH CEDILLA +\InputenxName{lcommaaccent}{013C}% LATIN SMALL LETTER L WITH CEDILLA +\InputenxName{lessequal}{2264}% LESS-THAN OR EQUAL TO +\InputenxName{lfblock}{258C}% LEFT HALF BLOCK +\InputenxName{lnot}{00AC}% NOT SIGN +\InputenxName{logicalnot}{00AC}% NOT SIGN +\InputenxName{lozenge}{25CA}% LOZENGE +\InputenxName{lslash}{0142}% LATIN SMALL LETTER L WITH STROKE +\InputenxName{ltshade}{2591}% LIGHT SHADE +\InputenxName{macron}{00AF}% MACRON +\InputenxName{malteseH}{0126}% LATIN CAPITAL LETTER H WITH STROKE +\InputenxName{malteseh}{0127}% LATIN SMALL LETTER H WITH STROKE +\InputenxName{mdotaccent}{1E41}% LATIN SMALL LETTER M WITH DOT ABOVE +\InputenxName{middot}{00B7}% MIDDLE DOT +\InputenxName{mu}{00B5}% MICRO SIGN +\InputenxName{multiply}{00D7}% MULTIPLICATION SIGN +\InputenxName{nacute}{0144}% LATIN SMALL LETTER N WITH ACUTE +\InputenxName{nbspace}{00A0}% NO-BREAK SPACE +\InputenxName{ncaron}{0148}% LATIN SMALL LETTER N WITH CARON +\InputenxName{ncedilla}{0146}% LATIN SMALL LETTER N WITH CEDILLA +\InputenxName{ncommaaccent}{0146}% LATIN SMALL LETTER N WITH CEDILLA +\InputenxName{ng}{014B}% LATIN SMALL LETTER ENG +\InputenxName{nobreakspace}{00A0}% NO-BREAK SPACE +\InputenxName{nonbreakingspace}{00A0}% NO-BREAK SPACE +\InputenxName{notequal}{2260}% NOT EQUAL TO +\InputenxName{nsuperior}{207F}% SUPERSCRIPT LATIN SMALL LETTER N +\InputenxName{ntilde}{00F1}% LATIN SMALL LETTER N WITH TILDE +\InputenxName{oacute}{00F3}% LATIN SMALL LETTER O WITH ACUTE +\InputenxName{ocircumflex}{00F4}% LATIN SMALL LETTER O WITH CIRCUMFLEX +\InputenxName{odblacute}{0151}% LATIN SMALL LETTER O WITH DOUBLE ACUTE +\InputenxName{odieresis}{00F6}% LATIN SMALL LETTER O WITH DIAERESIS +\InputenxName{oe}{0153}% LATIN SMALL LIGATURE OE +\InputenxName{ogonek}{02DB}% OGONEK +\InputenxName{ograve}{00F2}% LATIN SMALL LETTER O WITH GRAVE +\InputenxName{ohungarumlaut}{0151}% LATIN SMALL LETTER O WITH DOUBLE ACUTE +\InputenxName{omacron}{014D}% LATIN SMALL LETTER O WITH MACRON +\InputenxName{onehalf}{00BD}% VULGAR FRACTION ONE HALF +\InputenxName{onequarter}{00BC}% VULGAR FRACTION ONE QUARTER +\InputenxName{onesuperior}{00B9}% SUPERSCRIPT ONE +\InputenxName{ordfeminine}{00AA}% FEMININE ORDINAL INDICATOR +\InputenxName{ordmasculine}{00BA}% MASCULINE ORDINAL INDICATOR +\InputenxName{oslash}{00F8}% LATIN SMALL LETTER O WITH STROKE +\InputenxName{otilde}{00F5}% LATIN SMALL LETTER O WITH TILDE +\InputenxName{overscore}{00AF}% MACRON +\InputenxName{paragraph}{00B6}% PILCROW SIGN +\InputenxName{partial}{2202}% PARTIAL DIFFERENTIAL +\InputenxName{partialdiff}{2202}% PARTIAL DIFFERENTIAL +\InputenxName{pdotaccent}{1E57}% LATIN SMALL LETTER P WITH DOT ABOVE +\InputenxName{periodcentered}{00B7}% MIDDLE DOT +\InputenxName{perthousand}{2030}% PER MILLE SIGN +\InputenxName{peseta}{20A7}% PESETA SIGN +\InputenxName{phi}{03C6}% GREEK SMALL LETTER PHI +\InputenxName{pi}{03C0}% GREEK SMALL LETTER PI +\InputenxName{plusminus}{00B1}% PLUS-MINUS SIGN +\InputenxName{pm}{00B1}% PLUS-MINUS SIGN +\InputenxName{product}{220F}% N-ARY PRODUCT +\InputenxName{questiondown}{00BF}% INVERTED QUESTION MARK +\InputenxName{quotedblbase}{201E}% DOUBLE LOW-9 QUOTATION MARK +\InputenxName{quotedblleft}{201C}% LEFT DOUBLE QUOTATION MARK +\InputenxName{quotedblright}{201D}% RIGHT DOUBLE QUOTATION MARK +\InputenxName{quoteleft}{2018}% LEFT SINGLE QUOTATION MARK +\InputenxName{quoteright}{2019}% RIGHT SINGLE QUOTATION MARK +\InputenxName{quotesinglbase}{201A}% SINGLE LOW-9 QUOTATION MARK +\InputenxName{racute}{0155}% LATIN SMALL LETTER R WITH ACUTE +\InputenxName{radical}{221A}% SQUARE ROOT +\InputenxName{rcaron}{0159}% LATIN SMALL LETTER R WITH CARON +\InputenxName{rcedilla}{0157}% LATIN SMALL LETTER R WITH CEDILLA +\InputenxName{rcommaaccent}{0157}% LATIN SMALL LETTER R WITH CEDILLA +\InputenxName{registered}{00AE}% REGISTERED SIGN +\InputenxName{ring}{02DA}% RING ABOVE +\InputenxName{rtblock}{2590}% RIGHT HALF BLOCK +\InputenxName{sacute}{015B}% LATIN SMALL LETTER S WITH ACUTE +\InputenxName{scaron}{0161}% LATIN SMALL LETTER S WITH CARON +\InputenxName{scedilla}{015F}% LATIN SMALL LETTER S WITH CEDILLA +\InputenxName{scircumflex}{015D}% LATIN SMALL LETTER S WITH CIRCUMFLEX +\InputenxName{scommaaccent}{0219}% LATIN SMALL LETTER S WITH COMMA BELOW +\InputenxName{sdotaccent}{1E61}% LATIN SMALL LETTER S WITH DOT ABOVE +\InputenxName{section}{00A7}% SECTION SIGN +\InputenxName{sfthyphen}{00AD}% SOFT HYPHEN +\InputenxName{shade}{2592}% MEDIUM SHADE +\InputenxName{shadedark}{2593}% DARK SHADE +\InputenxName{shadelight}{2591}% LIGHT SHADE +\InputenxName{shademedium}{2592}% MEDIUM SHADE +\InputenxName{sigma}{03C3}% GREEK SMALL LETTER SIGMA +\InputenxName{softhyphen}{00AD}% SOFT HYPHEN +\InputenxName{ss}{00DF}% LATIN SMALL LETTER SHARP S +\InputenxName{sterling}{00A3}% POUND SIGN +\InputenxName{summation}{2211}% N-ARY SUMMATION +\InputenxName{surd}{221A}% SQUARE ROOT +\InputenxName{tau}{03C4}% GREEK SMALL LETTER TAU +\InputenxName{tbar}{0167}% LATIN SMALL LETTER T WITH STROKE +\InputenxName{tcaron}{0165}% LATIN SMALL LETTER T WITH CARON +\InputenxName{tcedilla}{0163}% LATIN SMALL LETTER T WITH CEDILLA +\InputenxName{tcommaaccent}{0163}% LATIN SMALL LETTER T WITH CEDILLA +\InputenxName{tdotaccent}{1E6B}% LATIN SMALL LETTER T WITH DOT ABOVE +\InputenxName{th}{00FE}% LATIN SMALL LETTER THORN +\InputenxName{thorn}{00FE}% LATIN SMALL LETTER THORN +\InputenxName{threequarters}{00BE}% VULGAR FRACTION THREE QUARTERS +\InputenxName{threesuperior}{00B3}% SUPERSCRIPT THREE +\InputenxName{tilde}{02DC}% SMALL TILDE +\InputenxName{times}{00D7}% MULTIPLICATION SIGN +\InputenxName{trademark}{2122}% TRADE MARK SIGN +\InputenxName{tstroke}{0167}% LATIN SMALL LETTER T WITH STROKE +\InputenxName{twosuperior}{00B2}% SUPERSCRIPT TWO +\InputenxName{uacute}{00FA}% LATIN SMALL LETTER U WITH ACUTE +\InputenxName{ubreve}{016D}% LATIN SMALL LETTER U WITH BREVE +\InputenxName{ucircumflex}{00FB}% LATIN SMALL LETTER U WITH CIRCUMFLEX +\InputenxName{udblacute}{0171}% LATIN SMALL LETTER U WITH DOUBLE ACUTE +\InputenxName{udieresis}{00FC}% LATIN SMALL LETTER U WITH DIAERESIS +\InputenxName{ugrave}{00F9}% LATIN SMALL LETTER U WITH GRAVE +\InputenxName{uhungarumlaut}{0171}% LATIN SMALL LETTER U WITH DOUBLE ACUTE +\InputenxName{umacron}{016B}% LATIN SMALL LETTER U WITH MACRON +\InputenxName{uogonek}{0173}% LATIN SMALL LETTER U WITH OGONEK +\InputenxName{upblock}{2580}% UPPER HALF BLOCK +\InputenxName{uring}{016F}% LATIN SMALL LETTER U WITH RING ABOVE +\InputenxName{utilde}{0169}% LATIN SMALL LETTER U WITH TILDE +\InputenxName{wacute}{1E83}% LATIN SMALL LETTER W WITH ACUTE +\InputenxName{wcircumflex}{0175}% LATIN SMALL LETTER W WITH CIRCUMFLEX +\InputenxName{wdieresis}{1E85}% LATIN SMALL LETTER W WITH DIAERESIS +\InputenxName{wgrave}{1E81}% LATIN SMALL LETTER W WITH GRAVE +\InputenxName{yacute}{00FD}% LATIN SMALL LETTER Y WITH ACUTE +\InputenxName{ycircumflex}{0177}% LATIN SMALL LETTER Y WITH CIRCUMFLEX +\InputenxName{ydieresis}{00FF}% LATIN SMALL LETTER Y WITH DIAERESIS +\InputenxName{yen}{00A5}% YEN SIGN +\InputenxName{ygrave}{1EF3}% LATIN SMALL LETTER Y WITH GRAVE +\InputenxName{zacute}{017A}% LATIN SMALL LETTER Z WITH ACUTE +\InputenxName{zcaron}{017E}% LATIN SMALL LETTER Z WITH CARON +\InputenxName{zdot}{017C}% LATIN SMALL LETTER Z WITH DOT ABOVE +\InputenxName{zdotaccent}{017C}% LATIN SMALL LETTER Z WITH DOT ABOVE +% \end{macrocode} +% \fi +% +% \begin{macrocode} +%</name> +% \end{macrocode} +% +% \subsection{Mapping Slot, UC to Encodings} +% +% \begin{macrocode} +%<*slot> +\ProvidesFile{ix-slot.def}% + [2006/08/24 v1.0 SLOT and UC to Encodings (inputenx)] +% \end{macrocode} +% +% \textit{List omitted here, see \xfile{ix-slot.def}.} +% \iffalse +% \begin{macrocode} +\InputenxSlot{128}{00A0}{\do{nextstep}} +\InputenxSlot{128}{00C4}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{128}{00C7}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{128}{20AC}{\do{cp1250}\do{cp1252}\do{cp1257}} +\InputenxSlot{129}{00C0}{\do{nextstep}} +\InputenxSlot{129}{00C5}{\do{mac-roman}} +\InputenxSlot{129}{00FC}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{129}{0100}{\do{mac-ce}} +\InputenxSlot{130}{00C1}{\do{nextstep}} +\InputenxSlot{130}{00C7}{\do{mac-roman}} +\InputenxSlot{130}{00E9}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{130}{0101}{\do{mac-ce}} +\InputenxSlot{130}{201A}{\do{cp1250}\do{cp1252}\do{cp1257}} +\InputenxSlot{131}{00C2}{\do{nextstep}} +\InputenxSlot{131}{00C9}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{131}{00E2}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{131}{0192}{\do{cp1252}} +\InputenxSlot{132}{00C3}{\do{nextstep}} +\InputenxSlot{132}{00D1}{\do{mac-roman}} +\InputenxSlot{132}{00E4}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{132}{0104}{\do{mac-ce}} +\InputenxSlot{132}{201E}{\do{cp1250}\do{cp1252}\do{cp1257}} +\InputenxSlot{133}{00C4}{\do{nextstep}} +\InputenxSlot{133}{00D6}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{133}{00E0}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{133}{016F}{\do{cp852}} +\InputenxSlot{133}{2026}{\do{cp1250}\do{cp1252}\do{cp1257}} +\InputenxSlot{134}{00C5}{\do{nextstep}} +\InputenxSlot{134}{00DC}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{134}{00E5}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{134}{0107}{\do{cp852}} +\InputenxSlot{134}{2020}{\do{cp1250}\do{cp1252}\do{cp1257}} +\InputenxSlot{135}{00C7}{\do{nextstep}} +\InputenxSlot{135}{00E1}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{135}{00E7}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{135}{2021}{\do{cp1250}\do{cp1252}\do{cp1257}} +\InputenxSlot{136}{00C8}{\do{nextstep}} +\InputenxSlot{136}{00E0}{\do{mac-roman}} +\InputenxSlot{136}{00EA}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{136}{0105}{\do{mac-ce}} +\InputenxSlot{136}{0142}{\do{cp852}} +\InputenxSlot{136}{02C6}{\do{cp1252}} +\InputenxSlot{137}{00C9}{\do{nextstep}} +\InputenxSlot{137}{00E2}{\do{mac-roman}} +\InputenxSlot{137}{00EB}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{137}{010C}{\do{mac-ce}} +\InputenxSlot{137}{2030}{\do{cp1250}\do{cp1252}\do{cp1257}} +\InputenxSlot{138}{00CA}{\do{nextstep}} +\InputenxSlot{138}{00E4}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{138}{00E8}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{138}{0150}{\do{cp852}} +\InputenxSlot{138}{0160}{\do{cp1250}\do{cp1252}} +\InputenxSlot{139}{00CB}{\do{nextstep}} +\InputenxSlot{139}{00E3}{\do{mac-roman}} +\InputenxSlot{139}{00EF}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{139}{010D}{\do{mac-ce}} +\InputenxSlot{139}{0151}{\do{cp852}} +\InputenxSlot{139}{2039}{\do{cp1250}\do{cp1252}\do{cp1257}} +\InputenxSlot{140}{00CC}{\do{nextstep}} +\InputenxSlot{140}{00E5}{\do{mac-roman}} +\InputenxSlot{140}{00EE}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{140}{0106}{\do{mac-ce}} +\InputenxSlot{140}{0152}{\do{cp1252}} +\InputenxSlot{140}{015A}{\do{cp1250}} +\InputenxSlot{141}{00A8}{\do{cp1257}} +\InputenxSlot{141}{00CD}{\do{nextstep}} +\InputenxSlot{141}{00E7}{\do{mac-roman}} +\InputenxSlot{141}{00EC}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{141}{0107}{\do{mac-ce}} +\InputenxSlot{141}{0164}{\do{cp1250}} +\InputenxSlot{141}{0179}{\do{cp852}} +\InputenxSlot{142}{00C4}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{142}{00CE}{\do{nextstep}} +\InputenxSlot{142}{00E9}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{142}{017D}{\do{cp1250}\do{cp1252}} +\InputenxSlot{142}{02C7}{\do{cp1257}} +\InputenxSlot{143}{00B8}{\do{cp1257}} +\InputenxSlot{143}{00C5}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{143}{00CF}{\do{nextstep}} +\InputenxSlot{143}{00E8}{\do{mac-roman}} +\InputenxSlot{143}{0106}{\do{cp852}} +\InputenxSlot{143}{0179}{\do{cp1250}\do{mac-ce}} +\InputenxSlot{144}{00C9}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{144}{00D0}{\do{nextstep}} +\InputenxSlot{144}{00EA}{\do{mac-roman}} +\InputenxSlot{144}{017A}{\do{mac-ce}} +\InputenxSlot{145}{00D1}{\do{nextstep}} +\InputenxSlot{145}{00E6}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{145}{00EB}{\do{mac-roman}} +\InputenxSlot{145}{010E}{\do{mac-ce}} +\InputenxSlot{145}{0139}{\do{cp852}} +\InputenxSlot{145}{2018}{\do{cp1250}\do{cp1252}\do{cp1257}} +\InputenxSlot{146}{00C6}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{146}{00D2}{\do{nextstep}} +\InputenxSlot{146}{00ED}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{146}{013A}{\do{cp852}} +\InputenxSlot{146}{2019}{\do{cp1250}\do{cp1252}\do{cp1257}} +\InputenxSlot{147}{00D3}{\do{nextstep}} +\InputenxSlot{147}{00EC}{\do{mac-roman}} +\InputenxSlot{147}{00F4}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{147}{010F}{\do{mac-ce}} +\InputenxSlot{147}{201C}{\do{cp1250}\do{cp1252}\do{cp1257}} +\InputenxSlot{148}{00D4}{\do{nextstep}} +\InputenxSlot{148}{00EE}{\do{mac-roman}} +\InputenxSlot{148}{00F6}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{148}{0112}{\do{mac-ce}} +\InputenxSlot{148}{201D}{\do{cp1250}\do{cp1252}\do{cp1257}} +\InputenxSlot{149}{00D5}{\do{nextstep}} +\InputenxSlot{149}{00EF}{\do{mac-roman}} +\InputenxSlot{149}{00F2}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{149}{0113}{\do{mac-ce}} +\InputenxSlot{149}{013D}{\do{cp852}} +\InputenxSlot{149}{2022}{\do{cp1250}\do{cp1252}\do{cp1257}} +\InputenxSlot{150}{00D6}{\do{nextstep}} +\InputenxSlot{150}{00F1}{\do{mac-roman}} +\InputenxSlot{150}{00FB}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{150}{0116}{\do{mac-ce}} +\InputenxSlot{150}{013E}{\do{cp852}} +\InputenxSlot{150}{2013}{\do{cp1250}\do{cp1252}\do{cp1257}} +\InputenxSlot{151}{00D9}{\do{nextstep}} +\InputenxSlot{151}{00F3}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{151}{00F9}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{151}{015A}{\do{cp852}} +\InputenxSlot{151}{2014}{\do{cp1250}\do{cp1252}\do{cp1257}} +\InputenxSlot{152}{00DA}{\do{nextstep}} +\InputenxSlot{152}{00F2}{\do{mac-roman}} +\InputenxSlot{152}{00FF}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{152}{0117}{\do{mac-ce}} +\InputenxSlot{152}{015B}{\do{cp852}} +\InputenxSlot{152}{02DC}{\do{cp1252}} +\InputenxSlot{153}{00D6}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{153}{00DB}{\do{nextstep}} +\InputenxSlot{153}{00F4}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{153}{2122}{\do{cp1250}\do{cp1252}\do{cp1257}} +\InputenxSlot{154}{00DC}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}\do{nextstep}% +} +\InputenxSlot{154}{00F6}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{154}{0161}{\do{cp1250}\do{cp1252}} +\InputenxSlot{155}{00A2}{\do{cp437}} +\InputenxSlot{155}{00DD}{\do{nextstep}} +\InputenxSlot{155}{00F5}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{155}{00F8}{\do{cp850}\do{cp858}\do{cp865}} +\InputenxSlot{155}{0164}{\do{cp852}} +\InputenxSlot{155}{203A}{\do{cp1250}\do{cp1252}\do{cp1257}} +\InputenxSlot{156}{00A3}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{156}{00DE}{\do{nextstep}} +\InputenxSlot{156}{00FA}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{156}{0153}{\do{cp1252}} +\InputenxSlot{156}{015B}{\do{cp1250}} +\InputenxSlot{156}{0165}{\do{cp852}} +\InputenxSlot{157}{00A5}{\do{cp437}} +\InputenxSlot{157}{00AF}{\do{cp1257}} +\InputenxSlot{157}{00B5}{\do{nextstep}} +\InputenxSlot{157}{00D8}{\do{cp850}\do{cp858}\do{cp865}} +\InputenxSlot{157}{00F9}{\do{mac-roman}} +\InputenxSlot{157}{011A}{\do{mac-ce}} +\InputenxSlot{157}{0141}{\do{cp852}} +\InputenxSlot{157}{0165}{\do{cp1250}} +\InputenxSlot{158}{00D7}{% + \do{cp850}\do{cp852}\do{cp858}\do{nextstep}% +} +\InputenxSlot{158}{00FB}{\do{mac-roman}} +\InputenxSlot{158}{011B}{\do{mac-ce}} +\InputenxSlot{158}{017E}{\do{cp1250}\do{cp1252}} +\InputenxSlot{158}{02DB}{\do{cp1257}} +\InputenxSlot{158}{20A7}{\do{cp437}\do{cp865}} +\InputenxSlot{159}{00F7}{\do{nextstep}} +\InputenxSlot{159}{00FC}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{159}{010D}{\do{cp852}} +\InputenxSlot{159}{0178}{\do{cp1252}} +\InputenxSlot{159}{017A}{\do{cp1250}} +\InputenxSlot{159}{0192}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{160}{00A0}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-13}\do{iso-8859-14}% + \do{iso-8859-15}\do{iso-8859-16}\do{cp1250}\do{cp1252}\do{cp1257}% +} +\InputenxSlot{160}{00A9}{\do{nextstep}} +\InputenxSlot{160}{00E1}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{160}{2020}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{161}{00A1}{% + \do{iso-8859-1}\do{iso-8859-9}\do{iso-8859-15}\do{cp1252}% + \do{nextstep}\do{dec-mcs}% +} +\InputenxSlot{161}{00B0}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{161}{00ED}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{161}{0104}{% + \do{iso-8859-2}\do{iso-8859-4}\do{iso-8859-10}\do{iso-8859-16}% +} +\InputenxSlot{161}{0126}{\do{iso-8859-3}} +\InputenxSlot{161}{02C7}{\do{cp1250}} +\InputenxSlot{161}{1E02}{\do{iso-8859-14}} +\InputenxSlot{161}{201D}{\do{iso-8859-13}} +\InputenxSlot{162}{00A2}{% + \do{iso-8859-1}\do{iso-8859-9}\do{iso-8859-13}\do{iso-8859-15}% + \do{cp1252}\do{cp1257}\do{mac-roman}\do{nextstep}\do{dec-mcs}% +} +\InputenxSlot{162}{00F3}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{162}{0105}{\do{iso-8859-16}} +\InputenxSlot{162}{0112}{\do{iso-8859-10}} +\InputenxSlot{162}{0118}{\do{mac-ce}} +\InputenxSlot{162}{0138}{\do{iso-8859-4}} +\InputenxSlot{162}{02D8}{\do{iso-8859-2}\do{iso-8859-3}\do{cp1250}} +\InputenxSlot{162}{1E03}{\do{iso-8859-14}} +\InputenxSlot{163}{00A3}{% + \do{iso-8859-1}\do{iso-8859-3}\do{iso-8859-9}\do{iso-8859-13}% + \do{iso-8859-14}\do{iso-8859-15}\do{cp1252}\do{cp1257}% + \do{mac-roman}\do{mac-ce}\do{nextstep}\do{dec-mcs}% +} +\InputenxSlot{163}{00FA}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{163}{0122}{\do{iso-8859-10}} +\InputenxSlot{163}{0141}{\do{iso-8859-2}\do{iso-8859-16}\do{cp1250}} +\InputenxSlot{163}{0156}{\do{iso-8859-4}} +\InputenxSlot{164}{00A4}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-13}\do{cp1250}\do{cp1252}\do{cp1257}% +} +\InputenxSlot{164}{00A7}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{164}{00F1}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{164}{0104}{\do{cp852}} +\InputenxSlot{164}{010A}{\do{iso-8859-14}} +\InputenxSlot{164}{012A}{\do{iso-8859-10}} +\InputenxSlot{164}{2044}{\do{nextstep}} +\InputenxSlot{164}{20AC}{\do{iso-8859-15}\do{iso-8859-16}} +\InputenxSlot{165}{00A5}{% + \do{iso-8859-1}\do{iso-8859-9}\do{iso-8859-15}\do{cp1252}% + \do{nextstep}\do{dec-mcs}% +} +\InputenxSlot{165}{00D1}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{165}{0104}{\do{cp1250}} +\InputenxSlot{165}{0105}{\do{cp852}} +\InputenxSlot{165}{010B}{\do{iso-8859-14}} +\InputenxSlot{165}{0128}{\do{iso-8859-4}\do{iso-8859-10}} +\InputenxSlot{165}{013D}{\do{iso-8859-2}} +\InputenxSlot{165}{201E}{\do{iso-8859-13}\do{iso-8859-16}} +\InputenxSlot{165}{2022}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{166}{00A6}{% + \do{iso-8859-1}\do{iso-8859-9}\do{iso-8859-13}\do{cp1250}% + \do{cp1252}\do{cp1257}% +} +\InputenxSlot{166}{00AA}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{166}{00B6}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{166}{0124}{\do{iso-8859-3}} +\InputenxSlot{166}{0136}{\do{iso-8859-10}} +\InputenxSlot{166}{013B}{\do{iso-8859-4}} +\InputenxSlot{166}{015A}{\do{iso-8859-2}} +\InputenxSlot{166}{0160}{\do{iso-8859-15}\do{iso-8859-16}} +\InputenxSlot{166}{017D}{\do{cp852}} +\InputenxSlot{166}{0192}{\do{nextstep}} +\InputenxSlot{166}{1E0A}{\do{iso-8859-14}} +\InputenxSlot{167}{00A7}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-13}\do{iso-8859-14}% + \do{iso-8859-15}\do{iso-8859-16}\do{cp1250}\do{cp1252}\do{cp1257}% + \do{nextstep}\do{dec-mcs}% +} +\InputenxSlot{167}{00BA}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{167}{00DF}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{167}{017E}{\do{cp852}} +\InputenxSlot{168}{00A4}{\do{nextstep}\do{dec-mcs}} +\InputenxSlot{168}{00A8}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{cp1250}\do{cp1252}% +} +\InputenxSlot{168}{00AE}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{168}{00BF}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{168}{00D8}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{168}{0118}{\do{cp852}} +\InputenxSlot{168}{013B}{\do{iso-8859-10}} +\InputenxSlot{168}{0161}{\do{iso-8859-15}\do{iso-8859-16}} +\InputenxSlot{168}{1E80}{\do{iso-8859-14}} +\InputenxSlot{169}{00A9}{% + \do{iso-8859-1}\do{iso-8859-9}\do{iso-8859-13}\do{iso-8859-14}% + \do{iso-8859-15}\do{iso-8859-16}\do{cp1250}\do{cp1252}\do{cp1257}% + \do{mac-roman}\do{mac-ce}\do{dec-mcs}% +} +\InputenxSlot{169}{00AE}{\do{cp850}\do{cp858}} +\InputenxSlot{169}{0110}{\do{iso-8859-10}} +\InputenxSlot{169}{0119}{\do{cp852}} +\InputenxSlot{169}{0130}{\do{iso-8859-3}} +\InputenxSlot{169}{0160}{\do{iso-8859-2}\do{iso-8859-4}} +\InputenxSlot{169}{2019}{\do{nextstep}} +\InputenxSlot{170}{00AA}{% + \do{iso-8859-1}\do{iso-8859-9}\do{iso-8859-15}\do{cp1252}% + \do{dec-mcs}% +} +\InputenxSlot{170}{00AC}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{170}{0112}{\do{iso-8859-4}} +\InputenxSlot{170}{0156}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{170}{015E}{\do{iso-8859-2}\do{iso-8859-3}\do{cp1250}} +\InputenxSlot{170}{0160}{\do{iso-8859-10}} +\InputenxSlot{170}{0218}{\do{iso-8859-16}} +\InputenxSlot{170}{1E82}{\do{iso-8859-14}} +\InputenxSlot{170}{201C}{\do{nextstep}} +\InputenxSlot{170}{2122}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{171}{00AB}{% + \do{iso-8859-1}\do{iso-8859-9}\do{iso-8859-13}\do{iso-8859-15}% + \do{iso-8859-16}\do{cp1250}\do{cp1252}\do{cp1257}\do{nextstep}% + \do{dec-mcs}% +} +\InputenxSlot{171}{00B4}{\do{mac-roman}} +\InputenxSlot{171}{00BD}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{171}{0119}{\do{mac-ce}} +\InputenxSlot{171}{011E}{\do{iso-8859-3}} +\InputenxSlot{171}{0122}{\do{iso-8859-4}} +\InputenxSlot{171}{0164}{\do{iso-8859-2}} +\InputenxSlot{171}{0166}{\do{iso-8859-10}} +\InputenxSlot{171}{017A}{\do{cp852}} +\InputenxSlot{171}{1E0B}{\do{iso-8859-14}} +\InputenxSlot{172}{00A8}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{172}{00AC}{% + \do{iso-8859-1}\do{iso-8859-9}\do{iso-8859-13}\do{iso-8859-15}% + \do{cp1250}\do{cp1252}\do{cp1257}% +} +\InputenxSlot{172}{00BC}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{172}{010C}{\do{cp852}} +\InputenxSlot{172}{0134}{\do{iso-8859-3}} +\InputenxSlot{172}{0166}{\do{iso-8859-4}} +\InputenxSlot{172}{0179}{\do{iso-8859-2}\do{iso-8859-16}} +\InputenxSlot{172}{017D}{\do{iso-8859-10}} +\InputenxSlot{172}{1EF2}{\do{iso-8859-14}} +\InputenxSlot{172}{2039}{\do{nextstep}} +\InputenxSlot{173}{00A1}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{173}{00AD}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-13}\do{iso-8859-14}% + \do{iso-8859-15}\do{iso-8859-16}\do{cp1250}\do{cp1252}\do{cp1257}% +} +\InputenxSlot{173}{015F}{\do{cp852}} +\InputenxSlot{173}{203A}{\do{nextstep}} +\InputenxSlot{173}{2260}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{174}{00AB}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{174}{00AE}{% + \do{iso-8859-1}\do{iso-8859-9}\do{iso-8859-13}\do{iso-8859-14}% + \do{iso-8859-15}\do{cp1250}\do{cp1252}\do{cp1257}% +} +\InputenxSlot{174}{00C6}{\do{mac-roman}} +\InputenxSlot{174}{0123}{\do{mac-ce}} +\InputenxSlot{174}{016A}{\do{iso-8859-10}} +\InputenxSlot{174}{017A}{\do{iso-8859-16}} +\InputenxSlot{174}{017D}{\do{iso-8859-2}\do{iso-8859-4}} +\InputenxSlot{174}{FB01}{\do{nextstep}} +\InputenxSlot{175}{00A4}{\do{cp865}} +\InputenxSlot{175}{00AF}{% + \do{iso-8859-1}\do{iso-8859-4}\do{iso-8859-9}\do{iso-8859-15}% + \do{cp1252}% +} +\InputenxSlot{175}{00BB}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}% +} +\InputenxSlot{175}{00C6}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{175}{00D8}{\do{mac-roman}} +\InputenxSlot{175}{012E}{\do{mac-ce}} +\InputenxSlot{175}{014A}{\do{iso-8859-10}} +\InputenxSlot{175}{0178}{\do{iso-8859-14}} +\InputenxSlot{175}{017B}{% + \do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-16}\do{cp1250}% +} +\InputenxSlot{175}{FB02}{\do{nextstep}} +\InputenxSlot{176}{00AE}{\do{nextstep}} +\InputenxSlot{176}{00B0}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-13}\do{iso-8859-15}% + \do{iso-8859-16}\do{cp1250}\do{cp1252}\do{cp1257}\do{dec-mcs}% +} +\InputenxSlot{176}{012F}{\do{mac-ce}} +\InputenxSlot{176}{1E1E}{\do{iso-8859-14}} +\InputenxSlot{176}{221E}{\do{mac-roman}} +\InputenxSlot{176}{2591}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{177}{00B1}{% + \do{iso-8859-1}\do{iso-8859-9}\do{iso-8859-13}\do{iso-8859-15}% + \do{iso-8859-16}\do{cp1250}\do{cp1252}\do{cp1257}\do{mac-roman}% + \do{dec-mcs}% +} +\InputenxSlot{177}{0105}{\do{iso-8859-2}\do{iso-8859-4}\do{iso-8859-10}} +\InputenxSlot{177}{0127}{\do{iso-8859-3}} +\InputenxSlot{177}{012A}{\do{mac-ce}} +\InputenxSlot{177}{1E1F}{\do{iso-8859-14}} +\InputenxSlot{177}{2013}{\do{nextstep}} +\InputenxSlot{177}{2592}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{178}{00B2}{% + \do{iso-8859-1}\do{iso-8859-3}\do{iso-8859-9}\do{iso-8859-13}% + \do{iso-8859-15}\do{cp1252}\do{cp1257}\do{dec-mcs}% +} +\InputenxSlot{178}{010C}{\do{iso-8859-16}} +\InputenxSlot{178}{0113}{\do{iso-8859-10}} +\InputenxSlot{178}{0120}{\do{iso-8859-14}} +\InputenxSlot{178}{02DB}{\do{iso-8859-2}\do{iso-8859-4}\do{cp1250}} +\InputenxSlot{178}{2020}{\do{nextstep}} +\InputenxSlot{178}{2264}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{178}{2593}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{179}{00B3}{% + \do{iso-8859-1}\do{iso-8859-3}\do{iso-8859-9}\do{iso-8859-13}% + \do{iso-8859-15}\do{cp1252}\do{cp1257}\do{dec-mcs}% +} +\InputenxSlot{179}{0121}{\do{iso-8859-14}} +\InputenxSlot{179}{0123}{\do{iso-8859-10}} +\InputenxSlot{179}{0142}{\do{iso-8859-2}\do{iso-8859-16}\do{cp1250}} +\InputenxSlot{179}{0157}{\do{iso-8859-4}} +\InputenxSlot{179}{2021}{\do{nextstep}} +\InputenxSlot{179}{2265}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{179}{2502}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{180}{00A5}{\do{mac-roman}} +\InputenxSlot{180}{00B4}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{cp1250}\do{cp1252}\do{cp1257}% +} +\InputenxSlot{180}{00B7}{\do{nextstep}} +\InputenxSlot{180}{012B}{\do{iso-8859-10}\do{mac-ce}} +\InputenxSlot{180}{017D}{\do{iso-8859-15}\do{iso-8859-16}} +\InputenxSlot{180}{1E40}{\do{iso-8859-14}} +\InputenxSlot{180}{201C}{\do{iso-8859-13}} +\InputenxSlot{180}{2524}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{181}{00A6}{\do{nextstep}} +\InputenxSlot{181}{00B5}{% + \do{iso-8859-1}\do{iso-8859-3}\do{iso-8859-9}\do{iso-8859-13}% + \do{iso-8859-15}\do{cp1250}\do{cp1252}\do{cp1257}\do{mac-roman}% + \do{dec-mcs}% +} +\InputenxSlot{181}{00C1}{\do{cp850}\do{cp852}\do{cp858}} +\InputenxSlot{181}{0129}{\do{iso-8859-4}\do{iso-8859-10}} +\InputenxSlot{181}{0136}{\do{mac-ce}} +\InputenxSlot{181}{013E}{\do{iso-8859-2}} +\InputenxSlot{181}{1E41}{\do{iso-8859-14}} +\InputenxSlot{181}{201D}{\do{iso-8859-16}} +\InputenxSlot{181}{2561}{\do{cp437}\do{cp865}} +\InputenxSlot{182}{00B6}{% + \do{iso-8859-1}\do{iso-8859-9}\do{iso-8859-13}\do{iso-8859-14}% + \do{iso-8859-15}\do{iso-8859-16}\do{cp1250}\do{cp1252}\do{cp1257}% + \do{nextstep}\do{dec-mcs}% +} +\InputenxSlot{182}{00C2}{\do{cp850}\do{cp852}\do{cp858}} +\InputenxSlot{182}{0125}{\do{iso-8859-3}} +\InputenxSlot{182}{0137}{\do{iso-8859-10}} +\InputenxSlot{182}{013C}{\do{iso-8859-4}} +\InputenxSlot{182}{015B}{\do{iso-8859-2}} +\InputenxSlot{182}{2202}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{182}{2562}{\do{cp437}\do{cp865}} +\InputenxSlot{183}{00B7}{% + \do{iso-8859-1}\do{iso-8859-3}\do{iso-8859-9}\do{iso-8859-10}% + \do{iso-8859-13}\do{iso-8859-15}\do{iso-8859-16}\do{cp1250}% + \do{cp1252}\do{cp1257}\do{dec-mcs}% +} +\InputenxSlot{183}{00C0}{\do{cp850}\do{cp858}} +\InputenxSlot{183}{011A}{\do{cp852}} +\InputenxSlot{183}{02C7}{\do{iso-8859-2}\do{iso-8859-4}} +\InputenxSlot{183}{1E56}{\do{iso-8859-14}} +\InputenxSlot{183}{2022}{\do{nextstep}} +\InputenxSlot{183}{2211}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{183}{2556}{\do{cp437}\do{cp865}} +\InputenxSlot{184}{00A9}{\do{cp850}\do{cp858}} +\InputenxSlot{184}{00B8}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{cp1250}\do{cp1252}% +} +\InputenxSlot{184}{00F8}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{184}{013C}{\do{iso-8859-10}} +\InputenxSlot{184}{0142}{\do{mac-ce}} +\InputenxSlot{184}{015E}{\do{cp852}} +\InputenxSlot{184}{017E}{\do{iso-8859-15}\do{iso-8859-16}} +\InputenxSlot{184}{1E81}{\do{iso-8859-14}} +\InputenxSlot{184}{201A}{\do{nextstep}} +\InputenxSlot{184}{220F}{\do{mac-roman}} +\InputenxSlot{184}{2555}{\do{cp437}\do{cp865}} +\InputenxSlot{185}{00B9}{% + \do{iso-8859-1}\do{iso-8859-9}\do{iso-8859-13}\do{iso-8859-15}% + \do{cp1252}\do{cp1257}\do{dec-mcs}% +} +\InputenxSlot{185}{0105}{\do{cp1250}} +\InputenxSlot{185}{010D}{\do{iso-8859-16}} +\InputenxSlot{185}{0111}{\do{iso-8859-10}} +\InputenxSlot{185}{0131}{\do{iso-8859-3}} +\InputenxSlot{185}{013B}{\do{mac-ce}} +\InputenxSlot{185}{0161}{\do{iso-8859-2}\do{iso-8859-4}} +\InputenxSlot{185}{03C0}{\do{mac-roman}} +\InputenxSlot{185}{1E57}{\do{iso-8859-14}} +\InputenxSlot{185}{201E}{\do{nextstep}} +\InputenxSlot{185}{2563}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{186}{00BA}{% + \do{iso-8859-1}\do{iso-8859-9}\do{iso-8859-15}\do{cp1252}% + \do{dec-mcs}% +} +\InputenxSlot{186}{0113}{\do{iso-8859-4}} +\InputenxSlot{186}{013C}{\do{mac-ce}} +\InputenxSlot{186}{0157}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{186}{015F}{\do{iso-8859-2}\do{iso-8859-3}\do{cp1250}} +\InputenxSlot{186}{0161}{\do{iso-8859-10}} +\InputenxSlot{186}{0219}{\do{iso-8859-16}} +\InputenxSlot{186}{1E83}{\do{iso-8859-14}} +\InputenxSlot{186}{201D}{\do{nextstep}} +\InputenxSlot{186}{222B}{\do{mac-roman}} +\InputenxSlot{186}{2551}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{187}{00AA}{\do{mac-roman}} +\InputenxSlot{187}{00BB}{% + \do{iso-8859-1}\do{iso-8859-9}\do{iso-8859-13}\do{iso-8859-15}% + \do{iso-8859-16}\do{cp1250}\do{cp1252}\do{cp1257}\do{nextstep}% + \do{dec-mcs}% +} +\InputenxSlot{187}{011F}{\do{iso-8859-3}} +\InputenxSlot{187}{0123}{\do{iso-8859-4}} +\InputenxSlot{187}{013D}{\do{mac-ce}} +\InputenxSlot{187}{0165}{\do{iso-8859-2}} +\InputenxSlot{187}{0167}{\do{iso-8859-10}} +\InputenxSlot{187}{1E60}{\do{iso-8859-14}} +\InputenxSlot{187}{2557}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{188}{00BA}{\do{mac-roman}} +\InputenxSlot{188}{00BC}{% + \do{iso-8859-1}\do{iso-8859-9}\do{iso-8859-13}\do{cp1252}% + \do{cp1257}\do{dec-mcs}% +} +\InputenxSlot{188}{0135}{\do{iso-8859-3}} +\InputenxSlot{188}{013D}{\do{cp1250}} +\InputenxSlot{188}{013E}{\do{mac-ce}} +\InputenxSlot{188}{0152}{\do{iso-8859-15}\do{iso-8859-16}} +\InputenxSlot{188}{0167}{\do{iso-8859-4}} +\InputenxSlot{188}{017A}{\do{iso-8859-2}} +\InputenxSlot{188}{017E}{\do{iso-8859-10}} +\InputenxSlot{188}{1EF3}{\do{iso-8859-14}} +\InputenxSlot{188}{2026}{\do{nextstep}} +\InputenxSlot{188}{255D}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{189}{00A2}{\do{cp850}\do{cp858}} +\InputenxSlot{189}{00BD}{% + \do{iso-8859-1}\do{iso-8859-3}\do{iso-8859-9}\do{iso-8859-13}% + \do{cp1252}\do{cp1257}\do{dec-mcs}% +} +\InputenxSlot{189}{0139}{\do{mac-ce}} +\InputenxSlot{189}{014A}{\do{iso-8859-4}} +\InputenxSlot{189}{0153}{\do{iso-8859-15}\do{iso-8859-16}} +\InputenxSlot{189}{017B}{\do{cp852}} +\InputenxSlot{189}{02DD}{\do{iso-8859-2}\do{cp1250}} +\InputenxSlot{189}{03A9}{\do{mac-roman}} +\InputenxSlot{189}{1E84}{\do{iso-8859-14}} +\InputenxSlot{189}{2030}{\do{nextstep}} +\InputenxSlot{189}{255C}{\do{cp437}\do{cp865}} +\InputenxSlot{190}{00A5}{\do{cp850}\do{cp858}} +\InputenxSlot{190}{00AC}{\do{nextstep}} +\InputenxSlot{190}{00BE}{% + \do{iso-8859-1}\do{iso-8859-9}\do{iso-8859-13}\do{cp1252}% + \do{cp1257}% +} +\InputenxSlot{190}{00E6}{\do{mac-roman}} +\InputenxSlot{190}{013A}{\do{mac-ce}} +\InputenxSlot{190}{013E}{\do{cp1250}} +\InputenxSlot{190}{016B}{\do{iso-8859-10}} +\InputenxSlot{190}{0178}{\do{iso-8859-15}\do{iso-8859-16}} +\InputenxSlot{190}{017C}{\do{cp852}} +\InputenxSlot{190}{017E}{\do{iso-8859-2}\do{iso-8859-4}} +\InputenxSlot{190}{1E85}{\do{iso-8859-14}} +\InputenxSlot{190}{255B}{\do{cp437}\do{cp865}} +\InputenxSlot{191}{00BF}{% + \do{iso-8859-1}\do{iso-8859-9}\do{iso-8859-15}\do{cp1252}% + \do{nextstep}\do{dec-mcs}% +} +\InputenxSlot{191}{00E6}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{191}{00F8}{\do{mac-roman}} +\InputenxSlot{191}{0145}{\do{mac-ce}} +\InputenxSlot{191}{014B}{\do{iso-8859-4}\do{iso-8859-10}} +\InputenxSlot{191}{017C}{% + \do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-16}\do{cp1250}% +} +\InputenxSlot{191}{1E61}{\do{iso-8859-14}} +\InputenxSlot{191}{2510}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{192}{00B9}{\do{nextstep}} +\InputenxSlot{192}{00BF}{\do{mac-roman}} +\InputenxSlot{192}{00C0}{% + \do{iso-8859-1}\do{iso-8859-3}\do{iso-8859-9}\do{iso-8859-14}% + \do{iso-8859-15}\do{iso-8859-16}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{192}{0100}{\do{iso-8859-4}\do{iso-8859-10}} +\InputenxSlot{192}{0104}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{192}{0146}{\do{mac-ce}} +\InputenxSlot{192}{0154}{\do{iso-8859-2}\do{cp1250}} +\InputenxSlot{192}{2514}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{193}{00A1}{\do{mac-roman}} +\InputenxSlot{193}{00C1}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-14}\do{iso-8859-15}% + \do{iso-8859-16}\do{cp1250}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{193}{012E}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{193}{0143}{\do{mac-ce}} +\InputenxSlot{193}{02CB}{\do{nextstep}} +\InputenxSlot{193}{2534}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{194}{00AC}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{194}{00B4}{\do{nextstep}} +\InputenxSlot{194}{00C2}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-14}\do{iso-8859-15}% + \do{iso-8859-16}\do{cp1250}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{194}{0100}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{194}{252C}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{195}{00C3}{% + \do{iso-8859-1}\do{iso-8859-4}\do{iso-8859-9}\do{iso-8859-10}% + \do{iso-8859-14}\do{iso-8859-15}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{195}{0102}{\do{iso-8859-2}\do{iso-8859-16}\do{cp1250}} +\InputenxSlot{195}{0106}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{195}{02C6}{\do{nextstep}} +\InputenxSlot{195}{221A}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{195}{251C}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{196}{00C4}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-13}\do{iso-8859-14}% + \do{iso-8859-15}\do{iso-8859-16}\do{cp1250}\do{cp1252}\do{cp1257}% + \do{dec-mcs}% +} +\InputenxSlot{196}{0144}{\do{mac-ce}} +\InputenxSlot{196}{0192}{\do{mac-roman}} +\InputenxSlot{196}{02DC}{\do{nextstep}} +\InputenxSlot{196}{2500}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{197}{00AF}{\do{nextstep}} +\InputenxSlot{197}{00C5}{% + \do{iso-8859-1}\do{iso-8859-4}\do{iso-8859-9}\do{iso-8859-10}% + \do{iso-8859-13}\do{iso-8859-14}\do{iso-8859-15}\do{cp1252}% + \do{cp1257}\do{dec-mcs}% +} +\InputenxSlot{197}{0106}{\do{iso-8859-16}} +\InputenxSlot{197}{010A}{\do{iso-8859-3}} +\InputenxSlot{197}{0139}{\do{iso-8859-2}\do{cp1250}} +\InputenxSlot{197}{0147}{\do{mac-ce}} +\InputenxSlot{197}{2248}{\do{mac-roman}} +\InputenxSlot{197}{253C}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{198}{00C6}{% + \do{iso-8859-1}\do{iso-8859-4}\do{iso-8859-9}\do{iso-8859-10}% + \do{iso-8859-14}\do{iso-8859-15}\do{iso-8859-16}\do{cp1252}% + \do{dec-mcs}% +} +\InputenxSlot{198}{00E3}{\do{cp850}\do{cp858}} +\InputenxSlot{198}{0102}{\do{cp852}} +\InputenxSlot{198}{0106}{\do{iso-8859-2}\do{cp1250}} +\InputenxSlot{198}{0108}{\do{iso-8859-3}} +\InputenxSlot{198}{0118}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{198}{02D8}{\do{nextstep}} +\InputenxSlot{198}{2206}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{198}{255E}{\do{cp437}\do{cp865}} +\InputenxSlot{199}{00AB}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{199}{00C3}{\do{cp850}\do{cp858}} +\InputenxSlot{199}{00C7}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-9}% + \do{iso-8859-14}\do{iso-8859-15}\do{iso-8859-16}\do{cp1250}% + \do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{199}{0103}{\do{cp852}} +\InputenxSlot{199}{0112}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{199}{012E}{\do{iso-8859-4}\do{iso-8859-10}} +\InputenxSlot{199}{02D9}{\do{nextstep}} +\InputenxSlot{199}{255F}{\do{cp437}\do{cp865}} +\InputenxSlot{200}{00A8}{\do{nextstep}} +\InputenxSlot{200}{00BB}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{200}{00C8}{% + \do{iso-8859-1}\do{iso-8859-3}\do{iso-8859-9}\do{iso-8859-14}% + \do{iso-8859-15}\do{iso-8859-16}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{200}{010C}{% + \do{iso-8859-2}\do{iso-8859-4}\do{iso-8859-10}\do{iso-8859-13}% + \do{cp1250}\do{cp1257}% +} +\InputenxSlot{200}{255A}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{201}{00B2}{\do{nextstep}} +\InputenxSlot{201}{00C9}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-13}\do{iso-8859-14}% + \do{iso-8859-15}\do{iso-8859-16}\do{cp1250}\do{cp1252}\do{cp1257}% + \do{dec-mcs}% +} +\InputenxSlot{201}{2026}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{201}{2554}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{202}{00A0}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{202}{00CA}{% + \do{iso-8859-1}\do{iso-8859-3}\do{iso-8859-9}\do{iso-8859-14}% + \do{iso-8859-15}\do{iso-8859-16}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{202}{0118}{% + \do{iso-8859-2}\do{iso-8859-4}\do{iso-8859-10}\do{cp1250}% +} +\InputenxSlot{202}{0179}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{202}{02DA}{\do{nextstep}} +\InputenxSlot{202}{2569}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{203}{00B8}{\do{nextstep}} +\InputenxSlot{203}{00C0}{\do{mac-roman}} +\InputenxSlot{203}{00CB}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-14}\do{iso-8859-15}% + \do{iso-8859-16}\do{cp1250}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{203}{0116}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{203}{0148}{\do{mac-ce}} +\InputenxSlot{203}{2566}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{204}{00B3}{\do{nextstep}} +\InputenxSlot{204}{00C3}{\do{mac-roman}} +\InputenxSlot{204}{00CC}{% + \do{iso-8859-1}\do{iso-8859-3}\do{iso-8859-9}\do{iso-8859-14}% + \do{iso-8859-15}\do{iso-8859-16}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{204}{0116}{\do{iso-8859-4}\do{iso-8859-10}} +\InputenxSlot{204}{011A}{\do{iso-8859-2}\do{cp1250}} +\InputenxSlot{204}{0122}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{204}{0150}{\do{mac-ce}} +\InputenxSlot{204}{2560}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{205}{00CD}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-14}\do{iso-8859-15}% + \do{iso-8859-16}\do{cp1250}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{205}{00D5}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{205}{0136}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{205}{02DD}{\do{nextstep}} +\InputenxSlot{205}{2550}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{206}{00CE}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-14}\do{iso-8859-15}% + \do{iso-8859-16}\do{cp1250}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{206}{012A}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{206}{0151}{\do{mac-ce}} +\InputenxSlot{206}{0152}{\do{mac-roman}} +\InputenxSlot{206}{02DB}{\do{nextstep}} +\InputenxSlot{206}{256C}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{207}{00A4}{\do{cp850}\do{cp852}\do{cp858}} +\InputenxSlot{207}{00CF}{% + \do{iso-8859-1}\do{iso-8859-3}\do{iso-8859-9}\do{iso-8859-10}% + \do{iso-8859-14}\do{iso-8859-15}\do{iso-8859-16}\do{cp1252}% + \do{dec-mcs}% +} +\InputenxSlot{207}{010E}{\do{iso-8859-2}\do{cp1250}} +\InputenxSlot{207}{012A}{\do{iso-8859-4}} +\InputenxSlot{207}{013B}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{207}{014C}{\do{mac-ce}} +\InputenxSlot{207}{0153}{\do{mac-roman}} +\InputenxSlot{207}{02C7}{\do{nextstep}} +\InputenxSlot{207}{2567}{\do{cp437}\do{cp865}} +\InputenxSlot{208}{00D0}{% + \do{iso-8859-1}\do{iso-8859-10}\do{iso-8859-15}\do{cp1252}% +} +\InputenxSlot{208}{00F0}{\do{cp850}\do{cp858}} +\InputenxSlot{208}{0110}{% + \do{iso-8859-2}\do{iso-8859-4}\do{iso-8859-16}\do{cp1250}% +} +\InputenxSlot{208}{0111}{\do{cp852}} +\InputenxSlot{208}{011E}{\do{iso-8859-9}} +\InputenxSlot{208}{0160}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{208}{0174}{\do{iso-8859-14}} +\InputenxSlot{208}{2013}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{208}{2014}{\do{nextstep}} +\InputenxSlot{208}{2568}{\do{cp437}\do{cp865}} +\InputenxSlot{209}{00B1}{\do{nextstep}} +\InputenxSlot{209}{00D0}{\do{cp850}\do{cp858}} +\InputenxSlot{209}{00D1}{% + \do{iso-8859-1}\do{iso-8859-3}\do{iso-8859-9}\do{iso-8859-14}% + \do{iso-8859-15}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{209}{0110}{\do{cp852}} +\InputenxSlot{209}{0143}{% + \do{iso-8859-2}\do{iso-8859-13}\do{iso-8859-16}\do{cp1250}% + \do{cp1257}% +} +\InputenxSlot{209}{0145}{\do{iso-8859-4}\do{iso-8859-10}} +\InputenxSlot{209}{2014}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{209}{2564}{\do{cp437}\do{cp865}} +\InputenxSlot{210}{00BC}{\do{nextstep}} +\InputenxSlot{210}{00CA}{\do{cp850}\do{cp858}} +\InputenxSlot{210}{00D2}{% + \do{iso-8859-1}\do{iso-8859-3}\do{iso-8859-9}\do{iso-8859-14}% + \do{iso-8859-15}\do{iso-8859-16}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{210}{010E}{\do{cp852}} +\InputenxSlot{210}{0145}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{210}{0147}{\do{iso-8859-2}\do{cp1250}} +\InputenxSlot{210}{014C}{\do{iso-8859-4}\do{iso-8859-10}} +\InputenxSlot{210}{201C}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{210}{2565}{\do{cp437}\do{cp865}} +\InputenxSlot{211}{00BD}{\do{nextstep}} +\InputenxSlot{211}{00CB}{\do{cp850}\do{cp852}\do{cp858}} +\InputenxSlot{211}{00D3}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-9}% + \do{iso-8859-10}\do{iso-8859-13}\do{iso-8859-14}\do{iso-8859-15}% + \do{iso-8859-16}\do{cp1250}\do{cp1252}\do{cp1257}\do{dec-mcs}% +} +\InputenxSlot{211}{0136}{\do{iso-8859-4}} +\InputenxSlot{211}{201D}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{211}{2559}{\do{cp437}\do{cp865}} +\InputenxSlot{212}{00BE}{\do{nextstep}} +\InputenxSlot{212}{00C8}{\do{cp850}\do{cp858}} +\InputenxSlot{212}{00D4}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-14}\do{iso-8859-15}% + \do{iso-8859-16}\do{cp1250}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{212}{010F}{\do{cp852}} +\InputenxSlot{212}{014C}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{212}{2018}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{212}{2558}{\do{cp437}\do{cp865}} +\InputenxSlot{213}{00D5}{% + \do{iso-8859-1}\do{iso-8859-4}\do{iso-8859-9}\do{iso-8859-10}% + \do{iso-8859-13}\do{iso-8859-14}\do{iso-8859-15}\do{cp1252}% + \do{cp1257}\do{dec-mcs}% +} +\InputenxSlot{213}{00E0}{\do{nextstep}} +\InputenxSlot{213}{0120}{\do{iso-8859-3}} +\InputenxSlot{213}{0131}{\do{cp850}} +\InputenxSlot{213}{0147}{\do{cp852}} +\InputenxSlot{213}{0150}{\do{iso-8859-2}\do{iso-8859-16}\do{cp1250}} +\InputenxSlot{213}{2019}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{213}{20AC}{\do{cp858}} +\InputenxSlot{213}{2552}{\do{cp437}\do{cp865}} +\InputenxSlot{214}{00CD}{\do{cp850}\do{cp852}\do{cp858}} +\InputenxSlot{214}{00D6}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-13}\do{iso-8859-14}% + \do{iso-8859-15}\do{iso-8859-16}\do{cp1250}\do{cp1252}\do{cp1257}% + \do{dec-mcs}% +} +\InputenxSlot{214}{00E1}{\do{nextstep}} +\InputenxSlot{214}{00F7}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{214}{2553}{\do{cp437}\do{cp865}} +\InputenxSlot{215}{00CE}{\do{cp850}\do{cp852}\do{cp858}} +\InputenxSlot{215}{00D7}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-13}\do{iso-8859-15}\do{cp1250}% + \do{cp1252}\do{cp1257}% +} +\InputenxSlot{215}{00E2}{\do{nextstep}} +\InputenxSlot{215}{0152}{\do{dec-mcs}} +\InputenxSlot{215}{015A}{\do{iso-8859-16}} +\InputenxSlot{215}{0168}{\do{iso-8859-10}} +\InputenxSlot{215}{1E6A}{\do{iso-8859-14}} +\InputenxSlot{215}{256B}{\do{cp437}\do{cp865}} +\InputenxSlot{215}{25CA}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{216}{00CF}{\do{cp850}\do{cp858}} +\InputenxSlot{216}{00D8}{% + \do{iso-8859-1}\do{iso-8859-4}\do{iso-8859-9}\do{iso-8859-10}% + \do{iso-8859-14}\do{iso-8859-15}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{216}{00E3}{\do{nextstep}} +\InputenxSlot{216}{00FF}{\do{mac-roman}} +\InputenxSlot{216}{011B}{\do{cp852}} +\InputenxSlot{216}{011C}{\do{iso-8859-3}} +\InputenxSlot{216}{014D}{\do{mac-ce}} +\InputenxSlot{216}{0158}{\do{iso-8859-2}\do{cp1250}} +\InputenxSlot{216}{0170}{\do{iso-8859-16}} +\InputenxSlot{216}{0172}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{216}{256A}{\do{cp437}\do{cp865}} +\InputenxSlot{217}{00D9}{% + \do{iso-8859-1}\do{iso-8859-3}\do{iso-8859-9}\do{iso-8859-14}% + \do{iso-8859-15}\do{iso-8859-16}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{217}{00E4}{\do{nextstep}} +\InputenxSlot{217}{0141}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{217}{0154}{\do{mac-ce}} +\InputenxSlot{217}{016E}{\do{iso-8859-2}\do{cp1250}} +\InputenxSlot{217}{0172}{\do{iso-8859-4}\do{iso-8859-10}} +\InputenxSlot{217}{0178}{\do{mac-roman}} +\InputenxSlot{217}{2518}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{218}{00DA}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-14}\do{iso-8859-15}% + \do{iso-8859-16}\do{cp1250}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{218}{00E5}{\do{nextstep}} +\InputenxSlot{218}{0155}{\do{mac-ce}} +\InputenxSlot{218}{015A}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{218}{2044}{\do{mac-roman}} +\InputenxSlot{218}{250C}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{219}{00DB}{% + \do{iso-8859-1}\do{iso-8859-3}\do{iso-8859-4}\do{iso-8859-9}% + \do{iso-8859-10}\do{iso-8859-14}\do{iso-8859-15}\do{iso-8859-16}% + \do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{219}{00E7}{\do{nextstep}} +\InputenxSlot{219}{0158}{\do{mac-ce}} +\InputenxSlot{219}{016A}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{219}{0170}{\do{iso-8859-2}\do{cp1250}} +\InputenxSlot{219}{20AC}{\do{mac-roman}} +\InputenxSlot{219}{2588}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{220}{00DC}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-13}\do{iso-8859-14}% + \do{iso-8859-15}\do{iso-8859-16}\do{cp1250}\do{cp1252}\do{cp1257}% + \do{dec-mcs}% +} +\InputenxSlot{220}{00E8}{\do{nextstep}} +\InputenxSlot{220}{2039}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{220}{2584}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{221}{00A6}{\do{cp850}\do{cp858}} +\InputenxSlot{221}{00DD}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-10}\do{iso-8859-14}% + \do{iso-8859-15}\do{cp1250}\do{cp1252}% +} +\InputenxSlot{221}{00E9}{\do{nextstep}} +\InputenxSlot{221}{0118}{\do{iso-8859-16}} +\InputenxSlot{221}{0130}{\do{iso-8859-9}} +\InputenxSlot{221}{0162}{\do{cp852}} +\InputenxSlot{221}{0168}{\do{iso-8859-4}} +\InputenxSlot{221}{016C}{\do{iso-8859-3}} +\InputenxSlot{221}{0178}{\do{dec-mcs}} +\InputenxSlot{221}{017B}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{221}{203A}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{221}{258C}{\do{cp437}\do{cp865}} +\InputenxSlot{222}{00CC}{\do{cp850}\do{cp858}} +\InputenxSlot{222}{00DE}{% + \do{iso-8859-1}\do{iso-8859-10}\do{iso-8859-15}\do{cp1252}% +} +\InputenxSlot{222}{00EA}{\do{nextstep}} +\InputenxSlot{222}{0159}{\do{mac-ce}} +\InputenxSlot{222}{015C}{\do{iso-8859-3}} +\InputenxSlot{222}{015E}{\do{iso-8859-9}} +\InputenxSlot{222}{0162}{\do{iso-8859-2}\do{cp1250}} +\InputenxSlot{222}{016A}{\do{iso-8859-4}} +\InputenxSlot{222}{016E}{\do{cp852}} +\InputenxSlot{222}{0176}{\do{iso-8859-14}} +\InputenxSlot{222}{017D}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{222}{021A}{\do{iso-8859-16}} +\InputenxSlot{222}{2590}{\do{cp437}\do{cp865}} +\InputenxSlot{222}{FB01}{\do{mac-roman}} +\InputenxSlot{223}{00DF}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-13}\do{iso-8859-14}% + \do{iso-8859-15}\do{iso-8859-16}\do{cp1250}\do{cp1252}\do{cp1257}% + \do{dec-mcs}% +} +\InputenxSlot{223}{00EB}{\do{nextstep}} +\InputenxSlot{223}{0156}{\do{mac-ce}} +\InputenxSlot{223}{2580}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{223}{FB02}{\do{mac-roman}} +\InputenxSlot{224}{00D3}{\do{cp850}\do{cp852}\do{cp858}} +\InputenxSlot{224}{00E0}{% + \do{iso-8859-1}\do{iso-8859-3}\do{iso-8859-9}\do{iso-8859-14}% + \do{iso-8859-15}\do{iso-8859-16}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{224}{00EC}{\do{nextstep}} +\InputenxSlot{224}{0101}{\do{iso-8859-4}\do{iso-8859-10}} +\InputenxSlot{224}{0105}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{224}{0155}{\do{iso-8859-2}\do{cp1250}} +\InputenxSlot{224}{0157}{\do{mac-ce}} +\InputenxSlot{224}{03B1}{\do{cp437}\do{cp865}} +\InputenxSlot{224}{2021}{\do{mac-roman}} +\InputenxSlot{225}{00B7}{\do{mac-roman}} +\InputenxSlot{225}{00C6}{\do{nextstep}} +\InputenxSlot{225}{00DF}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{225}{00E1}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-14}\do{iso-8859-15}% + \do{iso-8859-16}\do{cp1250}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{225}{012F}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{225}{0160}{\do{mac-ce}} +\InputenxSlot{226}{00D4}{\do{cp850}\do{cp852}\do{cp858}} +\InputenxSlot{226}{00E2}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-14}\do{iso-8859-15}% + \do{iso-8859-16}\do{cp1250}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{226}{00ED}{\do{nextstep}} +\InputenxSlot{226}{0101}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{226}{0393}{\do{cp437}\do{cp865}} +\InputenxSlot{226}{201A}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{227}{00AA}{\do{nextstep}} +\InputenxSlot{227}{00D2}{\do{cp850}\do{cp858}} +\InputenxSlot{227}{00E3}{% + \do{iso-8859-1}\do{iso-8859-4}\do{iso-8859-9}\do{iso-8859-10}% + \do{iso-8859-14}\do{iso-8859-15}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{227}{0103}{\do{iso-8859-2}\do{iso-8859-16}\do{cp1250}} +\InputenxSlot{227}{0107}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{227}{0143}{\do{cp852}} +\InputenxSlot{227}{03C0}{\do{cp437}\do{cp865}} +\InputenxSlot{227}{201E}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{228}{00E4}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-13}\do{iso-8859-14}% + \do{iso-8859-15}\do{iso-8859-16}\do{cp1250}\do{cp1252}\do{cp1257}% + \do{dec-mcs}% +} +\InputenxSlot{228}{00EE}{\do{nextstep}} +\InputenxSlot{228}{00F5}{\do{cp850}\do{cp858}} +\InputenxSlot{228}{0144}{\do{cp852}} +\InputenxSlot{228}{0161}{\do{mac-ce}} +\InputenxSlot{228}{03A3}{\do{cp437}\do{cp865}} +\InputenxSlot{228}{2030}{\do{mac-roman}} +\InputenxSlot{229}{00C2}{\do{mac-roman}} +\InputenxSlot{229}{00D5}{\do{cp850}\do{cp858}} +\InputenxSlot{229}{00E5}{% + \do{iso-8859-1}\do{iso-8859-4}\do{iso-8859-9}\do{iso-8859-10}% + \do{iso-8859-13}\do{iso-8859-14}\do{iso-8859-15}\do{cp1252}% + \do{cp1257}\do{dec-mcs}% +} +\InputenxSlot{229}{00EF}{\do{nextstep}} +\InputenxSlot{229}{0107}{\do{iso-8859-16}} +\InputenxSlot{229}{010B}{\do{iso-8859-3}} +\InputenxSlot{229}{013A}{\do{iso-8859-2}\do{cp1250}} +\InputenxSlot{229}{0148}{\do{cp852}} +\InputenxSlot{229}{015A}{\do{mac-ce}} +\InputenxSlot{229}{03C3}{\do{cp437}\do{cp865}} +\InputenxSlot{230}{00B5}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{230}{00CA}{\do{mac-roman}} +\InputenxSlot{230}{00E6}{% + \do{iso-8859-1}\do{iso-8859-4}\do{iso-8859-9}\do{iso-8859-10}% + \do{iso-8859-14}\do{iso-8859-15}\do{iso-8859-16}\do{cp1252}% + \do{dec-mcs}% +} +\InputenxSlot{230}{00F0}{\do{nextstep}} +\InputenxSlot{230}{0107}{\do{iso-8859-2}\do{cp1250}} +\InputenxSlot{230}{0109}{\do{iso-8859-3}} +\InputenxSlot{230}{0119}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{230}{015B}{\do{mac-ce}} +\InputenxSlot{230}{0160}{\do{cp852}} +\InputenxSlot{231}{00C1}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{231}{00E7}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-9}% + \do{iso-8859-14}\do{iso-8859-15}\do{iso-8859-16}\do{cp1250}% + \do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{231}{00F1}{\do{nextstep}} +\InputenxSlot{231}{00FE}{\do{cp850}\do{cp858}} +\InputenxSlot{231}{0113}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{231}{012F}{\do{iso-8859-4}\do{iso-8859-10}} +\InputenxSlot{231}{0161}{\do{cp852}} +\InputenxSlot{231}{03C4}{\do{cp437}\do{cp865}} +\InputenxSlot{232}{00CB}{\do{mac-roman}} +\InputenxSlot{232}{00DE}{\do{cp850}\do{cp858}} +\InputenxSlot{232}{00E8}{% + \do{iso-8859-1}\do{iso-8859-3}\do{iso-8859-9}\do{iso-8859-14}% + \do{iso-8859-15}\do{iso-8859-16}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{232}{010D}{% + \do{iso-8859-2}\do{iso-8859-4}\do{iso-8859-10}\do{iso-8859-13}% + \do{cp1250}\do{cp1257}% +} +\InputenxSlot{232}{0141}{\do{nextstep}} +\InputenxSlot{232}{0154}{\do{cp852}} +\InputenxSlot{232}{0164}{\do{mac-ce}} +\InputenxSlot{232}{03A6}{\do{cp437}\do{cp865}} +\InputenxSlot{233}{00C8}{\do{mac-roman}} +\InputenxSlot{233}{00D8}{\do{nextstep}} +\InputenxSlot{233}{00DA}{\do{cp850}\do{cp852}\do{cp858}} +\InputenxSlot{233}{00E9}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-13}\do{iso-8859-14}% + \do{iso-8859-15}\do{iso-8859-16}\do{cp1250}\do{cp1252}\do{cp1257}% + \do{dec-mcs}% +} +\InputenxSlot{233}{0165}{\do{mac-ce}} +\InputenxSlot{233}{0398}{\do{cp437}\do{cp865}} +\InputenxSlot{234}{00CD}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{234}{00DB}{\do{cp850}\do{cp858}} +\InputenxSlot{234}{00EA}{% + \do{iso-8859-1}\do{iso-8859-3}\do{iso-8859-9}\do{iso-8859-14}% + \do{iso-8859-15}\do{iso-8859-16}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{234}{0119}{% + \do{iso-8859-2}\do{iso-8859-4}\do{iso-8859-10}\do{cp1250}% +} +\InputenxSlot{234}{0152}{\do{nextstep}} +\InputenxSlot{234}{0155}{\do{cp852}} +\InputenxSlot{234}{017A}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{234}{03A9}{\do{cp437}\do{cp865}} +\InputenxSlot{235}{00BA}{\do{nextstep}} +\InputenxSlot{235}{00CE}{\do{mac-roman}} +\InputenxSlot{235}{00D9}{\do{cp850}\do{cp858}} +\InputenxSlot{235}{00EB}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-14}\do{iso-8859-15}% + \do{iso-8859-16}\do{cp1250}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{235}{0117}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{235}{0170}{\do{cp852}} +\InputenxSlot{235}{017D}{\do{mac-ce}} +\InputenxSlot{235}{03B4}{\do{cp437}\do{cp865}} +\InputenxSlot{236}{00CF}{\do{mac-roman}} +\InputenxSlot{236}{00EC}{% + \do{iso-8859-1}\do{iso-8859-3}\do{iso-8859-9}\do{iso-8859-14}% + \do{iso-8859-15}\do{iso-8859-16}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{236}{00F2}{\do{nextstep}} +\InputenxSlot{236}{00FD}{\do{cp850}\do{cp852}\do{cp858}} +\InputenxSlot{236}{0117}{\do{iso-8859-4}\do{iso-8859-10}} +\InputenxSlot{236}{011B}{\do{iso-8859-2}\do{cp1250}} +\InputenxSlot{236}{0123}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{236}{017E}{\do{mac-ce}} +\InputenxSlot{236}{221E}{\do{cp437}\do{cp865}} +\InputenxSlot{237}{00CC}{\do{mac-roman}} +\InputenxSlot{237}{00DD}{\do{cp850}\do{cp852}\do{cp858}} +\InputenxSlot{237}{00ED}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-14}\do{iso-8859-15}% + \do{iso-8859-16}\do{cp1250}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{237}{00F3}{\do{nextstep}} +\InputenxSlot{237}{0137}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{237}{016A}{\do{mac-ce}} +\InputenxSlot{237}{03C6}{\do{cp437}\do{cp865}} +\InputenxSlot{238}{00AF}{\do{cp850}\do{cp858}} +\InputenxSlot{238}{00D3}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{238}{00EE}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-14}\do{iso-8859-15}% + \do{iso-8859-16}\do{cp1250}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{238}{00F4}{\do{nextstep}} +\InputenxSlot{238}{012B}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{238}{0163}{\do{cp852}} +\InputenxSlot{238}{03B5}{\do{cp437}\do{cp865}} +\InputenxSlot{239}{00B4}{\do{cp850}\do{cp852}\do{cp858}} +\InputenxSlot{239}{00D4}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{239}{00EF}{% + \do{iso-8859-1}\do{iso-8859-3}\do{iso-8859-9}\do{iso-8859-10}% + \do{iso-8859-14}\do{iso-8859-15}\do{iso-8859-16}\do{cp1252}% + \do{dec-mcs}% +} +\InputenxSlot{239}{00F5}{\do{nextstep}} +\InputenxSlot{239}{010F}{\do{iso-8859-2}\do{cp1250}} +\InputenxSlot{239}{012B}{\do{iso-8859-4}} +\InputenxSlot{239}{013C}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{239}{2229}{\do{cp437}\do{cp865}} +\InputenxSlot{240}{00AD}{\do{cp850}\do{cp852}\do{cp858}} +\InputenxSlot{240}{00F0}{% + \do{iso-8859-1}\do{iso-8859-10}\do{iso-8859-15}\do{cp1252}% +} +\InputenxSlot{240}{00F6}{\do{nextstep}} +\InputenxSlot{240}{0111}{% + \do{iso-8859-2}\do{iso-8859-4}\do{iso-8859-16}\do{cp1250}% +} +\InputenxSlot{240}{011F}{\do{iso-8859-9}} +\InputenxSlot{240}{0161}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{240}{016B}{\do{mac-ce}} +\InputenxSlot{240}{0175}{\do{iso-8859-14}} +\InputenxSlot{240}{2261}{\do{cp437}\do{cp865}} +\InputenxSlot{241}{00B1}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{241}{00D2}{\do{mac-roman}} +\InputenxSlot{241}{00E6}{\do{nextstep}} +\InputenxSlot{241}{00F1}{% + \do{iso-8859-1}\do{iso-8859-3}\do{iso-8859-9}\do{iso-8859-14}% + \do{iso-8859-15}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{241}{0144}{% + \do{iso-8859-2}\do{iso-8859-13}\do{iso-8859-16}\do{cp1250}% + \do{cp1257}% +} +\InputenxSlot{241}{0146}{\do{iso-8859-4}\do{iso-8859-10}} +\InputenxSlot{241}{016E}{\do{mac-ce}} +\InputenxSlot{241}{02DD}{\do{cp852}} +\InputenxSlot{242}{00DA}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{242}{00F2}{% + \do{iso-8859-1}\do{iso-8859-3}\do{iso-8859-9}\do{iso-8859-14}% + \do{iso-8859-15}\do{iso-8859-16}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{242}{00F9}{\do{nextstep}} +\InputenxSlot{242}{0146}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{242}{0148}{\do{iso-8859-2}\do{cp1250}} +\InputenxSlot{242}{014D}{\do{iso-8859-4}\do{iso-8859-10}} +\InputenxSlot{242}{02DB}{\do{cp852}} +\InputenxSlot{242}{2265}{\do{cp437}\do{cp865}} +\InputenxSlot{243}{00BE}{\do{cp850}\do{cp858}} +\InputenxSlot{243}{00DB}{\do{mac-roman}} +\InputenxSlot{243}{00F3}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-9}% + \do{iso-8859-10}\do{iso-8859-13}\do{iso-8859-14}\do{iso-8859-15}% + \do{iso-8859-16}\do{cp1250}\do{cp1252}\do{cp1257}\do{dec-mcs}% +} +\InputenxSlot{243}{00FA}{\do{nextstep}} +\InputenxSlot{243}{0137}{\do{iso-8859-4}} +\InputenxSlot{243}{016F}{\do{mac-ce}} +\InputenxSlot{243}{02C7}{\do{cp852}} +\InputenxSlot{243}{2264}{\do{cp437}\do{cp865}} +\InputenxSlot{244}{00B6}{\do{cp850}\do{cp858}} +\InputenxSlot{244}{00D9}{\do{mac-roman}} +\InputenxSlot{244}{00F4}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-14}\do{iso-8859-15}% + \do{iso-8859-16}\do{cp1250}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{244}{00FB}{\do{nextstep}} +\InputenxSlot{244}{014D}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{244}{0170}{\do{mac-ce}} +\InputenxSlot{244}{02D8}{\do{cp852}} +\InputenxSlot{245}{00A7}{\do{cp850}\do{cp852}\do{cp858}} +\InputenxSlot{245}{00F5}{% + \do{iso-8859-1}\do{iso-8859-4}\do{iso-8859-9}\do{iso-8859-10}% + \do{iso-8859-13}\do{iso-8859-14}\do{iso-8859-15}\do{cp1252}% + \do{cp1257}\do{dec-mcs}% +} +\InputenxSlot{245}{0121}{\do{iso-8859-3}} +\InputenxSlot{245}{0131}{\do{mac-roman}\do{nextstep}} +\InputenxSlot{245}{0151}{\do{iso-8859-2}\do{iso-8859-16}\do{cp1250}} +\InputenxSlot{245}{0171}{\do{mac-ce}} +\InputenxSlot{246}{00F6}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-13}\do{iso-8859-14}% + \do{iso-8859-15}\do{iso-8859-16}\do{cp1250}\do{cp1252}\do{cp1257}% + \do{dec-mcs}% +} +\InputenxSlot{246}{00F7}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{246}{00FC}{\do{nextstep}} +\InputenxSlot{246}{0172}{\do{mac-ce}} +\InputenxSlot{246}{02C6}{\do{mac-roman}} +\InputenxSlot{247}{00B8}{\do{cp850}\do{cp852}\do{cp858}} +\InputenxSlot{247}{00F7}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-13}\do{iso-8859-15}\do{cp1250}% + \do{cp1252}\do{cp1257}% +} +\InputenxSlot{247}{00FD}{\do{nextstep}} +\InputenxSlot{247}{0153}{\do{dec-mcs}} +\InputenxSlot{247}{015B}{\do{iso-8859-16}} +\InputenxSlot{247}{0169}{\do{iso-8859-10}} +\InputenxSlot{247}{0173}{\do{mac-ce}} +\InputenxSlot{247}{02DC}{\do{mac-roman}} +\InputenxSlot{247}{1E6B}{\do{iso-8859-14}} +\InputenxSlot{247}{2248}{\do{cp437}\do{cp865}} +\InputenxSlot{248}{00AF}{\do{mac-roman}} +\InputenxSlot{248}{00B0}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{248}{00DD}{\do{mac-ce}} +\InputenxSlot{248}{00F8}{% + \do{iso-8859-1}\do{iso-8859-4}\do{iso-8859-9}\do{iso-8859-10}% + \do{iso-8859-14}\do{iso-8859-15}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{248}{011D}{\do{iso-8859-3}} +\InputenxSlot{248}{0142}{\do{nextstep}} +\InputenxSlot{248}{0159}{\do{iso-8859-2}\do{cp1250}} +\InputenxSlot{248}{0171}{\do{iso-8859-16}} +\InputenxSlot{248}{0173}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{249}{00A8}{\do{cp850}\do{cp852}\do{cp858}} +\InputenxSlot{249}{00F8}{\do{nextstep}} +\InputenxSlot{249}{00F9}{% + \do{iso-8859-1}\do{iso-8859-3}\do{iso-8859-9}\do{iso-8859-14}% + \do{iso-8859-15}\do{iso-8859-16}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{249}{00FD}{\do{mac-ce}} +\InputenxSlot{249}{0142}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{249}{016F}{\do{iso-8859-2}\do{cp1250}} +\InputenxSlot{249}{0173}{\do{iso-8859-4}\do{iso-8859-10}} +\InputenxSlot{249}{02D8}{\do{mac-roman}} +\InputenxSlot{249}{2219}{\do{cp437}\do{cp865}} +\InputenxSlot{250}{00B7}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{250}{00FA}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-14}\do{iso-8859-15}% + \do{iso-8859-16}\do{cp1250}\do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{250}{0137}{\do{mac-ce}} +\InputenxSlot{250}{0153}{\do{nextstep}} +\InputenxSlot{250}{015B}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{250}{02D9}{\do{cp852}\do{mac-roman}} +\InputenxSlot{251}{00B9}{\do{cp850}\do{cp858}} +\InputenxSlot{251}{00DF}{\do{nextstep}} +\InputenxSlot{251}{00FB}{% + \do{iso-8859-1}\do{iso-8859-3}\do{iso-8859-4}\do{iso-8859-9}% + \do{iso-8859-10}\do{iso-8859-14}\do{iso-8859-15}\do{iso-8859-16}% + \do{cp1252}\do{dec-mcs}% +} +\InputenxSlot{251}{016B}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{251}{0171}{\do{iso-8859-2}\do{cp852}\do{cp1250}} +\InputenxSlot{251}{017B}{\do{mac-ce}} +\InputenxSlot{251}{02DA}{\do{mac-roman}} +\InputenxSlot{251}{221A}{\do{cp437}\do{cp865}} +\InputenxSlot{252}{00B3}{\do{cp850}\do{cp858}} +\InputenxSlot{252}{00B8}{\do{mac-roman}} +\InputenxSlot{252}{00FC}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}% + \do{iso-8859-9}\do{iso-8859-10}\do{iso-8859-13}\do{iso-8859-14}% + \do{iso-8859-15}\do{iso-8859-16}\do{cp1250}\do{cp1252}\do{cp1257}% + \do{dec-mcs}% +} +\InputenxSlot{252}{00FE}{\do{nextstep}} +\InputenxSlot{252}{0141}{\do{mac-ce}} +\InputenxSlot{252}{0158}{\do{cp852}} +\InputenxSlot{252}{207F}{\do{cp437}\do{cp865}} +\InputenxSlot{253}{00B2}{% + \do{cp437}\do{cp850}\do{cp858}\do{cp865}% +} +\InputenxSlot{253}{00FD}{% + \do{iso-8859-1}\do{iso-8859-2}\do{iso-8859-10}\do{iso-8859-14}% + \do{iso-8859-15}\do{cp1250}\do{cp1252}% +} +\InputenxSlot{253}{00FF}{\do{nextstep}\do{dec-mcs}} +\InputenxSlot{253}{0119}{\do{iso-8859-16}} +\InputenxSlot{253}{0131}{\do{iso-8859-9}} +\InputenxSlot{253}{0159}{\do{cp852}} +\InputenxSlot{253}{0169}{\do{iso-8859-4}} +\InputenxSlot{253}{016D}{\do{iso-8859-3}} +\InputenxSlot{253}{017C}{\do{iso-8859-13}\do{cp1257}\do{mac-ce}} +\InputenxSlot{253}{02DD}{\do{mac-roman}} +\InputenxSlot{254}{00FE}{% + \do{iso-8859-1}\do{iso-8859-10}\do{iso-8859-15}\do{cp1252}% +} +\InputenxSlot{254}{0122}{\do{mac-ce}} +\InputenxSlot{254}{015D}{\do{iso-8859-3}} +\InputenxSlot{254}{015F}{\do{iso-8859-9}} +\InputenxSlot{254}{0163}{\do{iso-8859-2}\do{cp1250}} +\InputenxSlot{254}{016B}{\do{iso-8859-4}} +\InputenxSlot{254}{0177}{\do{iso-8859-14}} +\InputenxSlot{254}{017E}{\do{iso-8859-13}\do{cp1257}} +\InputenxSlot{254}{021B}{\do{iso-8859-16}} +\InputenxSlot{254}{02DB}{\do{mac-roman}} +\InputenxSlot{254}{25A0}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{255}{00A0}{% + \do{cp437}\do{cp850}\do{cp852}\do{cp858}\do{cp865}% +} +\InputenxSlot{255}{00FF}{% + \do{iso-8859-1}\do{iso-8859-9}\do{iso-8859-14}\do{iso-8859-15}% + \do{iso-8859-16}\do{cp1252}% +} +\InputenxSlot{255}{0138}{\do{iso-8859-10}} +\InputenxSlot{255}{02C7}{\do{mac-roman}\do{mac-ce}} +\InputenxSlot{255}{02D9}{% + \do{iso-8859-2}\do{iso-8859-3}\do{iso-8859-4}\do{cp1250}\do{cp1257}% +} +\InputenxSlot{255}{2019}{\do{iso-8859-13}} +% \end{macrocode} +% \fi +% +% \begin{macrocode} +%</slot> +% \end{macrocode} +% +% \subsection{Mapping UC to LICR} +% +% \begin{macrocode} +%<*uc> +\ProvidesFile{ix-uc.def}% + [2006/08/24 v1.0 UC to LICR (inputenx)] +% \end{macrocode} +% +% \textit{List omitted here, see \xfile{ix-uc.def}.} +% \iffalse +% \begin{macrocode} +\InputenxUC{00A0}{\nobreakspace}{} +\InputenxUC{00A1}{\textexclamdown}{} +\InputenxUC{00A2}{\textcent}{% + \ProvideTextCommandDefault{\textcent}{% + \TextSymbolUnavailable\textcent + }% +} +\InputenxUC{00A3}{\textsterling}{} +\InputenxUC{00A4}{\textcurrency}{% + \ProvideTextCommandDefault{\textcurrency}{% + \TextSymbolUnavailable\textcurrency + }% +} +\InputenxUC{00A5}{\textyen}{% + \ProvideTextCommandDefault{\textyen}{% + \TextSymbolUnavailable\textyen + }% +} +\InputenxUC{00A6}{\textbrokenbar}{% + \ProvideTextCommandDefault{\textbrokenbar}{% + \TextSymbolUnavailable\textbrokenbar + }% +} +\InputenxUC{00A7}{\textsection}{} +\InputenxUC{00A8}{\textasciidieresis}{% + \ProvideTextCommandDefault{\textasciidieresis}{% + \"{}% + }% +} +\InputenxUC{00A9}{\textcopyright}{} +\InputenxUC{00AA}{\textordfeminine}{} +\InputenxUC{00AB}{\guillemotleft}{} +\InputenxUC{00AC}{\textlnot}{% + \ProvideTextCommandDefault{\textlnot}{% + \ensuremath\lnot + }% +} +\InputenxUC{00AD}{\-}{} +\InputenxUC{00AE}{\textregistered}{} +\InputenxUC{00AF}{\textasciimacron}{% + \ProvideTextCommandDefault{\textasciimacron}{% + \@tabacckludge={}% + }% +} +\InputenxUC{00B0}{\textdegree}{% + \ProvideTextCommandDefault{\textdegree}{% + \ensuremath{{^\circ}}% + }% +} +\InputenxUC{00B1}{\textpm}{% + \ProvideTextCommandDefault{\textpm}{% + \ensuremath\pm + }% +} +\InputenxUC{00B2}{\texttwosuperior}{% + \ProvideTextCommandDefault{\texttwosuperior}{% + \ensuremath{{^2}}% + }% +} +\InputenxUC{00B3}{\textthreesuperior}{% + \ProvideTextCommandDefault{\textthreesuperior}{% + \ensuremath{{^3}}% + }% +} +\InputenxUC{00B4}{\textasciiacute}{% + \ProvideTextCommandDefault{\textasciiacute}{% + \@tabacckludge'{}% + }% +} +\InputenxUC{00B5}{\textmu}{% + \ProvideTextCommandDefault{\textmu}{% + \ensuremath\mu + }% +} +\InputenxUC{00B6}{\textparagraph}{} +\InputenxUC{00B7}{\textperiodcentered}{} +\InputenxUC{00B8}{\c\ }{} +\InputenxUC{00B9}{\textonesuperior}{% + \ProvideTextCommandDefault{\textonesuperior}{% + \ensuremath{{^1}}% + }% +} +\InputenxUC{00BA}{\textordmasculine}{} +\InputenxUC{00BB}{\guillemotright}{} +\InputenxUC{00BC}{\textonequarter}{% + \ProvideTextCommandDefault{\textonequarter}{% + \ensuremath{\frac14}% + }% +} +\InputenxUC{00BD}{\textonehalf}{% + \ProvideTextCommandDefault{\textonehalf}{% + \ensuremath{\frac12}% + }% +} +\InputenxUC{00BE}{\textthreequarters}{% + \ProvideTextCommandDefault{\textthreequarters}{% + \ensuremath{\frac34}% + }% +} +\InputenxUC{00BF}{\textquestiondown}{} +\InputenxUC{00C0}{\@tabacckludge`A}{} +\InputenxUC{00C1}{\@tabacckludge'A}{} +\InputenxUC{00C2}{\^A}{} +\InputenxUC{00C3}{\~A}{} +\InputenxUC{00C4}{\"A}{} +\InputenxUC{00C5}{\r A}{} +\InputenxUC{00C6}{\AE}{} +\InputenxUC{00C7}{\c C}{} +\InputenxUC{00C8}{\@tabacckludge`E}{} +\InputenxUC{00C9}{\@tabacckludge'E}{} +\InputenxUC{00CA}{\^E}{} +\InputenxUC{00CB}{\"E}{} +\InputenxUC{00CC}{\@tabacckludge`I}{} +\InputenxUC{00CD}{\@tabacckludge'I}{} +\InputenxUC{00CE}{\^I}{} +\InputenxUC{00CF}{\"I}{} +\InputenxUC{00D0}{\DH}{} +\InputenxUC{00D1}{\~N}{} +\InputenxUC{00D2}{\@tabacckludge`O}{} +\InputenxUC{00D3}{\@tabacckludge'O}{} +\InputenxUC{00D4}{\^O}{} +\InputenxUC{00D5}{\~O}{} +\InputenxUC{00D6}{\"O}{} +\InputenxUC{00D7}{\texttimes}{% + \ProvideTextCommandDefault{\texttimes}{% + \ensuremath\times + }% +} +\InputenxUC{00D8}{\O}{} +\InputenxUC{00D9}{\@tabacckludge`U}{} +\InputenxUC{00DA}{\@tabacckludge'U}{} +\InputenxUC{00DB}{\^U}{} +\InputenxUC{00DC}{\"U}{} +\InputenxUC{00DD}{\@tabacckludge'Y}{} +\InputenxUC{00DE}{\TH}{} +\InputenxUC{00DF}{\ss}{} +\InputenxUC{00E0}{\@tabacckludge`a}{} +\InputenxUC{00E1}{\@tabacckludge'a}{} +\InputenxUC{00E2}{\^a}{} +\InputenxUC{00E3}{\~a}{} +\InputenxUC{00E4}{\"a}{} +\InputenxUC{00E5}{\r a}{} +\InputenxUC{00E6}{\ae}{} +\InputenxUC{00E7}{\c c}{} +\InputenxUC{00E8}{\@tabacckludge`e}{} +\InputenxUC{00E9}{\@tabacckludge'e}{} +\InputenxUC{00EA}{\^e}{} +\InputenxUC{00EB}{\"e}{} +\InputenxUC{00EC}{\@tabacckludge`\i}{} +\InputenxUC{00ED}{\@tabacckludge'\i}{} +\InputenxUC{00EE}{\^\i}{} +\InputenxUC{00EF}{\"\i}{} +\InputenxUC{00F0}{\dh}{} +\InputenxUC{00F1}{\~n}{} +\InputenxUC{00F2}{\@tabacckludge`o}{} +\InputenxUC{00F3}{\@tabacckludge'o}{} +\InputenxUC{00F4}{\^o}{} +\InputenxUC{00F5}{\~o}{} +\InputenxUC{00F6}{\"o}{} +\InputenxUC{00F7}{\textdiv}{% + \ProvideTextCommandDefault{\textdiv}{% + \TextSymbolUnavailable\textdiv + }% +} +\InputenxUC{00F8}{\o}{} +\InputenxUC{00F9}{\@tabacckludge`u}{} +\InputenxUC{00FA}{\@tabacckludge'u}{} +\InputenxUC{00FB}{\^u}{} +\InputenxUC{00FC}{\"u}{} +\InputenxUC{00FD}{\@tabacckludge'y}{} +\InputenxUC{00FE}{\th}{} +\InputenxUC{00FF}{\"y}{} +\InputenxUC{0100}{\@tabacckludge=A}{} +\InputenxUC{0101}{\@tabacckludge=a}{} +\InputenxUC{0102}{\u A}{} +\InputenxUC{0103}{\u a}{} +\InputenxUC{0104}{\k A}{} +\InputenxUC{0105}{\k a}{} +\InputenxUC{0106}{\@tabacckludge'C}{} +\InputenxUC{0107}{\@tabacckludge'c}{} +\InputenxUC{0108}{\^C}{} +\InputenxUC{0109}{\^c}{} +\InputenxUC{010A}{\.C}{} +\InputenxUC{010B}{\.c}{} +\InputenxUC{010C}{\v C}{} +\InputenxUC{010D}{\v c}{} +\InputenxUC{010E}{\v D}{} +\InputenxUC{010F}{\v d}{} +\InputenxUC{0110}{\DJ}{} +\InputenxUC{0111}{\dj}{} +\InputenxUC{0112}{\@tabacckludge=E}{} +\InputenxUC{0113}{\@tabacckludge=e}{} +\InputenxUC{0116}{\.E}{} +\InputenxUC{0117}{\.e}{} +\InputenxUC{0118}{\k E}{} +\InputenxUC{0119}{\k e}{} +\InputenxUC{011A}{\v E}{} +\InputenxUC{011B}{\v e}{} +\InputenxUC{011C}{\^G}{} +\InputenxUC{011D}{\^g}{} +\InputenxUC{011E}{\u G}{} +\InputenxUC{011F}{\u g}{} +\InputenxUC{0120}{\.G}{} +\InputenxUC{0121}{\.g}{} +\InputenxUC{0122}{\c G}{} +\InputenxUC{0123}{\c g}{} +\InputenxUC{0124}{\^H}{} +\InputenxUC{0125}{\^h}{} +\InputenxUC{0126}{\textmalteseH}{% + \ProvideTextCommandDefault{\textmalteseH}{% + \TextSymbolUnavailable\textmalteseH + }% +} +\InputenxUC{0127}{\textmalteseh}{% + \ProvideTextCommandDefault{\textmalteseh}{% + \TextSymbolUnavailable\textmalteseh + }% +} +\InputenxUC{0128}{\~I}{} +\InputenxUC{0129}{\~\i}{} +\InputenxUC{012A}{\@tabacckludge=I}{} +\InputenxUC{012B}{\@tabacckludge=\i}{} +\InputenxUC{012E}{\k I}{} +\InputenxUC{012F}{\k i}{} +\InputenxUC{0130}{\.I}{} +\InputenxUC{0131}{\i}{} +\InputenxUC{0132}{\IJ}{} +\InputenxUC{0133}{\ij}{} +\InputenxUC{0134}{\^J}{} +\InputenxUC{0135}{\^j}{} +\InputenxUC{0136}{\c K}{} +\InputenxUC{0137}{\c k}{} +\InputenxUC{0138}{\textkra}{% + \ProvideTextCommandDefault{\textkra}{% + \TextSymbolUnavailable\textkra + }% +} +\InputenxUC{0139}{\@tabacckludge'L}{} +\InputenxUC{013A}{\@tabacckludge'l}{} +\InputenxUC{013B}{\c L}{} +\InputenxUC{013C}{\c l}{} +\InputenxUC{013D}{\v L}{} +\InputenxUC{013E}{\v l}{} +\InputenxUC{0141}{\L}{} +\InputenxUC{0142}{\l}{} +\InputenxUC{0143}{\@tabacckludge'N}{} +\InputenxUC{0144}{\@tabacckludge'n}{} +\InputenxUC{0145}{\c N}{} +\InputenxUC{0146}{\c n}{} +\InputenxUC{0147}{\v N}{} +\InputenxUC{0148}{\v n}{} +\InputenxUC{014A}{\NG}{} +\InputenxUC{014B}{\ng}{} +\InputenxUC{014C}{\@tabacckludge=O}{} +\InputenxUC{014D}{\@tabacckludge=o}{} +\InputenxUC{0150}{\H O}{} +\InputenxUC{0151}{\H o}{} +\InputenxUC{0152}{\OE}{} +\InputenxUC{0153}{\oe}{} +\InputenxUC{0154}{\@tabacckludge'R}{} +\InputenxUC{0155}{\@tabacckludge'r}{} +\InputenxUC{0156}{\c R}{} +\InputenxUC{0157}{\c r}{} +\InputenxUC{0158}{\v R}{} +\InputenxUC{0159}{\v r}{} +\InputenxUC{015A}{\@tabacckludge'S}{} +\InputenxUC{015B}{\@tabacckludge's}{} +\InputenxUC{015C}{\^S}{} +\InputenxUC{015D}{\^s}{} +\InputenxUC{015E}{\c S}{} +\InputenxUC{015F}{\c s}{} +\InputenxUC{0160}{\v S}{} +\InputenxUC{0161}{\v s}{} +\InputenxUC{0162}{\c T}{} +\InputenxUC{0163}{\c t}{} +\InputenxUC{0164}{\v T}{} +\InputenxUC{0165}{\v t}{} +\InputenxUC{0166}{\textTstroke}{% + \ProvideTextCommandDefault{\textTstroke}{% + \TextSymbolUnavailable\textTstroke + }% +} +\InputenxUC{0167}{\texttstroke}{% + \ProvideTextCommandDefault{\texttstroke}{% + \TextSymbolUnavailable\texttstroke + }% +} +\InputenxUC{0168}{\~U}{} +\InputenxUC{0169}{\~u}{} +\InputenxUC{016A}{\@tabacckludge=U}{} +\InputenxUC{016B}{\@tabacckludge=u}{} +\InputenxUC{016C}{\u U}{} +\InputenxUC{016D}{\u u}{} +\InputenxUC{016E}{\r U}{} +\InputenxUC{016F}{\r u}{} +\InputenxUC{0170}{\H U}{} +\InputenxUC{0171}{\H u}{} +\InputenxUC{0172}{\k U}{} +\InputenxUC{0173}{\k u}{} +\InputenxUC{0174}{\^W}{} +\InputenxUC{0175}{\^w}{} +\InputenxUC{0176}{\^Y}{} +\InputenxUC{0177}{\^y}{} +\InputenxUC{0178}{\"Y}{} +\InputenxUC{0179}{\@tabacckludge'Z}{} +\InputenxUC{017A}{\@tabacckludge'z}{} +\InputenxUC{017B}{\.Z}{} +\InputenxUC{017C}{\.z}{} +\InputenxUC{017D}{\v Z}{} +\InputenxUC{017E}{\v z}{} +\InputenxUC{0192}{\textflorin}{% + \ProvideTextCommandDefault{\textflorin}{% + \textit{f}% + }% +} +\InputenxUC{0218}{\textcommabelow S}{% + \ProvideTextCommandDefault{\textcommabelow}[1]{% + \hmode@bgroup + \ooalign{% + \null#1\crcr + \hidewidth + \raise-.31ex\hbox{% + \check@mathfonts + \fontsize\ssf@size\z@ + \math@fontsfalse\selectfont,% + }% + \hidewidth + }% + \egroup + }% +} +\InputenxUC{0219}{\textcommabelow s}{% + \ProvideTextCommandDefault{\textcommabelow}[1]{% + \hmode@bgroup + \ooalign{% + \null#1\crcr + \hidewidth + \raise-.31ex\hbox{% + \check@mathfonts + \fontsize\ssf@size\z@ + \math@fontsfalse\selectfont,% + }% + \hidewidth + }% + \egroup + }% +} +\InputenxUC{021A}{\textcommabelow T}{% + \ProvideTextCommandDefault{\textcommabelow}[1]{% + \hmode@bgroup + \ooalign{% + \null#1\crcr + \hidewidth + \raise-.31ex\hbox{% + \check@mathfonts + \fontsize\ssf@size\z@ + \math@fontsfalse\selectfont,% + }% + \hidewidth + }% + \egroup + }% +} +\InputenxUC{021B}{\textcommabelow t}{% + \ProvideTextCommandDefault{\textcommabelow}[1]{% + \hmode@bgroup + \ooalign{% + \null#1\crcr + \hidewidth + \raise-.31ex\hbox{% + \check@mathfonts + \fontsize\ssf@size\z@ + \math@fontsfalse\selectfont,% + }% + \hidewidth + }% + \egroup + }% +} +\InputenxUC{02C6}{\textasciicircum}{} +\InputenxUC{02C7}{\textasciicaron}{% + \ProvideTextCommandDefault{\textasciicaron}{% + \v{}% + }% +} +\InputenxUC{02CB}{\textasciigrave}{% + \ProvideTextCommandDefault{\textasciigrave}{% + \@tabacckludge`{}% + }% +} +\InputenxUC{02D8}{\textasciibreve}{% + \ProvideTextCommandDefault{\textasciibreve}{% + \u{}% + }% +} +\InputenxUC{02D9}{\.{}}{} +\InputenxUC{02DA}{\r{}}{} +\InputenxUC{02DB}{\k{}}{} +\InputenxUC{02DC}{\textasciitilde}{} +\InputenxUC{02DD}{\textacutedbl}{% + \ProvideTextCommandDefault{\textacutedbl}{% + \H{}% + }% +} +\InputenxUC{0393}{\textGamma}{% + \ProvideTextCommandDefault{\textGamma}{% + \ensuremath\Gamma + }% +} +\InputenxUC{0398}{\textTheta}{% + \ProvideTextCommandDefault{\textTheta}{% + \ensuremath\Theta + }% +} +\InputenxUC{03A3}{\textSigma}{% + \ProvideTextCommandDefault{\textSigma}{% + \ensuremath\Sigma + }% +} +\InputenxUC{03A6}{\textPhi}{% + \ProvideTextCommandDefault{\textPhi}{% + \ensuremath\Phi + }% +} +\InputenxUC{03A9}{\textOmega}{% + \ProvideTextCommandDefault{\textOmega}{% + \ensuremath\Omega + }% +} +\InputenxUC{03B1}{\textalpha}{% + \ProvideTextCommandDefault{\textalpha}{% + \ensuremath\alpha + }% +} +\InputenxUC{03B4}{\textdelta}{% + \ProvideTextCommandDefault{\textdelta}{% + \ensuremath\delta + }% +} +\InputenxUC{03B5}{\textepsilon}{% + \ProvideTextCommandDefault{\textepsilon}{% + \ensuremath\varepsilon + }% +} +\InputenxUC{03C0}{\textpi}{% + \ProvideTextCommandDefault{\textpi}{% + \ensuremath\pi + }% +} +\InputenxUC{03C3}{\textsigma}{% + \ProvideTextCommandDefault{\textsigma}{% + \ensuremath\sigma + }% +} +\InputenxUC{03C4}{\texttau}{% + \ProvideTextCommandDefault{\texttau}{% + \ensuremath\tau + }% +} +\InputenxUC{03C6}{\textphi}{% + \ProvideTextCommandDefault{\textphi}{% + \ensuremath\phi + }% +} +\InputenxUC{0401}{\CYRYO}{} +\InputenxUC{0402}{\CYRDJE}{} +\InputenxUC{0404}{\CYRIE}{} +\InputenxUC{0405}{\CYRDZE}{} +\InputenxUC{0406}{\CYRII}{} +\InputenxUC{0407}{\CYRYI}{} +\InputenxUC{0408}{\CYRJE}{} +\InputenxUC{0409}{\CYRLJE}{} +\InputenxUC{040A}{\CYRNJE}{} +\InputenxUC{040B}{\CYRTSHE}{} +\InputenxUC{040E}{\CYRUSHRT}{} +\InputenxUC{040F}{\CYRDZHE}{} +\InputenxUC{0410}{\CYRA}{} +\InputenxUC{0411}{\CYRB}{} +\InputenxUC{0412}{\CYRV}{} +\InputenxUC{0413}{\CYRG}{} +\InputenxUC{0414}{\CYRD}{} +\InputenxUC{0415}{\CYRE}{} +\InputenxUC{0416}{\CYRZH}{} +\InputenxUC{0417}{\CYRZ}{} +\InputenxUC{0418}{\CYRI}{} +\InputenxUC{0419}{\CYRISHRT}{} +\InputenxUC{041A}{\CYRK}{} +\InputenxUC{041B}{\CYRL}{} +\InputenxUC{041C}{\CYRM}{} +\InputenxUC{041D}{\CYRN}{} +\InputenxUC{041E}{\CYRO}{} +\InputenxUC{041F}{\CYRP}{} +\InputenxUC{0420}{\CYRR}{} +\InputenxUC{0421}{\CYRS}{} +\InputenxUC{0422}{\CYRT}{} +\InputenxUC{0423}{\CYRU}{} +\InputenxUC{0424}{\CYRF}{} +\InputenxUC{0425}{\CYRH}{} +\InputenxUC{0426}{\CYRC}{} +\InputenxUC{0427}{\CYRCH}{} +\InputenxUC{0428}{\CYRSH}{} +\InputenxUC{0429}{\CYRSHCH}{} +\InputenxUC{042A}{\CYRHRDSN}{} +\InputenxUC{042B}{\CYRERY}{} +\InputenxUC{042C}{\CYRSFTSN}{} +\InputenxUC{042D}{\CYREREV}{} +\InputenxUC{042E}{\CYRYU}{} +\InputenxUC{042F}{\CYRYA}{} +\InputenxUC{0430}{\cyra}{} +\InputenxUC{0431}{\cyrb}{} +\InputenxUC{0432}{\cyrv}{} +\InputenxUC{0433}{\cyrg}{} +\InputenxUC{0434}{\cyrd}{} +\InputenxUC{0435}{\cyre}{} +\InputenxUC{0436}{\cyrzh}{} +\InputenxUC{0437}{\cyrz}{} +\InputenxUC{0438}{\cyri}{} +\InputenxUC{0439}{\cyrishrt}{} +\InputenxUC{043A}{\cyrk}{} +\InputenxUC{043B}{\cyrl}{} +\InputenxUC{043C}{\cyrm}{} +\InputenxUC{043D}{\cyrn}{} +\InputenxUC{043E}{\cyro}{} +\InputenxUC{043F}{\cyrp}{} +\InputenxUC{0440}{\cyrr}{} +\InputenxUC{0441}{\cyrs}{} +\InputenxUC{0442}{\cyrt}{} +\InputenxUC{0443}{\cyru}{} +\InputenxUC{0444}{\cyrf}{} +\InputenxUC{0445}{\cyrh}{} +\InputenxUC{0446}{\cyrc}{} +\InputenxUC{0447}{\cyrch}{} +\InputenxUC{0448}{\cyrsh}{} +\InputenxUC{0449}{\cyrshch}{} +\InputenxUC{044A}{\cyrhrdsn}{} +\InputenxUC{044B}{\cyrery}{} +\InputenxUC{044C}{\cyrsftsn}{} +\InputenxUC{044D}{\cyrerev}{} +\InputenxUC{044E}{\cyryu}{} +\InputenxUC{044F}{\cyrya}{} +\InputenxUC{0451}{\cyryo}{} +\InputenxUC{0452}{\cyrdje}{} +\InputenxUC{0454}{\cyrie}{} +\InputenxUC{0455}{\cyrdze}{} +\InputenxUC{0456}{\cyrii}{} +\InputenxUC{0457}{\cyryi}{} +\InputenxUC{0458}{\cyrje}{} +\InputenxUC{0459}{\cyrlje}{} +\InputenxUC{045A}{\cyrnje}{} +\InputenxUC{045B}{\cyrtshe}{} +\InputenxUC{045E}{\cyrushrt}{} +\InputenxUC{045F}{\cyrdzhe}{} +\InputenxUC{0462}{\CYRYAT}{} +\InputenxUC{0463}{\cyryat}{} +\InputenxUC{046A}{\CYRBYUS}{} +\InputenxUC{046B}{\cyrbyus}{} +\InputenxUC{0472}{\CYRFITA}{} +\InputenxUC{0473}{\cyrfita}{} +\InputenxUC{0474}{\CYRIZH}{} +\InputenxUC{0475}{\cyrizh}{} +\InputenxUC{048C}{\CYRSEMISFTSN}{} +\InputenxUC{048D}{\cyrsemisftsn}{} +\InputenxUC{048E}{\CYRRTICK}{} +\InputenxUC{048F}{\cyrrtick}{} +\InputenxUC{0490}{\CYRGUP}{} +\InputenxUC{0491}{\cyrgup}{} +\InputenxUC{0492}{\CYRGHCRS}{} +\InputenxUC{0493}{\cyrghcrs}{} +\InputenxUC{0494}{\CYRGHK}{} +\InputenxUC{0495}{\cyrghk}{} +\InputenxUC{0496}{\CYRZHDSC}{} +\InputenxUC{0497}{\cyrzhdsc}{} +\InputenxUC{0498}{\CYRZDSC}{} +\InputenxUC{0499}{\cyrzdsc}{} +\InputenxUC{049A}{\CYRKDSC}{} +\InputenxUC{049B}{\cyrkdsc}{} +\InputenxUC{049C}{\CYRKVCRS}{} +\InputenxUC{049D}{\cyrkvcrs}{} +\InputenxUC{049E}{\CYRKHCRS}{} +\InputenxUC{049F}{\cyrkhcrs}{} +\InputenxUC{04A0}{\CYRKBEAK}{} +\InputenxUC{04A1}{\cyrkbeak}{} +\InputenxUC{04A2}{\CYRNDSC}{} +\InputenxUC{04A3}{\cyrndsc}{} +\InputenxUC{04A4}{\CYRNG}{} +\InputenxUC{04A5}{\cyrng}{} +\InputenxUC{04A6}{\CYRPHK}{} +\InputenxUC{04A7}{\cyrphk}{} +\InputenxUC{04A8}{\CYRABHHA}{} +\InputenxUC{04A9}{\cyrabhha}{} +\InputenxUC{04AA}{\CYRSDSC}{} +\InputenxUC{04AB}{\cyrsdsc}{} +\InputenxUC{04AC}{\CYRTDSC}{} +\InputenxUC{04AD}{\cyrtdsc}{} +\InputenxUC{04AE}{\CYRY}{} +\InputenxUC{04AF}{\cyry}{} +\InputenxUC{04B0}{\CYRYHCRS}{} +\InputenxUC{04B1}{\cyryhcrs}{} +\InputenxUC{04B2}{\CYRHDSC}{} +\InputenxUC{04B3}{\cyrhdsc}{} +\InputenxUC{04B4}{\CYRTETSE}{} +\InputenxUC{04B5}{\cyrtetse}{} +\InputenxUC{04B6}{\CYRCHRDSC}{} +\InputenxUC{04B7}{\cyrchrdsc}{} +\InputenxUC{04B8}{\CYRCHVCRS}{} +\InputenxUC{04B9}{\cyrchvcrs}{} +\InputenxUC{04BA}{\CYRSHHA}{} +\InputenxUC{04BB}{\cyrshha}{} +\InputenxUC{04BC}{\CYRABHCH}{} +\InputenxUC{04BD}{\cyrabhch}{} +\InputenxUC{04BE}{\CYRABHCHDSC}{} +\InputenxUC{04BF}{\cyrabhchdsc}{} +\InputenxUC{04C0}{\CYRpalochka}{} +\InputenxUC{04C3}{\CYRKHK}{} +\InputenxUC{04C4}{\cyrkhk}{} +\InputenxUC{04C5}{\CYRLDSC}{} +\InputenxUC{04C6}{\cyrldsc}{} +\InputenxUC{04C7}{\CYRNHK}{} +\InputenxUC{04C8}{\cyrnhk}{} +\InputenxUC{04CB}{\CYRCHLDSC}{} +\InputenxUC{04CC}{\cyrchldsc}{} +\InputenxUC{04CD}{\CYRMDSC}{} +\InputenxUC{04CE}{\cyrmdsc}{} +\InputenxUC{04D4}{\CYRAE}{} +\InputenxUC{04D5}{\cyrae}{} +\InputenxUC{04D8}{\CYRSCHWA}{} +\InputenxUC{04D9}{\cyrschwa}{} +\InputenxUC{04E0}{\CYRABHDZE}{} +\InputenxUC{04E1}{\cyrabhdze}{} +\InputenxUC{04E8}{\CYROTLD}{} +\InputenxUC{04E9}{\cyrotld}{} +\InputenxUC{0E3F}{\textbaht}{% + \ProvideTextCommandDefault{\textbaht}{% + \hmode@bgroup + \ooalign{% + B% + \crcr% + \hidewidth + \setbox\z@\hbox{B}% + \dimen@\ht\z@ + \advance\dimen@\dp\z@ + \setbox\z@\hbox{\textbar}% + \advance\dimen@-\ht\z@ + \advance\dimen@\dp\z@ + \raise.5\dimen@\hbox{\textbar}% + \hidewidth + }% + \egroup + }% +} +\InputenxUC{1E02}{\.B}{} +\InputenxUC{1E03}{\.b}{} +\InputenxUC{1E0A}{\.D}{} +\InputenxUC{1E0B}{\.d}{} +\InputenxUC{1E1E}{\.F}{} +\InputenxUC{1E1F}{\.f}{} +\InputenxUC{1E40}{\.M}{} +\InputenxUC{1E41}{\.m}{} +\InputenxUC{1E56}{\.P}{} +\InputenxUC{1E57}{\.p}{} +\InputenxUC{1E60}{\.S}{} +\InputenxUC{1E61}{\.s}{} +\InputenxUC{1E6A}{\.T}{} +\InputenxUC{1E6B}{\.t}{} +\InputenxUC{1E80}{\@tabacckludge`W}{} +\InputenxUC{1E81}{\@tabacckludge`w}{} +\InputenxUC{1E82}{\@tabacckludge'W}{} +\InputenxUC{1E83}{\@tabacckludge'w}{} +\InputenxUC{1E84}{\"W}{} +\InputenxUC{1E85}{\"w}{} +\InputenxUC{1EF2}{\@tabacckludge`Y}{} +\InputenxUC{1EF3}{\@tabacckludge`y}{} +\InputenxUC{200C}{\textcompwordmark}{} +\InputenxUC{2013}{\textendash}{} +\InputenxUC{2014}{\textemdash}{} +\InputenxUC{2016}{\textbardbl}{} +\InputenxUC{2018}{\textquoteleft}{} +\InputenxUC{2019}{\textquoteright}{} +\InputenxUC{201A}{\quotesinglbase}{} +\InputenxUC{201C}{\textquotedblleft}{} +\InputenxUC{201D}{\textquotedblright}{} +\InputenxUC{201E}{\quotedblbase}{} +\InputenxUC{2020}{\textdagger}{} +\InputenxUC{2021}{\textdaggerdbl}{} +\InputenxUC{2022}{\textbullet}{} +\InputenxUC{2026}{\textellipsis}{} +\InputenxUC{2030}{\textperthousand}{} +\InputenxUC{2031}{\textpertenthousand}{} +\InputenxUC{2039}{\guilsinglleft}{} +\InputenxUC{203A}{\guilsinglright}{} +\InputenxUC{203B}{\textreferencemark}{} +\InputenxUC{203D}{\textinterrobang}{% + \ProvideTextCommandDefault{\textinterrobang}{% + \hmode@bgroup\ooalign{?\crcr\hidewidth!\hidewidth}\egroup + }% +} +\InputenxUC{2044}{\textfractionsolidus}{% + \ProvideTextCommandDefault{\textfractionsolidus}{% + /% + }% +} +\InputenxUC{204E}{\textasteriskcentered}{} +\InputenxUC{2052}{\textdiscount}{} +\InputenxUC{207F}{\textnsuperior}{% + \ProvideTextCommandDefault{\textnsuperior}{% + \ensuremath{{^n}}% + }% +} +\InputenxUC{20A1}{\textcolonmonetary}{} +\InputenxUC{20A4}{\textlira}{} +\InputenxUC{20A6}{\textnaira}{} +\InputenxUC{20A7}{\textpeseta}{% + \ProvideTextCommandDefault{\textpeseta}{% + Pt% + }% +} +\InputenxUC{20A9}{\textwon}{} +\InputenxUC{20AB}{\textdong}{} +\InputenxUC{20AC}{\texteuro}{% + \ProvideTextCommandDefault{\texteuro}{% + \TextSymbolUnavailable\texteuro + }% +} +\InputenxUC{20B1}{\textpeso}{} +\InputenxUC{2103}{\textcelsius}{% + \ProvideTextCommandDefault{\textcelsius}{% + \ensuremath{{^\circ}}C% + }% +} +\InputenxUC{2116}{\textnumero}{% + \ProvideTextCommandDefault{\textnumero}{% + N% + \bgroup + \check@mathfonts + \fontsize\sf@size\z@ + \math@fontsfalse + \selectfont + \ooalign{% + \raise0.5ex\hbox{o}% + \crcr + \hline + }% + \egroup + }% +} +\InputenxUC{2117}{\textcircledP}{% + \ProvideTextCommandDefault{\textcircledP}{% + \textcircled{% + \check@mathfonts + \fontsize\sf@size\z@ + \math@fontsfalse + \selectfont + P% + }% + }% +} +\InputenxUC{211E}{\textrecipe}{} +\InputenxUC{2120}{\textservicemark}{% + \ProvideTextCommandDefault{\textservicemark}{% + \textsuperscript{SM}% + }% +} +\InputenxUC{2122}{\texttrademark}{} +\InputenxUC{2126}{\textohm}{% + \ProvideTextCommandDefault{\textohm}{% + \ensuremath\Omega + }% +} +\InputenxUC{2127}{\textmho}{} +\InputenxUC{212E}{\textestimated}{} +\InputenxUC{2190}{\textleftarrow}{% + \ProvideTextCommandDefault{\textleftarrow}{% + \ensuremath\leftarrow + }% +} +\InputenxUC{2191}{\textuparrow}{% + \ProvideTextCommandDefault{\textuparrow}{% + \ensuremath\uparrow + }% +} +\InputenxUC{2192}{\textrightarrow}{% + \ProvideTextCommandDefault{\textrightarrow}{% + \ensuremath\rightarrow + }% +} +\InputenxUC{2193}{\textdownarrow}{% + \ProvideTextCommandDefault{\textdownarrow}{% + \ensuremath\downarrow + }% +} +\InputenxUC{2202}{\textpartial}{% + \ProvideTextCommandDefault{\textpartial}{% + \ensuremath\partial + }% +} +\InputenxUC{2206}{\textincrement}{% + \ProvideTextCommandDefault{\textincrement}{% + \ensuremath\Delta + }% +} +\InputenxUC{220F}{\textproduct}{% + \ProvideTextCommandDefault{\textproduct}{% + \ensuremath\Pi + }% +} +\InputenxUC{2211}{\textsummation}{% + \ProvideTextCommandDefault{\textsummation}{% + \ensuremath\Sigma + }% +} +\InputenxUC{2219}{\textbullet}{} +\InputenxUC{221A}{\textsurd}{% + \ProvideTextCommandDefault{\textsurd}{% + \ensuremath\surd + }% +} +\InputenxUC{221E}{\textinfinity}{% + \ProvideTextCommandDefault{\textinfinity}{% + \ensuremath\infty + }% +} +\InputenxUC{2229}{\textintersection}{% + \ProvideTextCommandDefault{\textintersection}{% + \ensuremath\cap + }% +} +\InputenxUC{222B}{\textintegral}{% + \ProvideTextCommandDefault{\textintegral}{% + \ensuremath\int + }% +} +\InputenxUC{2248}{\textapproxequal}{% + \ProvideTextCommandDefault{\textapproxequal}{% + \ensuremath\approx + }% +} +\InputenxUC{2260}{\textnotequal}{% + \ProvideTextCommandDefault{\textnotequal}{% + \ensuremath\neq + }% +} +\InputenxUC{2261}{\textequivalence}{% + \ProvideTextCommandDefault{\textequivalence}{% + \ensuremath\equiv + }% +} +\InputenxUC{2264}{\textlessequal}{% + \ProvideTextCommandDefault{\textlessequal}{% + \ensuremath\leq + }% +} +\InputenxUC{2265}{\textgreaterequal}{% + \ProvideTextCommandDefault{\textgreaterequal}{% + \ensuremath\geq + }% +} +\InputenxUC{2329}{\textlangle}{% + \ProvideTextCommandDefault{\textlangle}{% + \ensuremath\langle + }% +} +\InputenxUC{232A}{\textrangle}{% + \ProvideTextCommandDefault{\textrangle}{% + \ensuremath\rangle + }% +} +\InputenxUC{2422}{\textblank}{} +\InputenxUC{2423}{\textvisiblespace}{} +\InputenxUC{2500}{\textSFx}{} +\InputenxUC{2502}{\textSFxi}{} +\InputenxUC{250C}{\textSFi}{} +\InputenxUC{2510}{\textSFiii}{} +\InputenxUC{2514}{\textSFii}{} +\InputenxUC{2518}{\textSFiv}{} +\InputenxUC{251C}{\textSFviii}{} +\InputenxUC{2524}{\textSFix}{} +\InputenxUC{252C}{\textSFvi}{} +\InputenxUC{2534}{\textSFvii}{} +\InputenxUC{253C}{\textSFv}{} +\InputenxUC{2550}{\textSFxliii}{} +\InputenxUC{2551}{\textSFxxiv}{} +\InputenxUC{2552}{\textSFli}{} +\InputenxUC{2553}{\textSFlii}{} +\InputenxUC{2554}{\textSFxxxix}{} +\InputenxUC{2555}{\textSFxxii}{} +\InputenxUC{2556}{\textSFxxi}{} +\InputenxUC{2557}{\textSFxxv}{} +\InputenxUC{2558}{\textSFl}{} +\InputenxUC{2559}{\textSFxlix}{} +\InputenxUC{255A}{\textSFxxxviii}{} +\InputenxUC{255B}{\textSFxxviii}{} +\InputenxUC{255C}{\textSFxxvii}{} +\InputenxUC{255D}{\textSFxxvi}{} +\InputenxUC{255E}{\textSFxxxvi}{} +\InputenxUC{255F}{\textSFxxxvii}{} +\InputenxUC{2560}{\textSFxlii}{} +\InputenxUC{2561}{\textSFxix}{} +\InputenxUC{2562}{\textSFxx}{} +\InputenxUC{2563}{\textSFxxiii}{} +\InputenxUC{2564}{\textSFxlvii}{} +\InputenxUC{2565}{\textSFxlviii}{} +\InputenxUC{2566}{\textSFxli}{} +\InputenxUC{2567}{\textSFxlv}{} +\InputenxUC{2568}{\textSFxlvi}{} +\InputenxUC{2569}{\textSFxl}{} +\InputenxUC{256A}{\textSFliv}{} +\InputenxUC{256B}{\textSFliii}{} +\InputenxUC{256C}{\textSFxliv}{} +\InputenxUC{2580}{\textupblock}{} +\InputenxUC{2584}{\textdnblock}{} +\InputenxUC{2588}{\textblock}{} +\InputenxUC{258C}{\textlfblock}{} +\InputenxUC{2590}{\textrtblock}{} +\InputenxUC{2591}{\textltshade}{} +\InputenxUC{2592}{\textshade}{} +\InputenxUC{2593}{\textdkshade}{} +\InputenxUC{25A0}{\textblacksquare}{% + \ProvideTextCommandDefault{\textblacksquare}{% + \vrule \@width .3em \@height .4em \@depth -.1em\relax + }% +} +\InputenxUC{25CA}{\textlozenge}{% + \ProvideTextCommandDefault{\textlozenge}{% + \ensuremath\diamond + }% +} +\InputenxUC{25E6}{\textopenbullet}{% + \ProvideTextCommandDefault{\textopenbullet}{% + \ensuremath\circ + }% +} +\InputenxUC{25EF}{\textbigcircle}{} +\InputenxUC{266A}{\textmusicalnote}{} +\InputenxUC{FB01}{fi}{} +\InputenxUC{FB02}{fl}{} +% \end{macrocode} +% \fi +% +% \begin{macrocode} +%</uc> +% \end{macrocode} +% +% \subsection{Math meaning declarations} +% +% Package \xpackage{inpmath} already declares math meanings +% for LICRs. Here are some more. One goal is +% to use the input characters in math that were defined +% in the standard \LaTeX\ encodings using \cs{DeclareInputMath}. +% \begin{macrocode} +%<*math> +\ProvidesFile{ix-math.def}% + [2006/08/24 v1.0 Math list (inputenx)] +% \end{macrocode} +% +% The next math meaning for \cs{ss} looks a little funny. +% But it is useful for input characters, where most encodings +% share in practice the same slot for \cs{ss} and \cs{beta}. +% Thus we do not need two encodings such as \xfile{cp437de.def} +% and \xfile{cp437.def}. +% \begin{macrocode} +\DeclareMathMeaning{\ss}{\beta} +% \end{macrocode} +% \begin{macrocode} +\DeclareMathMeaning{\textalpha}{\alpha} +\DeclareMathMeaning{\textapproxequal}{\aprox} +\DeclareMathMeaning{\textbardbl}{\Vert}% = \| +\DeclareMathMeaning{\textbullet}{\bullet} +\DeclareMathMeaning{\textcopyright}{{\nfss@text{\textcopyright}}} +\DeclareMathMeaning{\textdagger}{\dagger} +\DeclareMathMeaning{\textdaggerdbl}{\ddagger} +\DeclareMathMeaning{\textdegree}{{^\circ}} +\DeclareMathMeaning{\textdelta}{\delta} +\DeclareMathMeaning{\textdollar}{\mathdollar} +\DeclareMathMeaning{\textepsilon}{\varepsilon} +\DeclareMathMeaning{\textequivalence}{\equiv} +\DeclareMathMeaning{\textbraceleft}{\lbrace} +\DeclareMathMeaning{\textbraceright}{\rbrace} +\DeclareMathMeaning{\textdiv}{\div} +\DeclareMathMeaning{\textdownarrow}{\downarrow} +\DeclareMathMeaning{\textellipsis}{\mathellipsis} +\DeclareMathMeaning{\textGamma}{\Gamma} +\DeclareMathMeaning{\textgreaterequal}{\geq} +\DeclareMathMeaning{\textincrement}{\Delta} +\DeclareMathMeaning{\textinfinity}{\infty} +\DeclareMathMeaning{\textintegral}{\int} +\DeclareMathMeaning{\textintersection}{\cap} +\DeclareMathMeaning{\textlangle}{\langle} +\DeclareMathMeaning{\textleftarrow}{\leftarrow} +\DeclareMathMeaning{\textlessequal}{\leq} +\DeclareMathMeaning{\textlnot}{\lnot} +\DeclareMathMeaning{\textlogicalnot}{\lnot} +\DeclareMathMeaning{\textlozenge}{\diamond} +\DeclareMathMeaning{\textmu}{\mu} +\DeclareMathMeaning{\textnotequal}{\neq} +\DeclareMathMeaning{\textnsuperior}{^n} +\DeclareMathMeaning{\textohm}{\Omega} +\DeclareMathMeaning{\textOmega}{\Omega} +\DeclareMathMeaning{\textonehalf}{\frac12} +\DeclareMathMeaning{\textonequarter}{\frac14} +\DeclareMathMeaning{\textonesuperior}{^1} +\DeclareMathMeaning{\textopenbullet}{\circ} +\DeclareMathMeaning{\textparagraph}{\mathparagraph} +\DeclareMathMeaning{\textpartial}{\partial} +\DeclareMathMeaning{\textPhi}{\Phi} +\DeclareMathMeaning{\textphi}{\phi} +\DeclareMathMeaning{\textpi}{\pi} +\DeclareMathMeaning{\textproduct}{\prod} +\DeclareMathMeaning{\textrangle}{\rangle} +\DeclareMathMeaning{\textrightarrow}{\rightarrow} +\DeclareMathMeaning{\textsection}{\mathsection} +\DeclareMathMeaning{\textSigma}{\Sigma} +\DeclareMathMeaning{\textsigma}{\sigma} +\DeclareMathMeaning{\textsterling}{\mathsterling} +\DeclareMathMeaning{\textsummation}{\sum} +\DeclareMathMeaning{\textsurd}{\surd} +\DeclareMathMeaning{\texttau}{\tau} +\DeclareMathMeaning{\textTheta}{\Theta} +\DeclareMathMeaning{\textthreequarters}{\frac34} +\DeclareMathMeaning{\textthreesuperior}{^3} +\DeclareMathMeaning{\texttwosuperior}{^2} +\DeclareMathMeaning{\textuparrow}{\uparrow} +% \end{macrocode} +% \begin{macrocode} +%</math> +% \end{macrocode} +% +% \subsection{Documentation files} +% +% \subsubsection{List of known LICR commands} +% +% This is the list of commands for use in LICR that are already +% defined by standard \LaTeX\ without extra packages. +% \begin{macrocode} +%<*licrcmds> + % List of known LICR commdands of inputenx 2006/08/24 v1.0 + % + % Format: \LICRcmd{<command>}{<type>} + % Types: + % Accent: <command> was defined by \DeclareTextAccentDefault + % Command: <command> was defined by \DeclareTextCommandDefault + % Symbol: <command> was defined by \DeclareTextSymbolDefault + % Internal: for \@tabacckludge + % Extra: additional commands + % + % Entries derived from the 2ekernel part + % of ltoutenc.dtx 2005/11/08 v1.99h. + % +\LICRcmd{\ }{Extra} +\LICRcmd{\"}{Composite} +\LICRcmd{\'}{Composite} +\LICRcmd{\-}{Extra} +\LICRcmd{\.}{Composite} +\LICRcmd{\=}{Accent} +\LICRcmd{\@tabacckludge}{Internal} +\LICRcmd{\AE}{Symbol} +\LICRcmd{\DH}{Symbol} +\LICRcmd{\DJ}{Symbol} +\LICRcmd{\H}{Composite} +\LICRcmd{\IJ}{Symbol} +\LICRcmd{\L}{Symbol} +\LICRcmd{\NG}{Symbol} +\LICRcmd{\O}{Symbol} +\LICRcmd{\OE}{Symbol} +\LICRcmd{\SS}{Symbol} +\LICRcmd{\TH}{Symbol} +\LICRcmd{\^}{Composite} +\LICRcmd{\`}{Composite} +\LICRcmd{\ae}{Symbol} +\LICRcmd{\b}{Command} +\LICRcmd{\c}{Composite} +\LICRcmd{\d}{Command} +\LICRcmd{\dh}{Symbol} +\LICRcmd{\dj}{Symbol} +\LICRcmd{\guillemotleft}{Symbol} +\LICRcmd{\guillemotright}{Symbol} +\LICRcmd{\guilsinglleft}{Symbol} +\LICRcmd{\guilsinglright}{Symbol} +\LICRcmd{\i}{Symbol} +\LICRcmd{\ij}{Symbol} +\LICRcmd{\j}{Symbol} +\LICRcmd{\k}{CompositeCommand} +\LICRcmd{\l}{Symbol} +\LICRcmd{\ng}{Symbol} +\LICRcmd{\nobreakspace}{Extra} +\LICRcmd{\o}{Symbol} +\LICRcmd{\oe}{Symbol} +\LICRcmd{\quotedblbase}{Symbol} +\LICRcmd{\quotesinglbase}{Symbol} +\LICRcmd{\r}{Composite} +\LICRcmd{\ss}{Symbol} +\LICRcmd{\t}{Accent} +\LICRcmd{\textasciicircum}{Symbol} +\LICRcmd{\textasciitilde}{Symbol} +\LICRcmd{\textasteriskcentered}{Symbol} +\LICRcmd{\textbackslash}{Symbol} +\LICRcmd{\textbar}{Symbol} +\LICRcmd{\textbardbl}{Symbol} +\LICRcmd{\textbigcircle}{Symbol} +\LICRcmd{\textbraceleft}{Symbol} +\LICRcmd{\textbraceright}{Symbol} +\LICRcmd{\textbullet}{Symbol} +\LICRcmd{\textcircled}{Command} +\LICRcmd{\textcompwordmark}{Symbol} +\LICRcmd{\textcopyright}{CommandDefault} +\LICRcmd{\textdagger}{Symbol} +\LICRcmd{\textdaggerdbl}{Symbol} +\LICRcmd{\textdollar}{Symbol} +\LICRcmd{\textellipsis}{CommandDefault} +\LICRcmd{\textemdash}{Symbol} +\LICRcmd{\textendash}{Symbol} +\LICRcmd{\textexclamdown}{Symbol} +\LICRcmd{\textgreater}{Symbol} +\LICRcmd{\textless}{Symbol} +\LICRcmd{\textogonekcentered}{Command} +\LICRcmd{\textordfeminine}{CommandDefault} +\LICRcmd{\textordmasculine}{CommandDefault} +\LICRcmd{\textparagraph}{Symbol} +\LICRcmd{\textperiodcentered}{Symbol} +\LICRcmd{\textpertenthousand}{Command} +\LICRcmd{\textperthousand}{Command} +\LICRcmd{\textquestiondown}{Symbol} +\LICRcmd{\textquotedbl}{Symbol} +\LICRcmd{\textquotedblleft}{Symbol} +\LICRcmd{\textquotedblright}{Symbol} +\LICRcmd{\textquoteleft}{Symbol} +\LICRcmd{\textquoteright}{Symbol} +\LICRcmd{\textregistered}{CommandDefault} +\LICRcmd{\textsection}{Symbol} +\LICRcmd{\textsterling}{Symbol} +\LICRcmd{\texttrademark}{CommandDefault} +\LICRcmd{\textunderscore}{Symbol} +\LICRcmd{\textvisiblespace}{Symbol} +\LICRcmd{\th}{Symbol} +\LICRcmd{\u}{Composite} +\LICRcmd{\v}{Composite} +\LICRcmd{\~}{Composite} +%</licrcmds> +% \end{macrocode} +% +% \subsubsection{Commented additions for \xfile{utf8enc.dfu}} +% +% \begin{macrocode} +%<*dfudoc> + % inputenx-utf8enc.txt 2006/08/24 v1.0 + % Commented additions for utf8enc.dfu + +% \end{macrocode} +% +% \textit{List omitted here, see \xfile{inputenx-utf8enc.txt}.} +% \iffalse +% \begin{macrocode} +\DeclareUnicodeCharacter{00A0}{\nobreakspace} + % NO-BREAK SPACE + +\DeclareUnicodeCharacter{00AD}{\-} + % SOFT HYPHEN + +\DeclareUnicodeCharacter{0100}{\@tabacckludge=A} + % LATIN CAPITAL LETTER A WITH MACRON + +\DeclareUnicodeCharacter{0101}{\@tabacckludge=a} + % LATIN SMALL LETTER A WITH MACRON + +\DeclareUnicodeCharacter{0108}{\^C} + % LATIN CAPITAL LETTER C WITH CIRCUMFLEX + +\DeclareUnicodeCharacter{0109}{\^c} + % LATIN SMALL LETTER C WITH CIRCUMFLEX + +\DeclareUnicodeCharacter{010A}{\.C} + % LATIN CAPITAL LETTER C WITH DOT ABOVE + +\DeclareUnicodeCharacter{010B}{\.c} + % LATIN SMALL LETTER C WITH DOT ABOVE + +\DeclareUnicodeCharacter{0112}{\@tabacckludge=E} + % LATIN CAPITAL LETTER E WITH MACRON + +\DeclareUnicodeCharacter{0113}{\@tabacckludge=e} + % LATIN SMALL LETTER E WITH MACRON + +\DeclareUnicodeCharacter{0116}{\.E} + % LATIN CAPITAL LETTER E WITH DOT ABOVE + +\DeclareUnicodeCharacter{0117}{\.e} + % LATIN SMALL LETTER E WITH DOT ABOVE + +\DeclareUnicodeCharacter{011C}{\^G} + % LATIN CAPITAL LETTER G WITH CIRCUMFLEX + +\DeclareUnicodeCharacter{011D}{\^g} + % LATIN SMALL LETTER G WITH CIRCUMFLEX + +\DeclareUnicodeCharacter{0120}{\.G} + % LATIN CAPITAL LETTER G WITH DOT ABOVE + +\DeclareUnicodeCharacter{0121}{\.g} + % LATIN SMALL LETTER G WITH DOT ABOVE + +\DeclareUnicodeCharacter{0122}{\c G} + % LATIN CAPITAL LETTER G WITH CEDILLA + +\DeclareUnicodeCharacter{0123}{\c g} + % LATIN SMALL LETTER G WITH CEDILLA + +\DeclareUnicodeCharacter{0124}{\^H} + % LATIN CAPITAL LETTER H WITH CIRCUMFLEX + +\DeclareUnicodeCharacter{0125}{\^h} + % LATIN SMALL LETTER H WITH CIRCUMFLEX + +\DeclareUnicodeCharacter{0126}{\textmalteseH} + % LATIN CAPITAL LETTER H WITH STROKE + % LATIN CAPITAL LETTER H BAR + % latin3.def + +\DeclareUnicodeCharacter{0127}{\textmalteseh} + % LATIN SMALL LETTER H WITH STROKE + % LATIN SMALL LETTER H BAR + % latin3.def + +\DeclareUnicodeCharacter{0128}{\~I} + % LATIN CAPITAL LETTER I WITH TILDE + +\DeclareUnicodeCharacter{0129}{\~\i} + % LATIN SMALL LETTER I WITH TILDE + % LATIN SMALL LETTER I TILDE + +\DeclareUnicodeCharacter{012A}{\@tabacckludge=I} + % LATIN CAPITAL LETTER I WITH MACRON + +\DeclareUnicodeCharacter{012B}{\@tabacckludge=\i} + % LATIN SMALL LETTER I WITH MACRON + +\DeclareUnicodeCharacter{012E}{\k I} + % LATIN CAPITAL LETTER I WITH OGONEK + +\DeclareUnicodeCharacter{012F}{\k i} + % LATIN SMALL LETTER I WITH OGONEK + +\DeclareUnicodeCharacter{0134}{\^J} + % LATIN CAPITAL LETTER J WITH CIRCUMFLEX + +\DeclareUnicodeCharacter{0135}{\^j} + % LATIN SMALL LETTER J WITH CIRCUMFLEX + +\DeclareUnicodeCharacter{0136}{\c K} + % LATIN CAPITAL LETTER K WITH CEDILLA + +\DeclareUnicodeCharacter{0137}{\c k} + % LATIN SMALL LETTER K WITH CEDILLA + +\DeclareUnicodeCharacter{0138}{\textkra} + % LATIN SMALL LETTER KRA + % latin4.def + +\DeclareUnicodeCharacter{013B}{\c L} + % LATIN CAPITAL LETTER L WITH CEDILLA + +\DeclareUnicodeCharacter{013C}{\c l} + % LATIN SMALL LETTER L WITH CEDILLA + +\DeclareUnicodeCharacter{0145}{\c N} + % LATIN CAPITAL LETTER N WITH CEDILLA + +\DeclareUnicodeCharacter{0146}{\c n} + % LATIN SMALL LETTER N WITH CEDILLA + +\DeclareUnicodeCharacter{014C}{\@tabacckludge=O} + % LATIN CAPITAL LETTER O WITH MACRON + +\DeclareUnicodeCharacter{014D}{\@tabacckludge=o} + % LATIN SMALL LETTER O WITH MACRON + +\DeclareUnicodeCharacter{0156}{\c R} + % LATIN CAPITAL LETTER R WITH CEDILLA + +\DeclareUnicodeCharacter{0157}{\c r} + % LATIN SMALL LETTER R WITH CEDILLA + +\DeclareUnicodeCharacter{015C}{\^S} + % LATIN CAPITAL LETTER S WITH CIRCUMFLEX + +\DeclareUnicodeCharacter{015D}{\^s} + % LATIN SMALL LETTER S WITH CIRCUMFLEX + +\DeclareUnicodeCharacter{0166}{\textTstroke} + % LATIN CAPITAL LETTER T WITH STROKE + % latin4.def + +\DeclareUnicodeCharacter{0167}{\texttstroke} + % LATIN SMALL LETTER T WITH STROKE + % latin4.def + +\DeclareUnicodeCharacter{0168}{\~U} + % LATIN CAPITAL LETTER U WITH TILDE + +\DeclareUnicodeCharacter{0169}{\~u} + % LATIN SMALL LETTER U WITH TILDE + +\DeclareUnicodeCharacter{016A}{\@tabacckludge=U} + % LATIN CAPITAL LETTER U WITH MACRON + +\DeclareUnicodeCharacter{016B}{\@tabacckludge=u} + % LATIN SMALL LETTER U WITH MACRON + +\DeclareUnicodeCharacter{016C}{\u U} + % LATIN CAPITAL LETTER U WITH BREVE + +\DeclareUnicodeCharacter{016D}{\u u} + % LATIN SMALL LETTER U WITH BREVE + +\DeclareUnicodeCharacter{0172}{\k U} + % LATIN CAPITAL LETTER U WITH OGONEK + +\DeclareUnicodeCharacter{0173}{\k u} + % LATIN SMALL LETTER U WITH OGONEK + +\DeclareUnicodeCharacter{0174}{\^W} + % LATIN CAPITAL LETTER W WITH CIRCUMFLEX + +\DeclareUnicodeCharacter{0175}{\^w} + % LATIN SMALL LETTER W WITH CIRCUMFLEX + +\DeclareUnicodeCharacter{0176}{\^Y} + % LATIN CAPITAL LETTER Y WITH CIRCUMFLEX + +\DeclareUnicodeCharacter{0177}{\^y} + % LATIN SMALL LETTER Y WITH CIRCUMFLEX + +\DeclareUnicodeCharacter{1E02}{\.B} + % LATIN CAPITAL LETTER B WITH DOT ABOVE + +\DeclareUnicodeCharacter{1E03}{\.b} + % LATIN SMALL LETTER B WITH DOT ABOVE + +\DeclareUnicodeCharacter{1E0A}{\.D} + % LATIN CAPITAL LETTER D WITH DOT ABOVE + +\DeclareUnicodeCharacter{1E0B}{\.d} + % LATIN SMALL LETTER D WITH DOT ABOVE + +\DeclareUnicodeCharacter{1E1E}{\.F} + % LATIN CAPITAL LETTER F WITH DOT ABOVE + +\DeclareUnicodeCharacter{1E1F}{\.f} + % LATIN SMALL LETTER F WITH DOT ABOVE + +\DeclareUnicodeCharacter{1E40}{\.M} + % LATIN CAPITAL LETTER M WITH DOT ABOVE + +\DeclareUnicodeCharacter{1E41}{\.m} + % LATIN SMALL LETTER M WITH DOT ABOVE + +\DeclareUnicodeCharacter{1E56}{\.P} + % LATIN CAPITAL LETTER P WITH DOT ABOVE + +\DeclareUnicodeCharacter{1E57}{\.p} + % LATIN SMALL LETTER P WITH DOT ABOVE + +\DeclareUnicodeCharacter{1E60}{\.S} + % LATIN CAPITAL LETTER S WITH DOT ABOVE + +\DeclareUnicodeCharacter{1E61}{\.s} + % LATIN SMALL LETTER S WITH DOT ABOVE + +\DeclareUnicodeCharacter{1E6A}{\.T} + % LATIN CAPITAL LETTER T WITH DOT ABOVE + +\DeclareUnicodeCharacter{1E6B}{\.t} + % LATIN SMALL LETTER T WITH DOT ABOVE + +\DeclareUnicodeCharacter{1E80}{\@tabacckludge`W} + % LATIN CAPITAL LETTER W WITH GRAVE + +\DeclareUnicodeCharacter{1E81}{\@tabacckludge`w} + % LATIN SMALL LETTER W WITH GRAVE + +\DeclareUnicodeCharacter{1E82}{\@tabacckludge'W} + % LATIN CAPITAL LETTER W WITH ACUTE + +\DeclareUnicodeCharacter{1E83}{\@tabacckludge'w} + % LATIN SMALL LETTER W WITH ACUTE + +\DeclareUnicodeCharacter{1E84}{\"W} + % LATIN CAPITAL LETTER W WITH DIAERESIS + +\DeclareUnicodeCharacter{1E85}{\"w} + % LATIN SMALL LETTER W WITH DIAERESIS + +\DeclareUnicodeCharacter{1EF2}{\@tabacckludge`Y} + % LATIN CAPITAL LETTER Y WITH GRAVE + +\DeclareUnicodeCharacter{1EF3}{\@tabacckludge`y} + % iso-8859-14[0xBC/188] + +\DeclareUnicodeCharacter{0218}{\textcommabelow S} + % LATIN CAPITAL LETTER S WITH COMMA BELOW + % latin10.def + +\DeclareUnicodeCharacter{0219}{\textcommabelow s} + % LATIN SMALL LETTER S WITH COMMA BELOW + % latin10.def + +\DeclareUnicodeCharacter{021A}{\textcommabelow T} + % LATIN CAPITAL LETTER T WITH COMMA BELOW + % latin10.def + +\DeclareUnicodeCharacter{021B}{\textcommabelow t} + % LATIN SMALL LETTER T WITH COMMA BELOW + % latin10.def + +\DeclareUnicodeCharacter{02CB}{\textasciigrave} + % MODIFIER LETTER GRAVE ACCENT + % ??? next.def: \@tabacckludge`{} + +\DeclareUnicodeCharacter{02D9}{\.{}} + % DOT ABOVE + % SPACING DOT ABOVE + % ??? \textasciidotabove with default "\.{}" + +\DeclareUnicodeCharacter{02DA}{\r{}} + % RING ABOVE + % SPACING RING ABOVE + % ??? \textasciiringabove with default "\r{}" + +\DeclareUnicodeCharacter{02DB}{\k{}} + % OGONEK + % SPACING OGONEK + % ??? \textasciiogonek with default "\k{}" + +\DeclareUnicodeCharacter{0393}{\textGamma} + % GREEK CAPITAL LETTER GAMMA + % ??? + +\DeclareUnicodeCharacter{0398}{\textTheta} + % GREEK CAPITAL LETTER THETA + % ??? + +\DeclareUnicodeCharacter{03A3}{\textSigma} + % GREEK CAPITAL LETTER SIGMA + % ??? + +\DeclareUnicodeCharacter{03A6}{\textPhi} + % GREEK CAPITAL LETTER PHI + % ??? + +\DeclareUnicodeCharacter{03A9}{\textOmega} + % GREEK CAPITAL LETTER OMEGA + % ??? + +\DeclareUnicodeCharacter{03B1}{\textalpha} + % GREEK SMALL LETTER ALPHA + % ??? + +\DeclareUnicodeCharacter{03B4}{\textdelta} + % GREEK SMALL LETTER DELTA + % ??? + +\DeclareUnicodeCharacter{03B5}{\textepsilon} + % GREEK SMALL LETTER EPSILON + % ??? (\ensuremath{\varepsilon} as default) + +\DeclareUnicodeCharacter{03C0}{\textpi} + % GREEK SMALL LETTER PI + % ??? + +\DeclareUnicodeCharacter{03C3}{\textsigma} + % GREEK SMALL LETTER SIGMA + % ??? + +\DeclareUnicodeCharacter{03C4}{\texttau} + % GREEK SMALL LETTER TAU + % ??? + +\DeclareUnicodeCharacter{03C6}{\textphi} + % GREEK SMALL LETTER PHI + % ??? + + % \DeclareUnicodeCharacter{2017}{} + % DOUBLE LOW LINE + % SPACING DOUBLE UNDERSCORE + % cp850[0xF2/242] cp858[0xF2/242] + +\DeclareUnicodeCharacter{207F}{\textnsuperior} + % SUPERSCRIPT LATIN SMALL LETTER N + % cp437[0xFC/252] cp865[0xFC/252] + % ??? + +\DeclareUnicodeCharacter{20A7}{\textpeseta} + % PESETA SIGN + +\DeclareUnicodeCharacter{2202}{\textpartial} + % PARTIAL DIFFERENTIAL + % mac-roman[0xB6/182] mac-ce[0xB6/182] + % ??? (default: \ensuremath{\partial}) + +\DeclareUnicodeCharacter{2206}{\textincrement} + % INCREMENT + % mac-roman[0xC6/198] mac-ce[0xC6/198] + % ??? (default: \ensuremath{\Delta}) + +\DeclareUnicodeCharacter{220F}{\textproduct} + % N-ARY PRODUCT + % adobe glyph name: product + % applemac.def: \Pi + % ??? (default: \ensuremath{\Pi}) + % ??? or \textprod because of \prod? + +\DeclareUnicodeCharacter{2211}{\textsummation} + % N-ARY SUMMATION + % adobe glyph name: summation + % applemac.def: \Sigma + % ??? (default: \ensuremath{\Sigma}) + % ??? or \textsum because of \sum? + +\DeclareUnicodeCharacter{2219}{\textbullet} + % BULLET OPERATOR + % cp437[0xF9/249] cp865[0xF9/249] + % ??? + +\DeclareUnicodeCharacter{221A}{\textsurd} + % SQUARE ROOT + +\DeclareUnicodeCharacter{221E}{\textinfinity} + % INFINITY + % adobe glyph name: infinity + % ??? or \textinfty or ... + +\DeclareUnicodeCharacter{2229}{\textintersection} + % INTERSECTION + % adobe glyph name: intersection + % ??? or \textcap or ... + +\DeclareUnicodeCharacter{222B}{\textintegral} + % INTEGRAL + % adobe glyph name: integral + % applemac.def: \int + % ??? or \textint or ... + +\DeclareUnicodeCharacter{2248}{\textapproxequal} + % ALMOST EQUAL TO + % adobe glyph name: approxequal + % ??? or \textapprox or ... + +\DeclareUnicodeCharacter{2260}{\textnotequal} + % NOT EQUAL TO + % adobe glyph name: notequal + % applemac.def: \neq + % ??? or \textne or \textneq or ... + +\DeclareUnicodeCharacter{2261}{\textequivalence} + % IDENTICAL TO + % adobe glyph name: equivalence + % cp437.def: \equiv + % ??? or \textequiv or ... + +\DeclareUnicodeCharacter{2264}{\textlessequal} + % LESS-THAN OR EQUAL TO + % adobe glyph name: lessequal + % cp437.def: \leq + % ??? or \textleq or \textle or \textlessorequal or ... + +\DeclareUnicodeCharacter{2265}{\textgreaterequal} + % GREATER-THAN OR EQUAL TO + % adobe glyph name: greaterequal + % cp437.def: \geq + % ??? or \textgeq or \textge or \textgreaterorequal + + % \DeclareUnicodeCharacter{2310}{} + % REVERSED NOT SIGN + % adobe glyph name: revlogicalnot + % cp437[0xA9/169] cp865[0xA9/169] + % ??? + + % \DeclareUnicodeCharacter{2320}{} + % TOP HALF INTEGRAL + % adobe glyph name: integraltp + % cp437[0xF4/244] cp865[0xF4/244] + % ??? + + % \DeclareUnicodeCharacter{2321}{} + % BOTTOM HALF INTEGRAL + % adobe glyph name: integralbt + % cp437[0xF5/245] cp865[0xF5/245] + % ??? + + % \DeclareUnicodeCharacter{2500}{} + % BOX DRAWINGS LIGHT HORIZONTAL + % FORMS LIGHT HORIZONTAL + % cp437[0xC4/196] cp850[0xC4/196] cp852[0xC4/196] cp858[0xC4/196] cp865[0xC4/196] + % ??? + + % \DeclareUnicodeCharacter{2502}{} + % BOX DRAWINGS LIGHT VERTICAL + % FORMS LIGHT VERTICAL + % cp437[0xB3/179] cp850[0xB3/179] cp852[0xB3/179] cp858[0xB3/179] cp865[0xB3/179] + % ??? + + % \DeclareUnicodeCharacter{250C}{} + % BOX DRAWINGS LIGHT DOWN AND RIGHT + % FORMS LIGHT DOWN AND RIGHT + % cp437[0xDA/218] cp850[0xDA/218] cp852[0xDA/218] cp858[0xDA/218] cp865[0xDA/218] + % ??? + + % \DeclareUnicodeCharacter{2510}{} + % BOX DRAWINGS LIGHT DOWN AND LEFT + % FORMS LIGHT DOWN AND LEFT + % cp437[0xBF/191] cp850[0xBF/191] cp852[0xBF/191] cp858[0xBF/191] cp865[0xBF/191] + % ??? + + % \DeclareUnicodeCharacter{2514}{} + % BOX DRAWINGS LIGHT UP AND RIGHT + % FORMS LIGHT UP AND RIGHT + % cp437[0xC0/192] cp850[0xC0/192] cp852[0xC0/192] cp858[0xC0/192] cp865[0xC0/192] + % ??? + + % \DeclareUnicodeCharacter{2518}{} + % BOX DRAWINGS LIGHT UP AND LEFT + % FORMS LIGHT UP AND LEFT + % cp437[0xD9/217] cp850[0xD9/217] cp852[0xD9/217] cp858[0xD9/217] cp865[0xD9/217] + % ??? + + % \DeclareUnicodeCharacter{251C}{} + % BOX DRAWINGS LIGHT VERTICAL AND RIGHT + % FORMS LIGHT VERTICAL AND RIGHT + % cp437[0xC3/195] cp850[0xC3/195] cp852[0xC3/195] cp858[0xC3/195] cp865[0xC3/195] + % ??? + + % \DeclareUnicodeCharacter{2524}{} + % BOX DRAWINGS LIGHT VERTICAL AND LEFT + % FORMS LIGHT VERTICAL AND LEFT + % cp437[0xB4/180] cp850[0xB4/180] cp852[0xB4/180] cp858[0xB4/180] cp865[0xB4/180] + % ??? + + % \DeclareUnicodeCharacter{252C}{} + % BOX DRAWINGS LIGHT DOWN AND HORIZONTAL + % FORMS LIGHT DOWN AND HORIZONTAL + % cp437[0xC2/194] cp850[0xC2/194] cp852[0xC2/194] cp858[0xC2/194] cp865[0xC2/194] + % ??? + + % \DeclareUnicodeCharacter{2534}{} + % BOX DRAWINGS LIGHT UP AND HORIZONTAL + % FORMS LIGHT UP AND HORIZONTAL + % cp437[0xC1/193] cp850[0xC1/193] cp852[0xC1/193] cp858[0xC1/193] cp865[0xC1/193] + % ??? + + % \DeclareUnicodeCharacter{253C}{} + % BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL + % FORMS LIGHT VERTICAL AND HORIZONTAL + % cp437[0xC5/197] cp850[0xC5/197] cp852[0xC5/197] cp858[0xC5/197] cp865[0xC5/197] + % ??? + + % \DeclareUnicodeCharacter{2550}{} + % BOX DRAWINGS DOUBLE HORIZONTAL + % FORMS DOUBLE HORIZONTAL + % cp437[0xCD/205] cp850[0xCD/205] cp852[0xCD/205] cp858[0xCD/205] cp865[0xCD/205] + % ??? + + % \DeclareUnicodeCharacter{2551}{} + % BOX DRAWINGS DOUBLE VERTICAL + % FORMS DOUBLE VERTICAL + % cp437[0xBA/186] cp850[0xBA/186] cp852[0xBA/186] cp858[0xBA/186] cp865[0xBA/186] + % ??? + + % \DeclareUnicodeCharacter{2552}{} + % BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE + % FORMS DOWN SINGLE AND RIGHT DOUBLE + % cp437[0xD5/213] cp865[0xD5/213] + % ??? + + % \DeclareUnicodeCharacter{2553}{} + % BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE + % FORMS DOWN DOUBLE AND RIGHT SINGLE + % cp437[0xD6/214] cp865[0xD6/214] + % ??? + + % \DeclareUnicodeCharacter{2554}{} + % BOX DRAWINGS DOUBLE DOWN AND RIGHT + % FORMS DOUBLE DOWN AND RIGHT + % cp437[0xC9/201] cp850[0xC9/201] cp852[0xC9/201] cp858[0xC9/201] cp865[0xC9/201] + % ??? + + % \DeclareUnicodeCharacter{2555}{} + % BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE + % FORMS DOWN SINGLE AND LEFT DOUBLE + % cp437[0xB8/184] cp865[0xB8/184] + % ??? + + % \DeclareUnicodeCharacter{2556}{} + % BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE + % FORMS DOWN DOUBLE AND LEFT SINGLE + % cp437[0xB7/183] cp865[0xB7/183] + % ??? + + % \DeclareUnicodeCharacter{2557}{} + % BOX DRAWINGS DOUBLE DOWN AND LEFT + % FORMS DOUBLE DOWN AND LEFT + % cp437[0xBB/187] cp850[0xBB/187] cp852[0xBB/187] cp858[0xBB/187] cp865[0xBB/187] + % ??? + + % \DeclareUnicodeCharacter{2558}{} + % BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE + % FORMS UP SINGLE AND RIGHT DOUBLE + % cp437[0xD4/212] cp865[0xD4/212] + % ??? + + % \DeclareUnicodeCharacter{2559}{} + % BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE + % FORMS UP DOUBLE AND RIGHT SINGLE + % cp437[0xD3/211] cp865[0xD3/211] + % ??? + + % \DeclareUnicodeCharacter{255A}{} + % BOX DRAWINGS DOUBLE UP AND RIGHT + % FORMS DOUBLE UP AND RIGHT + % cp437[0xC8/200] cp850[0xC8/200] cp852[0xC8/200] cp858[0xC8/200] cp865[0xC8/200] + % ??? + + % \DeclareUnicodeCharacter{255B}{} + % BOX DRAWINGS UP SINGLE AND LEFT DOUBLE + % FORMS UP SINGLE AND LEFT DOUBLE + % cp437[0xBE/190] cp865[0xBE/190] + % ??? + + % \DeclareUnicodeCharacter{255C}{} + % BOX DRAWINGS UP DOUBLE AND LEFT SINGLE + % FORMS UP DOUBLE AND LEFT SINGLE + % cp437[0xBD/189] cp865[0xBD/189] + % ??? + + % \DeclareUnicodeCharacter{255D}{} + % BOX DRAWINGS DOUBLE UP AND LEFT + % FORMS DOUBLE UP AND LEFT + % cp437[0xBC/188] cp850[0xBC/188] cp852[0xBC/188] cp858[0xBC/188] cp865[0xBC/188] + % ??? + + % \DeclareUnicodeCharacter{255E}{} + % BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE + % FORMS VERTICAL SINGLE AND RIGHT DOUBLE + % cp437[0xC6/198] cp865[0xC6/198] + % ??? + + % \DeclareUnicodeCharacter{255F}{} + % BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE + % FORMS VERTICAL DOUBLE AND RIGHT SINGLE + % cp437[0xC7/199] cp865[0xC7/199] + % ??? + + % \DeclareUnicodeCharacter{2560}{} + % BOX DRAWINGS DOUBLE VERTICAL AND RIGHT + % FORMS DOUBLE VERTICAL AND RIGHT + % cp437[0xCC/204] cp850[0xCC/204] cp852[0xCC/204] cp858[0xCC/204] cp865[0xCC/204] + % ??? + + % \DeclareUnicodeCharacter{2561}{} + % BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE + % FORMS VERTICAL SINGLE AND LEFT DOUBLE + % cp437[0xB5/181] cp865[0xB5/181] + % ??? + + % \DeclareUnicodeCharacter{2562}{} + % BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE + % FORMS VERTICAL DOUBLE AND LEFT SINGLE + % cp437[0xB6/182] cp865[0xB6/182] + % ??? + + % \DeclareUnicodeCharacter{2563}{} + % BOX DRAWINGS DOUBLE VERTICAL AND LEFT + % FORMS DOUBLE VERTICAL AND LEFT + % cp437[0xB9/185] cp850[0xB9/185] cp852[0xB9/185] cp858[0xB9/185] cp865[0xB9/185] + % ??? + + % \DeclareUnicodeCharacter{2564}{} + % BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE + % FORMS DOWN SINGLE AND HORIZONTAL DOUBLE + % cp437[0xD1/209] cp865[0xD1/209] + % ??? + + % \DeclareUnicodeCharacter{2565}{} + % BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE + % FORMS DOWN DOUBLE AND HORIZONTAL SINGLE + % cp437[0xD2/210] cp865[0xD2/210] + % ??? + + % \DeclareUnicodeCharacter{2566}{} + % BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL + % FORMS DOUBLE DOWN AND HORIZONTAL + % cp437[0xCB/203] cp850[0xCB/203] cp852[0xCB/203] cp858[0xCB/203] cp865[0xCB/203] + % ??? + + % \DeclareUnicodeCharacter{2567}{} + % BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE + % FORMS UP SINGLE AND HORIZONTAL DOUBLE + % cp437[0xCF/207] cp865[0xCF/207] + % ??? + + % \DeclareUnicodeCharacter{2568}{} + % BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE + % FORMS UP DOUBLE AND HORIZONTAL SINGLE + % cp437[0xD0/208] cp865[0xD0/208] + % ??? + + % \DeclareUnicodeCharacter{2569}{} + % BOX DRAWINGS DOUBLE UP AND HORIZONTAL + % FORMS DOUBLE UP AND HORIZONTAL + % cp437[0xCA/202] cp850[0xCA/202] cp852[0xCA/202] cp858[0xCA/202] cp865[0xCA/202] + % ??? + + % \DeclareUnicodeCharacter{256A}{} + % BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE + % FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE + % cp437[0xD8/216] cp865[0xD8/216] + % ??? + + % \DeclareUnicodeCharacter{256B}{} + % BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE + % FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE + % cp437[0xD7/215] cp865[0xD7/215] + % ??? + + % \DeclareUnicodeCharacter{256C}{} + % BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL + % FORMS DOUBLE VERTICAL AND HORIZONTAL + % cp437[0xCE/206] cp850[0xCE/206] cp852[0xCE/206] cp858[0xCE/206] cp865[0xCE/206] + % ??? + + % \DeclareUnicodeCharacter{2580}{} + % UPPER HALF BLOCK + % cp437[0xDF/223] cp850[0xDF/223] cp852[0xDF/223] cp858[0xDF/223] cp865[0xDF/223] + % ??? + + % \DeclareUnicodeCharacter{2584}{} + % LOWER HALF BLOCK + % cp437[0xDC/220] cp850[0xDC/220] cp852[0xDC/220] cp858[0xDC/220] cp865[0xDC/220] + % ??? + + %\DeclareUnicodeCharacter{2588}{} + % FULL BLOCK + % cp437[0xDB/219] cp850[0xDB/219] cp852[0xDB/219] cp858[0xDB/219] cp865[0xDB/219] + % ??? + + % \DeclareUnicodeCharacter{258C}{} + % LEFT HALF BLOCK + % cp437[0xDD/221] cp865[0xDD/221] + % ??? + + % \DeclareUnicodeCharacter{2590}{} + % RIGHT HALF BLOCK + % cp437[0xDE/222] cp865[0xDE/222] + % ??? + + % \DeclareUnicodeCharacter{2591}{} + % LIGHT SHADE + % cp437[0xB0/176] cp850[0xB0/176] cp852[0xB0/176] cp858[0xB0/176] cp865[0xB0/176] + % ??? + + % \DeclareUnicodeCharacter{2592}{} + % MEDIUM SHADE + % cp437[0xB1/177] cp850[0xB1/177] cp852[0xB1/177] cp858[0xB1/177] cp865[0xB1/177] + % ??? + + % \DeclareUnicodeCharacter{2593}{} + % DARK SHADE + % cp437[0xB2/178] cp850[0xB2/178] cp852[0xB2/178] cp858[0xB2/178] cp865[0xB2/178] + % ??? + +\DeclareUnicodeCharacter{25A0}{\textblacksquare} + % BLACK SQUARE + % cp437.def: \textblacksquare + +\DeclareUnicodeCharacter{25CA}{\textlozenge} + % LOZENGE + % adobe glyph name: lozenge + % applemac.def: \diamond + % ??? + + % \DeclareUnicodeCharacter{F8FF}{} + % <Private Use, Last> + % applemac.def: \textapplelogo + % ??? + +\DeclareUnicodeCharacter{FB01}{fi} + % LATIN SMALL LIGATURE FI + % applemac.def: fi + % ??? \textfi + +\DeclareUnicodeCharacter{FB02}{fl} + % LATIN SMALL LIGATURE FL + % applemac.def: fl + % ??? \textfl + + % pmboxdraw: + +\DeclareUnicodeCharacter{2500}{\textSFx} +\DeclareUnicodeCharacter{2502}{\textSFxi} +\DeclareUnicodeCharacter{250C}{\textSFi} +\DeclareUnicodeCharacter{2510}{\textSFiii} +\DeclareUnicodeCharacter{2514}{\textSFii} +\DeclareUnicodeCharacter{2518}{\textSFiv} +\DeclareUnicodeCharacter{251C}{\textSFviii} +\DeclareUnicodeCharacter{2524}{\textSFix} +\DeclareUnicodeCharacter{252C}{\textSFvi} +\DeclareUnicodeCharacter{2534}{\textSFvii} +\DeclareUnicodeCharacter{253C}{\textSFv} +\DeclareUnicodeCharacter{2550}{\textSFxliii} +\DeclareUnicodeCharacter{2551}{\textSFxxiv} +\DeclareUnicodeCharacter{2552}{\textSFli} +\DeclareUnicodeCharacter{2553}{\textSFlii} +\DeclareUnicodeCharacter{2554}{\textSFxxxix} +\DeclareUnicodeCharacter{2555}{\textSFxxii} +\DeclareUnicodeCharacter{2556}{\textSFxxi} +\DeclareUnicodeCharacter{2557}{\textSFxxv} +\DeclareUnicodeCharacter{2558}{\textSFl} +\DeclareUnicodeCharacter{2559}{\textSFxlix} +\DeclareUnicodeCharacter{255A}{\textSFxxxviii} +\DeclareUnicodeCharacter{255B}{\textSFxxviii} +\DeclareUnicodeCharacter{255C}{\textSFxxvii} +\DeclareUnicodeCharacter{255D}{\textSFxxvi} +\DeclareUnicodeCharacter{255E}{\textSFxxxvi} +\DeclareUnicodeCharacter{255F}{\textSFxxxvii} +\DeclareUnicodeCharacter{2560}{\textSFxlii} +\DeclareUnicodeCharacter{2561}{\textSFxix} +\DeclareUnicodeCharacter{2562}{\textSFxx} +\DeclareUnicodeCharacter{2563}{\textSFxxiii} +\DeclareUnicodeCharacter{2564}{\textSFxlvii} +\DeclareUnicodeCharacter{2565}{\textSFxlviii} +\DeclareUnicodeCharacter{2566}{\textSFxli} +\DeclareUnicodeCharacter{2567}{\textSFxlv} +\DeclareUnicodeCharacter{2568}{\textSFxlvi} +\DeclareUnicodeCharacter{2569}{\textSFxl} +\DeclareUnicodeCharacter{256A}{\textSFliv} +\DeclareUnicodeCharacter{256B}{\textSFliii} +\DeclareUnicodeCharacter{256C}{\textSFxliv} +\DeclareUnicodeCharacter{2580}{\textupblock} +\DeclareUnicodeCharacter{2584}{\textdnblock} +\DeclareUnicodeCharacter{2588}{\textblock} +\DeclareUnicodeCharacter{258C}{\textlfblock} +\DeclareUnicodeCharacter{2590}{\textrtblock} +\DeclareUnicodeCharacter{2591}{\textltshade} +\DeclareUnicodeCharacter{2592}{\textshade} +\DeclareUnicodeCharacter{2593}{\textdkshade} + +% \end{macrocode} +% \fi +% +% \begin{macrocode} +%</dfudoc> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/inputenx.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/inputenx.pdf}] Documentation. +% \end{description} +% +% \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 inputenx.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@{}} +% inputenx.sty & tex/latex/oberdiek/inputenx.sty\\ +% ix-alias.def & tex/latex/oberdiek/ix-alias.def\\ +% ix-math.def & tex/latex/oberdiek/ix-math.def\\ +% ix-name.def & tex/latex/oberdiek/ix-name.def\\ +% ix-slot.def & tex/latex/oberdiek/ix-slot.def\\ +% ix-uc.def & tex/latex/oberdiek/ix-uc.def\\ +% ix-utf8enc.dfu & tex/latex/oberdiek/ix-utf8enc.dfu\\ +% x-ascii.def & tex/latex/oberdiek/x-ascii.def\\ +% x-iso-8859-1.def & tex/latex/oberdiek/x-iso-8859-1.def\\ +% x-iso-8859-2.def & tex/latex/oberdiek/x-iso-8859-2.def\\ +% x-iso-8859-3.def & tex/latex/oberdiek/x-iso-8859-3.def\\ +% x-iso-8859-4.def & tex/latex/oberdiek/x-iso-8859-4.def\\ +% x-iso-8859-9.def & tex/latex/oberdiek/x-iso-8859-9.def\\ +% x-iso-8859-10.def & tex/latex/oberdiek/x-iso-8859-10.def\\ +% x-iso-8859-13.def & tex/latex/oberdiek/x-iso-8859-13.def\\ +% x-iso-8859-14.def & tex/latex/oberdiek/x-iso-8859-14.def\\ +% x-iso-8859-15.def & tex/latex/oberdiek/x-iso-8859-15.def\\ +% x-iso-8859-16.def & tex/latex/oberdiek/x-iso-8859-16.def\\ +% x-cp437.def & tex/latex/oberdiek/x-cp437.def\\ +% x-cp850.def & tex/latex/oberdiek/x-cp850.def\\ +% x-cp852.def & tex/latex/oberdiek/x-cp852.def\\ +% x-cp858.def & tex/latex/oberdiek/x-cp858.def\\ +% x-cp865.def & tex/latex/oberdiek/x-cp865.def\\ +% x-cp1250.def & tex/latex/oberdiek/x-cp1250.def\\ +% x-cp1252.def & tex/latex/oberdiek/x-cp1252.def\\ +% x-cp1257.def & tex/latex/oberdiek/x-cp1257.def\\ +% x-mac-roman.def & tex/latex/oberdiek/x-mac-roman.def\\ +% x-mac-ce.def & tex/latex/oberdiek/x-mac-ce.def\\ +% x-nextstep.def & tex/latex/oberdiek/x-nextstep.def\\ +% x-dec-mcs.def & tex/latex/oberdiek/x-dec-mcs.def\\ +% inputenx.pdf & doc/latex/oberdiek/inputenx.pdf\\ +% inputenx-licrcmds.txt & doc/latex/oberdiek/inputenx-licrcmds.txt\\ +% inputenx-utf8enc.txt & doc/latex/oberdiek/inputenx-utf8enc.txt\\ +% inputenx.dtx & source/latex/oberdiek/inputenx.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 inputenx.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{inputenx.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 inputenx.dtx +%makeindex -s gind.ist inputenx.idx +%pdflatex inputenx.dtx +%makeindex -s gind.ist inputenx.idx +%pdflatex inputenx.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{thebibliography}{9} +% +% \bibitem{inputenc} +% Alan Jeffrey, Frank Mittelbach, +% \textit{inputenc.sty}, 2006/05/05 v1.1b. +% \CTAN{macros/latex/base/inputenc.dtx} +% +% \bibitem{ltc} +% Frank Mittelbach, Michel Goossens, +% \textit{The \LaTeX\ Companion}, second edition, April 2004. +% +% \bibitem{pmboxdraw} +% Heiko Oberdiek +% \textit{The pmboxdraw package}, 2006/05/03 v1.0. +% \CTAN{macros/latex/contrib/oberdiek/pmboxdraw.pdf} +% +% \subsection{Mappings to Unicode} +% +% \bibitem{iso8859-1} +% Ken Whistler, +% \textit{ISO/IEC 8859-1:1998 to Unicode}, 27th July 1999. +% \url{ftp://ftp.unicode.org/Public/MAPPINGS/ISO8859/8859-1.TXT} +% +% \bibitem{iso8859-2} +% Ken Whistler, +% \textit{ISO/IEC 8859-2:1999 to Unicode}, 27th July 1999. +% \url{ftp://ftp.unicode.org/Public/MAPPINGS/ISO8859/8859-2.TXT} +% +% \bibitem{iso8859-3} +% Ken Whistler, +% \textit{ISO/IEC 8859-3:1999 to Unicode}, 27th July 1999. +% \url{ftp://ftp.unicode.org/Public/MAPPINGS/ISO8859/8859-3.TXT} +% +% \bibitem{iso8859-4} +% Ken Whistler, +% \textit{ISO/IEC 8859-4:1998 to Unicode}, 27th July 1999. +% \url{ftp://ftp.unicode.org/Public/MAPPINGS/ISO8859/8859-4.TXT} +% +% \bibitem{iso8859-9} +% Ken Whistler, +% \textit{ISO/IEC 8859-9:1999 to Unicode}, 27th July 1999. +% \url{ftp://ftp.unicode.org/Public/MAPPINGS/ISO8859/8859-9.TXT} +% +% \bibitem{iso8859-15} +% Ken Whistler, +% \textit{ISO/IEC 8859-15:1999 to Unicode}, 27th July 1999. +% \url{ftp://ftp.unicode.org/Public/MAPPINGS/ISO8859/8859-15.TXT} +% +% \bibitem{iso8859-16} +% Ken Whistler, +% \textit{ISO/IEC 8859-16:2001 to Unicode}, 26th July 2001. +% \url{ftp://ftp.unicode.org/Public/MAPPINGS/ISO8859/8859-16.TXT} +% +% \bibitem{mac-ce} +% Apple Computer, +% \textit{Map (external version) from MAC OS Central European character +% set to Unicode 2.1 and later}, 4th April 2005. +% \url{ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/APPLE/CENTEURO.TXT} +% +% \bibitem{mac-roman} +% Apple Computer, +% \textit{Map (external version) from MAC OS Roman character +% set to Unicode 2.1 and later}, 5th April 2005. +% \url{ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/APPLE/ROMAN.TXT} +% +% \bibitem{nextstep} +% Rick McGowan, +% \textit{NextStep Encoding to Unicode}, 23rd September 1999. +% \url{ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/NEXT/NEXTSTEP.TXT} +% +% \end{thebibliography} +% +% \begin{History} +% \begin{Version}{2006/03/05 v1.0} +% \item +% First version. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/kvoptions.dtx b/Master/texmf-dist/source/latex/oberdiek/kvoptions.dtx index 66bfb7f615c..fa95c2254a7 100644 --- a/Master/texmf-dist/source/latex/oberdiek/kvoptions.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/kvoptions.dtx @@ -8,7 +8,7 @@ % 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 2003/12/01 or later. +% LaTeX version 2005/12/01 or later. % % This work has the LPPL maintenance status "maintained". % @@ -29,7 +29,7 @@ % (b) Without kvoptions.ins: % tex kvoptions.dtx % (c) If you insist on using LaTeX -% latex \install=y\input{kvoptions.dtx} +% latex \let\install=y\input{kvoptions.dtx} % (quote the arguments according to the demands of your shell) % % Documentation: @@ -68,7 +68,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: kvoptions 2006/06/01 v2.2 Connects package keyval with LaTeX options (HO)} +\Msg{* Package: kvoptions 2006/08/22 v2.4 Connects package keyval with LaTeX options (HO)} \Msg{************************************************************************} \keepsilent @@ -86,7 +86,7 @@ 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 2003/12/01 or later. +LaTeX version 2005/12/01 or later. This work has the LPPL maintenance status "maintained". @@ -131,7 +131,7 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{kvoptions.drv}% - [2006/06/01 v2.2 Connects package keyval with LaTeX options (HO)] + [2006/08/22 v2.4 Connects package keyval with LaTeX options (HO)] \documentclass{ltxdoc} \usepackage{holtxdoc} \begin{document} @@ -140,7 +140,7 @@ and the derived files %</driver> % \fi % -% \CheckSum{1488} +% \CheckSum{1519} % % \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 +161,7 @@ and the derived files % \GetFileInfo{kvoptions.drv} % % \title{The \xpackage{kvoptions} package} -% \date{2006/06/01 v2.2} +% \date{2006/08/22 v2.4} % \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} % % \maketitle @@ -222,7 +222,7 @@ and the derived files % \begin{tabular}[t]{@{}l@{}} % \cs{DeclareVoidOption}\\ % \cs{DeclareStringOption}\\ -% \cs{DeclareBooleanOption}\\ +% \cs{DeclareBoolOption}\\ % \cs{DeclareComplementaryOption}\\ % \cs{DisableKeyvalOption} % \end{tabular} @@ -301,12 +301,12 @@ and the derived files % \rule{0pt}{1.2\ht\csname @arstrutbox\endcsname}^^A % |family| & \meta{\cs{\@currname}} & (|foobar|) % & \cs{ProcessKeyvalOptions*} \\ -% &&& \cs{DeclareBooleanOption} \\ +% &&& \cs{DeclareBoolOption} \\ % &&& \cs{DeclareStringOption} \\ % \hline % \rule{0pt}{1.2\ht\csname @arstrutbox\endcsname}^^A % |prefix| & \meta{\cs{\@currname}}|@| & (|foobar@|) -% & \cs{DeclareBooleanOption} \\ +% & \cs{DeclareBoolOption} \\ % &&& \cs{DeclareStringOption} \\ % &&& \cs{DeclareVoidOption} % \end{tabular} @@ -360,20 +360,20 @@ and the derived files % |}| % \end{quote} % -% \subsubsection{\cs{DeclareBooleanOption}} +% \subsubsection{\cs{DeclareBoolOption}} % -% \begin{declcs}{DeclareBooleanOption}\,\O{init}\,\M{key} +% \begin{declcs}{DeclareBoolOption}\,\O{init}\,\M{key} % \end{declcs} % A boolean switch is generated, initialized by value \meta{init} % and the corresponding key \meta{key} is defined. If the % initialization value is not given, |false| is used as default. % -% The internal actions of \cs{DeclareBooleanOption} are shown below. +% The internal actions of \cs{DeclareBoolOption} are shown below. % The example is given for a package author who has the following % two lines in his package/class: % \begin{quote} % |\ProvidesPackage{foobar}|\\ -% |\DeclareBooleanOption{verbose}| +% |\DeclareBoolOption{verbose}| % \end{quote} % First a new switch is created: % \begin{quote} @@ -419,7 +419,7 @@ and the derived files % The option \meta{key} shares the switch of option \meta{parent}. % Example: % \begin{quote} -% |\DeclareBooleanOption{draft}|\\ +% |\DeclareBoolOption{draft}|\\ % |\DeclareComplementaryOption{final}{draft}| % \end{quote} % Then |final| sets the switch of \xoption{draft} to |false|, and @@ -548,7 +548,7 @@ and the derived files % \begin{quote} %\begin{verbatim} %\ProvidesPackage{foobar} -%\DeclareBooleanOption{color} +%\DeclareBoolOption{color} %\DeclareStringOption[red]{emphcolor} %\ProcessKeyvalOptions* % @@ -595,7 +595,7 @@ and the derived files % \cs{DeclareStringOption} % & \prefix & holds the string\\ % \Hline -% \cs{DeclareBooleanOption} +% \cs{DeclareBoolOption} % & \cs{if}\meta{prefix}\meta{key}& boolean switch\\ % &\prefix false& disable switch\\ % &\prefix true& enable switch\\ @@ -624,7 +624,7 @@ and the derived files % Package identification % ----------------------- \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{example-mycolorsetup}[2006/06/01 Managing my colors] +\ProvidesPackage{example-mycolorsetup}[2006/08/22 Managing my colors] \RequirePackage{ifpdf} \RequirePackage{kvoptions} @@ -639,9 +639,9 @@ and the derived files % Use a shorter family name and prefix % Option print -\DeclareBooleanOption{print} +\DeclareBoolOption{print} % is the same as - % \DeclareBooleanOption[false]{print} + % \DeclareBoolOption[false]{print} % Option driver \ifpdf @@ -815,7 +815,7 @@ and the derived files % The name of this option follows the convention of packages % \xpackage{multicol}, \xpackage{tabularx}, and \xpackage{tracefnt}. % Currently it prints the setting of boolean options, declared -% by \cs{DeclareBooleanOption} in the \xfile{.log} file, if that +% by \cs{DeclareBoolOption} in the \xfile{.log} file, if that % boolean option is used. % You can activate the option by % \begin{itemize} @@ -926,7 +926,7 @@ and the derived files %<*package> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{kvoptions} - [2006/06/01 v2.2 Connects package keyval with LaTeX options (HO)] + [2006/08/22 v2.4 Connects package keyval with LaTeX options (HO)] % \end{macrocode} % % \paragraph{External resources.} @@ -997,7 +997,7 @@ and the derived files % \end{macro} % % \begin{macro}{\KVO@prefix} -% The value settings of options, declared by \cs{DeclareBooleanOption} +% The value settings of options, declared by \cs{DeclareBoolOption} % and \cs{DeclareStringOption} need to be saved in macros. % in the first case this is a switch \cs{if}\meta{prefix}\meta{key}, % in the latter case a macro \cs{}\meta{prefix}\meta{key}. @@ -1027,9 +1027,9 @@ and the derived files % \end{macrocode} % \end{macro} % -% \subsubsection{\cs{DeclareBooleanOption}} +% \subsubsection{\cs{DeclareBoolOption}} % -% \begin{macro}{\DeclareBooleanOption} +% \begin{macro}{\DeclareBoolOption} % Usually options of boolean type can be given by the % user without value and this means a setting to \emph{true}. % We follow this convention here. Also it simplifies the @@ -1044,7 +1044,7 @@ and the derived files % the user from accidently redefining of \TeX's primitives % and other macros. % \begin{macrocode} -\newcommand*{\DeclareBooleanOption}[2][false]{% +\newcommand*{\DeclareBoolOption}[2][false]{% \KVO@ifdefinable{if\KVO@prefix#2}{% \KVO@ifdefinable{\KVO@prefix#2true}{% \KVO@ifdefinable{\KVO@prefix#2false}{% @@ -1108,7 +1108,7 @@ and the derived files \expandafter\let\csname\KVO@prefix#1true\expandafter\endcsname \csname\KVO@prefix#2false\endcsname % \end{macrocode} -% The same code part as in \cs{DeclareBooleanOption} can +% The same code part as in \cs{DeclareBoolOption} can % now be used. % \begin{macrocode} \begingroup @@ -1335,7 +1335,7 @@ and the derived files family=KVOdyn,% prefix=KVOdyn@% } -\DeclareBooleanOption[true]{global} +\DeclareBoolOption[true]{global} \DeclareComplementaryOption{local}{global} \DeclareStringOption[undef]{action} \let\KVOdyn@name\relax @@ -1849,6 +1849,24 @@ and the derived files } % \end{macrocode} % +% Variant of \cs{ExecuteOptions} that better protects \cs{CurrentOption}. +% \begin{macrocode} +\def\CurrentOption@SaveLevel{0} +\def\ExecuteOptions{% + \expandafter\KVO@ExecuteOptions + \csname CurrentOption@\CurrentOption@SaveLevel\endcsname +} +\def\KVO@ExecuteOptions#1#2{% + \let#1\CurrentOption + \edef\CurrentOption@SaveLevel{\the\numexpr\CurrentOption@SaveLevel+1}% + \@for\CurrentOption:=#2\do{% + \csname ds@\CurrentOption\endcsname + }% + \edef\CurrentOption@SaveLevel{\the\numexpr\CurrentOption@SaveLevel-1}% + \let\CurrentOption#1% +} +% \end{macrocode} +% % \begin{macrocode} \def\KVO@fileswith@pti@ns#1[#2]#3[#4]{% \ifx#1\@clsextension @@ -2162,8 +2180,6 @@ and the derived files % these. For example, \teTeX\ users run \verb|texhash| or % \verb|mktexlsr|. % -% Now the installation is complete. -% % \subsection{Some details for the interested} % % \paragraph{Attached source.} @@ -2285,6 +2301,16 @@ and the derived files % \item % Fixes for option \xoption{patch}. % \end{Version} +% \begin{Version}{2006/08/17 v2.3} +% \item +% \cs{DeclareBooleanOption} renamed to \cs{DeclareBoolOption} +% to avoid a name clash with package \cs{ifoption}. +% \end{Version} +% \begin{Version}{2006/08/22 v2.4} +% \item +% Option \xoption{patch}: \cs{ExecuteOptions} does not +% change meaning of \cs{CurrentOption} at all. +% \end{Version} % \end{History} % % \PrintIndex diff --git a/Master/texmf-dist/source/latex/oberdiek/kvsetkeys.dtx b/Master/texmf-dist/source/latex/oberdiek/kvsetkeys.dtx new file mode 100644 index 00000000000..e3827ac5674 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/kvsetkeys.dtx @@ -0,0 +1,838 @@ +% \iffalse meta-comment +% +% Copyright (C) 2006 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 kvsetkeys.dtx +% and the derived files +% kvsetkeys.sty, kvsetkeys.pdf, kvsetkeys.ins, kvsetkeys.drv. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/kvsetkeys.dtx +% CTAN:macros/latex/contrib/oberdiek/kvsetkeys.pdf +% +% Unpacking: +% (a) If kvsetkeys.ins is present: +% tex kvsetkeys.ins +% (b) Without kvsetkeys.ins: +% tex kvsetkeys.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{kvsetkeys.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If kvsetkeys.drv is present: +% latex kvsetkeys.drv +% (b) Without kvsetkeys.drv: +% latex kvsetkeys.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 kvsetkeys.dtx +% makeindex -s gind.ist kvsetkeys.idx +% pdflatex kvsetkeys.dtx +% makeindex -s gind.ist kvsetkeys.idx +% pdflatex kvsetkeys.dtx +% +% Installation: +% TDS:tex/generic/oberdiek/kvsetkeys.sty +% TDS:doc/latex/oberdiek/kvsetkeys.pdf +% TDS:source/latex/oberdiek/kvsetkeys.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: kvsetkeys 2006/03/06 v1.0 Key value parser with default handler support (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2006 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 kvsetkeys.dtx +and the derived files + kvsetkeys.sty, kvsetkeys.pdf, kvsetkeys.ins, kvsetkeys.drv. + +\endpreamble + +\generate{% + \file{kvsetkeys.ins}{\from{kvsetkeys.dtx}{install}}% + \file{kvsetkeys.drv}{\from{kvsetkeys.dtx}{driver}}% + \usedir{tex/generic/oberdiek}% + \file{kvsetkeys.sty}{\from{kvsetkeys.dtx}{package}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* kvsetkeys.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `kvsetkeys.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{kvsetkeys.drv}% + [2006/03/06 v1.0 Key value parser with default handler support (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\begin{document} + \DocInput{kvsetkeys.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{580} +% +% \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{kvsetkeys.drv} +% +% \title{The \xpackage{kvsetkeys} package} +% \date{2006/03/06 v1.0} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% Package \xpackage{kvsetkeys} provides \cs{kvsetkeys}, a variant +% of package \xpackage{keyval}'s \cs{setkeys}. It allows to specify +% a handler that deals with unknown options. Active commas and equal +% signs may be used (e.g. see \xpackage{babel}'s shorthands) and +% only one level of curly braces are removed from the values. +% \end{abstract} +% +% \tableofcontents +% +% \def\M#1{\texttt{\{}\meta{#1}\texttt{\}}} +% +% \section{Documentation} +% +% \cs{kvsetkeys} can be used as replacement for \xpackage{keyval}'s +% \cs{setkeys}. Also it uses the same syntax. Before I describe +% \cs{kvsetkeys} in more detail, first I want to explain, how +% this package deals with key value lists. For the package also +% provides low level interfaces that can be used by package authors. +% +% \subsection{Normalizing key value lists} +% +% \begin{declcs}{kv@normalize}\,\M{key value list} +% \end{declcs} +% Specifying key value lists, the user usually wants to have +% nice formatted souce code, e.g.: +% \begin{quote} +%\begin{verbatim} +%\hypersetup{ +% pdftitle = {...}, +% pdfsubject = {...}, +% pdfauthor = {...}, +% pdfkeywords = {...}, +% ... +%} +%\end{verbatim} +% \end{quote} +% Thus there can be spaces around keys, around |=| or around the value. +% Also empty entries are possible by too many commas. Therefore these +% spaces and empty entries are silently removed by package \xpackage{keyval} +% and this package. Whereas the contents of the value can be protected +% by curly braces, especially if spaces or commas are used inside, +% a key name must not use spaces or other syntax characters. +% +% \cs{kv@normalize} takes a key value list and performs the cleanup: +% \begin{itemize} +% \item Spaces are removed. +% \item Syntax characters (comma and equal sign) that are active +% are replaces by the same characters with standard catcode. +% (Example: \xpackage{babel}'s language option \xoption{turkish} +% uses the equal sign as active shorthand character.) +% \end{itemize} +% The result is stored in \cs{kv@list}, e.g.: +% \begin{quote} +% |\kv@list| $\rightarrow$ |,pdftitle={},pdfsubject={},...,| +% \end{quote} +% Empty entries are removed later. In fact it adds a comma at the begin +% and end to protect the last value and an easier implementation. +% +% \subsection{Parsing key value lists} +% +% \begin{declcs}{kv@parse}\,\M{key value list}\,\M{processor} +% \end{declcs} +% It is easier to parse a normalized list, thus \cs{kv@parse} +% normalizes the list and calls \cs{kv@parse@normalized}. +% +% \begin{declcs}{kv@parse@normalized}\,\M{key value list}% +% \,\M{processor} +% \end{declcs} +% Now the key value list is split into single key value pairs. +% For further processing the key and value are given as arguments +% for the \meta{processor}: +% \begin{quote} +% \meta{processor}\,\M{key}\,\M{value} +% \end{quote} +% Also key and value are stored in macro names: +% \begin{itemize} +% \item \cs{kv@key} stores the key. +% \item \cs{kv@value} stores the value or if the value was not +% specified it has the meaning \cs{relax}. +% \end{itemize} +% The behaviour in pseudo code: +% \begin{quote} +% foreach (\meta{key}, \meta{value}) in (\meta{key value list})\\ +% \hspace*{1.5em}\cs{kv@key} := \meta{key}\\ +% \hspace*{1.5em}\cs{kv@value} := \meta{value}\\ +% \hspace*{1.5em}\meta{processor}\,\M{key}\,\M{value} +% \end{quote} +% +% \subsection{Processing key value pairs} +% +% \begin{declcs}{kv@processor@default}\,\M{family}\,\M{key}\,\M{value} +% \end{declcs} +% There are many possiblities to process key value pairs. +% \cs{kv@processor@default} is the processor used in \cs{kvsetkeys}. +% It reimplements and extends the behaviour of +% \xpackage{keyval}'s \cs{setkeys}. +% In case of unknown keys \cs{setkeys} raise an error. +% This processer, however, calls a handler instead, if it +% is provided by the family. +% +% The behaviour in pseudo code: +% \begin{quote} +% if \meta{key} exists\\ +% \hspace*{1.5em}call the keyval code of \meta{key}\\ +% else\\ +% \hspace*{1.5em}if \meta{handler} for \meta{family} exists\\ +% \hspace*{3em}\meta{handler}\,\M{key}\,\M{value}\\ +% \hspace*{1.5em}else\\ +% \hspace*{3em}raise unknown key error\\ +% \hspace*{1.5em}fi\\ +% fi +% \end{quote} +% +% \begin{declcs}{kv@set@family@handler}\,\M{family}\,\M{handler} +% \end{declcs} +% This sets the handler \meta{handler} for the keyval family +% \meta{family}. +% +% \subsection{Do it all} +% +% \begin{declcs}{kvsetkeys}\,\M{family}\,\M{key value list} +% \end{declcs} +% The work is done by the previous commands. \cs{kvsetkeys} +% just calls them: +% \begin{quote} +% \cs{kv@parse}\,\M{key value list}^^A +% \texttt{\{}\cs{kv@processor@default}\,\M{family}\texttt{\}} +% \end{quote} +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \subsection{Identification} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% Reload check, especially if the package is not used with \LaTeX. +% \begin{macrocode} +\begingroup + \expandafter\let\expandafter\x\csname ver@kvsetkeys.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{kvsetkeys}{The package is already loaded}% + \endgroup + \expandafter\endinput + \fi +\endgroup +% \end{macrocode} +% Package identification: +% \begin{macrocode} +\begingroup + \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@kvsetkeys.sty\endcsname +\ProvidesPackage{kvsetkeys}% + [2006/03/06 v1.0 Key value parser with default handler support (HO)] +% \end{macrocode} +% +% \begin{macrocode} +\expandafter\edef\csname KVS@endinput\endcsname{% + \catcode39 \the\catcode39 % ' + \catcode44 \the\catcode44 % , + \catcode61 \the\catcode61 % = + \catcode64 \the\catcode64 % @ + \catcode94 \the\catcode94 % ^ + \catcode96 \the\catcode96 % ` + \catcode126 \the\catcode126 % ~ + \relax + \noexpand\endinput +} +\catcode39 12 % ' +\catcode44 12 % , +\catcode61 12 % = +\catcode64 11 % @ +\catcode94 7 % ^ +\catcode96 12 % ` +\catcode126 13 % ~ +% \end{macrocode} +% +% \begin{macrocode} +\def\KVS@empty{} +\long\def\@ReturnAfterFi#1\fi{\fi#1} +% \end{macrocode} +% +% \subsection{Normalizing key value lists} +% +% \begin{macro}{\kv@normalize} +% \begin{macrocode} +\def\kv@normalize#1{% + \begingroup + \toks@{,#1}% + \KVS@comma + \KVS@equal + \KVS@spaceA + \KVS@spaceB{ }% + \KVS@spaceC + \KVS@spaceD{ }% + \xdef\kv@global{\the\toks@}% + \endgroup + \let\kv@list\kv@global +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\KVS@comma} +% Converts active commas into comma with catcode other. +% Also adds a comma at the end to protect the last value +% for next cleanup steps. +% \begin{macrocode} +\begingroup + \lccode`\,=`\,% + \lccode`\~=`\,% +\lowercase{\endgroup + \def\KVS@comma{% + \toks@\expandafter{\expandafter}\expandafter + \KVS@@comma\the\toks@~\KVS@nil + } + \def\KVS@@comma#1~#2\KVS@nil{% + \toks@\expandafter{\the\toks@#1,}% + \toks2{#2}% + \edef\x{\the\toks2}% + \ifx\x\KVS@empty + \else + \@ReturnAfterFi{% + \KVS@@comma#2\KVS@nil + }% + \fi + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\KVS@equal} +% Converts active equal signs into catcode other characters. +% \begin{macrocode} +\begingroup + \lccode`\==`\=% + \lccode`\~=`\=% +\lowercase{\endgroup + \def\KVS@equal{% + \toks@\expandafter{\expandafter}\expandafter + \KVS@@equal\the\toks@~\KVS@nil + } + \def\KVS@@equal#1~#2\KVS@nil{% + \edef\x{\the\toks@}% + \ifx\x\KVS@empty + \toks@{#1}% + \else + \toks@\expandafter{\the\toks@=#1}% + \fi + \toks2{#2}% + \edef\x{\the\toks2}% + \ifx\x\KVS@empty + \else + \@ReturnAfterFi{% + \KVS@@equal#2\KVS@nil + }% + \fi + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\KVS@spaceA} +% Removes one space after the equal sign. In theory also several +% spaces could be removed, but this is not really necessary, +% because \TeX\ usually collapses several spaces to one already. +% \begin{macrocode} +\def\KVS@spaceA{% + \toks@\expandafter{\expandafter}\expandafter + \KVS@@spaceA\the\toks@= \KVS@nil +} +\def\KVS@@spaceA#1= #2\KVS@nil{% + \edef\x{\the\toks@}% + \ifx\x\KVS@empty + \toks@{#1}% + \else + \toks@\expandafter{\the\toks@=#1}% + \fi + \toks2{#2}% + \edef\x{\the\toks2}% + \ifx\x\KVS@empty + \else + \@ReturnAfterFi{% + \KVS@@spaceA#2\KVS@nil + }% + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\KVS@spaceB} +% Removes one space before the comma. +% \begin{macrocode} +\def\KVS@spaceB#1{% + \toks@\expandafter{\expandafter}\expandafter + \KVS@@spaceB\the\toks@#1,\KVS@nil +} +\def\KVS@@spaceB#1 ,#2\KVS@nil{% + \edef\x{\the\toks@}% + \ifx\x\KVS@empty + \toks@{#1}% + \else + \toks@\expandafter{\the\toks@,#1}% + \fi + \toks2{#2}% + \edef\x{\the\toks2}% + \ifx\x\KVS@empty + \else + \@ReturnAfterFi{% + \KVS@@spaceB#2\KVS@nil + }% + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\KVS@spaceC} +% Removes one space after the comma. +% \begin{macrocode} +\def\KVS@spaceC{% + \toks@\expandafter{\expandafter}\expandafter + \KVS@@spaceC\the\toks@, \KVS@nil +} +\def\KVS@@spaceC#1, #2\KVS@nil{% + \edef\x{\the\toks@}% + \ifx\x\KVS@empty + \toks@{#1}% + \else + \toks@\expandafter{\the\toks@,#1}% + \fi + \toks2{#2}% + \edef\x{\the\toks2}% + \ifx\x\KVS@empty + \else + \@ReturnAfterFi{% + \KVS@@spaceC#2\KVS@nil + }% + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\KVS@spaceD} +% Removes one space before the equal sign. +% \begin{macrocode} +\def\KVS@spaceD#1{% + \toks@\expandafter{\expandafter}\expandafter + \KVS@@spaceD\the\toks@#1=\KVS@nil +} +\def\KVS@@spaceD#1 =#2\KVS@nil{% + \edef\x{\the\toks@}% + \ifx\x\KVS@empty + \toks@{#1}% + \else + \toks@\expandafter{\the\toks@=#1}% + \fi + \toks2{#2}% + \edef\x{\the\toks2}% + \ifx\x\KVS@empty + \else + \@ReturnAfterFi{% + \KVS@@spaceD#2\KVS@nil + }% + \fi +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Parsing key value lists} +% +% \begin{macro}{\kv@parse} +% Normalizes and parses the key value list. Also sets \cs{kv@list}. +% \begin{macrocode} +\def\kv@parse#1{% + \kv@normalize{#1}% + \expandafter\kv@parse@normalized\expandafter{\kv@list}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\kv@parse@normalized} +% \begin{macrocode} +\def\kv@parse@normalized#1#2{% + \KVS@parse#1,\KVS@nil{#2}% +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\def\KVS@parse#1,#2\KVS@nil#3{% + \begingroup + \toks@{#1}% + \edef\x{\the\toks@}% + \expandafter\endgroup + \ifx\x\KVS@empty + \else + \KVS@process#1=\KVS@nil{#3}% + \fi + \begingroup + \toks@{#2}% + \edef\x{\the\toks@}% + \expandafter\endgroup + \ifx\x\KVS@empty + \else + \@ReturnAfterFi{% + \KVS@parse#2\KVS@nil{#3}% + }% + \fi +} +% \end{macrocode} +% \begin{macrocode} +\def\KVS@process#1=#2\KVS@nil#3{% + \def\kv@key{#1}% + \begingroup + \toks@{#2}% + \edef\x{\the\toks@}% + \expandafter\endgroup + \ifx\x\KVS@empty + \let\kv@value\relax + #3{#1}{}% + \else + \KVS@@process{#1}#2\KVS@nil{#3}% + \fi +} +\def\KVS@@process#1#2=\KVS@nil#3{% + \begingroup + \toks@{#2}% + \xdef\KVS@global{\the\toks@}% + \endgroup + \let\kv@value\KVS@global + #3{#1}{#2}% +} +% \end{macrocode} +% +% \subsection{Processing key value pairs} +% +% \begin{macro}{\kv@processor@default} +% \begin{macrocode} +\def\kv@processor@default#1#2#3{% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname KV@#1@#2\endcsname\relax + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname KVS@#1@handler\endcsname\relax + \kv@error@unknownkey{#1}{#2}% + \else + \csname KVS@#1@handler\endcsname{#2}{#3}% + \relax + \fi + \else + \ifx\kv@value\relax + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname KV@#1@#2@default\endcsname\relax + \kv@error@novalue{#1}{#2}% + \else + \csname KV@#1@#2@default\endcsname + \relax + \fi + \else + \csname KV@#1@#2\endcsname{#3}% + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\kv@set@family@handler} +% \begin{macrocode} +\def\kv@set@family@handler#1#{% + \expandafter\def\csname KVS@#1@handler\endcsname +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Error handling} +% +% \begin{macro}{\kv@error@novalue} +% Only a poor \cs{PackageError} is provided by \xfile{miniltx.tex}. +% \begin{macrocode} +\expandafter\ifx\csname MessageBreak\endcsname\relax + \def\MessageBreak{^^J}% +\fi +\expandafter\ifx\csname @ehc\endcsname\relax + \def\@ehc{% + Try typing \space\string<return\string> % + \space to proceed.\MessageBreak + If that doesn't work, type \space X % + \string<return\string> \space to quit\string.% + }% +\fi +\def\kv@error@novalue{% + \kv@error@generic{No value specified for}% +} +\def\kv@error@unknownkey{% + \kv@error@generic{Undefined}% +} +\def\kv@error@generic#1#2#3{% + \begingroup + \newlinechar=10 % + \def\MessageBreak{^^J}% + \expandafter\ifx\csname PackageError\endcsname\relax + \edef\x{% + \errhelp{% + The keyval family of the key `#3' is `#2'.\MessageBreak + \MessageBreak + \@ehc + }% + }% + \x + \errmessage{kvsetkeys: #1 key `#3'}% + \else + \edef\x{% + \noexpand\PackageError{kvsetkeys}{% + #1 key `#3'% + }{% + The keyval family of the key `#3' is `#2'.\MessageBreak + \MessageBreak + \@ehc + }% + }% + \x + \fi + \endgroup +}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Do it all} +% +% \begin{macro}{\kvsetkeys} +% \begin{macrocode} +\def\kvsetkeys#1#2{% + \kv@parse{#2}{\kv@processor@default{#1}}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\KVS@endinput +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/kvsetkeys.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/kvsetkeys.pdf}] Documentation. +% \end{description} +% +% \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 kvsetkeys.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@{}} +% kvsetkeys.sty & tex/generic/oberdiek/kvsetkeys.sty\\ +% kvsetkeys.pdf & doc/latex/oberdiek/kvsetkeys.pdf\\ +% kvsetkeys.dtx & source/latex/oberdiek/kvsetkeys.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 kvsetkeys.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{kvsetkeys.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 kvsetkeys.dtx +%makeindex -s gind.ist kvsetkeys.idx +%pdflatex kvsetkeys.dtx +%makeindex -s gind.ist kvsetkeys.idx +%pdflatex kvsetkeys.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{thebibliography}{9} +% +% \bibitem{keyval} +% David Carlisle: +% \textit{The \xpackage{keyval} package}; +% 1999/03/16 v1.13; +% \CTAN{macros/latex/required/graphics/keyval.dtx}. +% +% \end{thebibliography} +% +% \begin{History} +% \begin{Version}{2006/03/06 v1.0} +% \item +% First version. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/makerobust.dtx b/Master/texmf-dist/source/latex/oberdiek/makerobust.dtx new file mode 100644 index 00000000000..71f9395af67 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/makerobust.dtx @@ -0,0 +1,398 @@ +% \iffalse meta-comment +% +% Copyright (C) 2006 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 makerobust.dtx +% and the derived files +% makerobust.sty, makerobust.pdf, makerobust.ins, makerobust.drv, +% makerobust-example.tex. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/makerobust.dtx +% CTAN:macros/latex/contrib/oberdiek/makerobust.pdf +% +% Unpacking: +% (a) If makerobust.ins is present: +% tex makerobust.ins +% (b) Without makerobust.ins: +% tex makerobust.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{makerobust.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If makerobust.drv is present: +% latex makerobust.drv +% (b) Without makerobust.drv: +% latex makerobust.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 makerobust.dtx +% makeindex -s gind.ist makerobust.idx +% pdflatex makerobust.dtx +% makeindex -s gind.ist makerobust.idx +% pdflatex makerobust.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/makerobust.sty +% TDS:doc/latex/oberdiek/makerobust.pdf +% TDS:doc/latex/oberdiek/makerobust-example.tex +% TDS:source/latex/oberdiek/makerobust.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: makerobust 2006/03/18 v1.0 Making a macro robust (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2006 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 makerobust.dtx +and the derived files + makerobust.sty, makerobust.pdf, makerobust.ins, makerobust.drv, + makerobust-example.tex. + +\endpreamble + +\generate{% + \file{makerobust.ins}{\from{makerobust.dtx}{install}}% + \file{makerobust.drv}{\from{makerobust.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{makerobust.sty}{\from{makerobust.dtx}{package}}% + \usedir{doc/latex/oberdiek}% + \file{makerobust-example.tex}{\from{makerobust.dtx}{example}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* makerobust.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `makerobust.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{makerobust.drv}% + [2006/03/18 v1.0 Making a macro robust (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\begin{document} + \DocInput{makerobust.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{59} +% +% \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{makerobust.drv} +% +% \title{The \xpackage{makerobust} package} +% \date{2006/03/18 v1.0} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% Package \xpackage{makerobust} provides \cs{MakeRobustCommand} +% that converts an existing macro to a robust one. +% \end{abstract} +% +% \tableofcontents +% +% \section{User interface} +% +% \LaTeX\ offers \cs{DeclareRobustCommand} to define a robust macro +% that does not break if it is used in moving arguments. +% Sometimes a macro is already defined, but not robust. For +% example, \cs{(} and \cs{)} are not robust, inside \cs{section} +% the user must use \cs{protect} explicitly. This could be +% avoided by making \cs{(} and \cs{)} robust. +% +% \begin{declcs}{MakeRobustCommand}\M{cmd} +% \end{declcs} +% \cs{MakeRobustCommand} redefines the macro \meta{cmd} +% by using \cs{DeclareRobustCommand} and the existing definition +% of the macro \meta{cmd}. +% \begin{itemize} +% \item It is an error if \meta{cmd} is undefined. If you want to +% define a robust command, then you can use \cs{DeclareRobustCommand} +% directly. +% \item If the macro has previously been +% defined by \cs{DeclareRobustCommand} then the redefinition of +% \cs{MakeRobustCommand} is omitted, because the macro is already robust. +% Only an information entry is written to the \xfile{.log} file. +% Thus you do not get a warning or an error if the macro is already +% robust because of an updated LaTeX or package that defines the macro. +% \item Two macros are defined for a macro, defined +% by \cs{DeclareRobustCommand}. Example: +% \begin{quote} +% |\DeclareRobustCommand{\foobar}{definition text}| +% \end{quote} +% Then the macro ``\cs{foobar}'' contains the protection code +% and, depending on the protection mode, +% calls the internal macro ``\cs{foobar }''. Notice the space +% at the end of the macro name. +% This internal macro ``\cs{foobar }'' now contains the definition +% ``|definition text|'', given in \cs{DeclareRobustCommand}. +% +% Sometimes it can happen, that the internal macro already exists. +% This can be caused by a previous \cs{DeclareRobustCommand} followed +% by \cs{renewcommand}. Then the redefinition by \cs{MakeRobustCommand} +% would be safe. +% +% However, it can also be possible that the macro is already robust, +% using the internal macro, but with a different protection code. +% The redefinition by \cs{MakeRobustCommand} would then generate +% an infinite loop. +% +% Therefore \cs{MakeRobustCommand} raises an error message, +% if the internal macro (with space at the end) already exists. +% \end{itemize} +% +% \subsection{Example} +% +% \begin{macrocode} +%<*example> +\documentclass{article} +\usepackage{makerobust} +\MakeRobustCommand\( +\MakeRobustCommand\) +\pagestyle{headings} +\begin{document} +\tableofcontents +\section{Einstein: \(E=mc^2\)} +\newpage +Second page. +\end{document} +%</example> +% \end{macrocode} +% +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \begin{macrocode} +%<*package> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{makerobust}% + [2006/03/18 v1.0 Making a macro robust (HO)] +% \end{macrocode} +% +% \begin{macrocode} +\def\MakeRobustCommand#1{% + \begingroup + \@ifundefined{\expandafter\@gobble\string#1}{% + \endgroup + \PackageError{makerobust}{% + Macro \string`\string#1\string' is not defined% + }\@ehc + }{% + \global\let\MR@gtemp#1% + \let#1\@undefined + \expandafter\let\expandafter\MR@temp + \csname\expandafter\@gobble\string#1 \endcsname + \DeclareRobustCommand#1{}% + \ifx#1\MR@gtemp + \endgroup + \PackageInfo{makerobust}{% + \string`\string#1\string' is already robust% + }% + \else + \@ifundefined{MR@temp}{% + \global\let\MR@gtemp#1% + \endgroup + \expandafter\let\csname\expandafter\@gobble\string#1 \endcsname#1% + \let#1\MR@gtemp + }{% + \endgroup + \PackageError{makerobust}{% + Internal macro \string`\string#1 \string' already exists% + }\@ehc + }% + \fi + }% +} +% \end{macrocode} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/makerobust.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/makerobust.pdf}] Documentation. +% \end{description} +% +% \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 makerobust.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@{}} +% makerobust.sty & tex/latex/oberdiek/makerobust.sty\\ +% makerobust.pdf & doc/latex/oberdiek/makerobust.pdf\\ +% makerobust-example.tex & doc/latex/oberdiek/makerobust-example.tex\\ +% makerobust.dtx & source/latex/oberdiek/makerobust.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 makerobust.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{makerobust.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 makerobust.dtx +%makeindex -s gind.ist makerobust.idx +%pdflatex makerobust.dtx +%makeindex -s gind.ist makerobust.idx +%pdflatex makerobust.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2006/03/18 v1.0} +% \item +% First version. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins b/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins index a1956291244..f42726f6949 100644 --- a/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins +++ b/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins @@ -1,42 +1,73 @@ % oberdiek.ins -% 2001/08/27 +% 2006/08/26 % -% This file will generate fast loadable files and documentation -% driver files from the doc files in this directory when run -% through LaTeX or TeX. +% Copyright (C) 1999, 2001, 2006 by +% Heiko Oberdiek <oberdiek@uni-freiburg.de> % -% Copyright (C) 1999, 2001 Heiko Oberdiek. +% 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 2003/12/01 or later. % -% This program may be distributed and/or modified under -% the conditions of the LaTeX Project Public License, -% either version 1.2 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.2 or later is part of all distributions -% of LaTeX version 1999/12/01 or later. +% This work has the LPPL maintenance status "maintained". % -% Please send error reports and suggestions for improvements to -% Heiko Oberdiek <oberdiek@uni-freiburg.de>. +% This Current Maintainer of this work is Heiko Oberdiek. +% +% This work consists of the overview "oberdiek.pdf", its source +% "oberdiek.tex", and the installation script "oberdiek.ins" +% for the projects in CTAN:macros/latex/contrib/oberdiek/. % \input docstrip -\batchinput{hypbmsec.ins} -\batchinput{pagesel.ins} -\batchinput{alphalph.ins} -\batchinput{twoopt.ins} -\batchinput{hypcap.ins} +\batchinput{aliascnt.dtx} +\batchinput{alphalph.dtx} +\batchinput{attachfile2.dtx} +\batchinput{auxhook.dtx} +\batchinput{bmpsize.dtx} +\batchinput{chemarr.dtx} +\batchinput{classlist.dtx} +\batchinput{colonequals.dtx} +\batchinput{dvipscol.dtx} +\batchinput{embedfile.dtx} +\batchinput{engord.dtx} +\batchinput{epstopdf.dtx} +\batchinput{grffile.dtx} +\batchinput{holtxdoc.dtx} +\batchinput{hypbmsec.dtx} +\batchinput{hypcap.dtx} +\batchinput{hypdestopt.dtx} +\batchinput{hypdoc.dtx} +\batchinput{ifdraft.dtx} +\batchinput{ifpdf.dtx} +\batchinput{ifvtex.dtx} +\batchinput{inputenx.dtx} +\batchinput{kvoptions.dtx} +\batchinput{kvsetkeys.dtx} +\batchinput{makerobust.dtx} +\batchinput{pagesel.dtx} +\batchinput{pdfcolmk.dtx} +\batchinput{pdfcrypt.dtx} +\batchinput{pdflscape.dtx} +\batchinput{picture.dtx} +\batchinput{pmboxdraw.dtx} +\batchinput{refcount.dtx} +\batchinput{setouterhbox.dtx} +\batchinput{settobox.dtx} +\batchinput{tabularht.dtx} +\batchinput{tabularkv.dtx} +\batchinput{telprint.dtx} +\batchinput{twoopt.dtx} +\batchinput{zref.dtx} -\Msg{***********************************************************} -\Msg{* To finish the installation you have to move the following} -\Msg{* files into a directory searched by TeX:} -\Msg{*} -\Msg{* \space\space *.sty} +\Msg{} +\Msg{********************************************************} \Msg{*} -\Msg{* To produce the documentation run the files `*.dtx'} -\Msg{* through LaTeX.} +\Msg{* Unpacking completed, now finish the installation.} \Msg{*} -\Msg{* Happy TeXing} -\Msg{***********************************************************} +\Msg{********************************************************} +\Msg{} \endbatchfile diff --git a/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex b/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex new file mode 100644 index 00000000000..558e0cfef24 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex @@ -0,0 +1,645 @@ +\NeedsTeXFormat{LaTeX2e} + +\newcommand*{\Title}{Overview} +\newcommand*{\CTANdir}{macros/latex/contrib/oberdiek/} +\newcommand*{\CTANroot}{ftp://ftp.ctan.org/tex-archive/} +\newcommand*{\Subject}{CTAN:\CTANdir} +\newcommand*{\Author}{Heiko Oberdiek} +\newcommand*{\Email}{oberdiek@uni-freiburg.de} +\newcommand*{\Date}{2006/08/26} + +% Copyright (C) 2006 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 2003/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 overview "oberdiek.pdf", its source +% "oberdiek.tex", and the installation script "oberdiek.ins" +% for the projects in CTAN:macros/latex/contrib/oberdiek/. +% +\documentclass[a4paper,12pt]{article} +\usepackage[ + ignorehead, + top=1in, +]{geometry} +\usepackage{longtable} +\usepackage{color} +\usepackage[ngerman,english]{babel} + +\definecolor{link}{rgb}{1,0,0}% red +\definecolor{file}{rgb}{0,0,1}% blue +\definecolor{url}{cmyk}{0.1,1,0,0.1} + +\definecolor{file}{rgb}{1,0,0}% red +\definecolor{url}{rgb}{0,0,1}% blue +\definecolor{link}{rgb}{0,0.75,0}% + +\usepackage[ + colorlinks, +]{hyperref}[2006/02/12] +\hypersetup{ + pdftitle={CTAN:\CTANdir}, + pdfsubject={Package Overview}, + pdfauthor={\Author\ <\Email>}, + bookmarksnumbered, + bookmarksopen, + bookmarksopenlevel=2, + bookmarksdepth=2, + filecolor=file, + urlcolor=url, + linkcolor=link, +} +\usepackage{hypdestopt} +\setcounter{tocdepth}{1} +\setcounter{secnumdepth}{1} + +\title{% + \href{\CTANroot\CTANdir}{CTAN:\CTANdir}% +} +\author{% + \Author\\ + \textless + \href{mailto:\Email}{\texttt{\Email}}% + \textgreater +} +\date{\Date} + +\providecommand*{\pdfTeX}{pdf\TeX} +\providecommand*{\VTeX}{V\TeX} +\newcommand*{\xpackage}[1]{\textsf{#1}} +\newcommand*{\xfile}[1]{\textsf{#1}} +\newcommand*{\xoption}[1]{\textsf{#1}} +\newcommand*{\cs}[1]{\texttt{\textbackslash#1}} +\newcommand*{\meta}[1]{% + \ensuremath\langle + \textit{#1}% + \ensuremath\rangle +} + +\makeatletter +\g@addto@macro\abstract{\noindent\ignorespaces} + +\newcommand*{\tocinclude}[1]{% + \setcounter{tocdepth}{3}% + \begingroup + \makeatletter + \def\@prj{#1}% + \let\contentsline\foreign@contentsline + \input{../\@prj/\@prj.toc}% + \endgroup +} +\def\foreign@contentsline#1#2#3#4{% + \ifx\\#4\\% + \csname l@#1\endcsname{#2}{#3}% + \else + \ifHy@linktocpage + \csname l@#1\endcsname{{#2}}{% + \hyper@linkfile{#3}{\@prj.pdf}{#4}% + }% + \else + \csname l@#1\endcsname{% + \hyper@linkfile{#2}{\@prj.pdf}{#4}% + }{#3}% + \fi + \fi +}% + +\newenvironment{overview}{% + \setlength{\tabcolsep}{0.8\tabcolsep}% + \setlength{\LTleft}{0pt}% + \longtable{@{}llll@{}} +}{% + \endlongtable +} +\newcommand*{\entry}[4]{% + \href{file:#1.pdf}{% + \bfseries\xpackage{#1}% + }% + & #2% + & v#3% + & \href{\CTANroot\CTANdir #1.pdf}{[pdf]} % + \href{\CTANroot\CTANdir #1.dtx}{[dtx]} + \\*% + \hyperref[{#1}]{\small (contents)}% + & + \multicolumn{2}{l}{% + #4% + }% + \\% +} +\newcommand*{\entrysep}{1.5ex} + +\newcommand*{\pkgsectformat}[1]{% + \texorpdfstring{% + \textcolor{link}{The} % + \xpackage{#1} % + \textcolor{link}{package}% + }{#1}% +} + +\makeatother + +\begin{document} +\maketitle + +\section{Overview} +\begin{overview} +\entry{aliascnt}{2006/08/16}{1.1}{Alias counter}% +[\entrysep] +\entry{alphalph}{2006/05/30}{1.4}{Converting numbers to letters}% +[\entrysep] +\entry{attachfile2}{2006/08/16}{2.2}{attach files into PDF}% +[\entrysep] +\entry{auxhook}{2006/05/31}{1.0}{Hooks for auxiliary files}% +[\entrysep] +\entry{bmpsize}{2006/08/24}{1.0}{Extract size and resolution data from bitmap files}% +[\entrysep] +\entry{chemarr}{2006/02/20}{1.2}{Chemical reaction arrows}% +[\entrysep] +\entry{classlist}{2006/02/20}{1.2}{Record loaded classes}% +[\entrysep] +\entry{colonequals}{2006/08/01}{1.0}{Colon equals symbols}% +[\entrysep] +\entry{dvipscol}{2006/02/20}{1.1}{Fix for dvips.def}% +[\entrysep] +\entry{embedfile}{2006/08/16}{1.0}{embed files into PDF}% +[\entrysep] +\entry{engord}{2006/02/20}{1.2}{Provides the ifpdf switch}% +[\entrysep] +\entry{epstopdf}{2006/08/26}{1.3}{Conversion with epstopdf on the fly}% +[\entrysep] +\entry{grffile}{2006/08/17}{1.1}{Extended file name support for graphics}% +[\entrysep] +\entry{holtxdoc}{2006/06/02}{0.7}{Private additional ltxdoc support}% +[\entrysep] +\entry{hypbmsec}{2006/02/20}{2.2}{Bookmarks in sectioning commands}% +[\entrysep] +\entry{hypcap}{2006/02/20}{1.5}{Adjusting anchors of captions}% +[\entrysep] +\entry{hypdestopt}{2006/06/01}{2.0}{Hyperref destination optimizer}% +[\entrysep] +\entry{hypdoc}{2006/06/02}{1.4}{Hyper extensions for doc.sty}% +[\entrysep] +\entry{ifdraft}{2006/02/20}{1.2}{Switch for option draft}% +[\entrysep] +\entry{ifpdf}{2006/02/20}{1.4}{Provides the ifpdf switch}% +[\entrysep] +\entry{ifvtex}{2006/02/20}{1.1}{Provides the ifpdf switch}% +[\entrysep] +\entry{inputenx}{2006/08/24}{1.0}{Enhanced input encoding handling}% +[\entrysep] +\entry{kvoptions}{2006/08/22}{2.4}{Connects package keyval with \LaTeX{} options}% +[\entrysep] +\entry{kvsetkeys}{2006/03/06}{1.0}{Key value parser with default handler support}% +[\entrysep] +\entry{makerobust}{2006/03/18}{1.0}{Making a macro robust}% +[\entrysep] +\entry{pagesel}{2006/03/07}{1.5}{Selecting shipout output pages}% +[\entrysep] +\entry{pdfcolmk}{2006/02/20}{0.8}{PDFtex COLor MarK}% +[\entrysep] +\entry{pdfcrypt}{2006/02/20}{0.8}{Setting pdf encryption}% +[\entrysep] +\entry{pdflscape}{2006/04/24}{0.6}{Landscape pages in PDF}% +[\entrysep] +\entry{picture}{2006/08/26}{1.0}{Dimens for picture macros}% +[\entrysep] +\entry{pmboxdraw}{2006/05/03}{1.0}{Poor man's box drawing characters}% +[\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}% +[\entrysep] +\entry{settobox}{2006/02/20}{1.2}{Getting box sizes}% +[\entrysep] +\entry{tabularht}{2006/02/20}{2.2}{Tabular with height specification}% +[\entrysep] +\entry{tabularkv}{2006/02/20}{1.1}{Key value interface for tabular parameters}% +[\entrysep] +\entry{telprint}{2006/08/16}{1.7}{Formatting of German phone numbers}% +[\entrysep] +\entry{twoopt}{2006/02/20}{1.4}{Definitions with two optional arguments}% +[\entrysep] +\entry{zref}{2006/05/25}{1.2}{New reference scheme for \LaTeXe{}}% +\end{overview} + +\section{Packages} +\hypersetup{bookmarksnumbered=false} + +\subsection{\pkgsectformat{aliascnt}} +\label{aliascnt} +\begin{abstract} +Package \xpackage{aliascnt} introduces \emph{alias counters} that +share the same counter register and clear list. +\end{abstract} +\tocinclude{aliascnt} + +\newpage +\subsection{\pkgsectformat{alphalph}} +\label{alphalph} +\begin{abstract} +The package provides the new expandable commands \cs{alphalph} +and \cs{AlphAlph}. They are like \cs{number}, but the expansion +consists of lowercase and uppercase letters respectively. +\end{abstract} +\tocinclude{alphalph} + +\newpage +\subsection{\pkgsectformat{attachfile2}} +\label{attachfile2} +\begin{abstract} +This package can be used to attach files to a PDF document. +It is a further development of Scott Pakin's package +\xpackage{attachfile} for \pdfTeX. Apart from bug fixes, +package \xpackage{attachfile2} adds support for \xoption{dvips}, +some new options, gets and writes meta information data about +the attached files. +\end{abstract} +\tocinclude{attachfile2} + +\newpage +\subsection{\pkgsectformat{auxhook}} +\label{auxhook} +\begin{abstract} +Package \xpackage{auxhook} provides hooks for adding stuff at +the begin of \xfile{.aux} files. +\end{abstract} +\tocinclude{auxhook} + +\newpage +\subsection{\pkgsectformat{bmpsize}} +\label{bmpsize} +\begin{abstract} +Package \xpackage{bmpsize} analyzes bitmap images to extract +size and resolution data. It adds this feature to the graphics package +that now do not need separate bounding box files for bitmap images. +Additionally the implementation for the inclusion of bitmap images +in some drivers of package \xpackage{graphicx} are rewritten to support +options \xoption{viewport}, \xoption{trim} and \xoption{clip}. +\end{abstract} +\tocinclude{bmpsize} + +\newpage +\subsection{\pkgsectformat{chemarr}} +\label{chemarr} +\begin{abstract} +Very often chemists need a longer version +of reaction arrows (\cs{rightleftharpoons}) with +the possibility to put text above and below. +Analogous to \xpackage{amsmath}'s \cs{xrightarrow} and +\cs{xleftarrow} this package provides the macro +\cs{xrightleftharpoons}. +\end{abstract} +\tocinclude{chemarr} + +\newpage +\subsection{\pkgsectformat{classlist}} +\label{classlist} +\begin{abstract} +This package records the loaded classes and stores +them in a list. +\end{abstract} +\tocinclude{classlist} + +\newpage +\subsection{\pkgsectformat{colonequals}} +\label{colonequals} +\begin{abstract} +Package \xpackage{colonequals} defines poor man's symbols +for math relation symbols such as ``colon equals''. +The colon is centered around the horizontal math axis. +\end{abstract} +\tocinclude{colonequals} + +\newpage +\subsection{\pkgsectformat{dvipscol}} +\label{dvipscol} +\begin{abstract} +Color support for dvips in \xfile{dvips.def} involves the +color stack of dvips. The package tries to remove unnecessary +uses of the stack to avoid the error ``out of coor stack space''. +\end{abstract} +\tocinclude{dvipscol} + +\newpage +\subsection{\pkgsectformat{embedfile}} +\label{embedfile} +\begin{abstract} +This package embeds files to a PDF document. +Currently \pdfTeX\ >= 1.30 in PDF mode is supported only. +\end{abstract} +\tocinclude{embedfile} + +\newpage +\subsection{\pkgsectformat{engord}} +\label{engord} +\begin{abstract} +The package generates the suffix of English ordinal numbers. +It can be used with plain and \LaTeX\ formats. +\end{abstract} +\tocinclude{engord} + +\newpage +\subsection{\pkgsectformat{epstopdf}} +\label{epstopdf} +\begin{abstract} +This packages adds support of handling eps images +to package \xpackage{graphics} or \xpackage{graphicx} +with option \xoption{pdftex}. If an eps image is detected, +epstopdf is automatically called to convert it to pdf format. +\end{abstract} +\tocinclude{epstopdf} + +\newpage +\subsection{\pkgsectformat{grffile}} +\label{grffile} +\begin{abstract} +The package extends the file name processing of package \xpackage{graphics} +to support a larger range of file names. For example, the file name +may contain several dots. Or in case of \pdfTeX\ in PDF mode the file name may +contain spaces. +\end{abstract} +\tocinclude{grffile} + +\newpage +\subsection{\pkgsectformat{holtxdoc}} +\label{holtxdoc} +\begin{abstract} +The package is used for the documentation of my packages in +DTX format. It contains some private macros and setup for +my needs. Thus do not use it. I have separated the part +that may be useful for others in package \xpackage{hypdoc}. +\end{abstract} +\tocinclude{holtxdoc} + +\newpage +\subsection{\pkgsectformat{hypbmsec}} +\label{hypbmsec} +\begin{abstract} +This package expands the syntax of the sectioning commands. If the +argument of the sectioning commands isn't usable as outline entry, +a replacement for the bookmarks can be given. +\end{abstract} +\tocinclude{hypbmsec} + +\newpage +\subsection{\pkgsectformat{hypcap}} +\label{hypcap} +\begin{abstract} +This package tries a solution of the problem with +hyperref, that links to floats points below the +caption and not at the beginning of the float. +Therefore this package divides the task into two +part, the link setting with \cs{capstart} or +automatically at the beginning of a float and +the rest in the \cs{caption} command. +\end{abstract} +\tocinclude{hypcap} + +\newpage +\subsection{\pkgsectformat{hypdestopt}} +\label{hypdestopt} +\begin{abstract} +Package \xpackage{hypdestopt} supports \xpackage{hyperref}'s +\xoption{pdftex} driver. It removes unnecessary destinations +and shortens the destination names or uses numbered destinations +to get smaller PDF files. +\end{abstract} +\tocinclude{hypdestopt} + +\newpage +\subsection{\pkgsectformat{hypdoc}} +\label{hypdoc} +\begin{abstract} +This package adds hyper features to the package +\xpackage{doc} that is used in the documentation +system of \LaTeXe. Bookmarks are added and references +are linked as far as possible. +\end{abstract} +\tocinclude{hypdoc} + +\newpage +\subsection{\pkgsectformat{ifdraft}} +\label{ifdraft} +\begin{abstract} +The package provides an interface for selecting code depending +on the options \xoption{draft} and \xoption{final}. +\end{abstract} +\tocinclude{ifdraft} + +\newpage +\subsection{\pkgsectformat{ifpdf}} +\label{ifpdf} +\begin{abstract} +This package looks for pdfTeX in pdf mode and +implements and sets the switch \cs{ifpdf}. +The detection is based on \cs{pdfoutput} and +the package will not change this value. +It works with plain or LaTeX formats. +\end{abstract} +\tocinclude{ifpdf} + +\newpage +\subsection{\pkgsectformat{ifvtex}} +\label{ifvtex} +\begin{abstract} +This package looks for \VTeX, implements +and sets the switches \cs{ifvtex}, \cs{ifvtex}\texttt{\meta{mode}}, +\cs{ifvtexgex}. It works with plain or \LaTeX\ formats. +\end{abstract} +\tocinclude{ifvtex} + +\newpage +\subsection{\pkgsectformat{inputenx}} +\label{inputenx} +\begin{abstract} +This package deals with input encodings. The first stage +is already available. It provides input encodings using +standard mappings and covers nearly all slots. Thus it +serves as more uptodate replacement for package \xpackage{inputenc}. +\end{abstract} +\tocinclude{inputenx} + +\newpage +\subsection{\pkgsectformat{kvoptions}} +\label{kvoptions} +\begin{abstract} +This package is intended for package authors who want to +use options in key value format for their package options. +\end{abstract} +\tocinclude{kvoptions} + +\newpage +\subsection{\pkgsectformat{kvsetkeys}} +\label{kvsetkeys} +\begin{abstract} +Package \xpackage{kvsetkeys} provides \cs{kvsetkeys}, a variant +of package \xpackage{keyval}'s \cs{setkeys}. It allows to specify +a handler that deals with unknown options. Active commas and equal +signs may be used (e.g. see \xpackage{babel}'s shorthands) and +only one level of curly braces are removed from the values. +\end{abstract} +\tocinclude{kvsetkeys} + +\newpage +\subsection{\pkgsectformat{makerobust}} +\label{makerobust} +\begin{abstract} +Package \xpackage{makerobust} provides \cs{MakeRobustCommand} +that converts an existing macro to a robust one. +\end{abstract} +\tocinclude{makerobust} + +\newpage +\subsection{\pkgsectformat{pagesel}} +\label{pagesel} +\begin{abstract} +Single pages or page areas can be selected for output. +\end{abstract} +\tocinclude{pagesel} + +\newpage +\subsection{\pkgsectformat{pdfcolmk}} +\label{pdfcolmk} +\begin{abstract} +This package tries a solution for the missing color +stack of \pdfTeX. +\end{abstract} +\tocinclude{pdfcolmk} + +\newpage +\subsection{\pkgsectformat{pdfcrypt}} +\label{pdfcrypt} +\begin{abstract} +This package supports the setting of pdf encryption options +for \VTeX\ and some older versions of \pdfTeX. +\end{abstract} +\tocinclude{pdfcrypt} + +\newpage +\subsection{\pkgsectformat{pdflscape}} +\label{pdflscape} +\begin{abstract} +Package \xpackage{pdflscape} adds PDF support to the +environment \texttt{landscape} of package \xpackage{lscape} +by setting the PDF page attribute \texttt{/Rotate}. +\end{abstract} +\tocinclude{pdflscape} + +\newpage +\subsection{\pkgsectformat{picture}} +\label{picture} +\begin{abstract} +There are macro and environment arguments that expect numbers +that will internally be multiplicated with \cs{unitlength}. +This package extends the syntax of these arguments that +dimens with calculation support can be added for these arguments. +\end{abstract} +\tocinclude{picture} + +\newpage +\subsection{\pkgsectformat{pmboxdraw}} +\label{pmboxdraw} +\begin{abstract} +Package \xpackage{pmboxdraw} declares box drawings characters of +old code pages, e.g. cp437. It uses rules instead of using a font. +\end{abstract} +\tocinclude{pmboxdraw} + +\newpage +\subsection{\pkgsectformat{refcount}} +\label{refcount} +\begin{abstract} +References are not numbers, however they often store numerical +data such as section or page numbers. \cs{ref} or \cs{pageref} +cannot be used for counter assignments or calculations because +they are not expandable, generate warnings, or can even be links, +The package provides expandable macros to extract the data +from references. Packages \xpackage{hyperref}, \xpackage{nameref}, +\xpackage{titleref}, and \xpackage{babel} are supported. +\end{abstract} +\tocinclude{refcount} + +\newpage +\subsection{\pkgsectformat{setouterhbox}} +\label{setouterhbox} +\begin{abstract} +If math stuff is set in an \cs{hbox}, then TeX +performs some optimization and omits the implicite +penalties \cs{binoppenalty} and \cs{relpenalty}. +This packages tries to put stuff into an \cs{hbox} +without getting lost of those penalties. +\end{abstract} +\tocinclude{setouterhbox} + +\newpage +\subsection{\pkgsectformat{settobox}} +\label{settobox} +\begin{abstract} +Commands are defined for getting box sizes similar +to \LaTeX's \cs{settowidth} commands. +\end{abstract} +\tocinclude{settobox} + +\newpage +\subsection{\pkgsectformat{tabularht}} +\label{tabularht} +\begin{abstract} +This package defines some environments that adds +a height specification to tabular and array. +\end{abstract} +\tocinclude{tabularht} + +\newpage +\subsection{\pkgsectformat{tabularkv}} +\label{tabularkv} +\begin{abstract} +This package adds a key value interface for tabular +by the new environment \texttt{tabularkv}. Thus the +\TeX\ source code looks better by named parameters, +especially if package \xpackage{tabularht} is used. +\end{abstract} +\tocinclude{tabularkv} + +\newpage +\subsection{\pkgsectformat{telprint}} +\label{telprint} +\begin{abstract} +Package \xpackage{telprint} provides \cs{telprint} for formatting +German phone numbers. +\end{abstract} +\tocinclude{telprint} + +\newpage +\subsection{\pkgsectformat{twoopt}} +\label{twoopt} +\begin{abstract} +This package provides commands to define macros with two +optional arguments. +\end{abstract} +\tocinclude{twoopt} + +\newpage +\subsection{\pkgsectformat{zref}} +\label{zref} +\begin{abstract} +Package \xpackage{zref} tries to get rid of the restriction +in \LaTeX's reference system that only two properties are +supported. The package implements an extensible referencing +system, where properties are handled in a more flexible way. +It offers an interface for macro programmers for the access +to the system and some applications that uses the new +reference scheme. +\end{abstract} +\tocinclude{zref} +\end{document} diff --git a/Master/texmf-dist/source/latex/oberdiek/pagesel.dtx b/Master/texmf-dist/source/latex/oberdiek/pagesel.dtx index 2f9636d734c..93f0674b29f 100644 --- a/Master/texmf-dist/source/latex/oberdiek/pagesel.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/pagesel.dtx @@ -1,67 +1,173 @@ % \iffalse meta-comment % -% pagesel.dtx -% -% This file is part of the package `pagesel' for use with LaTeX2e. -% -% Function: Selecting shipout output pages. -% -% Copyright (C) 1999, 2003 Heiko Oberdiek. -% -% This program may be distributed and/or modified under -% the conditions of the LaTeX Project Public License, -% either version 1.2 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.2 or later is part of all distributions -% of LaTeX version 1999/12/01 or later. -% -% Please send error reports and suggestions for improvements to -% Heiko Oberdiek <oberdiek@uni-freiburg.de>. -% -%<*dtx> - \ProvidesFile{pagesel.dtx} -%</dtx> -%<package>\NeedsTeXFormat{LaTeX2e} -%<package>\ProvidesPackage{pagesel} -%<driver>\ProvidesFile{pagesel.drv} -% \fi -% \ProvidesFile{pagesel.dtx} - [2003/06/05 v1.2 Selecting shipout output pages (HO)] -% -% \GetFileInfo{pagesel.dtx} -% -% \CheckSum{216} -% -%% \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 \~} -%% -% \iffalse +% Copyright (C) 1999, 2003, 2006 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 pagesel.dtx +% and the derived files +% pagesel.sty, pagesel.pdf, pagesel.ins, pagesel.drv. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/pagesel.dtx +% CTAN:macros/latex/contrib/oberdiek/pagesel.pdf +% +% Unpacking: +% (a) If pagesel.ins is present: +% tex pagesel.ins +% (b) Without pagesel.ins: +% tex pagesel.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{pagesel.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If pagesel.drv is present: +% latex pagesel.drv +% (b) Without pagesel.drv: +% latex pagesel.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 pagesel.dtx +% makeindex -s gind.ist pagesel.idx +% pdflatex pagesel.dtx +% makeindex -s gind.ist pagesel.idx +% pdflatex pagesel.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/pagesel.sty +% TDS:doc/latex/oberdiek/pagesel.pdf +% TDS:source/latex/oberdiek/pagesel.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: pagesel 2006/03/07 v1.5 Selecting shipout output pages (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 1999, 2003, 2006 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 pagesel.dtx +and the derived files + pagesel.sty, pagesel.pdf, pagesel.ins, pagesel.drv. + +\endpreamble + +\generate{% + \file{pagesel.ins}{\from{pagesel.dtx}{install}}% + \file{pagesel.drv}{\from{pagesel.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{pagesel.sty}{\from{pagesel.dtx}{package}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* pagesel.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `pagesel.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> %<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{pagesel.drv}% + [2006/03/07 v1.5 Selecting shipout output pages (HO)] \documentclass{ltxdoc} \usepackage{holtxdoc} \begin{document} - \DocInput{pagesel.dtx} + \DocInput{pagesel.dtx} \end{document} %</driver> % \fi % -% \DoNotIndex{\maxdimen,\\,\END} -% \DoNotIndex{\ifodd,\ifx,\ifnum} +% \CheckSum{393} +% +% \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{pagesel.drv} +% +% \title{The \xpackage{pagesel} package} +% \date{2006/03/07 v1.5} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% Single pages or page areas can be selected for output. +% \end{abstract} +% +% \tableofcontents % % \newenvironment{param}{^^A % \newcommand{\entry}[1]{\meta{\###1}:&}^^A @@ -72,16 +178,6 @@ % % \newcommand*{\Option}[1]{\textsf{#1}} % -% \SetupTitle{page,select,shipout,LaTeX} -% \maketitle -% -% \begin{abstract} -% With this package single pages or page areas can be selected -% for output. -% \end{abstract} -% -% \tableofcontents -% % \section{Usage} % The package \Package{pagesel} is a \LaTeXe\ package: % \begin{quote} @@ -89,8 +185,8 @@ % \end{quote} % (For plain\TeX\ and \LaTeX\,2.09 the similar package % \URL{\Package{selectp}}^^A -% {ftp://ftp.dante.de/tex-archive/macros/latex209/contrib/misc/selectp.sty} -% from \Email[Donald Arsenau]{asnd@triumf.ca} can be used.) +% {ftp://ftp.ctan.org/tex-archive/macros/latex209/contrib/misc/selectp.sty} +% from \NameEmail{Donald Arsenau}{asnd@triumf.ca} can be used.) % % Depending on the options the package works in two modes: % \begin{enumerate} @@ -153,7 +249,8 @@ % \subsubsection{Options\texorpdfstring{ for handling auxiliary files}{}} % \begin{description} % \item[\Option{nofiles}:] This is the default. Auxiliary files are -% read but not written or changed. +% read but not written or changed. Also the job is aborted +% after the last selected page for saving time. % \item[\Option{nonofiles}/\Option{files}:] Auxiliary files are % written. % \end{description} @@ -165,7 +262,7 @@ % This is harmless and can be ignored. % \item The outline auxiliary file \cmd{\jobname.out}, however, % is opened and truncated to zero bytes. -% Version \ref{Hist10} of this package had +% Version 1.0 of this package had % loaded a patch file \File{hypnofil.tex}, if it detects % \Package{hyperref} to get \cmd{\nofiles} work. % @@ -174,14 +271,16 @@ % is no longer needed and removed. % \end{itemize} % -% \Installation -% -% \StopEventually{} +% \StopEventually{ +% } % % \section{Implementation} % \subsection{Package} % \begin{macrocode} %<*package> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{pagesel} + [2006/03/07 v1.5 Selecting shipout output pages (HO)] % \end{macrocode} % % If the package is loaded twice, the package code does not @@ -330,9 +429,26 @@ % \end{macro} % \end{macro} % +% \begin{macrocode} +\newcommand{\ps@lastpage}{\maxdimen} +\ifx\ps@nofiles\nofiles + \ifx\ps@testlist\@empty + \else + \def\ps@lastpage{0}% + \newcommand*{\ps@pagetest}[2]{% + \ifnum#2>\ps@lastpage\relax + \def\ps@lastpage{#2}% + \fi + }% + \ps@testlist + \let\ps@pagetest\relax + \fi +\fi +% \end{macrocode} +% % \begin{macro}{\ps@ifinset} % \begin{macrocode} -\newcommand{\ps@ifinset}[4]{% +\newcommand*{\ps@ifinset}[4]{% \ifnum#1>\value{ps@count}% \ps@ReturnAfterElseFi{#4}% \else @@ -359,6 +475,23 @@ % \begin{macrocode} \EveryShipout{% \stepcounter{ps@count}% + \ifnum\value{ps@count}>\ps@lastpage\relax + \global\output{% + \ps@cleanup@if + \ps@group@message + \typeout{% + Package pagesel Notice: Aborting LaTeX job % + after last selected page (\ps@lastpage).% + }% + \ps@message@ignore + \global\setbox255\box\voidb@x + \deadcycles0\relax +% \end{macrocode} +% First leave the output group before ending the job. +% \begin{macrocode} + \aftergroup\@@end + }% + \fi \let\ps@next\@empty \ifx\ps@testlist\@empty \else @@ -377,43 +510,247 @@ \else \fi \fi + \ps@begindvi \ps@next } % \end{macrocode} +% % \begin{macrocode} -%</package> +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname currentiflevel\endcsname\relax + \let\ps@cleanup@if\@empty +\else + \def\ps@cleanup@if{% + \ifnum\currentiflevel>\@ne + \csname fi\endcsname + \expandafter\ps@cleanup@if + \fi + }% +\fi +% \end{macrocode} +% Because of \cs{aftergroup} it is too dangerous to perform +% a similar cleanup for groups. +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname currentgrouplevel\endcsname\relax + \let\ps@group@message\@empty + \def\ps@message@ignore{% + \typeout{% + (pagesel) \space\space\@spaces\@spaces\@spaces + Messages (\string\end\space occurred ...) can be ignored.% + }% + }% +\else + \def\ps@group@message{% + \ifnum\currentgrouplevel>\@ne + \def\ps@message@ignore{% + \typeout{% + (pagesel) \space\space\@spaces\@spaces\@spaces + Message (\string\end\space occurred ...) % + can be ignored.% + }% + }% + \else + \let\ps@message@ignore\@empty + \fi + }% +\fi % \end{macrocode} % -% \StartHistory -% \HistVersion{1999/03/01 v0.9} -% \begin{itemize} -% \item The first version was built as a response to a question -% of \Email[Dirk Kuypers]{dk@comnets.rwth-aachen.de}, +% \subsection{AtBeginDvi hook support} +% +% The material of box \cs{@begindvibox} is recorded in parallel +% in box \cs{ps@begindvibox}. +% \begin{macrocode} +\newbox\ps@begindvibox +\ifvoid\@begindvibox +\else + \global\setbox\ps@begindvibox\vbox{% + \unvbox\@begindvibox + }% +\fi +\let\ps@org@AtBeginDvi\AtBeginDvi +\def\AtBeginDvi#1{% + \global\setbox\ps@begindvibox\vbox{% + \unvbox\ps@begindvibox + #1% + }% + \ps@org@AtBeginDvi{#1}% +} +% \end{macrocode} +% +% \begin{macro}{\ps@begindvi} +% Macro \cs{ps@begindvi} is called the similar way as \cs{@begindvi}. +% If the first page is printed, then \cs{AtBeginDvi} should work +% as usual. Otherwise the contents of box \cs{ps@begindvibox} is +% set on the first selected page. +% \begin{macrocode} +\def\ps@begindvi{% + \ifx\ps@next\@empty + \global\let\ps@begindvi\@empty + \else + \global\let\ps@begindvi\ps@begindvi@do + \fi +} +\def\ps@begindvi@do{% + \ifx\ps@next\@empty + \setbox\@cclv\vbox{% + \unvbox\ps@begindvibox + \box\@cclv + }% + \global\let\ps@begindvi\@empty + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/pagesel.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/pagesel.pdf}] Documentation. +% \end{description} +% +% \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 pagesel.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@{}} +% pagesel.sty & tex/latex/oberdiek/pagesel.sty\\ +% pagesel.pdf & doc/latex/oberdiek/pagesel.pdf\\ +% pagesel.dtx & source/latex/oberdiek/pagesel.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 pagesel.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{pagesel.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 pagesel.dtx +%makeindex -s gind.ist pagesel.idx +%pdflatex pagesel.dtx +%makeindex -s gind.ist pagesel.idx +%pdflatex pagesel.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{1999/03/01 v0.9} +% \item +% The first version was built as a response to a question +% of \NameEmail{Dirk Kuypers}{dk@comnets.rwth-aachen.de}, % published in the newsgroup % \href{news:de.comp.text.tex}{de.comp.text.tex}:\\ % \URL{``Re: pdflatex nur fuer bestimmte Seiten?!?''}^^A % {http://www.dejanews.com/[ST_rn=ps]/getdoc.xp?AN=450111880} -% \end{itemize} -% \HistVersion{1999/04/05 v1.0}\HistLabel{Hist10} -% \begin{itemize} -% \item Documentation added in dtx format. -% \item Copyright: LPPL (\CTAN{macros/latex/base/lppl.txt}) -% \item Options |odd|, |even| added. -% \item \cmd{\nofiles} added, bug fix for \Package{hyperref}. -% \item Abort loading of package, if nothing to do. -% \end{itemize} -% \HistVersion{1999/04/13 v1.1} -% \begin{itemize} -% \item \cmd{\nofiles} bug fix removed -% because of \Package{hyperref} 6.55. -% \item First CTAN release. -% \end{itemize} -% \HistVersion{2003/06/05 v1.2} -% \begin{itemize} -% \item \cmd{\deadcyles} is decremented for omitted pages. -% \item LPPL 1.2. -% \end{itemize} -% \hfuzz10pt +% \end{Version} +% \begin{Version}{1999/04/05 v1.0} +% \item +% Documentation added in dtx format. +% \item +% Copyright: LPPL (\CTAN{macros/latex/base/lppl.txt}) +% \item +% Options |odd|, |even| added. +% \item +% \cmd{\nofiles} added, bug fix for \Package{hyperref}. +% \item +% Abort loading of package, if nothing to do. +% \end{Version} +% \begin{Version}{1999/04/13 v1.1} +% \item +% \cs{nofiles} bug fix removed +% because of \xpackage{hyperref} 6.55. +% \item +% First CTAN release. +% \end{Version} +% \begin{Version}{2003/06/05 v1.2} +% \item +% \cs{deadcyles} is decremented for omitted pages. +% \item +% LPPL 1.2. +% \end{Version} +% \begin{Version}{2006/02/20 v1.3} +% \item +% Code is not changed. +% \item +% New DTX framework. +% \item +% LPPL 1.3 +% \end{Version} +% \begin{Version}{2006/03/02 v1.4} +% \item +% Support for \cs{AtBeginDvi} added. +% \end{Version} +% \begin{Version}{2006/03/07 v1.5} +% \item +% Job is aborted after last selected page. +% \end{Version} +% \end{History} +% % \PrintIndex % % \Finale diff --git a/Master/texmf-dist/source/latex/oberdiek/pagesel.ins b/Master/texmf-dist/source/latex/oberdiek/pagesel.ins deleted file mode 100644 index 80816293660..00000000000 --- a/Master/texmf-dist/source/latex/oberdiek/pagesel.ins +++ /dev/null @@ -1,80 +0,0 @@ -% pagesel.ins -% -% This file is part of the package `pagesel' for use with LaTeX2e. -% -% Function: Selecting shipout output pages. -% -% Copyright (C) 1999, 2003 Heiko Oberdiek. -% -% This program may be distributed and/or modified under -% the conditions of the LaTeX Project Public License, -% either version 1.2 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.2 or later is part of all distributions -% of LaTeX version 1999/12/01 or later. -% -% Please send error reports and suggestions for improvements to -% Heiko Oberdiek <oberdiek@uni-freiburg.de>. -% - -\def\batchfile{pagesel.ins} -\input docstrip.tex -{\ifx\generate\undefined -\Msg{**********************************************} -\Msg{*} -\Msg{* This installation requires docstrip} -\Msg{* version 2.3c or later.} -\Msg{*} -\Msg{* An older version of docstrip has been input} -\Msg{*} -\Msg{**********************************************} -\errhelp{Move or rename old `docstrip.tex'.} -\errmessage{Old docstrip in input path} -\batchmode -\csname @@end\endcsname -\fi} - -\keepsilent - -\preamble - -This file is part of the package `pagesel' for use with LaTeX2e. - -Function: Selecting shipout output pages. - -Copyright (C) 1999, 2003 Heiko Oberdiek. - -This program may be distributed and/or modified under -the conditions of the LaTeX Project Public License, -either version 1.2 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.2 or later is part of all distributions -of LaTeX version 1999/12/01 or later. - -Please send error reports and suggestions for improvements to - Heiko Oberdiek <oberdiek@uni-freiburg.de>. - -\endpreamble - -\usedir{tex/latex/oberdiek} - -\generateFile{pagesel.sty}{f}{\from{pagesel.dtx}{package}} -%\generateFile{pagesel.drv}{f}{\from{pagesel.dtx}{driver}} - -\Msg{***********************************************************} -\Msg{* To finish the installation you have to move the following} -\Msg{* file into a directory searched by TeX:} -\Msg{*} -\Msg{* \space\space pagesel.sty} -\Msg{*} -\Msg{* To produce the documentation run the file `pagesel.dtx'} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing} -\Msg{***********************************************************} - -\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/pdfcolmk.dtx b/Master/texmf-dist/source/latex/oberdiek/pdfcolmk.dtx new file mode 100644 index 00000000000..e45960785fe --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/pdfcolmk.dtx @@ -0,0 +1,859 @@ +% \iffalse meta-comment +% +% Copyright (C) 2000, 2005, 2006 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 pdfcolmk.dtx +% and the derived files +% pdfcolmk.sty, pdfcolmk.pdf, pdfcolmk.ins, pdfcolmk.drv. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/pdfcolmk.dtx +% CTAN:macros/latex/contrib/oberdiek/pdfcolmk.pdf +% +% Unpacking: +% (a) If pdfcolmk.ins is present: +% tex pdfcolmk.ins +% (b) Without pdfcolmk.ins: +% tex pdfcolmk.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{pdfcolmk.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If pdfcolmk.drv is present: +% latex pdfcolmk.drv +% (b) Without pdfcolmk.drv: +% latex pdfcolmk.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 pdfcolmk.dtx +% makeindex -s gind.ist pdfcolmk.idx +% pdflatex pdfcolmk.dtx +% makeindex -s gind.ist pdfcolmk.idx +% pdflatex pdfcolmk.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/pdfcolmk.sty +% TDS:doc/latex/oberdiek/pdfcolmk.pdf +% TDS:source/latex/oberdiek/pdfcolmk.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: pdfcolmk 2006/02/20 v0.8 PDFtex COLor MarK (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2000, 2005, 2006 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 pdfcolmk.dtx +and the derived files + pdfcolmk.sty, pdfcolmk.pdf, pdfcolmk.ins, pdfcolmk.drv. + +\endpreamble + +\generate{% + \file{pdfcolmk.ins}{\from{pdfcolmk.dtx}{install}}% + \file{pdfcolmk.drv}{\from{pdfcolmk.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{pdfcolmk.sty}{\from{pdfcolmk.dtx}{package}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* pdfcolmk.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `pdfcolmk.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{pdfcolmk.drv}% + [2006/02/20 v0.8 PDFtex COLor MarK (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\begin{document} + \DocInput{pdfcolmk.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{820} +% +% \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{pdfcolmk.drv} +% +% \title{The \xpackage{pdfcolmk} package} +% \date{2006/02/20 v0.8} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% This package tries a solution for the missing color +% stack of \pdfTeX. +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% \subsection{Background} +% +% After the Dante meeting (Clausthal 2000) I have started +% to experiment with the eTeX method of a \emph{colour} mark. +% One of the major problems is the understanding of the +% output routine and the need to rewrite it because of +% missing hooks. Currently I have made some tests in +% in onecolumn and twocolumn mode, but the state is +% experimental. +% +% \subsection{Limitations} +% +% \begin{itemize} +% \item Mark limitations: page breaks in math. +% \item \LaTeX's output routine is redefinded. +% \begin{itemize} +% \item Changes in the output routine of newer versions +% of LaTeX are not detected. +% \item Packages that change the output routine are not +% supported. +% \end{itemize} +% \item It does not support several independent text +% streams like footnotes. +% \item Limitations in float and marginpar support. +% \end{itemize} +% +% \subsection{Recommendation} +% +% \eTeX\ (for additional mark register) +% Without \eTeX\ \LaTeX's mark commands are redefined +% to store an additional color value. +% +% \subsection{Usage} +% +% Load after package color: +% \begin{quote} +% |\usepackage[pdftex]{color}|\\ +% |\usepackage{pdfcolmk}| +% \end{quote} +% +% \subsection{Compatibility} +% +% \begin{itemize} +% \item Load the following packages after \xpackage{pdfcolmk}: +% \begin{quote} +% \xpackage{mparhack.sty} +% \end{quote} +% \item Load the following packages before \xpackage{pdfcolmk}: +% \begin{quote} +% \xpackage{marn.sty}\\ +% \xpackage{newmarn.sty} +% \end{quote} +% \item Supported \cs{@addmarginpar} patch: +% \begin{quote} +% \xpackage{latex/base/latex.ltx}\\ +% \xpackage{memoir.cls}\\ +% \xpackage{poemscol/marn.sty}, \xpackage{poemscol/newmarn.sty}\\ +% \xpackage{mparhack.sty} +% \end{quote} +% \item Unsupported \cs{@addmarginpar} patch: +% \begin{quote} +% \xpackage{lineno.sty}\\ +% \xpackage{sttools/marginal.sty}\\ +% \xpackage{revtex4.cls} +% \end{quote} +% \end{itemize} +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% Package identification. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{pdfcolmk}% + [2006/02/20 v0.8 PDFtex COLor MarK (HO)] +% \end{macrocode} +% +% \begin{macrocode} +\@ifundefined{ver@pdftex.def}{% + \PackageWarningNoLine{pdfcolmk}{% + Nothing to fix, because \string`pdftex.def\string' not loaded% + }% + \endinput +}{} +\@ifpackageloaded{color}{}{% + \PackageWarningNoLine{pdfcolmk}{% + Nothing to fix, because \string`color.sty\string' not loaded% + }% + \endinput +} + +\PackageInfo{pdfcolmk}{% + This package tries to simulate dvips's color stack\MessageBreak + for pdfTeX based on a mark register of e-TeX.\MessageBreak + It redefines LaTeX's output routine. Therefore\MessageBreak + use with care, no warranties% +} + +\ifx\marks\@undefined + + \let\pec@mark\mark + \let\pec@value\empty + \long\def\mark#1{% + \protected@xdef\pec@value{#1}% + \pec@setmark + } + \def\pec@setmark{% + \begingroup + \@temptokena\expandafter{\pec@value}% + \pec@mark{{\current@color}\the\@temptokena}% + \endgroup + } + \def\pec@getmark{% + \xdef\pec@botcolor{% + \expandafter\@firstofthree\botmark\@empty\@empty\@empty + }% + } + \long\def\@firstofthree#1#2#3{#1}% + \CheckCommand{\@leftmark}[2]{#1} + \CheckCommand{\@rightmark}[2]{#2} + \CheckCommand*{\leftmark}{% + \expandafter\@leftmark\botmark\@empty\@empty + } + \CheckCommand*{\rightmark}{% + \expandafter\@rightmark\firstmark\@empty\@empty + } + \long\def\@leftmark#1#2#3{#2} + \long\def\@rightmark#1#2#3{#3} + \g@addto@macro\leftmark\@empty + \g@addto@macro\rightmark\@empty + +\else + + \RequirePackage{etex}[1998/03/26] + \newmarks\pec@marks + \def\pec@setmark{\marks\pec@marks{\current@color}} + \def\pec@getmark{\xdef\pec@botcolor{\botmarks\pec@marks}} + +\fi +% \end{macrocode} +% +% \subsection{\cs{marginpar} fix} +% +% \begin{macrocode} +\chardef\pec@result\z@ +\def\pec@temp#1{% + \chardef\pec@result\@ne + \begingroup + \let\on@line\@empty + \PackageInfo{pdfcolmk}{% + Patch for \string\@addmarginpar\space applied (#1)% + }% + \endgroup +} +% \end{macrocode} +% +% \subsubsection{latex/base/latex.ltx} +% +% \begin{macrocode} +\def\pec@addmarginpar{% + \@next\@marbox\@currlist{% + \@cons\@freelist\@marbox + \@cons\@freelist\@currbox + }\@latexbug + \@tempcnta\@ne + \if@twocolumn + \if@firstcolumn + \@tempcnta\m@ne + \fi + \else + \if@mparswitch + \ifodd\c@page + \else + \@tempcnta\m@ne + \fi + \fi + \if@reversemargin \@tempcnta -\@tempcnta \fi + \fi + \ifnum\@tempcnta <\z@ \global\setbox\@marbox\box\@currbox \fi + \@tempdima\@mparbottom + \advance\@tempdima -\@pageht + \advance\@tempdima\ht\@marbox + \ifdim\@tempdima >\z@ + \@latex@warning@no@line{Marginpar on page \thepage\space moved}% + \else + \@tempdima\z@ + \fi + \global\@mparbottom\@pageht + \global\advance\@mparbottom\@tempdima + \global\advance\@mparbottom\dp\@marbox + \global\advance\@mparbottom\marginparpush + \advance\@tempdima -\ht\@marbox + \global\setbox\@marbox\vbox{% + \vskip \@tempdima + \box \@marbox + }% + \global \ht\@marbox \z@ + \global \dp\@marbox \z@ + \kern -\@pagedp + \nointerlineskip + \hb@xt@\columnwidth{% + \ifnum \@tempcnta >\z@ + \hskip\columnwidth + \hskip\marginparsep + \else + \hskip -\marginparsep + \hskip -\marginparwidth + \fi + \box\@marbox \hss + }% + \nointerlineskip + \hbox{\vrule \@height\z@ \@width\z@ \@depth\@pagedp}% +} +\ifx\pec@addmarginpar\@addmarginpar + \pec@temp{latex/base}% +\fi +% \end{macrocode} +% +% \subsubsection{memoir.cls} +% +% \begin{macrocode} +\def\pec@addmarginpar{% + \checkoddpage + \@next\@marbox\@currlist{% + \@cons\@freelist\@marbox + \@cons\@freelist\@currbox + }\@latexbug + \@tempcnta\@ne + \if@twocolumn + \if@firstcolumn + \@tempcnta\m@ne + \fi + \else + \if@mparswitch + \ifoddpage + \else + \@tempcnta\m@ne + \fi + \fi + \if@reversemargin + \@tempcnta -\@tempcnta + \fi + \fi + \ifnum\@tempcnta <\z@ + \global\setbox\@marbox\box\@currbox + \fi + \@tempdima\@mparbottom + \advance\@tempdima -\@pageht + \advance\@tempdima\ht\@marbox + \ifdim\@tempdima >\z@ + \@latex@warning@no@line{% + Marginpar on page \thepage\space moved by \the\@tempdima + }% + \else + \@tempdima\z@ + \fi + \global\@mparbottom\@pageht + \global\advance\@mparbottom\@tempdima + \global\advance\@mparbottom\dp\@marbox + \global\advance\@mparbottom\marginparpush + \advance\@tempdima -\ht\@marbox + \global\setbox\@marbox\vbox{% + \vskip \@tempdima + \box \@marbox + }% + \global \ht\@marbox \z@ + \global \dp\@marbox \z@ + \kern -\@pagedp + \nointerlineskip + \hb@xt@\columnwidth{% + \ifnum \@tempcnta >\z@ + \hskip\columnwidth + \hskip\marginparsep + \else + \hskip -\marginparsep + \hskip -\marginparwidth + \fi + \box\@marbox + \hss + }% + \nointerlineskip + \hbox{\vrule \@height\z@ \@width\z@ \@depth\@pagedp}% +}% +\ifx\pec@addmarginpar\@addmarginpar + \pec@temp{memoir.cls}% +\fi +% \end{macrocode} +% +% \subsubsection{poemscol/marn.sty, poemscol/newmarn.sty} +% +% \begin{macrocode} +\def\pec@addmarginpar{% + \@next \@marbox\@currlist{% + \@cons\@freelist\@marbox + \@cons\@freelist\@currbox + }\@latexbug + \global\advance\@mpar@count\m@ne + \@ifundefined{@marn@\the\@mpar@count @}{% was location logged last time? + \@tempcnta\@ne % NO: use original LaTeX logic + \if@twocolumn + \if@firstcolumn + \@tempcnta\m@ne + \fi + \else + \if@mparswitch + \ifodd\c@page + \else + \@tempcnta\m@ne + \fi + \fi + \if@reversemargin + \@tempcnta -\@tempcnta + \fi + \fi + }{% + \@tempcnta % YES: use record from last time to decide side. + \@nameuse{@marn@\the\@mpar@count @}% + \if@reversemargin -\fi \@ne + }% + \ifnum\@tempcnta <\z@ + \global\setbox\@marbox\box\@currbox + \global\let\@marnbottom\@mparbottoml + \else + \global\let\@marnbottom\@mparbottom + \fi + \@tempdima\@marnbottom \advance\@tempdima -\@pageht + \advance\@tempdima\ht\@marbox + \ifdim\@tempdima >\z@ + \@@warning{Marginpar on page \thepage\space moved}% + \else + \@tempdima\z@ + \fi + \global\@marnbottom\@pageht + \global\advance\@marnbottom\@tempdima + \global\advance\@marnbottom\dp\@marbox + \global\advance\@marnbottom\marginparpush + \advance\@tempdima -\ht\@marbox + \global\ht\@marbox\z@ + \global\dp\@marbox\z@ + \vskip -\@pagedp + \vskip\@tempdima\nointerlineskip + \hbox to\columnwidth{% + \ifnum \@tempcnta >\z@ + \hskip\columnwidth + \hskip\marginparsep + \else + \hskip -\marginparsep + \hskip -\marginparwidth + \fi + \if@filesw % record where this is for use next time: + \@marn@log\@mpar@count + \fi + \box\@marbox + \hss + }% + \nobreak %% RmS 91/06/21 \nobreak added + \vskip -\@tempdima + \nointerlineskip + \hbox{\vrule \@height\z@ \@width\z@ \@depth\@pagedp}% +} +\ifx\pec@addmarginpar\@addmarginpar + \pec@temp{poemscol/(new)marn.sty}% +\fi +% \end{macrocode} +% +% \subsubsection{refman/refart.cls, refnam/refrep.cls} +% +% \begin{macrocode} +\def\pec@addmarginpar{% + \@next\@marbox\@currlist{% + \@cons\@freelist\@marbox + \@cons\@freelist\@currbox + }\@latexbug + \@tempcnta\@ne + \if@twocolumn + \if@firstcolumn + \@tempcnta\m@ne + \fi + \else + \@tempcnta\m@ne + \fi + \ifnum\@tempcnta <\z@ + \global\setbox\@marbox\box\@currbox + \fi + \@tempdima\@mparbottom + \advance\@tempdima -\@pageht + \advance\@tempdima\ht\@marbox + \ifdim\@tempdima >\z@ + \@@warning{Marginpar on page \thepage\space moved}% + \else + \@tempdima\z@ + \fi + \global\@mparbottom\@pageht + \global\advance\@mparbottom\@tempdima + \global\advance\@mparbottom\dp\@marbox + \global\advance\@mparbottom\marginparpush + \advance\@tempdima -\ht\@marbox + \global\setbox\@marbox\vbox{% + \vskip \@tempdima \box \@marbox + }% + \global \ht\@marbox \z@ + \global \dp\@marbox \z@ + \kern -\@pagedp + \nointerlineskip + \hb@xt@\columnwidth{% + \ifnum \@tempcnta >\z@ + \hskip\columnwidth + \hskip\marginparsep + \else + \hskip -\marginparsep + \hskip -\marginparwidth + \fi + \box\@marbox + \hss + }% + \nointerlineskip + \hbox{\vrule \@height\z@ \@width\z@ \@depth\@pagedp}% +} +\ifx\pec@addmarginpar\@addmarginpar + \pec@temp{ref(art|rep).cls}% +\fi + +\ifcase\pec@result + \PackageInfo{pdfcolmk}{% + Fix for \string\@addmarginpar\space is omitted, % + because this variant\MessageBreak + of \string\@addmarginpar\space + is not recognized% + }% +\else + % apply patch for \@addmarginpar + \def\pec@PatchAddMarginpar#1\columnwidth#2#3\@nil{% + \pec@PatchAddMarginparI#2\@nil{#1}{#3}% + }% + \def\pec@PatchAddMarginparI#1\box\@marbox\hss#2\@nil#3#4{% + \def\@addmarginpar{% + #3% + \columnwidth{% + #1% + \pdfliteral{q}% + \rlap{% + \box\@marbox + }% + \pdfliteral{Q}% + \hss + #2% + }% + #4% + }% + }% + \expandafter\pec@PatchAddMarginpar\@addmarginpar\@nil +\fi +% \end{macrocode} +% +% \subsection{Color fix} +% +% \begin{macrocode} +\def\set@color{% + \pdfliteral{\current@color}% + \ifinner + \else + \pec@setmark + \fi + \aftergroup\reset@color +} +\def\reset@color{% + \pdfliteral{\current@color}% + \ifinner + \else + \pec@setmark + \fi +} + +\let\pec@botcolor\current@color + +\def\pec@PatchVBoxCCLV{% + \ifx\pec@botcolor\@empty + \else + \setbox\@cclv\vbox{% + \pdfliteral{\pec@botcolor}% + \unvbox\@cclv + }% + \fi + \pec@getmark +} + +\def\pec@PatchAlreadyInBox{% + \ifx\pec@botcolor\@empty + \else + \pdfliteral{\pec@botcolor}% + \fi + \pec@getmark +} + +\@ifclassloaded{memoir}{% + \expandafter\def\expandafter\mem@makecol\expandafter{% + \expandafter\pec@PatchVBoxCCLV + \mem@makecol + }% + \endinput +}{} + +\@ifclassloaded{seminar}{% + \newcommand\pec@org@makeslide{} + \let\pec@org@makeslide\@makeslide + \def\@makeslide{% + \pec@PatchVBoxCCLV + \pec@org@makeslide + }% + \endinput +}{} + +\long\def\pec@output#1\@specialoutput\else#2\pec@end{% + \begingroup + \def\x{#2}% + \expandafter\endgroup + \ifx\x\@empty + \PackageWarningNoLine{pdfcolmk}{% + Unexpected \string\output\space routine detected,% + \MessageBreak + loading of package stopped% + }% + \expandafter\endinput + \fi +} +\expandafter\expandafter\expandafter\pec@output +\expandafter\@firstofone\the\output\@specialoutput\else\pec@end + +\long\def\pec@output#1\@specialoutput\else#2\pec@end{% + \output{% + #1\@specialoutput\else + \pec@PatchVBoxCCLV + #2% + }% +} +\expandafter\expandafter\expandafter\pec@output +\expandafter\@firstofone\the\output\pec@end +% \end{macrocode} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/pdfcolmk.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/pdfcolmk.pdf}] Documentation. +% \end{description} +% +% \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 pdfcolmk.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@{}} +% pdfcolmk.sty & tex/latex/oberdiek/pdfcolmk.sty\\ +% pdfcolmk.pdf & doc/latex/oberdiek/pdfcolmk.pdf\\ +% pdfcolmk.dtx & source/latex/oberdiek/pdfcolmk.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 pdfcolmk.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{pdfcolmk.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 pdfcolmk.dtx +%makeindex -s gind.ist pdfcolmk.idx +%pdflatex pdfcolmk.dtx +%makeindex -s gind.ist pdfcolmk.idx +%pdflatex pdfcolmk.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2000/08/27 v0.1} +% \item +% First published version +% (\xnewsgroup{comp.text.tex}, \texttt{pdftex@tug.org}). +% \end{Version} +% \begin{Version}{2000/09/02 v0.2} +% \item +% Next try. +% \end{Version} +% \begin{Version}{2000/09/02 v0.3} +% \item +% Solution without \eTeX\ added. +% \end{Version} +% \begin{Version}{2000/09/06 v0.4} +% \item +% Patch commands added. +% \item +% Patch for seminar.cls added. +% \end{Version} +% \begin{Version}{2000/09/06 v0.5} +% \item +% Bug fix: initialization of \cs{pec@value} added. +% \end{Version} +% \begin{Version}{2005/06/15 v0.6} +% \item +% Support for \marginpar added. +% See thread in \xnewsgroup{comp.text.tex} +% (Message-ID: \verb|d86d3r$kpv$1@news.BelWue.DE|). +% \end{Version} +% \begin{Version}{2005/07/09 v0.7} +% \item +% Output support added for \xpackage{memoir}, +% provided by Lars Madsen. +% \end{Version} +% \begin{Version}{2006/02/20 v0.8} +% \item +% Code is not changed. +% \item +% DTX framework. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/pdfcrypt.dtx b/Master/texmf-dist/source/latex/oberdiek/pdfcrypt.dtx new file mode 100644 index 00000000000..01db98d2d55 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/pdfcrypt.dtx @@ -0,0 +1,1042 @@ +% \iffalse meta-comment +% +% Copyright (C) 2001, 2006 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 pdfcrypt.dtx +% and the derived files +% pdfcrypt.sty, pdfcrypt.pdf, pdfcrypt.ins, pdfcrypt.drv. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/pdfcrypt.dtx +% CTAN:macros/latex/contrib/oberdiek/pdfcrypt.pdf +% +% Unpacking: +% (a) If pdfcrypt.ins is present: +% tex pdfcrypt.ins +% (b) Without pdfcrypt.ins: +% tex pdfcrypt.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{pdfcrypt.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If pdfcrypt.drv is present: +% latex pdfcrypt.drv +% (b) Without pdfcrypt.drv: +% latex pdfcrypt.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 pdfcrypt.dtx +% makeindex -s gind.ist pdfcrypt.idx +% pdflatex pdfcrypt.dtx +% makeindex -s gind.ist pdfcrypt.idx +% pdflatex pdfcrypt.dtx +% +% Installation: +% TDS:tex/generic/oberdiek/pdfcrypt.sty +% TDS:doc/latex/oberdiek/pdfcrypt.pdf +% TDS:source/latex/oberdiek/pdfcrypt.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: pdfcrypt 2006/02/20 v0.8 Setting pdf encryption (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2001, 2006 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 pdfcrypt.dtx +and the derived files + pdfcrypt.sty, pdfcrypt.pdf, pdfcrypt.ins, pdfcrypt.drv. + +\endpreamble + +\generate{% + \file{pdfcrypt.ins}{\from{pdfcrypt.dtx}{install}}% + \file{pdfcrypt.drv}{\from{pdfcrypt.dtx}{driver}}% + \usedir{tex/generic/oberdiek}% + \file{pdfcrypt.sty}{\from{pdfcrypt.dtx}{package}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* pdfcrypt.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `pdfcrypt.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{pdfcrypt.drv}% + [2006/02/20 v0.8 Setting pdf encryption (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\begin{document} + \DocInput{pdfcrypt.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{730} +% +% \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{pdfcrypt.drv} +% +% \title{The \xpackage{pdfcrypt} package} +% \date{2006/02/20 v0.8} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% This package supports the setting of pdf encryption options +% for \VTeX\ and some older versions of \pdfTeX. +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% This package allows the setting of pdf encryption +% options for +% \begin{itemize} +% \item +% \VTeX, since version 7.35, \url{http://www.micropress-inc.com/}. +% \item +% \pdfTeX, patched by +% \NameEmail{Ricardo Sanchez Carmenes}{carmenes@bioquimica.uniovi.es}.\\ +% Some supported versions are: +% \begin{quote} +% \pdfTeX-1.00a,\\ +% \pdfTeX-0.14h-pdfcrypt-20010310,\\ +% pdfcrypt-20010331 +% \end{quote} +% \end{itemize} +% +% \noindent +% \textcolor{red}{Note:} Since \pdfTeX-1.10a (2003-01-16) encryption +% support was dropped! Thus the package is now obsolete for recent +% \pdfTeX\ versions. +% +% \subsection{Alternatives} +% +% There are free alternatives, programs that can +% be used for postprocessing the pdf file: +% \begin{itemize} +% \item \textsf{pdftk}\\ +% \url{http://www.accesspdf.com/pdftk/} +% \item \textsf{Multivalent}\\ +% \url{http://multivalent.sourceforge.net/} +% \item \textsf{PDFBox}\\ +% \url{http://www.pdfbox.org/} +% \item \textsf{PDFTrans}\\ +% \url{http://maddingue.free.fr/softwares/pdftrans.html} +% \item \dots +% \end{itemize} +% +% \subsection{Usage} +% +% The options can be set as package options or +% with the command \cs{pdfcryptsetup}: +% \begin{quote} +% |owner=|\meta{owner password}\\ +% |user=|\meta{user password}\\ +% |print|, |copy|, |edit|, |annotate=true|, |false|\\ +% |all|, |none|\\ +% |debug| +% \end{quote} +% The encryption is set at |\begin{document}| by default, +% but this can be forced for an earlier time +% using the option |set|. +% Example: +% \begin{quote} +% |\usepackage[owner=Donald,user=Knuth,print=false]{pdfcrypt}|\\ +% \dots\\ +% |\begin{document}| +% \end{quote} +% or +% \begin{quote} +% |\usepackage{pdfcrypt}|\\ +% |\pdfcryptsetup{owner=Donald,user=Knut}|\\ +% |\pdfcryptsetup{print=false,set}|\\ +% \dots\\ +% |\begin{document}| +% \end{quote} +% +% \subsubsection{Special characters} +% +% The characters `|{|', `|}|', and `|\|' have to be +% escaped with `|\|'. Then the string should not +% be specified as package option but with +% the macro \cs{pdfcryptsetup}, eg: +% \begin{quote} +% |\pdfcryptsetup{user={\{\\Hello\}},print=false}| +% \end{quote} +% The password here is ``|{\Hello}|''. +% Active characters can be used and are not expanded. +% Macros except for |\{|, |\}|, and |\\| should not be used +% and are not expanded. +% +% \subsubsection{\cs{nopdfcrypt}} +% +% Often the whole process of pdf generation includes +% several \TeX\ compilations and perhaps other +% postprocessing steps. Therefore a feature would +% be useful to disable the encryption stuff in order +% to speed up the first compilations. +% Therefore package \xpackage{pdfcrypt} will look for +% the macro \cs{nopdfcrypt}. If it has the meaning of the +% letter `|Y|', the package will be disabled. +% Example: +% \begin{quote} +% |pdflatex '\let\nopdfcrypt=Y\input myfile'|\\ +% |thumbpdf myfile|\\ +% |pdfelatex myfile| +% \end{quote} +% +% \subsubsection{Configuration file} +% +% If the file \xfile{pdfcrypt.cfg} exists it is loaded +% and can be used for common settings. +% +% \subsubsection{Support for \plainTeX} +% +% The package can also be used with \plainTeX. It defines the +% missing \LaTeX\ macros and loads package \xpackage{keyval}. +% The configuration file is not supported and automatically +% loaded. +% +% \subsection{Hints for \pdfTeX} +% +% This section is out of date, because the encryption support +% was removed from \pdfTeX. Therefore this hints are of +% historical interest only. +% +%\begin{verbatim} +%* There are packages such as thumbpdf that ship out +% some stuff (\immediate\pdfobj{...}). In these cases +% \pdfcrypt will be ignored without warning or error +% message. Therefore the package pdfcrypt should be +% loaded before and option "set" should be used in +% order to force the call of \pdfcrypt, for example: +% \usepackage{pdfcrypt} +% \pdfcryptsetup{..., set} +% ... +% \usepackage{thumbpdf} +% +%* Compiling pdfTeX (eg. version 1.00a-pretest-20010804): +% pdfTeX versions are available at +% ftp://ftp.cstug.cz/pub/tex/local/cstug/thanh/pdftex/snapshots/ +% Unpack the latest .tgz file: +% > tar xzf pdftex-20010804.tgz +% Enable encryption support: +% src> cd src/texk/web2c/pdftexdir +% src/texk/web2c/pdftexdir> ln -fs pdfcrypt-full.c pdfcrypt.c +% Compile: +% src/texk/web2c/pdftexdir> cd ../../.. +% src> ./configure +% src> cd texk/web2c +% src/texk/web2c> make pdftexbin +% At last install the binary and pool files. +%\end{verbatim} +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% \subsection{Help macros for \plainTeX} +% +% \begin{macrocode} +\expandafter\edef\csname pc@endinput\endcsname{% + \catcode`\noexpand\@=\the\catcode`\@\relax + \noexpand\endinput +} +\catcode`\@=11 % + +\expandafter\ifx\csname @firstoftwo\endcsname\relax + \long\def\@firstoftwo#1#2{#1}% +\fi + +\expandafter\ifx\csname @secondoftwo\endcsname\relax + \long\def\@secondoftwo#1#2{#2}% +\fi + +\expandafter\ifx\csname @ifundefined\endcsname\relax + \def\@ifundefined#1{% + \expandafter\ifx\csname #1\endcsname\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + }% +\fi + +\@ifundefined{@ifnextchar}{% + \long\def\@ifnextchar#1#2#3{% + \let\reserved@d=#1% + \def\reserved@a{#2}% + \def\reserved@b{#3}% + \futurelet\@let@token\@ifnch + }% + \def\@ifnch{% + \ifx\@let@token\@sptoken + \let\reserved@c\@xifnch + \else + \ifx\@let@token\reserved@d + \let\reserved@c\reserved@a + \else + \let\reserved@c\reserved@b + \fi + \fi + \reserved@c + }% + \begingroup + \def\:{\global\let\@sptoken= }% + \: % + \def\:{\@xifnch}% + \expandafter\gdef\: {\futurelet\@let@token\@ifnch}% + \endgroup +}{} + +\@ifundefined{ProvidesPackage}{% + \def\ProvidesPackage#1{% + \@ifnextchar[{\pc@ProvidesPackage{#1}} + {\pc@ProvidesPackage{#1}[]}% + }% + \def\pc@ProvidesPackage#1[#2]{% + \immediate\write-1{Package: #1 #2}% + }% +}{} + +\@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}% + }% +}{} + +\@ifundefined{@gobble}{% + \long\def\@gobble#1{}% +}{} + +\@ifundefined{on@line}{% + \def\on@line{ on input line \the\inputlineno}% +}{} + +\@ifundefined{@empty}{% + \def\@empty{}% +}{} +% \end{macrocode} +% +% \subsection{Package Identification and checks} +% +% \begin{macrocode} +\ProvidesPackage{pdfcrypt}% + [2006/02/20 v0.8 Setting pdf encryption (HO)] +% \end{macrocode} +% +% \begin{macrocode} +\@ifundefined{pdfcryptsetup}{% + \let\pdfcryptsetup\@gobble +}{% + \PackageWarningNoLine{pdfcrypt}{Package pdfcrypt is already loaded}% + \pc@endinput +} +% \end{macrocode} +% Support for \cs{nopdfcrypt}. +% \begin{macrocode} +\newif\ifpc@nopdfcrypt +\ifx Y\nopdfcrypt + \PackageWarningNoLine{pdfcrypt}{% + Encryption disabled by \string \nopdfcrypt\space request% + }% + \global\pc@nopdfcrypttrue +\fi +% \end{macrocode} +% +% \subsection{Driver detection} +% +% \begin{macrocode} +\let\pc@driver\@empty +\begingroup + % pdfTeX detection + \@ifundefined{pdfoutput}{% + }{% + \ifcase\pdfoutput + \else + \@ifundefined{pdfcrypt}{% + \PackageError{pdfcrypt}{% + PDF encryption is not supported with this pdfTeX% + }{% + Encryption support was added in 0.14h (2001/03/10)\MessageBreak + and removed in 1.10a (2003/01/16).% + }% + \endgroup + \pc@endinput + }{% + \gdef\pc@driver{pdftex}% + } + \fi + }% + % VTeX detection + \@ifundefined{OpMode}{% + }{% + \ifnum\OpMode=1 % + \ifnum\@ifundefined{VTeXversion}0\VTeXversion<735 % + \PackageError{pdfcrypt}{% + PDF encryption is not supported with this VTeX% + }{% + You need VTeX 7.35 or higher.% + }% + \endgroup + \pc@endinput + \else + \gdef\pc@driver{vtex}% + \fi + \fi + }% +\endgroup +% \end{macrocode} +% +% \subsection{Load package \xpackage{keyval}} +% +% \begin{macrocode} +\@ifundefined{@makeother}{% + \def\@makeother#1{\catcode`#1=12\relax}% +}{} + +\@ifundefined{g@addto@macro}{% + \long\def\g@addto@macro#1#2{% + \begingroup + \toks@\expandafter{#1#2}% + \xdef#1{\the\toks@}% + \endgroup + }% +}{} + +\@ifundefined{@namedef}{% + \def\@namedef#1{\expandafter\def\csname#1\endcsname} +}{} + +\@ifundefined{@nameuse}{% + \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 +} + +\let\pcOrg@NeedsTeXFormat\NeedsTeXFormat +\@ifundefined{NeedsTeXFormat}{% + \def\NeedsTeXFormat#1{}% + \g@addto@macro\pc@KeyvalRestore{% + \let\NeedsTeXFormat\pcOrg@NeedsTeXFormat + }% +}{} + +\let\pcOrg@DeclareOption\DeclareOption +\@ifundefined{DeclareOption}{% + \def\DeclareOption#1#2{#2}% + \g@addto@macro\pc@KeyvalRestore{% + \let\DeclareOption\pcOrg@DeclareOption + }% +}{} + +\let\pcOrg@ExecuteOptions\ExecuteOptions +\@ifundefined{ExecuteOptions}{% + \def\ExecuteOptions#1{}% + \g@addto@macro\pc@KeyvalRestore{% + \let\ExecuteOptions\pcOrg@ExecuteOptions + }% +}{} + +\let\pcOrg@ProcessOptions\ProcessOptions +\@ifundefined{ProcessOptions}{% + \def\ProcessOptions{}% + \g@addto@macro\pc@KeyvalRestore{% + \let\ProcessOptions\pcOrg@ProcessOptions + }% +}{}% + +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname RequirePackage\endcsname\relax + \input keyval.sty +\else + \RequirePackage{keyval} +\fi +\pc@KeyvalRestore +% \end{macrocode} +% +% \subsection{Define options} +% +% \begin{macrocode} +\@ifundefined{@dblarg}{% + \long\def\@dblarg#1{\@ifnextchar[{#1}{\@xdblarg{#1}}} + \long\def\@xdblarg#1#2{#1[{#2}]{#2}} +}{} + +\newif\ifpc@set +\newif\ifpc@print +\newif\ifpc@copy +\newif\ifpc@edit +\newif\ifpc@annotate +\newif\ifpc@debug +\let\pc@owner\@empty +\let\pc@user\@empty + +% default: allow all +\pc@printtrue +\pc@copytrue +\pc@edittrue +\pc@annotatetrue + +\edef\pc@temp{\catcode`\noexpand\"=\the\catcode`\"\relax} +\@makeother\" +\def\pc@set{% + \PackageInfo{pdfcrypt}{% + \ifpc@debug + \ifx\pc@owner\@empty + No owner password% + \else + Owner password: `\pc@owner'% + \fi + \MessageBreak + \ifx\pc@user\@empty + No user password% + \else + User password: `\pc@user'% + \fi + \MessageBreak + Flags: % + \ifpc@print \else no\fi print, % + \ifpc@copy \else no\fi copy, % + \ifpc@edit \else no\fi edit, % + \ifpc@annotate\else no\fi annotate% + \MessageBreak + \fi + \ifpc@nopdfcrypt + Encryption is disabled by `\string\nopdfcrypt'% + \else + Encryption is set for `\pc@driver'% + \fi + } + \ifpc@nopdfcrypt + \else + \@ifundefined{pc@set@\pc@driver}{% + \ifx\pc@driver\@empty + \PackageError{pdfcrypt}{No driver for encryption % + support found}\@ehc + \else + \PackageError{pdfcrypt}{Cannot set encryption for % + unknown driver `\pc@driver'}\@ehc + \fi + }{% + \@nameuse{pc@set@\pc@driver}% + }% + \fi +} +\def\pc@set@pdftex{% + \ifnum\pdftexversion<100 % + \pc@set@pdftexold + \else + \pc@set@pdftexnew + \fi +} +\def\pc@set@pdftexold{% + \pdfcrypt{% + owner "\pc@owner" + user "\pc@user" + \ifpc@print \else no\fi print + \ifpc@copy \else no\fi copy + \ifpc@edit \else no\fi edit + \ifpc@annotate\else no\fi annotate% + }% +} +\def\pc@set@pdftexnew{% + \pdfcrypt + owner{\pc@owner}% + user{\pc@user}% + \ifpc@print \else no\fi print + \ifpc@copy \else no\fi copy + \ifpc@edit \else no\fi edit + \ifpc@annotate\else no\fi annotate% + \relax +} +\def\pc@set@vtex{% + \immediate\special{!security % + O=\pc@MakeVTeXString\pc@owner,% + U=\pc@MakeVTeXString\pc@user,% + P\ifpc@print +\else -\fi,% + C\ifpc@copy +\else -\fi,% + M\ifpc@edit +\else -\fi,% + A\ifpc@annotate +\else -\fi + }% +} +\def\pc@MakeVTeXString#1{% + "\expandafter\pc@@MakeVTeXString#1"\@nil"% +} +\def\pc@@MakeVTeXString#1"#2\@nil{% + #1% + \ifx\\#2\\% + \else + ""% + \@ReturnAfterFi{% + \pc@@MakeVTeXString#2\@nil + }% + \fi +} +\long\def\@ReturnAfterFi#1\fi{\fi#1} +\pc@temp + +\begingroup + \catcode`\ =12 \gdef\pc@spaceother{ }\catcode`\ =10\relax + \catcode`\|=0 % + \catcode`\\=12 % + |gdef|pc@DefString#1#2{% + |def#1{#2}% + |edef#1{|expandafter|strip@prefix|meaning#1}% + |edef#1{|expandafter|pc@SpaceToOther#1 |@nil}% + |edef#1{|expandafter|pc@EscapeRemove#1|@empty\|@empty|@nil}% + } + |gdef|pc@EscapeRemove#1\#2#3|@nil{% + #1#2% + |ifx|\#3|\% + |else + |@ReturnAfterFi{% + |pc@EscapeRemove#3|@nil + }% + |fi + } +|endgroup +\def\pc@SpaceToOther#1 #2\@nil{% + #1% + \ifx\\#2\\% + \else + \pc@spaceother + \@ReturnAfterFi{% + \pc@SpaceToOther#2\@nil + }% + \fi +} + +\def\pc@boolkey{\@dblarg\pc@@boolkey} +\def\pc@@boolkey[#1]#2#3{% + \lowercase{\def\pc@temp{#3}}% + \ifx\pc@temp\@empty + \let\pc@temp\pc@true + \fi + \ifx\pc@temp\pc@true + \else + \ifx\pc@temp\pc@false + \else + \let\pc@temp\relax + \fi + \fi + \ifx\pc@temp\relax + \PackageWarning{pdfcrypt}{% + Unexpected value \string`#3\string' of + option \string`#2\string'\MessageBreak + instead of + \string`true\string' or \string`false\string'% + }% + \else + \csname pc@#2\pc@temp\endcsname + \fi +} +\def\pc@true{true} +\def\pc@false{false} + +\define@key{pc}{set}[true]{% + \pc@boolkey{set}{#1}% +} +\define@key{pc}{pdftex}[]{% + \def\pc@driver{pdftex}% +} +\define@key{pc}{vtex}[]{% + \def\pc@driver{vtex}% +} +\define@key{pc}{print}[true]{% + \pc@boolkey{print}{#1}% +} +\define@key{pc}{copy}[true]{% + \pc@boolkey{copy}{#1}% +} +\define@key{pc}{edit}[true]{% + \pc@boolkey{edit}{#1}% +} +\define@key{pc}{annotate}[true]{% + \pc@boolkey{annotate}{#1}% +} +\define@key{pc}{all}[]{% + \pc@boolkey{print}{true}% + \pc@boolkey{copy}{true}% + \pc@boolkey{edit}{true}% + \pc@boolkey{annotate}{true}% +} +\define@key{pc}{none}[]{% + \pc@boolkey{print}{false}% + \pc@boolkey{copy}{false}% + \pc@boolkey{edit}{false}% + \pc@boolkey{annotate}{false}% +} + +\define@key{pc}{owner}{% + \pc@DefString\pc@owner{#1}% +} +\define@key{pc}{user}{% + \pc@DefString\pc@user{#1}% +} +\define@key{pc}{debug}[true]{% + \pc@boolkey{debug}{#1}% +} + +\def\pdfcryptsetup#1{% + \setkeys{pc}{#1}% + \ifpc@set + \pc@set + \global\let\pc@set\relax + \gdef\pdfcryptsetup##1{% + \PackageWarning{pdfcrypt}{% + Encryption options are already set\MessageBreak + new values are ignored% + }% + }% + \fi +} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname @onlypreamble\endcsname\relax +\else + \@onlypreamble\pdfcryptsetup +\fi +% \end{macrocode} +% +% \subsection{support of configuration file} +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname InputIfFileExists\endcsname\relax + \PackageInfo{pdfcrypt}{% + Configuration file pdfcrypt.cfg not supported.% + }% +\else + \let\pc@ExecuteOptions\ExecuteOptions + \InputIfFileExists{pdfcrypt.cfg}{}{} + \let\ExecuteOptions\pc@ExecuteOptions +\fi +% \end{macrocode} +% +% \subsection{Package options} +% +% Plain format does not know package options. +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname @classoptionslist\endcsname\relax + \expandafter\pc@endinput +\fi +% \end{macrocode} +% Process global and local options. +% \begin{macrocode} +\def\pc@ProcessOptionsWithKV{% + \let\pc@temp\@empty + \@for\CurrentOption:=\@classoptionslist\do{% + \@ifundefined{KV@pc@\CurrentOption}{}{% + \edef\pc@temp{\pc@temp,\CurrentOption,}% + \@expandtwoargs\@removeelement\CurrentOption + \@unusedoptionlist\@unusedoptionlist + }% + }% + \edef\pc@temp{% + \noexpand\pdfcryptsetup{% + \pc@temp\@ptionlist{\@currname.\@currext}% + }% + }% + \pc@temp +} +\pc@ProcessOptionsWithKV +\AtEndOfPackage{\let\@unprocessedoptions\relax} +\AtBeginDocument{\pc@set} + +\pc@endinput +% \end{macrocode} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/pdfcrypt.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/pdfcrypt.pdf}] Documentation. +% \end{description} +% +% \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 pdfcrypt.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@{}} +% pdfcrypt.sty & tex/generic/oberdiek/pdfcrypt.sty\\ +% pdfcrypt.pdf & doc/latex/oberdiek/pdfcrypt.pdf\\ +% pdfcrypt.dtx & source/latex/oberdiek/pdfcrypt.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 pdfcrypt.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{pdfcrypt.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 pdfcrypt.dtx +%makeindex -s gind.ist pdfcrypt.idx +%pdflatex pdfcrypt.dtx +%makeindex -s gind.ist pdfcrypt.idx +%pdflatex pdfcrypt.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2001/04/02 v0.1} +% \item +% First public version, published in the pdftex +% mailing list for testing with pdfcrypt-20010331 +% \end{Version} +% \begin{Version}{2001/07/19 v0.2} +% \item +% Default: all allowed. +% \item +% Support for \VTeX\ added. +% \end{Version} +% \begin{Version}{2001/07/19 v0.3} +% \item +% Bug fix: \VTeX\ letter for edit is M (modify). +% \end{Version} +% \begin{Version}{2001/07/19 v0.4} +% \item +% Bug fix: \cs{VTeXversion} is correct after +% regenerating the format file. +% \end{Version} +% \begin{Version}{2001/08/05 v0.5} +% \item +% Syntax change in \pdfTeX\ 1.00a. +% \end{Version} +% \begin{Version}{2001/08/09 v0.6} +% \item +% Support of special characters:\\ +% input: |\{|, |\}|, |\\| for |{|, |}|, |\|\\ +% output: |"| in \VTeX +% \item +% Option debug added. +% \end{Version} +% \begin{Version}{2001/10/28 v0.7} +% \item +% Plain compatibility. +% \item +% \cs{nopdfcrypt} added. +% \item +% Typos corrected. +% \end{Version} +% \begin{Version}{2006/02/20 v0.8} +% \item +% Obsolete remarks for \pdfTeX. +% \item +% DTX framework. +% \item +% LPPL 1.3 +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/pdflscape.dtx b/Master/texmf-dist/source/latex/oberdiek/pdflscape.dtx new file mode 100644 index 00000000000..d1bb8fde9c6 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/pdflscape.dtx @@ -0,0 +1,668 @@ +% \iffalse meta-comment +% +% Copyright (C) 2001, 2004, 2006 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 pdflscape.dtx +% and the derived files +% pdflscape.sty, pdflscape.pdf, pdflscape.ins, pdflscape.drv. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/pdflscape.dtx +% CTAN:macros/latex/contrib/oberdiek/pdflscape.pdf +% +% Unpacking: +% (a) If pdflscape.ins is present: +% tex pdflscape.ins +% (b) Without pdflscape.ins: +% tex pdflscape.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{pdflscape.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If pdflscape.drv is present: +% latex pdflscape.drv +% (b) Without pdflscape.drv: +% latex pdflscape.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 pdflscape.dtx +% makeindex -s gind.ist pdflscape.idx +% pdflatex pdflscape.dtx +% makeindex -s gind.ist pdflscape.idx +% pdflatex pdflscape.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/pdflscape.sty +% TDS:doc/latex/oberdiek/pdflscape.pdf +% TDS:source/latex/oberdiek/pdflscape.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: pdflscape 2006/04/24 v0.6 Landscape pages in PDF (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2001, 2004, 2006 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 pdflscape.dtx +and the derived files + pdflscape.sty, pdflscape.pdf, pdflscape.ins, pdflscape.drv. + +\endpreamble + +\generate{% + \file{pdflscape.ins}{\from{pdflscape.dtx}{install}}% + \file{pdflscape.drv}{\from{pdflscape.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{pdflscape.sty}{\from{pdflscape.dtx}{package}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* pdflscape.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `pdflscape.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{pdflscape.drv}% + [2006/04/24 v0.6 Landscape pages in PDF (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\begin{document} + \DocInput{pdflscape.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{344} +% +% \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{pdflscape.drv} +% +% \title{The \xpackage{pdflscape} package} +% \date{2006/04/24 v0.6} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% Package \xpackage{pdflscape} adds PDF support to the +% environment \texttt{landscape} of package \xpackage{lscape} +% by setting the PDF page attribute \texttt{/Rotate}. +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% \subsection{Supported drivers} +% +% \begin{itemize} +% \item \xoption{pdftex} +% \item \xoption{dvips}, \xoption{dvipsone}, +% \xoption{pctex32}, \xoption{pctexps} +% (and other drivers that provide a non-empty \cs{Gin@PS@raw}) +% \item \xoption{dvipdfm} +% \end{itemize} +% +% \subsection{Caveat} +% +% Depending on the configuration Ghostscript +% adds a guessed rotation entry by its own. +% This can lead to two |/Rotate| entries per page. +% To prevent this behaviour set the parameter +% |AutoRotatePages| to |/None|, eg: +% \begin{quote} +% |ps2pdf -dAutoRotatePages=/None| +% \end{quote} +% +% \subsection{Requirements} +% +% \begin{itemize} +% \item The package \xpackage{lscape}. +% \item The package \xpackage{everyshi} for all drivers +% except \xoption{pdftex}. +% \end{itemize} +% +% \subsection{Usage} +% +% Load this package instead of or after package \xpackage{lscape}: +% \begin{quote} +% |\usepackage{pdflscape}|\\ +% |\begin{landscape}|\dots|\end{landscape}| +% \end{quote} +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \subsection{Package identification} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% Package identification. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{pdflscape}% + [2006/04/24 v0.6 Landscape pages in PDF (HO)] +% \end{macrocode} +% +% \subsection{Driver options} +% +% \begin{macrocode} +\let\PLS@driver\@empty +\DeclareOption{pdftex}{% + \PassOptionsToPackage\CurrentOption{lscape}% + \def\PLS@driver{pdftex}% +} +\DeclareOption{dvips}{% + \PassOptionsToPackage\CurrentOption{lscape}% + \def\PLS@driver{dvips}% +} +\DeclareOption{dvipsone}{% + \PassOptionsToPackage\CurrentOption{lscape}% + \def\PLS@driver{dvips}% +} +\DeclareOption{pctexps}{% + \PassOptionsToPackage\CurrentOption{lscape}% + \def\PLS@driver{dvips}% +} +\DeclareOption{dvipdfm}{% + \PassOptionsToPackage\CurrentOption{dvipdfm}% + \def\PLS@driver{dvipdfm}% +} +\DeclareOption*{\PassOptionsToPackage\CurrentOption{lscape}} +\ProcessOptions +\RequirePackage{lscape} +% \end{macrocode} +% +% \subsection{Autodetection of driver} +% +% \subsubsection{Driver \xoption{pdftex}} +% +% \begin{macrocode} +\def\PLS@temp{pdftex} +\ifnum 1=0\ifx\pdfoutput\@undefined + \else + \ifx\pdfoutput\relax + \else + \ifnum\pdfoutput>0 % + 1% + \fi + \fi + \fi + \space + \ifx\PLS@driver\@empty + \let\PLS@driver\PLS@temp + \PackageInfo{pdflscape}{Auto-detected driver: `\PLS@temp'}% + \fi + \ifx\PLS@driver\PLS@temp + \else + \PackageError{pdflscape}{% + The driver option `\PLS@driver' is not compatible\MessageBreak + with pdfTeX in PDF mode, using driver `pdftex' instead% + }\@ehc + \let\PLS@driver\PLS@temp + \fi +\fi +% \end{macrocode} +% +% \subsubsection{Driver \xoption{dvips}} +% +% \begin{macrocode} +\def\PLS@temp{dvips} +\ifnum 1=0\ifx\Gin@PS@raw\@undefined + \else + \ifx\Gin@PS@raw\relax + \else + \ifx\Gin@PS@raw\@empty + \else + 1% + \fi + \fi + \fi + \space + \ifx\PLS@driver\@empty + \let\PLS@driver\PLS@temp + \PackageInfo{pdflscape}{Auto-detected driver: `\PLS@temp'}% + \fi + \ifx\PLS@driver\PLS@temp + \else + \PackageError{pdflscape}{% + The driver option `\PLS@driver' is not compatible\MessageBreak + with detected PostScript driver,\MessageBreak + Will try using driver `dvips'% + }\@ehc + \let\PLS@driver\PLS@temp + \fi +\fi +% \end{macrocode} +% +% \subsubsection{Driver \xoption{dvipdfm}} +% +% \begin{macrocode} +\def\PLS@temp{dvipdfm.def} +\ifx\PLS@temp\Gin@driver + \def\PLS@temp{dvipdfm}% + \ifx\PLS@driver\@empty + \let\PLS@driver\PLS@temp + \PackageInfo{pdflscape}{Auto-detected driver: `\PLS@temp'}% + \fi + \ifx\PLS@driver\PLS@temp + \else + \PackageError{pdflscape}{% + Graphics driver `dvipdfm.def' is loaded, but this\MessageBreak + is incompatible with driver `\PLS@driver'.\MessageBreak + Will try using driver `dvipdfm'% + }\@ehc + \let\PLS@driver\PLS@temp + \fi +\fi + +\ifx\PLS@driver\@empty + \PackageError{pdflscape}{% + Neither pdfTeX, PostScript, nor dvipdfm driver found% + }\@ehc +\fi +% \end{macrocode} +% +% \subsection{Driver implementation} +% +% \begin{itemize} +% \item |\PLS@AddRotate #1|\\ +% it expects the correct rotation number in |#1| +% and implements the adding of the /Rotation entry +% in the |/Page| object of the current page. +% \item |\PLS@RemoveRotate|\\ +% it removes a previous |/Rotate| entry, if necessary. +% \end{itemize} +% +% \subsubsection{\pdfTeX} +% +% Not too nice is the global setting of \cs{pdfpageattr}. +% Perhaps this can be changed in future versions. +% +% \begin{macrocode} +\def\PLS@temp{pdftex} +\ifx\PLS@temp\PLS@driver + \def\PLS@AddRotate#1{% + \ifnum#1=0 +% \end{macrocode} +% Already the default. +% \begin{macrocode} + \else + \global\pdfpageattr\expandafter{% + \the\pdfpageattr + /Rotate #1% + }% + \fi + } +% \end{macrocode} +% Removes a |/Rotate| entry. +% \begin{macrocode} + \def\PLS@RemoveRotate{% + \begingroup + \global\pdfpageattr\expandafter{\expandafter}% + \expandafter\PLS@@RemoveRotate + \the\pdfpageattr /Rotate\@nil + \endgroup + } + \def\PLS@@RemoveRotate#1/Rotate#2\@nil{% +% \end{macrocode} +% Append |/Rotate| free stuff to \cs{pdfpageattr}. +% \begin{macrocode} + \global\pdfpageattr\expandafter{\the\pdfpageattr#1}% + \ifx\\#2\\% +% \end{macrocode} +% Ready, because the detected |/Rotate| is part of +% the end marker: |/Rotate\@nil| +% \begin{macrocode} + \else +% \end{macrocode} +% First read in the argument of |/Rotate|, +% then continue parsing. +% \begin{macrocode} + \afterassignment\PLS@@RemoveRotate + \count0=#2\@nil + \fi + } +\fi +% \end{macrocode} +% +% \subsubsection{PostScript driver} +% +% \begin{macrocode} +\def\PLS@temp{dvips} +\ifx\PLS@temp\PLS@driver + \RequirePackage{everyshi}% + \EveryShipout{\PLS@EveryShi}% + \let\PLS@EveryShi\@empty + \def\PLS@AddRotate#1{% + \ifnum#1=0 + \else + \def\PLS@EveryShi{% + \global\setbox\@cclv\vbox{% + \Gin@PS@raw{% + [{ThisPage}\string<\string</Rotate #1\string>\string>% + /PUT pdfmark% + }% + \box\@cclv + }% + }% + \fi + }% + \def\PLS@RemoveRotate{\let\PLS@EveryShi\@empty}% +\fi +% \end{macrocode} +% +% \subsubsection{Driver dvipdfm} +% +% \begin{macrocode} +\def\PLS@temp{dvipdfm} +\ifx\PLS@temp\PLS@driver + \RequirePackage{everyshi}% + \EveryShipout{\PLS@EveryShi}% + \let\PLS@EveryShi\@empty + \def\PLS@AddRotate#1{% + \ifnum#1=0 + \else + \def\PLS@EveryShi{% + \global\setbox\@cclv\vbox{% + \special{pdf: put @thispage << /Rotate #1 >>}% + \box\@cclv + }% + }% + \fi + }% + \def\PLS@RemoveRotate{\let\PLS@EveryShi\@empty}% +\fi +% \end{macrocode} +% +% \subsection{Driver independent stuff} +% +% The landscape environment is extended by +% adding the correct |/Rotate| entries. +% \begin{macrocode} +\g@addto@macro{\landscape}{\PLS@Rotate{90}} +\g@addto@macro{\endlandscape}{\PLS@Rotate{0}} +% \end{macrocode} +% +% \begin{macro}{\PLS@Rotate} +% Main macro, that sets the |/Rotate| entry.\\ +% Argument: any TeX number or nothing, that means zero.\\ +% Driver independent. +% \begin{macrocode} +\def\PLS@Rotate#1{% + \begingroup +% \end{macrocode} +% 1. Check and validate the argument. +% \begin{macrocode} + \PLS@CheckAngle{#1}% + \expandafter\endgroup +% \end{macrocode} +% 2. Remove previous |\Rotate| entry. +% \begin{macrocode} + \expandafter\PLS@RemoveRotate +% \end{macrocode} +% 3. Add |/Rotate| entry. +% \begin{macrocode} + \expandafter\PLS@AddRotate\expandafter{\the\count@}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\PLS@CheckAngle} +% Validates the rotation angle.\\ +% The result is stored in the count register |\count@|.\\ +% Driver independent. +% \begin{macrocode} +\def\PLS@CheckAngle#1{% +% \end{macrocode} +% Nothing means zero: +% \begin{macrocode} + \ifx\\#1\\% + \count@=0 + \else + \count@=#1\relax + \fi +% \end{macrocode} +% Normalise to interval -360 $<$ |\count@| $<$ 360. +% \begin{macrocode} + \@whilenum\count@>359\do{\addtocounter\count@ -360 }% + \@whilenum\count@<-359\do{\addtocounter\count@ 360 }% +% \end{macrocode} +% Check values: 0, +/-90, +/-180, +/-270 +% \begin{macrocode} + \ifnum 1=0\ifnum\count@=0 \else + \ifnum\count@=90 \else + \ifnum\count@=-90 \else + \ifnum\count@=180 \else + \ifnum\count@=-180 \else + \ifnum\count@=270 \else + \ifnum\count@=-270 \else + 1\fi\fi\fi\fi\fi\fi\fi\relax + \PackageError{pdflscape}{% + Invalid value \the\count@\space for /Rotate% + }\@ehc + \count@=0 + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/pdflscape.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/pdflscape.pdf}] Documentation. +% \end{description} +% +% \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 pdflscape.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@{}} +% pdflscape.sty & tex/latex/oberdiek/pdflscape.sty\\ +% pdflscape.pdf & doc/latex/oberdiek/pdflscape.pdf\\ +% pdflscape.dtx & source/latex/oberdiek/pdflscape.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 pdflscape.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{pdflscape.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 pdflscape.dtx +%makeindex -s gind.ist pdflscape.idx +%pdflatex pdflscape.dtx +%makeindex -s gind.ist pdflscape.idx +%pdflatex pdflscape.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2001/01/15 v0.1} +% \item +% First public version, +% published in \xnewsgroup{de.comp.text.tex}. +% \end{Version} +% \begin{Version}{2001/02/04 v0.2} +% \item +% Minor documentation update. +% \item +% CTAN. +% \end{Version} +% \begin{Version}{2004/05/11 v0.3} +% \item +% Support for dvipdfm added. +% \end{Version} +% \begin{Version}{2004/05/12 v0.4} +% \item +% Bug fix: support for multipage landscape environment +% for all drivers except for \xoption{pdftex}. +% \end{Version} +% \begin{Version}{2006/02/20 v0.5} +% \item +% DTX framework. +% \item +% LPPL 1.3 +% \item +% Code is not changed. +% \end{Version} +% \begin{Version}{2006/04/24 v0.6} +% \item +% Bug fix: \cs{PLS@RemoveRotate} reinserted for \cs{PLS@Rotate}. +% \item +% Fix for \cs{PLS@RemoveRotate} (dvips/dvipdfm): \cs{PLS@EverhShi} +% hook is cleared. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/picture.dtx b/Master/texmf-dist/source/latex/oberdiek/picture.dtx new file mode 100644 index 00000000000..c7d36515afc --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/picture.dtx @@ -0,0 +1,626 @@ +% \iffalse meta-comment +% +% Copyright (C) 2006 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 picture.dtx +% and the derived files +% picture.sty, picture.pdf, picture.ins, picture.drv, +% picture-example.tex. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/picture.dtx +% CTAN:macros/latex/contrib/oberdiek/picture.pdf +% +% Unpacking: +% (a) If picture.ins is present: +% tex picture.ins +% (b) Without picture.ins: +% tex picture.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{picture.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If picture.drv is present: +% latex picture.drv +% (b) Without picture.drv: +% latex picture.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 picture.dtx +% makeindex -s gind.ist picture.idx +% pdflatex picture.dtx +% makeindex -s gind.ist picture.idx +% pdflatex picture.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/picture.sty +% TDS:doc/latex/oberdiek/picture.pdf +% TDS:doc/latex/oberdiek/picture-example.tex +% TDS:source/latex/oberdiek/picture.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: picture 2006/08/26 v1.0 Dimens for picture macros (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2006 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 picture.dtx +and the derived files + picture.sty, picture.pdf, picture.ins, picture.drv, + picture-example.tex. + +\endpreamble + +\generate{% + \file{picture.ins}{\from{picture.dtx}{install}}% + \file{picture.drv}{\from{picture.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{picture.sty}{\from{picture.dtx}{package}}% + \usedir{doc/latex/oberdiek}% + \file{picture-example.tex}{\from{picture.dtx}{example}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* picture.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `picture.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{picture.drv}% + [2006/08/26 v1.0 Dimens for picture macros (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\begin{document} + \DocInput{picture.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{294} +% +% \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{picture.drv} +% +% \title{The \xpackage{picture} package} +% \date{2006/08/26 v1.0} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% There are macro and environment arguments that expect numbers +% that will internally be multiplicated with \cs{unitlength}. +% This package extends the syntax of these arguments that +% dimens with calculation support can be added for these arguments. +% \end{abstract} +% +% \tableofcontents +% +% \section{User interface} +% +% \subsection{Introduction} +% +% The environment |picture| and macros such as \cs{put}, \cs{line}, +% \cs{vector} and other macros have arguments that expect numbers +% that are used as factor for \cs{unitlength}. +% This package redefines such macros and adds code that detects +% whether such an argument is given as number or as length. +% In the latter case, the length is used directly without multiplying +% with \cs{unitlength}. +% +% \subsection{Options} +% +% Depending on the available features, also length expressions +% can be given. Option \xoption{calc} loads package \xpackage{calc}. +% Then expressions of these package may be used. +% Otherwise \xoption{etex} wraps the length argument inside +% \cs{dimexpr}\dots\cs{relax}, if \eTeX\ is available. Otherwise +% option \xoption{plain} uses plain assignments without calculation +% support. +% +% The default is \xoption{calc} if package \xpackage{calc} +% is loaded before package \xoption{picture}. If you specify +% option \xoption{calc} the loading of \xpackage{calc} is ensured. +% Otherwise package \xpackage{picture} looks whether \cs{dimexpr} +% is available and uses then option \xoption{etex} as default. +% If \eTeX\ also could not be found, then \xoption{plain} is used. +% +% \subsection{Example} +% +% \begin{macrocode} +%<*example> +\documentclass{article} + +\usepackage[calc]{picture} + +\begin{document} + +\setlength{\unitlength}{1pt} + +\begin{picture}(\widthof{Hello World}, 10mm) + \put(0, 0){\makebox(0,0)[lb]{Hello World}} + \put(0, \heightof{Hello World} + \fboxsep){% + \line(1, 0){\widthof{Hello World}}% + } + \put(\widthof{Hello World}, 10mm){% + \line(0, -1){10mm}% + } +\end{picture}% + +\end{document} +%</example> +% \end{macrocode} +% +% \subsection{Supported packages} +% +% Package \xpackage{pspicture} is supported, but it must be loaded +% before package \xpackage{picture}. +% +% New macros can be supported by \cs{picture@redefine}. +% The first argument is the macro which contains the arguments +% in its parameter text that you want to support by package \xpackage{picture}. +% The second argument contains the parameter text. Change \# to \& for +% the arguments in question. +% Examples (already used by package \xpackage{picture}): +% \begin{quote} +% |\picture@redefine\put{(&1,&2)}|\\ +% |\picture@redefine\line{(#1,#2)&3}| +% \end{quote} +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \subsection{Identification} +% +% \begin{macrocode} +%<*package> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{picture}% + [2006/08/26 v1.0 Dimens for picture macros (HO)] +% \end{macrocode} +% +% \subsection{Options} +% +% \begin{macrocode} +\def\Pc@calcname{calc} +\def\Pc@etexname{etex} +\def\Pc@plainname{plain} +% \end{macrocode} +% \begin{macro}{\Pc@method} +% Macro \cs{Pc@method} stores the method to use for calculations. +% Check which features are available and set the default for \cs{Pc@method}. +% \begin{macrocode} +\@ifpackageloaded{calc}{% + \let\Pc@method\Pc@calcname +}{% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname dimexpr\endcsname\relax + \let\Pc@method\Pc@plainname + \else + \let\Pc@method\Pc@etexname + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\DeclareOption{plain}{% + \let\Pc@method\Pc@plainname +} +\DeclareOption{etex}{% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname dimexpr\endcsname\relax + \PackageError{picture}{% + e-TeX is not available% + }\@ehc + \else + \let\Pc@method\Pc@etexname + \fi +} +\DeclareOption{calc}{% + \let\Pc@method\Pc@calcname +} +\ProcessOptions* +\begingroup + \let\on@line\@empty + \PackageInfo{picture}{Calculation method: \Pc@method} +\endgroup +% \end{macrocode} +% +% \subsection{Calculation method} +% +% \begin{macrocode} +\ifx\Pc@method\Pc@calcname + \RequirePackage{calc}% +\fi +% \end{macrocode} +% +% \subsubsection{Method \xoption{calc}} +% +% \begin{macrocode} +\ifx\Pc@method\Pc@calcname + \def\Pc@tokslength#1{% + \begingroup + \let\calc@error\Pc@calc@error + \setlength\dimen@{#1\unitlength}\Pc@next\Pc@nil{#1}% + }% + \let\PcOrg@calc@error\calc@error + \def\Pc@calc@error#1{% + \expandafter\ifx\expandafter\unitlength\noexpand#1\relax + \def\calc@next##1!{% + \endgroup + \aftergroup\afterassignment + \aftergroup\Pc@next + }% + \else + \@ReturnAfterFi{% + \PcOrg@calc@error{#1}% + }% + \fi + }% + \expandafter\@firstofone +\else + \expandafter\@gobble +\fi +{% + \long\def\@ReturnAfterFi#1\fi{\fi#1}% +} +% \end{macrocode} +% +% \subsubsection{Method \xoption{etex}} +% +% \begin{macrocode} +\ifx\Pc@method\Pc@etexname + \def\Pc@tokslength#1{% + \begingroup + \afterassignment\Pc@next + \dimen@=\dimexpr#1\unitlength\Pc@nil{#1}% + }% +\fi +% \end{macrocode} +% +% \subsubsection{Method \xoption{plain}} +% +% \begin{macrocode} +\ifx\Pc@method\Pc@plainname + \def\Pc@tokslength#1{% + \begingroup + \afterassignment\Pc@next + \dimen@=#1\unitlength\Pc@nil{#1}% + }% +\fi +% \end{macrocode} +% +% \subsubsection{Help macros} +% +% \begin{macrocode} +\def\Pc@next#1\Pc@nil#2{% + \ifx\\#1\\% + \endgroup + \Pc@addtoks{{#2}}% + \else + \expandafter\endgroup + \expandafter\Pc@addtoks\expandafter{% + \expandafter{\the\dimen@\@gobble}% + }% + \fi +} +% \end{macrocode} +% \begin{macro}{\Pc@nil} +% \cs{Pc@nil} must not have the meaning of \cs{relax} because of +% \cs{dimexpr}. +% \begin{macrocode} +\let\Pc@nil\message +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Pc@addtoks} +% \begin{macrocode} +\def\Pc@addtoks#1{% + \toks@=\expandafter{\the\toks@#1}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Pc@init} +% \begin{macrocode} +\def\Pc@init#1{% + \begingroup + \toks@={#1}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Pc@finish} +% \begin{macrocode} +\def\Pc@finish#1{% + \expandafter\endgroup + \expandafter#1\the\toks@ +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Redefinitions} +% +% \begin{macro}{\picture@redefine} +% \begin{tabular}[t]{@{}l@{ }l@{}} +% |#1|:& command name\\ +% |#2|:& parameter text, length parameter with \& instead of \# +% \end{tabular} +% \begin{macrocode} +\def\picture@redefine#1#2{% + \begingroup + \edef\reserved@a{% + \noexpand\noexpand + \expandafter\noexpand + \csname PcOrg@\expandafter\@gobble\string#1\endcsname + }% + \toks0{#1}% + \Pc@first#2&0% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Pc@first} +% \begin{macrocode} +\def\Pc@first#1&{% + \toks1={#1}% + \toks2={\Pc@init{#1}}% + \Pc@scanlength +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Pc@scanlength} +% |#1|: number of length parameter or zero +% \begin{macrocode} +\def\Pc@scanlength#1{% + \ifcase#1 % + \expandafter\Pc@last + \else + \toks1=\expandafter{\the\toks1 ###1}% + \toks2=\expandafter{\the\toks2 \Pc@tokslength{###1}}% + \expandafter\Pc@scannext + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Pc@scannext} +% \begin{macrocode} +\def\Pc@scannext#1&{% + \ifx\\#1\\% + \else + \toks1=\expandafter{\the\toks1 #1}% + \toks2=\expandafter{\the\toks2 \Pc@addtoks{#1}}% + \fi + \Pc@scanlength +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Pc@last} +% \begin{macrocode} +\def\Pc@last{% + \edef\x{% + \endgroup + \let\reserved@a\the\toks0 % + \def\the\toks0 \the\toks1 {% + \the\toks2 % + \noexpand\Pc@finish\reserved@a + }% + }% + \x +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{\LaTeX\ base macros} +% +% \begin{macrocode} +\picture@redefine\@picture{(&1,&2)(&3,&4)} +\picture@redefine\put{(&1,&2)} +\picture@redefine\multiput{(&1,&2)} +\picture@redefine\@multiput{(&1,&2)} +\picture@redefine\line{(#1,#2)&3} +\picture@redefine\vector{(#1,#2)&3} +\picture@redefine\dashbox{&1(&2,&3)} +\picture@redefine\@circle{&1} +\picture@redefine\@dot{&1} +\picture@redefine\@bezier{#1(&2,&3)(&4,&5)(&6,&7)} +\picture@redefine\@imakepicbox{(&1,&2)} +% \end{macrocode} +% +% \subsubsection{Package \xpackage{pspicture}} +% +% Package \xpackage{pspicture} changes the signature of \cs{@oval} +% by adding an optional argument. +% \begin{macrocode} +\@ifpackageloaded{pspicture}{% + \picture@redefine\@oval{[&1](&2,&3)} + \picture@redefine\Line{(&1,&2)} + \picture@redefine\Curve{(&1,&2)} + \picture@redefine\Vector{(&1,&2)} +}{ + \picture@redefine\@oval{(&1,&2)} +} +% \end{macrocode} +% \begin{macrocode} +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/picture.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/picture.pdf}] Documentation. +% \end{description} +% +% \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 picture.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@{}} +% picture.sty & tex/latex/oberdiek/picture.sty\\ +% picture.pdf & doc/latex/oberdiek/picture.pdf\\ +% picture-example.tex & doc/latex/oberdiek/picture-example.tex\\ +% picture.dtx & source/latex/oberdiek/picture.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 picture.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{picture.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 picture.dtx +%makeindex -s gind.ist picture.idx +%pdflatex picture.dtx +%makeindex -s gind.ist picture.idx +%pdflatex picture.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2006/08/26 v1.0} +% \item +% First released version. (First start of the project was June/July 2002.) +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/pmboxdraw.dtx b/Master/texmf-dist/source/latex/oberdiek/pmboxdraw.dtx new file mode 100644 index 00000000000..2c742ff89f6 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/pmboxdraw.dtx @@ -0,0 +1,1808 @@ +% \iffalse meta-comment +% +% Copyright (C) 2006 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 pmboxdraw.dtx +% and the derived files +% pmboxdraw.sty, pmboxdraw.pdf, pmboxdraw.ins, pmboxdraw.drv, +% pmboxdrawenc.dfu. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/pmboxdraw.dtx +% CTAN:macros/latex/contrib/oberdiek/pmboxdraw.pdf +% +% Unpacking: +% (a) If pmboxdraw.ins is present: +% tex pmboxdraw.ins +% (b) Without pmboxdraw.ins: +% tex pmboxdraw.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{pmboxdraw.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If pmboxdraw.drv is present: +% latex pmboxdraw.drv +% (b) Without pmboxdraw.drv: +% latex pmboxdraw.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 pmboxdraw.dtx +% makeindex -s gind.ist pmboxdraw.idx +% pdflatex pmboxdraw.dtx +% makeindex -s gind.ist pmboxdraw.idx +% pdflatex pmboxdraw.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/pmboxdraw.sty +% TDS:tex/latex/oberdiek/pmboxdrawenc.dfu +% TDS:doc/latex/oberdiek/pmboxdraw.pdf +% TDS:source/latex/oberdiek/pmboxdraw.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: pmboxdraw 2006/05/03 v1.0 Poor man's box drawing characters (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2006 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 pmboxdraw.dtx +and the derived files + pmboxdraw.sty, pmboxdraw.pdf, pmboxdraw.ins, pmboxdraw.drv, + pmboxdrawenc.dfu. + +\endpreamble + +\generate{% + \file{pmboxdraw.ins}{\from{pmboxdraw.dtx}{install}}% + \file{pmboxdraw.drv}{\from{pmboxdraw.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{pmboxdraw.sty}{\from{pmboxdraw.dtx}{package}}% + \file{pmboxdrawenc.dfu}{\from{pmboxdraw.dtx}{utf8}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* pmboxdraw.sty, pmboxdrawenc.dfu} +\Msg{*} +\Msg{* To produce the documentation run the file `pmboxdraw.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{pmboxdraw.drv}% + [2006/05/03 v1.0 Poor man's box drawing characters (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\usepackage{color} +\usepackage{pmboxdraw} +\usepackage{longtable} +\setcounter{tocdepth}{2} +\hypersetup{bookmarksdepth=3} +\begin{document} + \DocInput{pmboxdraw.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{2712} +% +% \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{pmboxdraw.drv} +% +% \title{The \xpackage{pmboxdraw} package} +% \date{2006/05/03 v1.0} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% Package \xpackage{pmboxdraw} declares box drawings characters of +% old code pages, e.g. cp437. It uses rules instead of using a font. +% \end{abstract} +% +% \tableofcontents +% +% \DoNotIndex{\dimen,\dimen@,\z@,\tw@,\wd,\ht,\dp} +% \DoNotIndex{\@width,\@height,\@depth} +% \DoNotIndex{\advance,\hss,\kern,\rlap,\vrule} +% +% \section{User interface} +% +% \begin{quote} +% \ttfamily +% \catcode`=\active +% \catcode`|\active +% \catcode`-\active +% \def={\textSFxliii} +% \def|{\textSFxxiv} +% \def-{\textSFx} +% \def~{\mbox{ }} +% \textSFxxxix===================\textSFxxv\\ +% | P M B O X D R A W |\\ +% \textSFxxxviii ==\textSFxlvii============\textSFxlvii===\textSFxxvi\\ +% ~~~\textSFxi~2006/05/03 \textSFxi\\ +% ~~~\textSFii------------\textSFiv +% \end{quote} +% +% \subsection{Introduction} +% +% In old code pages (CP 437, \dots) many slots are occupied +% by graphical characters. The definition files for the input +% encodings that come with \LaTeX's package \xpackage{inputenc} +% ignore these characters. This packages tries to close this gap. +% Package \xpackage{inputenx} provides more complete definitions +% files of input encodings (\cite{inputenx}). +% +% The graphical characters are available in some fonts, mostly +% some derivates of Courier. However, the symbols are usually +% used to gegnerate some kind of ASCII art. Thus it should fit +% with the current typewriter font in use. That means: +% \begin{itemize} +% \item Same and constant symbol width. +% \item Use of the full line height. Vertical lines should not be +% interrupted if the symbols that contribute to that lines +% are in adjacent text lines. +% \end{itemize} +% Therefore I decided to generate the symbols by rules. +% Parameters such as rule width and box dimensions are accessible +% at macro level. This avoids to generate many fonts for the used +% typewriter fonts (Courier, LuxiMono, Computer/Latin Modern, \dots). +% +% The disadvantage is that there are no characters in the output +% file, just rules. Thus operations such as cut and paste or text +% search will not detect these graphical characters. +% +% \subsection{Setup} +% +% Usually the box drawings symbols of this package derive its parameters +% from the current font. But they can be set explicitly. +% +% \begin{declcs}{pmboxdrawbox} \M{template} +% \end{declcs} +% The \meta{template} is used as size template for the symbols. +% It is initialized by |\strut0|. (Usually |\strut| carries the information +% about the \cs{baselineskip} and |0| the symbol width.) +% +% \begin{declcs}{pmboxdrawrulewidth} \M{dimen} +% \end{declcs} +% This macro allows the setup of the rule width used in the symbols. +% It is initialized with |0.1\width|, that means 10\,\% of the symbol +% width. \cs{width}, \cs{height}, and \cs{depth} can be used here and +% are set to the corresponding symbol box parameter. +% +% \begin{declcs}{pmboxdrawdoublerulesep} \M{dimen} +% \end{declcs} +% Some symbols have double lines. The distance between the lines is +% configured by this macro. It is set to |0.25\width|, a quarter of +% the symbol width. Also \cs{height} and \cs{depth} are available. +% +% \subsection{Symbol list} +% +% The macro names for the symbols in \LaTeX\ (LICR) are derived +% from Adobe's glyph names for these characters (\cite{aglfn}). +% Example: +% \begin{quote} +% U+2580 (\textupblock) with glyph name \textsf{upblock}: \cs{textupblock} +% \end{quote} +% Some glyph names start with |SF|, two individual digits follow and +% the name is closed by four digits zero. For the LICR name the +% two individual digits form a number that is converted to lowercase +% roman number. The trailing zeros are dropped. Example: +% \begin{quote} +% U+2556 (\textSFxxi) with glyph name \textsf{SF210000}: \cs{textSFxxi} +% \end{quote} +% +% The three gray symbols require package \xpackage{color}: +% \begin{quote} +% U+2591 (\textltshade) light shade: \cs{textltshade}\\ +% U+2592 (\textshade) medium shade: \cs{textshade}\\ +% U+2593 (\textdkshade) dark shade: \cs{textdkshade} +% \end{quote} +% +% It follows a list with all graphical symbols provided by this +% package: +% +% \begingroup +% \def\entrygen#1#2#3#4{% +% \fbox{\texttt{\csname text#3\endcsname}} +% & \texttt{U+25#1} +% & \texttt{#2} +% & \texttt{\textbackslash text#3} +% \\*[-\fboxsep] +% & +% \multicolumn{3}{l}{\lowercase{#4}}\\ +% } +% \def\entry#1#2{\entrygen{#1}{SF#20000}{SF\romannumeral#2}} +% \def\entryB#1#2{\entrygen{#1}{#2}{#2}} +% \begin{longtable}{clll} +% Symbol & Unicode & Glyph name & LICR\\ +% \hline +% \endhead +% \entry{00}{10}{BOX DRAWINGS LIGHT HORIZONTAL} +% \entry{02}{11}{BOX DRAWINGS LIGHT VERTICAL} +% \entry{0C}{01}{BOX DRAWINGS LIGHT DOWN AND RIGHT} +% \entry{10}{03}{BOX DRAWINGS LIGHT DOWN AND LEFT} +% \entry{14}{02}{BOX DRAWINGS LIGHT UP AND RIGHT} +% \entry{18}{04}{BOX DRAWINGS LIGHT UP AND LEFT} +% \entry{1C}{08}{BOX DRAWINGS LIGHT VERTICAL AND RIGHT} +% \entry{24}{09}{BOX DRAWINGS LIGHT VERTICAL AND LEFT} +% \entry{2C}{06}{BOX DRAWINGS LIGHT DOWN AND HORIZONTAL} +% \entry{34}{07}{BOX DRAWINGS LIGHT UP AND HORIZONTAL} +% \entry{3C}{05}{BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL} +% \entry{50}{43}{BOX DRAWINGS DOUBLE HORIZONTAL} +% \entry{51}{24}{BOX DRAWINGS DOUBLE VERTICAL} +% \entry{52}{51}{BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE} +% \entry{53}{52}{BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE} +% \entry{54}{39}{BOX DRAWINGS DOUBLE DOWN AND RIGHT} +% \entry{55}{22}{BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE} +% \entry{56}{21}{BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE} +% \entry{57}{25}{BOX DRAWINGS DOUBLE DOWN AND LEFT} +% \entry{58}{50}{BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE} +% \entry{59}{49}{BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE} +% \entry{5A}{38}{BOX DRAWINGS DOUBLE UP AND RIGHT} +% \entry{5B}{28}{BOX DRAWINGS UP SINGLE AND LEFT DOUBLE} +% \entry{5C}{27}{BOX DRAWINGS UP DOUBLE AND LEFT SINGLE} +% \entry{5D}{26}{BOX DRAWINGS DOUBLE UP AND LEFT} +% \entry{5E}{36}{BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE} +% \entry{5F}{37}{BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE} +% \entry{60}{42}{BOX DRAWINGS DOUBLE VERTICAL AND RIGHT} +% \entry{61}{19}{BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE} +% \entry{62}{20}{BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE} +% \entry{63}{23}{BOX DRAWINGS DOUBLE VERTICAL AND LEFT} +% \entry{64}{47}{BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE} +% \entry{65}{48}{BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE} +% \entry{66}{41}{BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL} +% \entry{67}{45}{BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE} +% \entry{68}{46}{BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE} +% \entry{69}{40}{BOX DRAWINGS DOUBLE UP AND HORIZONTAL} +% \entry{6A}{54}{BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE} +% \entry{6B}{53}{BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE} +% \entry{6C}{44}{BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL} +% \entryB{80}{upblock}{UPPER HALF BLOCK} +% \entryB{84}{dnblock}{LOWER HALF BLOCK} +% \entryB{88}{block}{FULL BLOCK} +% \entryB{8C}{lfblock}{LEFT HALF BLOCK} +% \entryB{90}{rtblock}{RIGHT HALF BLOCK} +% \entryB{91}{ltshade}{LIGHT SHADE} +% \entryB{92}{shade}{MEDIUM SHADE} +% \entryB{93}{dkshade}{DARK SHADE} +% \end{longtable} +% \endgroup +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \subsection{Identification} +% +% \begin{macrocode} +%<*package> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{pmboxdraw}% + [2006/05/03 v1.0 Poor man's box drawing characters (HO)] +% \end{macrocode} +% +% \subsection{Dummy font encoding} +% +% Using a dummy font encoding because of +% \begin{quote} +% |\usepackage[utf8]{inputenc}| +% \end{quote} +% \begin{macrocode} +\DeclareFontEncoding{pmboxdraw}{}{} +\DeclareFontFamily{pmboxdraw}{pmboxdraw}{} +\DeclareFontShape{pmboxdraw}{pmboxdraw}{m}{n}{ <-> cmr10 }{} +\DeclareFontSubstitution{pmboxdraw}{pmboxdraw}{m}{n} +% \end{macrocode} +% +% \subsection{Setup} +% +% \begin{macro}{\pmboxdrawbox} +% \begin{macrocode} +\newcommand*{\pmboxdrawbox}[1]{% + \def\pmbd@box{#1}% +} +\pmboxdrawbox{\strut0} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\pmboxdrawrulewidth} +% \begin{macrocode} +\newcommand*{\pmboxdrawrulewidth}[1]{% + \def\pmbd@rulewidth{#1}% +} +\pmboxdrawrulewidth{.1\width} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\pmboxdrawdoublerulesep} +% \begin{macrocode} +\newcommand*{\pmboxdrawdoublerulesep}[1]{% + \def\pmbd@doublerulesep{#1}% +} +\pmboxdrawdoublerulesep{.25\width} +% \end{macrocode} +% \end{macro} +% +% \subsection{Block elements} +% +% \begin{macrocode} +\def\pmbd@begin{% + \begingroup + \setbox\z@\hbox{\pmbd@box}% + \leavevmode + \setbox\tw@\hb@xt@\wd\z@\bgroup +} +\def\pmbd@end{% + \egroup + \ht\tw@\ht\z@ + \dp\tw@\dp\z@ + \box\tw@ + \endgroup +} +% \end{macrocode} +% +% \subsubsection{U+2580} UPPER HALF BLOCK +% \begin{macrocode} +\DeclareTextCommandDefault{\textupblock}{% + \pmbd@begin + \dimen@-\ht\z@ + \advance\dimen@\dp\z@ + \vrule\@width\wd\z@\@depth.5\dimen@ + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2584} LOWER HALF BLOCK +% \begin{macrocode} +\DeclareTextCommandDefault{\textdnblock}{% + \pmbd@begin + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \vrule\@width\wd\z@\@height.5\dimen@ + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2588} FULL BLOCK +% \begin{macrocode} +\DeclareTextCommandDefault{\textblock}{% + \pmbd@begin + \vrule\@width\wd\z@ + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+258C} LEFT HALF BLOCK +% \begin{macrocode} +\DeclareTextCommandDefault{\textlfblock}{% + \pmbd@begin + \vrule\@width.5\wd\z@ + \hfill + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2590} RIGHT HALF BLOCK +% \begin{macrocode} +\DeclareTextCommandDefault{\textrtblock}{% + \pmbd@begin + \hfill + \vrule\@width.5\wd\z@ + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2591} LIGHT SHADE +% \begin{macrocode} +\DeclareTextCommandDefault{\textltshade}{% + \pmbd@begin + \@ifundefined{textcolor}{% + \pmbd@colorwarning\textltshade + }{% + \textcolor[gray]{.75}% + }{% + \vrule\@width\wd\z@ + }% + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2592} MEDIUM SHADE +% \begin{macrocode} +\DeclareTextCommandDefault{\textshade}{% + \pmbd@begin + \@ifundefined{textcolor}{% + \pmbd@colorwarning\textshade + }{% + \textcolor[gray]{.5}% + }{% + \vrule\@width\wd\z@ + }% + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2593} DARK SHADE +% \begin{macrocode} +\DeclareTextCommandDefault{\textdkshade}{% + \pmbd@begin + \@ifundefined{textcolor}{% + \pmbd@colorwarning\textdkshade + }{% + \textcolor[gray]{.25}% + }{% + \vrule\@width\wd\z@ + }% + \pmbd@end +} +% \end{macrocode} +% +% \subsubsection{Color warning} +% +% \begin{macro}{\pmbd@colorwarning} +% \begin{macrocode} +\def\pmbd@colorwarning#1{% + \PackageWarning{pmboxdraw}{% + \string#1\space requires package \string`color\string'\MessageBreak + }% +% \PackageWarningNoLine{pmboxdraw}{% +% Package \string`color\string' is required for\MessageBreak +% \string\textltshade, \string\textshade, and \string\textdkshade +% }% +% \global\let\pmbd@colorwarning\@secondoftwo + \@firstofone +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Box drawing, light single lines} +% +% \begin{macro}{\pmbd@beginA} +% \begin{macrocode} +\def\pmbd@beginA{% + \pmbd@begin + \def\width{\wd\z@}% + \def\height{\ht\z@}% + \def\depth{\dp\z@}% + \setlength{\dimen@}{\pmbd@rulewidth}% + \edef\pmbd@rulewidth{\number\dimen@ sp}% +} +% \end{macrocode} +% \end{macro} +% +% \noindent +% \subsubsection{U+2500} BOX DRAWINGS LIGHT HORIZONTAL +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFx}{% + \pmbd@beginA + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \vrule\@width\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2502} BOX DRAWINGS LIGHT VERTICAL +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFxi}{% + \pmbd@beginA + \hss + \vrule\@width\pmbd@rulewidth + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+250C} BOX DRAWINGS LIGHT DOWN AND RIGHT +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFi}{% + \pmbd@beginA + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \hb@xt@\wd\z@{% + \hss + \vrule\@width\pmbd@rulewidth\@height.5\dimen@\@depth\dp\z@ + \hss + }% + }% + \hfill + \vrule\@width.5\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2510} BOX DRAWINGS LIGHT DOWN AND LEFT +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFiii}{% + \pmbd@beginA + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \hb@xt@\wd\z@{% + \hss + \vrule\@width\pmbd@rulewidth\@height.5\dimen@\@depth\dp\z@ + \hss + }% + }% + \vrule\@width.5\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + \hfill + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2514} BOX DRAWINGS LIGHT UP AND RIGHT +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFii}{% + \pmbd@beginA + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \hb@xt@\wd\z@{% + \hss + \vrule\@width\pmbd@rulewidth\@height\ht\z@\@depth-.5\dimen\tw@ + \hss + }% + }% + \hfill + \vrule\@width.5\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2518} BOX DRAWINGS LIGHT UP AND LEFT +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFiv}{% + \pmbd@beginA + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \hb@xt@\wd\z@{% + \hss + \vrule\@width\pmbd@rulewidth\@height\ht\z@\@depth-.5\dimen\tw@ + \hss + }% + }% + \vrule\@width.5\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + \hfill + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+251C} BOX DRAWINGS LIGHT VERTICAL AND RIGHT +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFviii}{% + \pmbd@beginA + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \hb@xt@\wd\z@{% + \hss + \vrule\@width\pmbd@rulewidth\@height\ht\z@\@depth\dp\z@ + \hss + }% + }% + \hfill + \vrule\@width.5\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2524} BOX DRAWINGS LIGHT VERTICAL AND LEFT +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFix}{% + \pmbd@beginA + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \hb@xt@\wd\z@{% + \hss + \vrule\@width\pmbd@rulewidth\@height\ht\z@\@depth\dp\z@ + \hss + }% + }% + \vrule\@width.5\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + \hfill + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+252C} BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFvi}{% + \pmbd@beginA + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \vrule\@width\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \hss + \vrule\@width\pmbd@rulewidth\@height.5\dimen@ + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2534} BOX DRAWINGS LIGHT UP AND HORIZONTAL +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFvii}{% + \pmbd@beginA + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \vrule\@width\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \hss + \vrule\@width\pmbd@rulewidth\@depth-.5\dimen\tw@ + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+253C} BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFv}{% + \pmbd@beginA + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \vrule\@width\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \hss + \vrule\@width\pmbd@rulewidth + \hss + \pmbd@end +} +% \end{macrocode} +% +% \subsection{Box drawing, double lines} +% +% \begin{macro}{\pmbd@beginB} +% \begin{macrocode} +\def\pmbd@beginB{% + \pmbd@beginA + \setlength{\dimen@}{\pmbd@doublerulesep}% + \edef\pmbd@doublesepH{\number\dimen@ sp}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\pmbd@beginC} +% \begin{macrocode} +\def\pmbd@beginC{% + \pmbd@beginB + \advance\dimen@\pmbd@rulewidth + \edef\pmbd@doublesepV{\number\dimen@ sp}% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{U+2550} BOX DRAWINGS DOUBLE HORIZONTAL +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFxliii}{% + \pmbd@beginC + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \advance\dimen@\pmbd@doublesepV + \advance\dimen\tw@\pmbd@doublesepV + \vrule\@width\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \advance\dimen@-\pmbd@doublesepV + \advance\dimen\tw@-\pmbd@doublesepV + \vrule\@width\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2551} BOX DRAWINGS DOUBLE VERTICAL +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFxxiv}{% + \pmbd@beginB + \hss + \vrule\@width\pmbd@rulewidth + \kern\pmbd@doublesepH + \vrule\@width\pmbd@rulewidth + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2552} BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFli}{% + \pmbd@beginC + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \kern.5\wd\z@ + \advance\dimen@-\pmbd@doublesepV + \advance\dimen\tw@-\pmbd@doublesepV + \vrule\@width.5\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \advance\dimen@\pmbd@doublesepV + \advance\dimen\tw@\pmbd@doublesepV + \rlap{% + \kern.5\wd\z@ + \vrule\@width.5\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \hss + \vrule\@width\pmbd@rulewidth\@height.5\dimen@ + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2553} BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFlii}{% + \pmbd@beginB + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \dimen4 \wd\z@ + \advance\dimen4 \pmbd@doublesepH + \hb@xt@\wd\z@{% + \hfill + \vrule\@width.5\dimen4 \@height.5\dimen@\@depth-.5\dimen\tw@ + }% + }% + \hss + \vrule\@width\pmbd@rulewidth\@height.5\dimen@ + \kern\pmbd@doublesepH + \vrule\@width\pmbd@rulewidth\@height.5\dimen@ + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2554} BOX DRAWINGS DOUBLE DOWN AND RIGHT +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFxxxix}{% + \pmbd@beginC + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \dimen4 \wd\z@ + \begingroup + \advance\dimen@\pmbd@doublesepV + \advance\dimen\tw@\pmbd@doublesepV + \advance\dimen4 \pmbd@doublesepH + \rlap{% + \hb@xt@\wd\z@{% + \hss + \vrule\@width.5\dimen4 \@height.5\dimen@\@depth-.5\dimen\tw@ + }% + }% + \rlap{% + \hb@xt@\wd\z@{% + \hss + \vrule\@width\pmbd@rulewidth\@height.5\dimen@\@depth\dp\z@ + \kern\pmbd@doublesepH + \kern\pmbd@rulewidth + \hss + }% + }% + \endgroup + \advance\dimen@-\pmbd@doublesepV + \advance\dimen\tw@-\pmbd@doublesepV + \advance\dimen4 -\pmbd@doublesepH + \rlap{% + \hb@xt@\wd\z@{% + \hss + \vrule\@width.5\dimen4 \@height.5\dimen@\@depth-.5\dimen\tw@ + }% + }% + \hss + \kern\pmbd@rulewidth + \kern\pmbd@doublesepH + \vrule\@width\pmbd@rulewidth\@height.5\dimen@ + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2555} BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFxxii}{% + \pmbd@beginC + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \advance\dimen@-\pmbd@doublesepV + \advance\dimen\tw@-\pmbd@doublesepV + \vrule\@width.5\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \advance\dimen@\pmbd@doublesepV + \advance\dimen\tw@\pmbd@doublesepV + \rlap{% + \vrule\@width.5\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \hss + \vrule\@width\pmbd@rulewidth\@height.5\dimen@ + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2556} BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFxxi}{% + \pmbd@beginB + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \dimen4 \wd\z@ + \advance\dimen4 \pmbd@doublesepH + \vrule\@width.5\dimen4 \@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \hss + \vrule\@width\pmbd@rulewidth\@height.5\dimen@ + \kern\pmbd@doublesepH + \vrule\@width\pmbd@rulewidth\@height.5\dimen@ + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2557} BOX DRAWINGS DOUBLE DOWN AND LEFT +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFxxv}{% + \pmbd@beginC + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \dimen4 \wd\z@ + \begingroup + \advance\dimen@\pmbd@doublesepV + \advance\dimen\tw@\pmbd@doublesepV + \advance\dimen4 \pmbd@doublesepH + \rlap{% + \vrule\@width.5\dimen4 \@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \rlap{% + \hb@xt@\wd\z@{% + \hss + \kern\pmbd@rulewidth + \kern\pmbd@doublesepH + \vrule\@width\pmbd@rulewidth\@height.5\dimen@\@depth\dp\z@ + \hss + }% + }% + \endgroup + \advance\dimen@-\pmbd@doublesepV + \advance\dimen\tw@-\pmbd@doublesepV + \advance\dimen4 -\pmbd@doublesepH + \rlap{% + \vrule\@width.5\dimen4 \@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \hss + \vrule\@width\pmbd@rulewidth\@height.5\dimen@ + \kern\pmbd@doublesepH + \kern\pmbd@rulewidth + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2558} BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFl}{% + \pmbd@beginC + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \advance\dimen@\pmbd@doublesepV + \advance\dimen\tw@\pmbd@doublesepV + \kern.5\wd\z@ + \vrule\@width.5\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \advance\dimen@-\pmbd@doublesepV + \advance\dimen\tw@-\pmbd@doublesepV + \rlap{% + \kern.5\wd\z@ + \vrule\@width.5\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \hss + \vrule\@width\pmbd@rulewidth\@depth-.5\dimen\tw@ + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2559} BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFxlix}{% + \pmbd@beginB + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \dimen4 \wd\z@ + \advance\dimen4 \pmbd@doublesepH + \hb@xt@\wd\z@{% + \hfill + \vrule\@width.5\dimen4 \@height.5\dimen@\@depth-.5\dimen\tw@ + }% + }% + \hss + \vrule\@width\pmbd@rulewidth\@depth-.5\dimen\tw@ + \kern\pmbd@doublesepH + \vrule\@width\pmbd@rulewidth\@depth-.5\dimen\tw@ + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+255A} BOX DRAWINGS DOUBLE UP AND RIGHT +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFxxxviii}{% + \pmbd@beginC + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \dimen4 \wd\z@ + \begingroup + \advance\dimen@\pmbd@doublesepV + \advance\dimen\tw@\pmbd@doublesepV + \advance\dimen4 -\pmbd@doublesepH + \rlap{% + \hb@xt@\wd\z@{% + \hss + \vrule\@width.5\dimen4 \@height.5\dimen@\@depth-.5\dimen\tw@ + }% + }% + \rlap{% + \hb@xt@\wd\z@{% + \hss + \kern\pmbd@rulewidth + \kern\pmbd@doublesepH + \vrule\@width\pmbd@rulewidth\@height\ht\z@\@depth-.5\dimen\tw@ + \hss + }% + }% + \endgroup + \advance\dimen@-\pmbd@doublesepV + \advance\dimen\tw@-\pmbd@doublesepV + \advance\dimen4 \pmbd@doublesepH + \rlap{% + \hb@xt@\wd\z@{% + \hss + \vrule\@width.5\dimen4 \@height.5\dimen@\@depth-.5\dimen\tw@ + }% + }% + \hss + \vrule\@width\pmbd@rulewidth\@depth-.5\dimen\tw@ + \kern\pmbd@doublesepH + \kern\pmbd@rulewidth + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+255B} BOX DRAWINGS UP SINGLE AND LEFT DOUBLE +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFxxviii}{% + \pmbd@beginC + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \advance\dimen@\pmbd@doublesepV + \advance\dimen\tw@\pmbd@doublesepV + \vrule\@width.5\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \advance\dimen@-\pmbd@doublesepV + \advance\dimen\tw@-\pmbd@doublesepV + \rlap{% + \vrule\@width.5\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \hss + \vrule\@width\pmbd@rulewidth\@depth-.5\dimen\tw@ + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+255C} BOX DRAWINGS UP DOUBLE AND LEFT SINGLE +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFxxvii}{% + \pmbd@beginB + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \dimen4 \wd\z@ + \advance\dimen4 \pmbd@doublesepH + \vrule\@width.5\dimen4 \@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \hss + \vrule\@width\pmbd@rulewidth\@depth-.5\dimen\tw@ + \kern\pmbd@doublesepH + \vrule\@width\pmbd@rulewidth\@depth-.5\dimen\tw@ + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+255D} BOX DRAWINGS DOUBLE UP AND LEFT +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFxxvi}{% + \pmbd@beginC + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \dimen4 \wd\z@ + \begingroup + \advance\dimen@\pmbd@doublesepV + \advance\dimen\tw@\pmbd@doublesepV + \advance\dimen4 -\pmbd@doublesepH + \rlap{% + \vrule\@width.5\dimen4 \@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \rlap{% + \hb@xt@\wd\z@{% + \hss + \vrule\@width\pmbd@rulewidth\@height\ht\z@\@depth-.5\dimen\tw@ + \kern\pmbd@doublesepH + \kern\pmbd@rulewidth + \hss + }% + }% + \endgroup + \advance\dimen@-\pmbd@doublesepV + \advance\dimen\tw@-\pmbd@doublesepV + \advance\dimen4 \pmbd@doublesepH + \rlap{% + \vrule\@width.5\dimen4 \@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \hss + \kern\pmbd@rulewidth + \kern\pmbd@doublesepH + \vrule\@width\pmbd@rulewidth\@depth-.5\dimen\tw@ + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+255E} BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFxxxvi}{% + \pmbd@beginC + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \kern.5\wd\z@ + \advance\dimen@\pmbd@doublesepV + \advance\dimen\tw@\pmbd@doublesepV + \vrule\@width.5\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \rlap{% + \kern.5\wd\z@ + \advance\dimen@-\pmbd@doublesepV + \advance\dimen\tw@-\pmbd@doublesepV + \vrule\@width.5\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \hss + \vrule\@width\pmbd@rulewidth + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+255F} BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFxxxvii}{% + \pmbd@beginB + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \dimen4 \wd\z@ + \advance\dimen4 -\pmbd@doublesepH + \hb@xt@\wd\z@{% + \hfill + \vrule\@width.5\dimen4 \@height.5\dimen@\@depth-.5\dimen\tw@ + }% + }% + \hss + \vrule\@width\pmbd@rulewidth + \kern\pmbd@doublesepH + \vrule\@width\pmbd@rulewidth + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2560} BOX DRAWINGS DOUBLE VERTICAL AND RIGHT +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFxlii}{% + \pmbd@beginC + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \dimen4 \wd\z@ + \advance\dimen4 -\pmbd@doublesepH + \begingroup + \advance\dimen@\pmbd@doublesepV + \advance\dimen\tw@\pmbd@doublesepV + \rlap{% + \hb@xt@\wd\z@{% + \hss + \vrule\@width.5\dimen4 \@height.5\dimen@\@depth-.5\dimen\tw@ + }% + }% + \rlap{% + \hb@xt@\wd\z@{% + \hss + \kern\pmbd@rulewidth + \kern\pmbd@doublesepH + \vrule\@width\pmbd@rulewidth\@height\ht\z@\@depth-.5\dimen\tw@ + \hss + }% + }% + \endgroup + \advance\dimen@-\pmbd@doublesepV + \advance\dimen\tw@-\pmbd@doublesepV + \rlap{% + \hb@xt@\wd\z@{% + \hss + \vrule\@width.5\dimen4 \@height.5\dimen@\@depth-.5\dimen\tw@ + }% + }% + \hss + \vrule\@width\pmbd@rulewidth + \kern\pmbd@doublesepH + \vrule\@width\pmbd@rulewidth\@height.5\dimen@ + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2561} BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFxix}{% + \pmbd@beginC + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \advance\dimen@\pmbd@doublesepV + \advance\dimen\tw@\pmbd@doublesepV + \vrule\@width.5\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \rlap{% + \advance\dimen@-\pmbd@doublesepV + \advance\dimen\tw@-\pmbd@doublesepV + \vrule\@width.5\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \hss + \vrule\@width\pmbd@rulewidth + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2562} BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFxx}{% + \pmbd@beginB + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \dimen4 \wd\z@ + \advance\dimen4 -\pmbd@doublesepH + \vrule\@width.5\dimen4 \@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \hss + \vrule\@width\pmbd@rulewidth + \kern\pmbd@doublesepH + \vrule\@width\pmbd@rulewidth + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2563} BOX DRAWINGS DOUBLE VERTICAL AND LEFT +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFxxiii}{% + \pmbd@beginC + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \dimen4 \wd\z@ + \advance\dimen4 -\pmbd@doublesepH + \begingroup + \advance\dimen@\pmbd@doublesepV + \advance\dimen\tw@\pmbd@doublesepV + \rlap{% + \vrule\@width.5\dimen4 \@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \rlap{% + \hb@xt@\wd\z@{% + \hss + \vrule\@width\pmbd@rulewidth\@height\ht\z@\@depth-.5\dimen\tw@ + \kern\pmbd@doublesepH + \kern\pmbd@rulewidth + \hss + }% + }% + \endgroup + \advance\dimen@-\pmbd@doublesepV + \advance\dimen\tw@-\pmbd@doublesepV + \rlap{% + \vrule\@width.5\dimen4 \@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \hss + \vrule\@width\pmbd@rulewidth\@height.5\dimen@ + \kern\pmbd@doublesepH + \vrule\@width\pmbd@rulewidth + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2564} BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFxlvii}{% + \pmbd@beginC + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \advance\dimen@\pmbd@doublesepV + \advance\dimen\tw@\pmbd@doublesepV + \vrule\@width\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \advance\dimen@-\pmbd@doublesepV + \advance\dimen\tw@-\pmbd@doublesepV + \rlap{% + \vrule\@width\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \hss + \vrule\@width\pmbd@rulewidth\@height.5\dimen@ + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2565} BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFxlviii}{% + \pmbd@beginB + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \vrule\@width\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \hss + \vrule\@width\pmbd@rulewidth\@height.5\dimen@ + \kern\pmbd@doublesepH + \vrule\@width\pmbd@rulewidth\@height.5\dimen@ + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2566} BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFxli}{% + \pmbd@beginC + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \dimen4 \wd\z@ + \advance\dimen4 -\pmbd@doublesepH + \rlap{% + \advance\dimen@\pmbd@doublesepV + \advance\dimen\tw@\pmbd@doublesepV + \vrule\@width\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \advance\dimen@-\pmbd@doublesepV + \advance\dimen\tw@-\pmbd@doublesepV + \rlap{% + \hb@xt@\wd\z@{% + \vrule\@width.5\dimen4 \@height.5\dimen@\@depth-.5\dimen\tw@ + \hss + \vrule\@width.5\dimen4 \@height.5\dimen@\@depth-.5\dimen\tw@ + }% + }% + \hss + \vrule\@width\pmbd@rulewidth\@height.5\dimen@ + \kern\pmbd@doublesepH + \vrule\@width\pmbd@rulewidth\@height.5\dimen@ + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2567} BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFxlv}{% + \pmbd@beginC + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \advance\dimen@-\pmbd@doublesepV + \advance\dimen\tw@-\pmbd@doublesepV + \vrule\@width\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \advance\dimen@\pmbd@doublesepV + \advance\dimen\tw@\pmbd@doublesepV + \rlap{% + \vrule\@width\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \hss + \vrule\@width\pmbd@rulewidth\@depth-.5\dimen\tw@ + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2568} BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFxlvi}{% + \pmbd@beginB + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \vrule\@width\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \hss + \vrule\@width\pmbd@rulewidth\@depth-.5\dimen\tw@ + \kern\pmbd@doublesepH + \vrule\@width\pmbd@rulewidth\@depth-.5\dimen\tw@ + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+2569} BOX DRAWINGS DOUBLE UP AND HORIZONTAL +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFxl}{% + \pmbd@beginC + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \dimen4 \wd\z@ + \advance\dimen4 -\pmbd@doublesepH + \begingroup + \advance\dimen@\pmbd@doublesepV + \advance\dimen\tw@\pmbd@doublesepV + \rlap{% + \hb@xt@\wd\z@{% + \vrule\@width.5\dimen4 \@height.5\dimen@\@depth-.5\dimen\tw@ + \hss + \vrule\@width.5\dimen4 \@height.5\dimen@\@depth-.5\dimen\tw@ + }% + }% + \rlap{% + \hb@xt@\wd\z@{% + \hss + \vrule\@width\pmbd@rulewidth\@height\ht\z@\@depth-.5\dimen\tw@ + \kern\pmbd@doublesepH + \vrule\@width\pmbd@rulewidth\@height\ht\z@\@depth-.5\dimen\tw@ + \hss + }% + }% + \endgroup + \advance\dimen@-\pmbd@doublesepV + \advance\dimen\tw@-\pmbd@doublesepV + \vrule\@width\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+256A} BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFliv}{% + \pmbd@beginC + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \advance\dimen@\pmbd@doublesepV + \advance\dimen\tw@\pmbd@doublesepV + \vrule\@width\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \rlap{% + \advance\dimen@-\pmbd@doublesepV + \advance\dimen\tw@-\pmbd@doublesepV + \vrule\@width\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \hss + \vrule\@width\pmbd@rulewidth + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+256B} BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFliii}{% + \pmbd@beginB + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \rlap{% + \vrule\@width\wd\z@\@height.5\dimen@\@depth-.5\dimen\tw@ + }% + \hss + \vrule\@width\pmbd@rulewidth + \kern\pmbd@doublesepH + \vrule\@width\pmbd@rulewidth + \hss + \pmbd@end +} +% \end{macrocode} +% \subsubsection{U+256C} BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL +% \begin{macrocode} +\DeclareTextCommandDefault{\textSFxliv}{% + \pmbd@beginC + \dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \dimen\tw@\dimen@ + \advance\dimen@\pmbd@rulewidth + \advance\dimen\tw@-\pmbd@rulewidth + \dimen4 \wd\z@ + \advance\dimen4 -\pmbd@doublesepH + \begingroup + \advance\dimen@\pmbd@doublesepV + \advance\dimen\tw@\pmbd@doublesepV + \rlap{% + \hb@xt@\wd\z@{% + \vrule\@width.5\dimen4 \@height.5\dimen@\@depth-.5\dimen\tw@ + \hss + \vrule\@width.5\dimen4 \@height.5\dimen@\@depth-.5\dimen\tw@ + }% + }% + \rlap{% + \hb@xt@\wd\z@{% + \hss + \vrule\@width\pmbd@rulewidth\@height\ht\z@\@depth-.5\dimen\tw@ + \kern\pmbd@doublesepH + \vrule\@width\pmbd@rulewidth\@height\ht\z@\@depth-.5\dimen\tw@ + \hss + }% + }% + \endgroup + \advance\dimen@-\pmbd@doublesepV + \advance\dimen\tw@-\pmbd@doublesepV + \rlap{% + \hb@xt@\wd\z@{% + \vrule\@width.5\dimen4 \@height.5\dimen@\@depth-.5\dimen\tw@ + \hss + \vrule\@width.5\dimen4 \@height.5\dimen@\@depth-.5\dimen\tw@ + }% + }% + \hss + \vrule\@width\pmbd@rulewidth\@height.5\dimen@ + \kern\pmbd@doublesepH + \vrule\@width\pmbd@rulewidth\@height.5\dimen@ + \hss + \pmbd@end +} +% \end{macrocode} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% +% \subsection{Unicode support file} +% +% \begin{macrocode} +%<*utf8> +\ProvidesFile{pmboxdrawenc.dfu}% + [2006/05/03 v1.0 UTF-8 support for box drawing characters] +% \end{macrocode} +% +% \begin{macrocode} +\DeclareUnicodeCharacter{2500}{\textSFx} +\DeclareUnicodeCharacter{2502}{\textSFxi} +\DeclareUnicodeCharacter{250C}{\textSFi} +\DeclareUnicodeCharacter{2510}{\textSFiii} +\DeclareUnicodeCharacter{2514}{\textSFii} +\DeclareUnicodeCharacter{2518}{\textSFiv} +\DeclareUnicodeCharacter{251C}{\textSFviii} +\DeclareUnicodeCharacter{2524}{\textSFix} +\DeclareUnicodeCharacter{252C}{\textSFvi} +\DeclareUnicodeCharacter{2534}{\textSFvii} +\DeclareUnicodeCharacter{253C}{\textSFv} +\DeclareUnicodeCharacter{2550}{\textSFxliii} +\DeclareUnicodeCharacter{2551}{\textSFxxiv} +\DeclareUnicodeCharacter{2552}{\textSFli} +\DeclareUnicodeCharacter{2553}{\textSFlii} +\DeclareUnicodeCharacter{2554}{\textSFxxxix} +\DeclareUnicodeCharacter{2555}{\textSFxxii} +\DeclareUnicodeCharacter{2556}{\textSFxxi} +\DeclareUnicodeCharacter{2557}{\textSFxxv} +\DeclareUnicodeCharacter{2558}{\textSFl} +\DeclareUnicodeCharacter{2559}{\textSFxlix} +\DeclareUnicodeCharacter{255A}{\textSFxxxviii} +\DeclareUnicodeCharacter{255B}{\textSFxxviii} +\DeclareUnicodeCharacter{255C}{\textSFxxvii} +\DeclareUnicodeCharacter{255D}{\textSFxxvi} +\DeclareUnicodeCharacter{255E}{\textSFxxxvi} +\DeclareUnicodeCharacter{255F}{\textSFxxxvii} +\DeclareUnicodeCharacter{2560}{\textSFxlii} +\DeclareUnicodeCharacter{2561}{\textSFxix} +\DeclareUnicodeCharacter{2562}{\textSFxx} +\DeclareUnicodeCharacter{2563}{\textSFxxiii} +\DeclareUnicodeCharacter{2564}{\textSFxlvii} +\DeclareUnicodeCharacter{2565}{\textSFxlviii} +\DeclareUnicodeCharacter{2566}{\textSFxli} +\DeclareUnicodeCharacter{2567}{\textSFxlv} +\DeclareUnicodeCharacter{2568}{\textSFxlvi} +\DeclareUnicodeCharacter{2569}{\textSFxl} +\DeclareUnicodeCharacter{256A}{\textSFliv} +\DeclareUnicodeCharacter{256B}{\textSFliii} +\DeclareUnicodeCharacter{256C}{\textSFxliv} +\DeclareUnicodeCharacter{2580}{\textupblock} +\DeclareUnicodeCharacter{2584}{\textdnblock} +\DeclareUnicodeCharacter{2588}{\textblock} +\DeclareUnicodeCharacter{258C}{\textlfblock} +\DeclareUnicodeCharacter{2590}{\textrtblock} +\DeclareUnicodeCharacter{2591}{\textltshade} +\DeclareUnicodeCharacter{2592}{\textshade} +\DeclareUnicodeCharacter{2593}{\textdkshade} +% \end{macrocode} +% +% \begin{macrocode} +%</utf8> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/pmboxdraw.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/pmboxdraw.pdf}] Documentation. +% \end{description} +% +% \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 pmboxdraw.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@{}} +% pmboxdraw.sty & tex/latex/oberdiek/pmboxdraw.sty\\ +% pmboxdrawenc.dfu & tex/latex/oberdiek/pmboxdrawenc.dfu\\ +% pmboxdraw.pdf & doc/latex/oberdiek/pmboxdraw.pdf\\ +% pmboxdraw.dtx & source/latex/oberdiek/pmboxdraw.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 pmboxdraw.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{pmboxdraw.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 pmboxdraw.dtx +%makeindex -s gind.ist pmboxdraw.idx +%pdflatex pmboxdraw.dtx +%makeindex -s gind.ist pmboxdraw.idx +%pdflatex pmboxdraw.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{thebibliography}{9} +% +% \bibitem{inputenx} +% Heiko Oberdiek, The \xpackage{inputenx} Package (Enhanced input encoding +% handling), 2006/03/05 v1.0, +% \url{ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/oberdiek/inputenx.pdf}. +% +% \bibitem{aglfn} +% Adobe Systems Incorporated, +% Adobe Glyph List for New Fonts (AGLFN), version 1.5, 2005/09/18, +% \url{http://partners.adobe.com/public/developer/en/opentype/aglfn13.txt}. +% +% \bibitem{2500} +% Unicode Inc., +% The Unicode Standard, Version 4.1, Box Drawing, Range: 2500--257F, +% 2005. +% \url{http://www.unicode.org/charts/PDF/U2500.pdf} +% +% \bibitem{2580} +% Unicode Inc., +% The Unicode Standard, Version 4.1, Block Elements, Range: 2580--259F, +% 2005. +% \url{http://www.unicode.org/charts/PDF/U2580.pdf} +% +% \end{thebibliography} +% +% \begin{History} +% \begin{Version}{2006/03/14 v1.0} +% \item +% First version. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/readme-ctan.txt b/Master/texmf-dist/source/latex/oberdiek/readme-ctan.txt new file mode 100644 index 00000000000..261c28974e6 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/readme-ctan.txt @@ -0,0 +1,43 @@ +README 2006/08/26 + +This file describes the directory + CTAN:macros/latex/contrib/oberdiek/ + +It contains several packages: + <package>.dtx: source code + <package>.pdf: documentation +The PDF file also embeds the source code. Thus it is enough to +download the PDF file, if you want to have the package. +See the section `Installation' how to unpack and install the +package in more detail. Here just short instructions are given: + 1a. Download the DTX source file and the PDF documentation. + 1b. Or skip the DTX source download and extract the embedded + source file, e.g.: + pdftk <package>.pdf unpack_files output . + 2. Unpack the package using docstrip: + tex <package>.dtx + 3. Install the files in your preferred TDS (texmf) tree. + +Installation is easier, if you want to install all packages: +Just download oberdiek-tds.zip and unzip it in your preferred +TDS (texmf) tree. + +Hint for attachfile2: This package comes with a Perl script pdfatfi.pl +that should be installed somewhere in PATH as `pdfatfi', see also +package documentation. + +Hints for users of old PDF viewer software (AR <= 5) that cannot +read PDF-1.5 files. Only the PDF files in oberdiek-tds.zip uses +the compression features of PDF-1.5 to get smaller file sizes. +If you must support older PDF viewers, then use the PDF files in +the CTAN directory that do not use the new compression features. + +Other files in the CTAN directory: +* README: This file. +* oberdiek.tex, oberdiek.pdf: + Table of contents of all packages in the directory. + It contains the table of contents and the abstract of the packages. + The name is a convenience to users of the program `texdoc'. + +Happy TeXing + Heiko Oberdiek <oberdiek at uni-freiburg.de> diff --git a/Master/texmf-dist/source/latex/oberdiek/refcount.dtx b/Master/texmf-dist/source/latex/oberdiek/refcount.dtx index 5a2fcbf7fef..fd72b512a20 100644 --- a/Master/texmf-dist/source/latex/oberdiek/refcount.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/refcount.dtx @@ -9,7 +9,7 @@ % 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 2003/12/01 or later. +% LaTeX version 2005/12/01 or later. % % This work has the LPPL maintenance status "maintained". % @@ -29,7 +29,7 @@ % (b) Without refcount.ins: % tex refcount.dtx % (c) If you insist on using LaTeX -% latex \install=y\input{refcount.dtx} +% latex \let\install=y\input{refcount.dtx} % (quote the arguments according to the demands of your shell) % % Documentation: @@ -86,7 +86,7 @@ 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 2003/12/01 or later. +LaTeX version 2005/12/01 or later. This work has the LPPL maintenance status "maintained". @@ -468,8 +468,6 @@ and the derived files % these. For example, \teTeX\ users run \verb|texhash| or % \verb|mktexlsr|. % -% Now the installation is complete. -% % \subsection{Some details for the interested} % % \paragraph{Attached source.} diff --git a/Master/texmf-dist/source/latex/oberdiek/setouterhbox.dtx b/Master/texmf-dist/source/latex/oberdiek/setouterhbox.dtx new file mode 100644 index 00000000000..73a2fc69d55 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/setouterhbox.dtx @@ -0,0 +1,821 @@ +% \iffalse meta-comment +% +% Copyright (C) 2005, 2006 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 setouterhbox.dtx +% and the derived files +% setouterhbox.sty, setouterhbox.pdf, setouterhbox.ins, setouterhbox.drv, +% setouterhbox-example.tex. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/setouterhbox.dtx +% CTAN:macros/latex/contrib/oberdiek/setouterhbox.pdf +% +% Unpacking: +% (a) If setouterhbox.ins is present: +% tex setouterhbox.ins +% (b) Without setouterhbox.ins: +% tex setouterhbox.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{setouterhbox.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If setouterhbox.drv is present: +% latex setouterhbox.drv +% (b) Without setouterhbox.drv: +% latex setouterhbox.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 setouterhbox.dtx +% makeindex -s gind.ist setouterhbox.idx +% pdflatex setouterhbox.dtx +% makeindex -s gind.ist setouterhbox.idx +% pdflatex setouterhbox.dtx +% +% Installation: +% TDS:tex/generic/oberdiek/setouterhbox.sty +% TDS:doc/latex/oberdiek/setouterhbox.pdf +% TDS:doc/latex/oberdiek/setouterhbox-example.tex +% TDS:source/latex/oberdiek/setouterhbox.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: setouterhbox 2006/08/26 v1.4 Set hbox in outer horizontal mode (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2005, 2006 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 setouterhbox.dtx +and the derived files + setouterhbox.sty, setouterhbox.pdf, setouterhbox.ins, setouterhbox.drv, + setouterhbox-example.tex. + +\endpreamble + +\generate{% + \file{setouterhbox.ins}{\from{setouterhbox.dtx}{install}}% + \file{setouterhbox.drv}{\from{setouterhbox.dtx}{driver}}% + \usedir{tex/generic/oberdiek}% + \file{setouterhbox.sty}{\from{setouterhbox.dtx}{package}}% + \usedir{doc/latex/oberdiek}% + \file{setouterhbox-example.tex}{\from{setouterhbox.dtx}{example}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* setouterhbox.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `setouterhbox.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{setouterhbox.drv}% + [2006/08/26 v1.4 Set hbox in outer horizontal mode (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\begin{document} + \DocInput{setouterhbox.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{322} +% +% \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{setouterhbox.drv} +% +% \title{The \xpackage{setouterhbox} package} +% \date{2006/08/26 v1.4} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% If math stuff is set in an \cs{hbox}, then TeX +% performs some optimization and omits the implicite +% penalties \cs{binoppenalty} and \cs{relpenalty}. +% This packages tries to put stuff into an \cs{hbox} +% without getting lost of those penalties. +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% \subsection{Introduction} +% +% There is a situation in \xpackage{hyperref}'s driver for dvips +% where the user wants to have links that can be broken across +% lines. However dvips doesn't support the feature. With option +% \xoption{breaklinks} \xpackage{hyperref} sets the links as +% usual, put them in a box and write the link data with +% box dimensions into the appropriate \cs{special}s. +% Then, however, it does not set the complete unbreakable +% box, but it unwrappes the material inside to allow line +% breaks. Of course line breaking and glue setting will falsify +% the link dimensions, but line breaking was more important +% for the user. +% +% \subsection{Acknowledgement} +% +% Jonathan Fine, Donald Arsenau and me discussed the problem +% in the newsgroup \xnewsgroup{comp.text.tex} where Damian +% Menscher has started the thread, see \cite{newsstart}. +% +% The discussion was productive and generated many ideas +% and code examples. In order to have a more permanent +% result I wrote this package and tried to implement +% most of the ideas, a kind of summary of the discussion. +% Thus I want and have to thank Jonathan Fine and Donald Arsenau +% very much. +% +% Two weeks later David Kastrup (posting in +% \xnewsgroup{comp.text.tex}, \cite{kastrup}) +% remembered an old article of Michael Downes (\cite{downes}) +% in TUGboat, where Michael Downes already presented the +% method we discuss here. Nowadays we have \eTeX\ that extends +% the tool set of a \TeX\ macro programmer. Especially useful +% \eTeX\ was in this package for detecting and dealing with +% errorneous situations. +% +% However also nowadays a perfect solution for the problem +% is still missing at macro level. Probably someone has +% to go deep in the internals of the \TeX\ compiler to +% implement a switch that let penalties stay where otherwise +% \TeX\ would remove them for optimization reasons. +% +% \subsection{Usage} +% +% \paragraph{Package loading.} +% \LaTeX: as usually: +% \begin{quote} +% |\usepackage{setouterhbox}| +% \end{quote} +% The package can also be included directly, thus \plainTeX\ users +% write: +% \begin{quote} +% |\input setouterhbox.sty| +% \end{quote} +% +% \paragraph{Register allocation.} +% The material will be put into a box, thus we need to know these +% box number. If you need to allocate a new box register: +% \begin{description} +% \item[\LaTeX:] |\newsavebox{\|\meta{name}|}| +% \item[\plainTeX:] |\newbox\|\meta{name} +% \end{description} +% Then |\|\meta{name} is a command that held the box number. +% +% \paragraph{Box wrapping.} +% \LaTeX\ users put the material in the box with an environment +% similar to \texttt{lrbox}. The environment \texttt{setouterhbox} +% uses the same syntax and offers the same features, such +% as verbatim stuff inside: +% \begin{quote} +% |\begin{setouterhbox}{|\meta{box number}|}|\dots +% |\end{setouterhbox}| +% \end{quote} +% Users with \plainTeX\ do not have environments, they use instead: +% \begin{quote} +% |setouterhbox{|\meta{box number}|}|\dots|\endsetouterhbox| +% \end{quote} +% In both cases the material is put into an \cs{hbox} and assigned +% to the given box, denoted by \meta{box number}. Note the +% assignment is local, the same way \texttt{lrbox} behaves. +% +% \paragraph{Unwrapping.} +% The box material is ready for unwrapping: +% \begin{quote} +% |\unhbox\|\meta{box number} +% \end{quote} +% +% \subsection{Option \xoption{hyperref}} +% +% Package url uses math mode for typesetting urls. +% Break points are inserted by \cs{binoppenalty} and +% \cs{relpenalty}. Unhappily these break points are +% removed, if \xpackage{hyperref} +% is used with option {breaklinks} +% and drivers that depend on \xoption{pdfmark}: +% \xoption{dvips}, \xoption{vtexpdfmark}, \xoption{textures}, +% and \xoption{dvipsone}. +% Thus the option \xoption{hyperref} enables the method +% of this package to avoid the removal of \cs{relpenalty} +% and \cs{binoppenalty}. Thus you get more break points. +% However, the link areas are still wrong for these +% drivers, because they are not supporting broken +% links. +% +% Note, you need version 2006/08/16 v6.75c of package \xpackage{hyperref}, +% because starting with this version the necessary hook is provided +% that package \xpackage{setouterhbox} uses. +% \begin{quote} +% |\usepackage[|\dots|]{hyperref}[2006/08/16]|\\ +% |\usepackage[hyperref]{setouterhbox}| +% \end{quote} +% Package order does not matter. +% +% \subsection{Example} +% +% \begin{macrocode} +%<*example> +\documentclass[a5paper]{article} +\usepackage{url}[2005/06/27] +\usepackage{setouterhbox} + +\newsavebox{\testbox} + +\setlength{\parindent}{0pt} +\setlength{\parskip}{2em} + +\begin{document} +\raggedright + +\url{http://this.is.a.very.long.host.name/followed/% +by/a/very_long_long_long_path.html}% + +\sbox\testbox{% + \url{http://this.is.a.very.long.host.name/followed/% + by/a/very_long_long_long_path.html}% +}% +\unhbox\testbox + +\begin{setouterhbox}{\testbox}% + \url{http://this.is.a.very.long.host.name/followed/% + by/a/very_long_long_long_path.html}% +\end{setouterhbox} +\unhbox\testbox + +\end{document} +%</example> +% \end{macrocode} +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% Internal macros are prefixed by \cs{setouterhbox}, |@| is +% not used inside names, thus we do not need to care of its +% catcode if we are not using it as \LaTeX\ package. +% +% \subsection{Package start stuff} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% Prevent reloading more than one, necessary for \plainTeX: +% \begin{macrocode} +\begingroup + \expandafter\let\expandafter\x\csname ver@setouterhbox.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{setouterhbox}{The package is already loaded}% + \endgroup + \expandafter\endinput + \fi +\endgroup +% \end{macrocode} +% +% Package identification: +% \begin{macrocode} +\begingroup + \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@setouterhbox.sty\endcsname +\ProvidesPackage{setouterhbox}% + [2006/08/26 v1.4 Set hbox in outer horizontal mode (HO)] +% \end{macrocode} +% +% \begin{macro}{\setouterhboxBox} +% The method requires a global box assignment. To be on the +% safe side, a new box register is allocated for this +% global box assignment. +% \begin{macrocode} +\newbox\setouterhboxBox +% \end{macrocode} +% \end{macro} +% +% \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 +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Main part} +% +% eTeX provides much better means for checking +% error conditions. Thus lines marked by "E" are executed +% if eTeX is available, otherwise the lines marked by "T" are +% used. +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname lastnodetype\endcsname\relax + \catcode`T=9 % ignore + \catcode`E=14 % comment +\else + \catcode`T=14 % comment + \catcode`E=9 % ignore +\fi +% \end{macrocode} +% +% \begin{macro}{\setouterhboxRemove} +% Remove all kern, glue, and penalty nodes; +% poor man's version, if \eTeX\ is not available +% \begin{macrocode} +\def\setouterhboxRemove{% +E \ifnum\lastnodetype<11 % +E \else +E \ifnum\lastnodetype>13 % +E \else + \unskip\unkern\unpenalty +E \expandafter\expandafter\expandafter\setouterhboxRemove +E \fi +E \fi +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\setouterhbox} +% Passing the box contents by macro parameter would prevent +% catcode changes in the box contents like by \cs{verb}. +% Also \cs{bgroup} and \cs{egroup} does not work, because stuff +% has to be added at the begin and end of the box, thus +% the syntax +% |\setouterhbox{|\meta{box number}|}|\dots|\endsetouterhbox| +% is used. Also we automatically get an environment \texttt{setouterhbox} +% if \LaTeX\ is used. +% \begin{macrocode} +\def\setouterhbox#1{% + \begingroup + \def\setouterhboxNum{#1}% + \setbox0\vbox\bgroup +T \kern.123pt\relax % marker +T \kern0pt\relax % removed by \setouterhboxRemove + \begingroup + \everypar{}% + \noindent +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\endsetouterhbox} +% Most of the work is done in the end part, thus the heart of +% the method follows: +% \begin{macrocode} +\def\endsetouterhbox{% + \endgroup +% \end{macrocode} +% Omit the first pass to get the penalties +% of the second pass. +% \begin{macrocode} + \pretolerance-1 % +% \end{macrocode} +% We don't want a third pass with \cs{emergencystretch}. +% \begin{macrocode} + \tolerance10000 % + \hsize\maxdimen +% \end{macrocode} +% Line is not underfull: +% \begin{macrocode} + \parfillskip 0pt plus 1filll\relax + \leftskip0pt\relax +% \end{macrocode} +% Suppress underful \cs{hbox} warnings, +% is explicit line breaks are used. +% \begin{macrocode} + \rightskip0pt plus 1fil\relax + \everypar{}% +% \end{macrocode} +% Ensure that there is a paragraph and +% prevents \cs{endgraph} from eating terminal glue: +% \begin{macrocode} + \kern0pt% + \endgraf + \setouterhboxRemove +E \ifnum\lastnodetype=1 % +E \global\setbox\setouterhboxBox\lastbox +E \loop +E \setouterhboxRemove +E \ifnum\lastnodetype=1 % +E \setbox0=\lastbox +E \global\setbox\setouterhboxBox=\hbox{% +E \unhbox0 % +% \end{macrocode} +% Remove \cs{rightskip}, a penalty with -10000 is part of the previous line. +% \begin{macrocode} +E \unskip +E \unhbox\setouterhboxBox +E }% +E \repeat +E \else +E \setouterhboxFailure{% +E Something is wrong% +E }{% +E Could not find expected line.% +E \MessageBreak +E (\string\lastnodetype: \number\lastnodetype, expected: 1)% +E }% +E \fi +E \setouterhboxRemove +T \global\setbox\setouterhboxBox\lastbox +T \loop +T \setouterhboxRemove +T \setbox0=\lastbox +T \ifcase\ifvoid0 1\else0\fi +T \global\setbox\setouterhboxBox=\hbox{% +T \unhbox0 % +% \end{macrocode} +% Remove \cs{rightskip}, a penalty with -10000 is part of the previous line. +% \begin{macrocode} +T \unskip +T \unhbox\setouterhboxBox +T }% +T \repeat +T \ifdim.123pt=\lastkern +T \else +T \setouterhboxFailure{% +T Something is wrong% +T }{% +T Unexpected stuff was detected before the line.% +T }% +T \fi +T \egroup +T \ifcase \ifnum\wd0=0 \else 1\fi +T \ifdim\ht0=.123pt \else 1\fi +T \ifnum\dp0=0 \else 1\fi +T 0 % +E \ifnum\lastnodetype=-1 % +% \end{macrocode} +% There was just one line that we have caught. +% \begin{macrocode} + \else + \setouterhboxFailure{% + Something is wrong% + }{% + After fetching the line there is more unexpected stuff.% +E \MessageBreak +E (\string\lastnodetype: \number\lastnodetype, expected: -1)% + }% + \fi +E \egroup + \expandafter\endgroup + \expandafter\setouterhboxFinish\expandafter{% + \number\setouterhboxNum + }% +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Environment support} +% +% Check \cs{@currenvir} for the case that \cs{setouterhbox} +% was called as environment. Then the box assignment +% must be put after the \cs{endgroup} of |\end{|\dots|}|. +% \begin{macrocode} +\def\setouterhboxCurr{setouterhbox} +\def\setouterhboxLast#1{% + \setbox#1\hbox{% + \unhbox\setouterhboxBox + \unskip % remove \rightskip glue + \unskip % remove \parfillskip glue + \unpenalty % remove paragraph ending \penalty 10000 + \unkern % remove explicit kern inserted above + }% +} +% \end{macrocode} +% \begin{macro}{\setouterhboxFinish} +% |#1| is an explicit number. +% \begin{macrocode} +\def\setouterhboxFinish#1{% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname @currenvir\endcsname\setouterhboxCurr + \aftergroup\setouterhboxLast + \aftergroup{% + \setouterhboxAfter #1\NIL + \aftergroup}% + \else + \setouterhboxLast{#1}% + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\setouterhboxAfter} +% |#1| is an explicit number. +% \begin{macrocode} +\def\setouterhboxAfter#1#2\NIL{% + \aftergroup#1% + \ifx\\#2\\% + \else + \setouterhboxReturnAfterFi{% + \setouterhboxAfter#2\NIL + }% + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\setouterhboxReturnAfterFi} +% A utility macro to get tail recursion. +% \begin{macrocode} +\long\def\setouterhboxReturnAfterFi#1\fi{\fi#1} +% \end{macrocode} +% \end{macro} +% Restore catcodes we have need to distinguish between +% the implementation with and without \eTeX. +% \begin{macrocode} +\catcode69=11\relax % E +\catcode84=11\relax % T +% \end{macrocode} +% +% \subsection{Option \xoption{hyperref}} +% \begin{macrocode} +\begingroup + \def\x{LaTeX2e}% +\expandafter\endgroup +\ifx\x\fmtname +\else + \expandafter\endinput +\fi +% \end{macrocode} +% \begin{macro}{\Hy@setouterhbox} +% \cs{Hy@setouterhbox} is the internal hook that \xpackage{hyperref} +% uses since 2006/02/12 v6.75a. +% \begin{macrocode} +\DeclareOption{hyperref}{% + \long\def\Hy@setouterhbox#1#2{% + \setouterhbox{#1}#2\endsetouterhbox + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\ProcessOptions\relax +% \end{macrocode} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/setouterhbox.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/setouterhbox.pdf}] Documentation. +% \end{description} +% +% \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 setouterhbox.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@{}} +% setouterhbox.sty & tex/generic/oberdiek/setouterhbox.sty\\ +% setouterhbox.pdf & doc/latex/oberdiek/setouterhbox.pdf\\ +% setouterhbox-example.tex & doc/latex/oberdiek/setouterhbox-example.tex\\ +% setouterhbox.dtx & source/latex/oberdiek/setouterhbox.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 setouterhbox.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{setouterhbox.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 setouterhbox.dtx +%makeindex -s gind.ist setouterhbox.idx +%pdflatex setouterhbox.dtx +%makeindex -s gind.ist setouterhbox.idx +%pdflatex setouterhbox.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{thebibliography}{9} +% +% \bibitem{newsstart} +% Damian Menscher, \Newsgroup{comp.text.tex}, +% \textit{overlong lines in List of Figures}, +% \nolinkurl{<dh058t$qbd$1@news.ks.uiuc.edu>}, +% 23rd September 2005. +% \url{http://groups.google.com/group/comp.text.tex/msg/79648d4cf1f8bc13} +% +% \bibitem{kastrup} +% David Kastrup, \Newsgroup{comp.text.tex}, +% \textit{Re: ANN: outerhbox.sty -- collect horizontal material, +% for unboxing into a paragraph}, +% \nolinkurl{<85y855lrx3.fsf@lola.goethe.zz>}, +% 7th October 2005. +% \url{http://groups.google.com/group/comp.text.tex/msg/7cf0a345ef932e52} +% +% \bibitem{downes} +% Michael Downes, \textit{Line breaking in \cs{unhbox}ed Text}, +% TUGboat 11 (1990), pp. 605--612. +% +% \bibitem{hyperref} +% Sebastian Rahtz, Heiko Oberdiek: +% \textit{The \xpackage{hyperref} package}; +% 2006/08/16 v6.75c; +% \CTAN{macros/latex/contrib/hyperref/}. +% +% \end{thebibliography} +% +% \begin{History} +% \begin{Version}{2005/10/05 v1.0} +% \item +% First version. +% \end{Version} +% \begin{Version}{2005/10/07 v1.1} +% \item +% Option \xoption{hyperref} added. +% \end{Version} +% \begin{Version}{2005/10/18 v1.2} +% \item +% Support for explicit line breaks added. +% \end{Version} +% \begin{Version}{2006/02/12 v1.3} +% \item +% DTX format. +% \item +% Documentation extended. +% \end{Version} +% \begin{Version}{2006/08/26 v1.4} +% \item +% Date of hyperref updated. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/settobox.dtx b/Master/texmf-dist/source/latex/oberdiek/settobox.dtx new file mode 100644 index 00000000000..1ee9a3260de --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/settobox.dtx @@ -0,0 +1,636 @@ +% \iffalse meta-comment +% +% Copyright (C) 2000, 2006 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 settobox.dtx +% and the derived files +% settobox.sty, settobox.pdf, settobox.ins, settobox.drv, +% settobox-example.tex. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/settobox.dtx +% CTAN:macros/latex/contrib/oberdiek/settobox.pdf +% +% Unpacking: +% (a) If settobox.ins is present: +% tex settobox.ins +% (b) Without settobox.ins: +% tex settobox.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{settobox.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If settobox.drv is present: +% latex settobox.drv +% (b) Without settobox.drv: +% latex settobox.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 settobox.dtx +% makeindex -s gind.ist settobox.idx +% pdflatex settobox.dtx +% makeindex -s gind.ist settobox.idx +% pdflatex settobox.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/settobox.sty +% TDS:doc/latex/oberdiek/settobox.pdf +% TDS:doc/latex/oberdiek/settobox-example.tex +% TDS:source/latex/oberdiek/settobox.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: settobox 2006/02/20 v1.2 Getting box sizes (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2000, 2006 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 settobox.dtx +and the derived files + settobox.sty, settobox.pdf, settobox.ins, settobox.drv, + settobox-example.tex. + +\endpreamble + +\generate{% + \file{settobox.ins}{\from{settobox.dtx}{install}}% + \file{settobox.drv}{\from{settobox.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{settobox.sty}{\from{settobox.dtx}{package}}% + \usedir{doc/latex/oberdiek}% + \file{settobox-example.tex}{\from{settobox.dtx}{example}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* settobox.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `settobox.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{settobox.drv}% + [2006/02/20 v1.2 Getting box sizes (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\usepackage{calc} +\usepackage{settobox} +\begin{document} + \DocInput{settobox.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{97} +% +% \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{settobox.drv} +% +% \title{The \xpackage{settobox} package} +% \date{2006/02/20 v1.2} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% Commands are defined for getting box sizes similar +% to \LaTeX's \cs{settowidth} commands. +% \end{abstract} +% +% \tableofcontents +% +% \section{Usage} +% +% \subsection{Get box dimensions} +% +% \begin{declcs}^^A +% {settoboxwidth}\,\M{\LaTeX\ length}\,\M{\LaTeX\ box}\\ +% \SpecialUsageIndex{\settoboxheight}^^A +% \cs{settoboxheight}\,\M{\LaTeX\ length}\,\M{\LaTeX\ box}\\ +% \SpecialUsageIndex{\settoboxdepth}^^A +% \cs{settoboxdepth}\,\M{\LaTeX\ length}\,\M{\LaTeX\ box}\\ +% \SpecialUsageIndex{\settoboxtotalheight}^^A +% \cs{settoboxtotalheight}\,\M{\LaTeX\ length}\,\M{\LaTeX\ box} +% \end{declcs} +% A \meta{\LaTeX\ box} is allocated by \cs{newsavebox}. +% It can be filled by \cs{sbox} or the environment \texttt{lrbox}. +% The commands above extract then the desired lengths. +% +% \subsection{Set box dimensions} +% +% \begin{declcs}^^A +% {setboxwidth}\,\M{\LaTeX\ box}\,\M{\LaTeX\ length expression}\\ +% \SpecialUsageIndex{\setboxheight}^^A +% \cs{setboxheight}\,\M{\LaTeX\ box}\,\M{\LaTeX\ length expression}\\ +% \SpecialUsageIndex{\setboxdepth}^^A +% \cs{setboxdepth}\,\M{\LaTeX\ box}\,\M{\LaTeX\ length expression} +% \end{declcs} +% These commands allow the manipulation of the box. Package \xpackage{calc} +% is supported in the \meta{\LaTeX\ length expression}. +% Also the following length are available in this expression: +% \begin{quote} +% \begin{tabular}{@{}ll@{}} +% \cs{width}& width of the box\\ +% \cs{height}& height of the box\\ +% \cs{depth}& depth of the box\\ +% \cs{totalheight}& totalheight of the box\\ +% \end{tabular} +% \end{quote} +% Note, the base point (point at the left margin of the baseline) +% always remain constant. +% +% \subsection{Move box} +% +% \begin{declcs}^^A +% {setboxmoveleft}\,\M{\LaTeX\ box}\,\M{\LaTeX\ length expression}\\ +% \SpecialUsageIndex{\setboxmoveright}^^A +% \cs{setboxmoveright}\,\M{\LaTeX\ box}\,\M{\LaTeX\ length expression}\\ +% \SpecialUsageIndex{\setboxlower}^^A +% \cs{setboxlower}\,\M{\LaTeX\ box}\,\M{\LaTeX\ length expression}\\ +% \SpecialUsageIndex{\setboxright}^^A +% \cs{setboxright}\,\M{\LaTeX\ box}\,\M{\LaTeX\ length expression} +% \end{declcs} +% Note, the box is shifted relative to the base point. The base point +% is always inside the box, however the width and height of the +% box change along with the movement. +% +% \subsection{Example} +% +% \subsubsection{Short example} +% +% \begin{quote} +%\begin{verbatim} +%\newsavebox{\mybox} +%\newlength{\mylength} +%\sbox{\mybox}{Hello World} +%\settoboxwidth{\mylength}{\mybox} +%\end{verbatim} +% \end{quote} +% +% \subsubsection{Test file that shows box manipulations} +% +% \begin{macrocode} +%<*example> +\documentclass{article} + +\usepackage{settobox} +\usepackage{calc} + +\newsavebox{\mybox} + +\setlength{\fboxsep}{0pt} +\setlength{\parindent}{20pt} +\setlength{\parskip}{10pt} +\pagestyle{empty} + + % \test{#1} + % The macro is called with commands in #1 that manipulates + % the box \mybox. These commands along with the result of + % the manipulation is shown. Thus the essence of the + % macro is: + % + % a) \sbox{\mybox}{The cracy fox.} + % b) #1 % manipulates \mybox + % c) Print #1 commands. + % d) Print box with frame + % + % The implemenation looks more weird: +\makeatletter +\newcommand*{\test}[1]{% + \par + \begingroup + \raggedright + \edef\x{\detokenize{#1}} + \let\do\@makeother + \dospecials + \catcode`\~\active + \catcode`\ =10\relax + \def~{\\}% + \noindent + \texttt{\scantokens\expandafter{\x}} + \par + \endgroup + \begingroup + \let~\relax + \sbox{\mybox}{The cracy fox.} + #1% + A---\fbox{\usebox\mybox}---B + \endgroup + \par +} +\makeatother + +\begin{document} + +\test{\setboxwidth{\mybox}{1.25\width}} +\test{\setboxheight{\mybox}{0pt}} +\test{\setboxheight{\mybox}{2\height}} +\test{\setboxdepth{\mybox}{\height}} +\test{\setboxmoveleft{\mybox}{5pt}} +\test{% + \setboxmoveleft{\mybox}{5pt}~% + \setboxwidth{\mybox}{\width + 5pt}% +} +\test{\setboxmoveright{\mybox}{0.5\width}} +\test{\setboxlower{\mybox}{\height}} +\test{\setboxraise{\mybox}{\depth}} +\test{% + \setboxmoveright{\mybox}{5pt}~% + \setboxwidth{\mybox}{\width + 5pt}~% + \setboxheight{\mybox}{\height + 5pt}~% + \setboxdepth{\mybox}{\depth + 5pt}% +} + +\end{document} +%</example> +% \end{macrocode} +% +% \noindent +% The result: +% +% \vspace{1ex} +% \hrule +% +% \begingroup +% \newsavebox{\mybox} +% +% \setlength{\fboxsep}{0pt} +% \setlength{\parindent}{20pt} +% \setlength{\parskip}{10pt} +% +% \makeatletter +% \newcommand*{\test}[1]{^^A +% \par +% \begingroup +% \raggedright +% \edef\x{\detokenize{#1}} +% \let\do\@makeother +% \dospecials +% \catcode`\~\active +% \catcode`\ =10\relax +% \def~{\\}^^A +% \noindent +% \texttt{\scantokens\expandafter{\x}} +% \par +% \endgroup +% \begingroup +% \let~\relax +% \sbox{\mybox}{The cracy fox.} +% #1^^A +% A---\fbox{\usebox\mybox}---B +% \endgroup +% \par +% } +% \makeatother +% +% \test{\setboxwidth{\mybox}{1.25\width}} +% \test{\setboxheight{\mybox}{0pt}} +% \test{\setboxheight{\mybox}{2\height}} +% \test{\setboxdepth{\mybox}{\height}} +% \test{\setboxmoveleft{\mybox}{5pt}} +% \test{^^A +% \setboxmoveleft{\mybox}{5pt}~^^A +% \setboxwidth{\mybox}{\width + 5pt}^^A +% } +% \test{\setboxmoveright{\mybox}{0.5\width}} +% \test{\setboxlower{\mybox}{\height}} +% \test{\setboxraise{\mybox}{\depth}} +% \test{^^A +% \setboxmoveright{\mybox}{5pt}~^^A +% \setboxwidth{\mybox}{\width + 5pt}~^^A +% \setboxheight{\mybox}{\height + 5pt}~^^A +% \setboxdepth{\mybox}{\depth + 5pt}^^A +% } +% +% \endgroup +% \vspace{1ex} +% \hrule +% \vspace{4ex} +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% Package identification. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{settobox}% + [2006/02/20 v1.2 Getting box sizes (HO)] +% \end{macrocode} +% +% \begin{macrocode} +\newcommand*{\settoboxwidth}[2]{\setlength{#1}{\wd#2}} +\newcommand*{\settoboxheight}[2]{\setlength{#1}{\ht#2}} +\newcommand*{\settoboxdepth}[2]{\setlength{#1}{\dp#2}} +\newcommand*{\settoboxtotalheight}[2]{% + \setlength{#1}{\ht#2}% + \addtolength{#1}{\dp#2}% +} +% \end{macrocode} +% +% \begin{macro}{\setboxwidth} +% \begin{macrocode} +\newcommand*{\setboxwidth}[2]{% + \settobox@length\wd{#1}{#2}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\setboxheight} +% \begin{macrocode} +\newcommand*{\setboxheight}[2]{% + \settobox@length\ht{#1}{#2}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\setboxheight} +% \begin{macrocode} +\newcommand*{\setboxdepth}[2]{% + \settobox@length\dp{#1}{#2}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\setboxmoveleft} +% \begin{macrocode} +\newcommand*{\setboxmoveleft}[2]{% + \settobox@horiz{-}{#1}{#2}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\setboxmoveright} +% \begin{macrocode} +\newcommand*{\setboxmoveright}[2]{% + \settobox@horiz{}{#1}{#2}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\setboxlower} +% \begin{macrocode} +\newcommand*{\setboxlower}[2]{% + \settobox@vert\lower{#1}{#2}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\setboxraise} +% \begin{macrocode} +\newcommand*{\setboxraise}[2]{% + \settobox@vert\raise{#1}{#2}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\settobox@length} +% The work for the \cs{setbox...} commands is done by +% \cs{settobox@length}. Inside the length expression +% \cs{width}, \cs{height}, \cs{depth}, \cs{totalheight} +% are set to the dimensions of the box.\\ +% \begin{tabular}{@{}ll@{}} +% |#1|:& the property of the box that is to be changed +% (\cs{wd}, \cs{ht}, \cs{dp})\\ +% |#2|:& the box\\ +% |#3|:& length expression +% \end{tabular} +% \begin{macrocode} +\def\settobox@length#1#2#3{% + \settobox@calc{#2}{#3}{#1#2=##1sp\relax}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\settobox@horiz} +% \begin{macrocode} +\def\settobox@horiz#1#2#3{% + \settobox@calc{#2}{#3}{\setbox#2=\hbox{\kern#1##1sp\copy#2}}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\settobox@vert} +% \begin{macrocode} +\def\settobox@vert#1#2#3{% + \settobox@calc{#2}{#3}{\setbox#2=\hbox{#1##1sp\copy#2}}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\settobox@calc} +% \begin{macrocode} +\def\settobox@calc#1#2#3{% + \begingroup + \def\width{\wd#1}% + \def\height{\ht#1}% + \def\depth{\dp#1}% + \dimen@\ht#1\relax + \advance\dimen@\dp#1\relax + \def\totalheight{\dimen@}% + \setlength{\dimen@}{#2}% + \count@\dimen@ + \def\x##1{\endgroup + #3% + }% + \expandafter\x\expandafter{\the\count@}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/settobox.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/settobox.pdf}] Documentation. +% \end{description} +% +% \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 settobox.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@{}} +% settobox.sty & tex/latex/oberdiek/settobox.sty\\ +% settobox.pdf & doc/latex/oberdiek/settobox.pdf\\ +% settobox-example.tex & doc/latex/oberdiek/settobox-example.tex\\ +% settobox.dtx & source/latex/oberdiek/settobox.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 settobox.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{settobox.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 settobox.dtx +%makeindex -s gind.ist settobox.idx +%pdflatex settobox.dtx +%makeindex -s gind.ist settobox.idx +%pdflatex settobox.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2000/02/11 v1.0} +% \item +% First public release, written as answer in the +% newsgroup \xnewsgroup{de.comp.text.tex} in the thread +% \textit{Die Hoehe von Minipages und Bild}, date: 2000/02/11. +% \end{Version} +% \begin{Version}{2000/09/07 v1.1} +% \item +% Documentation added. +% \item +% CTAN release. +% \end{Version} +% \begin{Version}{2006/02/20 v1.2} +% \item +% \cs{setboxwidth}, \cs{setboxheight}, \cs{setboxdepth} added. +% \item +% Box move commands added. +% \item +% DTX framework. +% \item +% LPPL 1.3 +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/tabularht.dtx b/Master/texmf-dist/source/latex/oberdiek/tabularht.dtx new file mode 100644 index 00000000000..cc355fe8e90 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/tabularht.dtx @@ -0,0 +1,1083 @@ +% \iffalse meta-comment +% +% Copyright (C) 2005, 2006 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 tabularht.dtx +% and the derived files +% tabularht.sty, tabularht.pdf, tabularht.ins, tabularht.drv, +% tabularht-example1.tex, tabularht-example2.tex. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/tabularht.dtx +% CTAN:macros/latex/contrib/oberdiek/tabularht.pdf +% +% Unpacking: +% (a) If tabularht.ins is present: +% tex tabularht.ins +% (b) Without tabularht.ins: +% tex tabularht.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{tabularht.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If tabularht.drv is present: +% latex tabularht.drv +% (b) Without tabularht.drv: +% latex tabularht.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 tabularht.dtx +% makeindex -s gind.ist tabularht.idx +% pdflatex tabularht.dtx +% makeindex -s gind.ist tabularht.idx +% pdflatex tabularht.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/tabularht.sty +% TDS:doc/latex/oberdiek/tabularht.pdf +% TDS:doc/latex/oberdiek/tabularht-example1.tex +% TDS:doc/latex/oberdiek/tabularht-example2.tex +% TDS:source/latex/oberdiek/tabularht.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: tabularht 2006/02/20 v2.2 Tabular with height specification (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2005, 2006 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 tabularht.dtx +and the derived files + tabularht.sty, tabularht.pdf, tabularht.ins, tabularht.drv, + tabularht-example1.tex, tabularht-example2.tex. + +\endpreamble + +\generate{% + \file{tabularht.ins}{\from{tabularht.dtx}{install}}% + \file{tabularht.drv}{\from{tabularht.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{tabularht.sty}{\from{tabularht.dtx}{package}}% + \usedir{doc/latex/oberdiek}% + \file{tabularht-example1.tex}{\from{tabularht.dtx}{example1}}% + \file{tabularht-example2.tex}{\from{tabularht.dtx}{example2}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* tabularht.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `tabularht.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{tabularht.drv}% + [2006/02/20 v2.2 Tabular with height specification (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\begin{document} + \DocInput{tabularht.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{tabularht.drv} +% +% \title{The \xpackage{tabularht} package} +% \date{2006/02/20 v2.2} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% This package defines some environments that adds +% a height specification to tabular and array. +% \end{abstract} +% +% \tableofcontents +% +% \section{Usage} +% +% \begin{quote} +% |\usepackage{tabularht}| +% \end{quote} +% The package provides the following environments +% that extend the tabular/array environment by +% a height specification as first argument: +% \begin{itemize} +% \item |tabularht|, |tabularht*| +% \item |arrayht| +% \item |tabularxht|, |tabularxht*| +% (if package \xpackage{tabularx} is loaded) +% \end{itemize} +% The height argument allows a length specification, +% package \xpackage{calc} is supported if used. This means, +% the tabular will have the specified height. +% You can also use the prefixes |to=| and |spread=|. +% |to=| is the default, |spread=| means, the natural +% height of the tabular box is changed by the length +% after |spread=|. +% +% Examples: +% \begin{quote} +% \begin{tabular}{@{}l@{ $\rightarrow$ }l@{}} +% |\begin{tabularht}{1in}| +% & height is 1in\\ +% |\begin{tabularht}{to=1in}| +% & height is 1in\\ +% |\begin{tabularht}{spread=0pt}| +% & natural height, same as |\begin{tabular}|\\ +% |\begin{tabularht}{spread=1in}| +% & natural height increased by 1in +% \end{tabular} +% \end{quote} +% +% Hint: See also package \xpackage{tabularkv}, it provides an interface, +% where most parameters for the environments can be given +% by key-value pairs. +% +% \begin{declcs}{interrowspace}\,|{|\dots|}| +% \end{declcs} +% Adds space between table rows. It is essentially +% the same as |\noalign{\vspace{...}}|. +% \begin{declcs}{interrowfill} +% \end{declcs} +% Short for |\interrowspace{\fill}| +% \begin{declcs}{interrowstart}\,\dots\,\cs{interrowstop} +% \end{declcs} +% Marker commands, useful for option \xoption{vlines}. +% +% \subsection{Option \xoption{vlines}} +% +% Warning: This stuff is experimental. +% +% \vspace{2ex} +% \noindent +% Vertical lines are interrupted, if space is inserted +% in \cs{noalign}, \cs{interrowspace}, \cs{addlinespace} +% (\xpackage{booktabs}), +% between double \cs{hline}s. This option tries to detect +% and add the vertical lines. The lines in a tabular +% with \xpackage{tabularht} support (environments of this package) +% are numbered from left to right. The gap that is +% controlled by \cs{interrowspace} or inbetween \cs{interrowstart} +% and \cs{interrowstop} is then filled with the detected +% vertical lines. +% +% If only a limited selection of the lines should be +% drawn, the commands know an optional argument with a +% list of line numbers, e.g. +% \begin{quote} +%\begin{verbatim} +%\begin{tabularht}{50mm}{|l|l|} +% Hello & World\\ +% \interrowfill[1,3] +% Foo & Bar +%\end{tabularht} +%\end{verbatim} +% \end{quote} +% There are three lines, but the middle line is not drawn +% in the gap between the first and second row. +% Zero can be used to suppress all lines: +% \begin{quote} +% |\interrowspace[0]{10mm}| +% \end{quote} +% The syntax of the commands with the optional argument +% with the line number list \meta{list}. \meta{list} is a comma +% separated list of numbers, \meta{height} means the +% height specification described above with the optional +% prefixes |to=| or |spread=|. +% \begin{quote} +% \cs{interrowspace}\,|[|\meta{list}|]|\,|{|\meta{height}|}|\\ +% \cs{interrowfill}\,|[|\meta{list}|]|\\ +% \cs{interrowstart}\,|[|\meta{list}|]|\,\dots\,\cs{interrowstop} +% \end{quote} +% +% Option \xoption{vlines} is driver dependent and uses \eTeX\ features. +% \begin{description} +% \item[\xoption{pdftex}:] \pdfTeX\ in PDF mode. +% Here the positions of the lines are written with the +% help of the \cs{pdfsavepos} feature into the \xfile{.aux} file(s). +% Therefore you need two LaTeX runs to get the lines. +% \item[\xoption{dvips}:] +% Here, PostScript's currentpoint it used to get +% the line positions. The lines are then drawn at the end +% of the page. Thus one \LaTeX/dvips run is sufficient +% for this option. +% \item[Other drivers:]\mbox{} +% \begin{description} +% \item[PostScript drivers:] probably possible, an end of page +% hook would be nice. +% \item[\VTeX:] with GeX (PostScript interpreter) probably possible. +% \item[dvipdfm:] no idea. The big problem is, how to get the +% current position? +% \end{description} +% \end{description} +% +% \subsection{Limitations} +% +% \begin{itemize} +% \item +% Vertical lines are interrupted by |\noalign{\vfill}|. +% \end{itemize} +% +% \subsection{Compatibility} +% +% \begin{itemize} +% \item +% \xpackage{array}, \xpackage{delarray}, \xpackage{tabularx} +% are supported. +% \item There can be problems with packages that +% redefine \cs{@array} (or \cs{@@array}, \cs{@tabarray}) and +% \cs{@arrayrule} (for option \xoption{vlines}). +% \item \xpackage{colortbl}: it should at least work, but there isn't +% support for filling the gaps with color, neither +% the rules nor the backgrounds. +% \end{itemize} +% +% \subsection{Examples} +% +% \subsubsection{Example 1} +% +% \begin{macrocode} +%<*example1> +\documentclass{article} +\usepackage{tabularht} + +\begin{document} +\fbox{% + \begin{tabularht*}{1in}{4in}{@{}l@{\extracolsep{\fill}}r@{}} + upper left corner & upper right corner\\% + \noalign{\vfill}% + \multicolumn{2}{@{}c@{}}{bounding box}\\ + \noalign{\vfill}% + lower left corner & lower right corner\\ + \end{tabularht*}% +} +\end{document} +%</example1> +% \end{macrocode} +% +% \subsubsection{Example 2} +% +% \begin{macrocode} +%<*example2> +\documentclass{article} +\usepackage{booktabs} +\usepackage[dvips,vlines]{tabularht} + +\begin{document} + +\begin{tabularht}{spread=0pt}{|l|l|} + \hline + First&Line\\ + \hline +\interrowstart + \addlinespace[10mm] +\interrowstop + \hline + Second&Line\\ +\interrowstart + \hline + \hline +\interrowstop + Third&Line\\ + \hline +\interrowspace{10mm} + \hline + Fourth&Line\\ + \hline +\end{tabularht} + +\end{document} +%</example2> +% \end{macrocode} +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% Package identification. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{tabularht}% + [2006/02/20 v2.2 Tabular with height specification (HO)] +% \end{macrocode} +% +% \subsection{Environments} +% +% \begin{macrocode} +\let\@toarrayheight\@empty +\let\tabH@array@init\@empty + +\toks@={% + \begingroup + \long\def\x#1\vcenter\fi\fi\bgroup#2\@sharp#3#4\@nil{% + \endgroup + \gdef\@array[##1]##2{% + \tabH@array@init + #1% + \vcenter\fi\fi + \@toarrayheight + \bgroup + \let\@toarrayheight\@empty + #2\@sharp###3#4% + }% + }% + \expandafter\x\@array[#1]{#2}\@nil +} +\edef\tabH@patch@array{\the\toks@} +\def\tabH@patch@@array{% + \ifx\@array\@@array + \def\reserved@a{\let\@@array\@array}% + \else + \let\reserved@a\relax + \fi + \tabH@patch@array + \reserved@a +} +\tabH@patch@@array + +\@ifpackageloaded{array}{}{% + \AtBeginDocument{% + \@ifpackageloaded{array}{% + \tabH@patch@@array + }{}% + }% +} + +\def\tabH@setheight#1{% +\tracingmacros=1 + \tabH@@setheight#1==\@nil +} +\def\tabH@@setheight#1=#2=#3\@nil{% + \ifx\\#2#3\\% + \setlength{\dimen@}{#1}% + \edef\@toarrayheight{to\the\dimen@}% + \else + \edef\tabH@temp{\zap@space#1 \@empty}% + \ifx\tabH@temp\tabH@to + \else + \ifx\tabH@temp\tabH@spread + \else + \PackageError{tabularht}{% + Unknown height specifier % + `\expandafter\strip@prefix\meaning\tabH@temp'% + }{% + The height dimension for tabular height can be prefixed% + \MessageBreak + with `to=' or `spread=', default is `to='.% + }% + \let\tabH@temp\tabH@to + \fi + \fi + \setlength{\dimen@}{#2}% + \edef\@toarrayheight{\tabH@temp\the\dimen@}% + \fi +} +\def\tabH@to{to} +\def\tabH@spread{spread} +% \end{macrocode} +% First argument is the height of the table, +% then the orignal arguments for tabular follow. +% \begin{macrocode} +\newenvironment{tabularht}[1]{% + \tabH@setheight{#1}% + \tabular +}{% + \endtabular +} + +\newenvironment{tabularht*}[1]{% + \tabH@setheight{#1}% + \@nameuse{tabular*}% +}{% + \@nameuse{endtabular*}% +} + +\newenvironment{tabularhtx}[1]{% + \tabH@setheight{#1}% + \tabularx +}{% + \endtabularx +} + +\newenvironment{arrayht}[1]{% + \tabH@setheight{#1}% + \array +}{% + \endarray +} + +\def\interrowspace{% + \noalign\bgroup + \tabH@interrowspace +} +\newcommand*{\tabH@interrowspace}[2][]{% + \tabH@vspace{#1}{#2}% + \egroup +} +\def\interrowfill{% + \noalign\bgroup + \tabH@interrowfill +} +\newcommand*{\tabH@interrowfill}[1][]{% + \tabH@vspace{#1}{\fill}% + \egroup +} +\def\tabH@vspace#1#2{% + \tabH@vspace@start{#1}% + \vspace{#2}% + \tabH@vspace@stop +} +\let\tabH@vspace@start\@gobble +\let\tabH@vspace@stop\@empty + +\newcommand*{\interrowstart}{% + \noalign\bgroup + \tabH@interrowstart +} +\newcommand*{\tabH@interrowstart}[1][]{% + \tabH@vspace@start{#1}% + \egroup +} +\newcommand*{\interrowstop}{% + \noalign{\tabH@vspace@stop}% +} +% \end{macrocode} +% +% \subsection{Options} +% +% \begin{macrocode} +\providecommand*{\tabH@driver}{} + +\DeclareOption{vlines}{% + \let\tabH@temp\relax +} +\DeclareOption{pdftex}{} +\DeclareOption{dvips}{% + \def\tabH@driver{dvips}% +} +\ProcessOptions*\relax + +\ifx\tabH@temp\relax +\else + \expandafter\endinput +\fi + +\begingroup + \@ifundefined{eTeXversion}{% + \PackageError{tabularht}{% + Option `vlines' requires eTeX% + }{% + Use of eTeX is recommended for LaTeX, see ltnews16.% + }% + \endgroup + \endinput + }{}% +\endgroup +% \end{macrocode} +% +% \subsection{Option vlines, driver independent stuff} +% +% \begin{macrocode} +\newcounter{tabH@unique} +\setcounter{tabH@unique}{0} +\let\tabH@currenttab\@empty + +\def\tabH@array@init{% + \ifx\@toarrayheight\@empty + % ignore vertical lines of nested tabular environments + \let\tabH@currenttab\@empty + \else + \stepcounter{tabH@unique}% + \edef\tabH@currenttab{\the\c@tabH@unique}% + \fi +} + +\renewcommand*{\@arrayrule}{% + \@addtopreamble{% + \hskip -.5\arrayrulewidth + \ifx\tabH@currenttab\@empty + \else + \tabH@vrule{\tabH@currenttab}% + \fi + \begingroup + \csname CT@arc@\endcsname\vline + \endgroup + \hskip -.5\arrayrulewidth + }% +} +\let\tabH@arrayrule\@arrayrule +\AtBeginDocument{% + \@ifpackageloaded{colortbl}{% + \let\@arrayrule\tabH@arrayrule + }{}% +} + +\let\tabH@vrule\@gobble +% \end{macrocode} +% +% \subsection{Driver pdftex} +% +% \begin{macrocode} +\RequirePackage{ifpdf} +\ifpdf + \begingroup + \@ifundefined{pdfsavepos}{% + \PackageError{tabularht}{% + Your pdfTeX is too old% + }{% + \string\pdfsavepos\space is missing.% + }% + \endgroup + \csname fi\endcsname + \endinput + }{}% + + \let\on@line\@empty + \PackageInfo{tabularht}{% + Using driver `pdftex' because of pdfTeX in PDF mode% + }% + \endgroup + + \protected\def\tabH@vrule#1{% + \if@filesw + \pdfsavepos + \protected@write\@auxout{% + \let\tabH@lastxpos\relax + }{% + \tabH@aux@vrule{#1}{\tabH@lastxpos}% + }% + \fi + } + + \def\tabH@lastxpos{\the\pdflastxpos} + \def\tabH@lastypos{\the\pdflastypos} + + % The .aux file contains three commands: + % \tabH@aux@vrule{tabular id}{x position} + % \tabH@aux@vstart{tabular id}{row id}{x position}{y position} + % \tabH@aux@vstop{y position} + % + \AtBeginDocument{% + % The .aux files are read the first time before + % \AtBeginDocument and later at \end{document}. + % \tabH@aux@done is a marker to distinguish + % between these two readings. Only in the first + % case we need the \tabH@aux@... commands. + \let\tabH@aux@done\@empty + \if@filesw + \immediate\write\@mainaux{% + \@percentchar\@percentchar BeginProlog: tabularht + }% + % items in the aux file are executed, + % if tabularht is loaded + % and during the aux file read at \begin{document} only + \immediate\write\@mainaux{% + \detokenize{% + % the \tabH@aux@... commands are needed only if + % tabularht is loaded with driver pdftex. + \@ifundefined{tabH@aux@vrule}\@secondoftwo\@firstofone + {% + % disable commands except for the first .aux files reading + \@ifundefined{tabH@aux@done}\@gobble\@firstofone + }% + {% + \let\tabH@aux@vrule\@gobbletwo + \let\tabH@aux@vstart\@gobblefour + \let\tabH@aux@vstop\@gobble + }% + }% + }% + \immediate\write\@mainaux{% + \@percentchar\@percentchar EndProlog: tabularht + }% + \fi + } + + % the x positions of vrules are stored in + % \tabH@<tabcount>list with distinct values + \protected\def\tabH@aux@vrule#1#2{% + \@ifundefined{tabH@#1list}{% + \expandafter\xdef\csname tabH@#1list\endcsname{% + \noexpand\do{#2}% + }% + }{% + \begingroup + \def\x{#2}% + \let\y\@undefined + \let\do\tabH@do@add + \expandafter\xdef\csname tabH@#1list\endcsname{% + \csname tabH@#1list\endcsname\@empty + \ifx\y\@undefined + \noexpand\do{\x}% + \fi + }% + \endgroup + }% + } + \def\tabH@do@add#1{% + \ifx\y\@undefined + \ifnum#1<\x\space + \else + \expandafter\ifx\csname y\endcsname\relax\fi + \ifnum#1>\x\space + \noexpand\do{\x}% + \fi + \fi + \fi + \noexpand\do{#1}% + } + + \def\tabH@vspace@start#1{% + \if@filesw + \stepcounter{tabH@unique}% + \edef\tabH@currentrow{\the\c@tabH@unique}% + \pdfsavepos + \protected@write\@auxout{% + \let\tabH@lastxpos\relax + \let\tabH@lastypos\relax + }{% + \tabH@aux@vstart{\tabH@currenttab}{\tabH@currentrow}% + {\tabH@lastxpos}{\tabH@lastypos}% + }% + \fi + \begingroup + \edef\a{tabH@\tabH@currenttab row\tabH@currentrow}% + \expandafter\let\expandafter\x\csname\a x\endcsname + \ifx\x\relax + \else + \expandafter\let\expandafter\y\csname\a y\endcsname + \expandafter\let\expandafter\l + \csname tabH@\tabH@currenttab list\endcsname + \ifx\l\relax + \else + \def\f{#1}% + \ifx\f\@empty + \let\do\tabH@do@set + \else + \count@=\z@ + \let\do\tabH@do@filter + \fi + \setbox\z@=\hbox{\l}% + \wd\z@=\z@ + \dp\z@=\z@ + \copy\z@ + \fi + \fi + \endgroup + }% + \def\tabH@vspace@stop{% + \if@filesw + \pdfsavepos + \protected@write\@auxout{% + \let\tabH@lastypos\relax + }{% + \tabH@aux@vstop{\tabH@lastypos}% + }% + \fi + } + \def\tabH@do@set#1{% + \hbox to \z@{% + \hskip \dimexpr #1sp - \x sp\relax + \vrule \@width\arrayrulewidth + \@depth\dimexpr \y sp\relax + \hss + }% + } + \def\tabH@do@filter{% + \@tempswafalse + \advance\count@\@ne + \@for\e:=\f\do{% + \ifnum\e=\count@ + \@tempswatrue + \fi + }% + \if@tempswa + \expandafter\tabH@do@set + \else + \expandafter\@gobble + \fi + } + + \protected\def\tabH@aux@vstart#1#2#3#4{% + \def\tabH@current@vstart{{#1}{#2}{#3}{#4}}% + } + \protected\def\tabH@aux@vstop{% + \expandafter\tabH@aux@v\tabH@current@vstart + } + \def\tabH@aux@v#1#2#3#4#5{% + \expandafter\gdef\csname tabH@#1row#2x\endcsname{#3}% + \expandafter\xdef\csname tabH@#1row#2y\endcsname{% + \the\numexpr #4 - #5\relax + }% + } + + \csname fi\endcsname + \endinput + +\fi +% \end{macrocode} +% +% \subsection{DVI drivers} +% +% \begin{macrocode} +\ifx\tabH@driver\@empty + \PackageError{tabularht}{% + Missing DVI driver, option `vlines' disabled% + }{% + Supported DVI drivers: dvips.% + }% + \expandafter\endinput +\fi + +\def\tabH@driver@dvips{% + \def\tabH@literalps##1{\special{ps:SDict begin ##1 end}}% + \def\tabH@headerps##1{\special{! ##1}}% +} + +\@onelevel@sanitize\tabH@driver +\@ifundefined{tabH@driver@\tabH@driver}{% + \PackageError{tabularht}{% + Unsupported driver `\tabH@driver'% + }{% + Supported DVI drivers: dvips.% + }% + \endinput +}{} + +\begingroup + \let\on@line\@empty + \PackageInfo{tabularht}{% + Using driver `\tabH@driver'% + }% +\endgroup +\csname tabH@driver@\tabH@driver\endcsname + +\protected\def\tabH@vrule#1#2\vrule#3\arrayrulewidth{% + #2% \fi or empty + % hack to get rid of maxdrift rounding of dvips, + % thus simulate a large motion + \kern1in\relax + \tabH@literalps{% + #1 tabH.vrule + Resolution neg 0 translate% + }% + \vrule#3\arrayrulewidth + \tabH@literalps{Resolution 0 translate}% + \kern-1in\relax +} + +\def\tabH@vspace@start#1{% + \begingroup + \let\y\@empty + \@for\x:=#1\do{% + \ifx\y\@empty + \edef\y{\x}% + \else + \edef\y{\y\space\x}% + \fi + }% + \tabH@literalps{\tabH@currenttab[\y]currentpoint exch pop}% + \endgroup +} +\def\tabH@vspace@stop{% + \tabH@literalps{% + currentpoint exch pop % + \number\dimexpr\arrayrulewidth\relax\space + tabH.vspace% + }% +} + +\tabH@headerps{% + userdict begin + /tabH.list 10 dict def + /tabH.job [] def + end% + /tabH.vrule{% + 10 string cvs cvn dup tabH.list exch known{% + tabH.list exch dup [ exch tabH.list exch get + currentpoint pop round exch true exch{% + % tabH.list key [ ... x true i + % tabH.list key [ ... false i + exch{% + % ... [ ... x i + 2 copy lt{false}{% + 2 copy eq{pop false}{exch true}ifelse% + }ifelse + }{false}ifelse + }forall + pop% + ]put% + }{% + tabH.list exch[currentpoint pop round]put + }ifelse + }bind def + % <tab num> <cols array> <ytop> <ybottom> <rulewidth[sp]> + /tabH.vspace{% + userdict begin + 10 dict dup begin + exch 65536 div Resolution mul 72.27 div + % dvips uses a poor man's ceil function + % see dopage.c before "drawrule": (int)(... + 0.9999999) + 0.9999999 add truncate% + /rulewidth exch def + exch/ybottom exch def + exch/ytop exch def + exch/cols exch def + exch/tabkey exch 10 string cvs cvn def + end + /tabH.job exch[exch userdict/tabH.job get aload pop]def + end% + }bind def + % Now we do the work at the end of the page. + % Unhappily "eop-hook" cannot be used, because "eop" + % executes "restore" before, so that all data are lost. + TeXDict begin% + /eop% + [% + {% + tabH.job{% + begin% + /colarray + tabH.list tabkey known{tabH.list tabkey get}{[]}ifelse + def + cols length 0 eq not{% + /colarray[% + cols{1 sub + dup 0 lt{pop}{% + dup colarray length ge{pop}{% + colarray exch get% + }ifelse% + }ifelse% + }forall% + ]def% + }if + colarray{% + % (rulewidth) == rulewidth == % debug + Resolution sub + ytop rulewidth ytop ybottom sub v + }forall + end + }forall + % tabH.list{== ==}forall % debug + }bind aload pop + TeXDict /eop get aload pop + ]cvx def + end% +} +% \end{macrocode} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/tabularht.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/tabularht.pdf}] Documentation. +% \end{description} +% +% \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 tabularht.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@{}} +% tabularht.sty & tex/latex/oberdiek/tabularht.sty\\ +% tabularht.pdf & doc/latex/oberdiek/tabularht.pdf\\ +% tabularht-example1.tex & doc/latex/oberdiek/tabularht-example1.tex\\ +% tabularht-example2.tex & doc/latex/oberdiek/tabularht-example2.tex\\ +% tabularht.dtx & source/latex/oberdiek/tabularht.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 tabularht.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{tabularht.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 tabularht.dtx +%makeindex -s gind.ist tabularht.idx +%pdflatex tabularht.dtx +%makeindex -s gind.ist tabularht.idx +%pdflatex tabularht.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2005/09/22 v1.0} +% \item +% First public version. +% \end{Version} +% \begin{Version}{2005/10/16 v2.0} +% \item +% Height specification allows +% |to=...| or |spread=...|, default is |to=|. +% \item +% Option \xoption{vlines} added, +% drivers \xoption{pdftex} and \xoption{dvips}. +% \item +% \cs{interrowspace}, \cs{interrowfil}, and +% \cs{interrowstart}\dots\cs{interrowstop} added. +% \end{Version} +% \begin{Version}{2005/10/18 v2.1} +% \item +% Fix for package \xpackage{colortbl}, but the colors +% of \xpackage{colortbl} remain unsupported. +% \end{Version} +% \begin{Version}{2006/02/20 v2.2} +% \item +% Code is not changed. +% \item +% DTX framework. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/tabularkv.dtx b/Master/texmf-dist/source/latex/oberdiek/tabularkv.dtx new file mode 100644 index 00000000000..dfc2fc56269 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/tabularkv.dtx @@ -0,0 +1,389 @@ +% \iffalse meta-comment +% +% Copyright (C) 2005, 2006 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 tabularkv.dtx +% and the derived files +% tabularkv.sty, tabularkv.pdf, tabularkv.ins, tabularkv.drv, +% tabularkv-example.tex. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/tabularkv.dtx +% CTAN:macros/latex/contrib/oberdiek/tabularkv.pdf +% +% Unpacking: +% (a) If tabularkv.ins is present: +% tex tabularkv.ins +% (b) Without tabularkv.ins: +% tex tabularkv.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{tabularkv.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If tabularkv.drv is present: +% latex tabularkv.drv +% (b) Without tabularkv.drv: +% latex tabularkv.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 tabularkv.dtx +% makeindex -s gind.ist tabularkv.idx +% pdflatex tabularkv.dtx +% makeindex -s gind.ist tabularkv.idx +% pdflatex tabularkv.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/tabularkv.sty +% TDS:doc/latex/oberdiek/tabularkv.pdf +% TDS:doc/latex/oberdiek/tabularkv-example.tex +% TDS:source/latex/oberdiek/tabularkv.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: tabularkv 2006/02/20 v1.1 Key value interface for tabular parameters (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2005, 2006 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 tabularkv.dtx +and the derived files + tabularkv.sty, tabularkv.pdf, tabularkv.ins, tabularkv.drv, + tabularkv-example.tex. + +\endpreamble + +\generate{% + \file{tabularkv.ins}{\from{tabularkv.dtx}{install}}% + \file{tabularkv.drv}{\from{tabularkv.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{tabularkv.sty}{\from{tabularkv.dtx}{package}}% + \usedir{doc/latex/oberdiek}% + \file{tabularkv-example.tex}{\from{tabularkv.dtx}{example}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* tabularkv.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `tabularkv.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{tabularkv.drv}% + [2006/02/20 v1.1 Key value interface for tabular parameters (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\begin{document} + \DocInput{tabularkv.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{47} +% +% \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{tabularkv.drv} +% +% \title{The \xpackage{tabularkv} package} +% \date{2006/02/20 v1.1} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% This package adds a key value interface for tabular +% by the new environment \texttt{tabularkv}. Thus the +% \TeX\ source code looks better by named parameters, +% especially if package \xpackage{tabularht} is used. +% \end{abstract} +% +% \tableofcontents +% +% \section{Usage} +% \begin{quote} +% |\usepackage{tabularkv}| +% \end{quote} +% The package provides the environment |tabularkv| +% that takes an optional argument with tabular +% parameters: +% \begin{description} +% \item[\texttt{width}:] width specification, "tabular*" is used. +% \item[\texttt{x}:] +% width specification, |tabularx| is used, +% package \xpackage{tabularx} must be loaded. +% \item[\texttt{height}:] +% height specification, see package \xpackage{tabularht}. +% \item[\texttt{valign}:] vertical positioning, this option is optional;\\ +% values: top, bottom, center. +% \end{description} +% Parameter \xoption{valign} optional, the following are +% equivalent: +% \begin{quote} +% |\begin{tabularkv}[|\dots|, valign=top]{l}|\dots|\end{tabularkv}|\\ +% |\begin{tabularkv}[|\dots|][t]{l}|\dots|\end{tabularkv}| +% \end{quote} +% +% \subsection{Example} +% +% \begin{macrocode} +%<*example> +\documentclass{article} +\usepackage{tabularkv} + +\begin{document} +\fbox{% + \begin{tabularkv}[ + width=4in, + height=1in, + valign=center + ]{@{}l@{\extracolsep{\fill}}r@{}} + upper left corner & upper right corner\\% + \noalign{\vfill}% + \multicolumn{2}{@{}c@{}}{bounding box}\\ + \noalign{\vfill}% + lower left corner & lower right corner\\ + \end{tabularkv}% +} +\end{document} +%</example> +% \end{macrocode} +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% Package identification. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{tabularkv}% + [2006/02/20 v1.1 Key value interface for tabular parameters (HO)] +% \end{macrocode} +% +% \begin{macrocode} +\RequirePackage{keyval} +\RequirePackage{tabularht} + +\let\tabKV@star@x\@empty +\let\tabKV@width\@empty +\let\tabKV@valign\@empty + +\define@key{tabKV}{height}{% + \setlength{\dimen@}{#1}% + \edef\@toarrayheight{to\the\dimen@}% +} +\define@key{tabKV}{width}{% + \def\tabKV@width{{#1}}% + \def\tabKV@star@x{*}% +} +\define@key{tabKV}{x}{% + \def\tabKV@width{{#1}}% + \def\tabKV@star@x{x}% +} +\define@key{tabKV}{valign}{% + \edef\tabKV@valign{[\@car #1c\@nil]}% +} +% \end{macrocode} +% \begin{macrocode} +\newenvironment{tabularkv}[1][]{% + \setkeys{tabKV}{#1}% + \@nameuse{% + tabular\tabKV@star@x\expandafter\expandafter\expandafter + }% + \expandafter\tabKV@width\tabKV@valign +}{% + \@nameuse{endtabular\tabKV@star@x}% +} +% \end{macrocode} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/tabularkv.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/tabularkv.pdf}] Documentation. +% \end{description} +% +% \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 tabularkv.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@{}} +% tabularkv.sty & tex/latex/oberdiek/tabularkv.sty\\ +% tabularkv.pdf & doc/latex/oberdiek/tabularkv.pdf\\ +% tabularkv-example.tex & doc/latex/oberdiek/tabularkv-example.tex\\ +% tabularkv.dtx & source/latex/oberdiek/tabularkv.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 tabularkv.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{tabularkv.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 tabularkv.dtx +%makeindex -s gind.ist tabularkv.idx +%pdflatex tabularkv.dtx +%makeindex -s gind.ist tabularkv.idx +%pdflatex tabularkv.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2005/09/22 v1.0} +% \item +% First public version. +% \end{Version} +% \begin{Version}{2006/02/20 v1.1} +% \item +% DTX framework. +% \item +% Code is not changed. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/telprint.dtx b/Master/texmf-dist/source/latex/oberdiek/telprint.dtx new file mode 100644 index 00000000000..44e15983d84 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/telprint.dtx @@ -0,0 +1,651 @@ +% \iffalse meta-comment +% +% Copyright (C) 1996, 1997, 2004, 2005, 2006 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 telprint.dtx +% and the derived files +% telprint.sty, telprint.pdf, telprint.ins, telprint.drv. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/telprint.dtx +% CTAN:macros/latex/contrib/oberdiek/telprint.pdf +% +% Unpacking: +% (a) If telprint.ins is present: +% tex telprint.ins +% (b) Without telprint.ins: +% tex telprint.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{telprint.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If telprint.drv is present: +% latex telprint.drv +% (b) Without telprint.drv: +% latex telprint.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 telprint.dtx +% makeindex -s gind.ist telprint.idx +% pdflatex telprint.dtx +% makeindex -s gind.ist telprint.idx +% pdflatex telprint.dtx +% +% Installation: +% TDS:tex/generic/oberdiek/telprint.sty +% TDS:doc/generic/oberdiek/telprint.pdf +% TDS:source/generic/oberdiek/telprint.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: telprint 2006/08/16 v1.7 Formatting of German phone numbers (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 1996, 1997, 2004, 2005, 2006 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 telprint.dtx +and the derived files + telprint.sty, telprint.pdf, telprint.ins, telprint.drv. + +\endpreamble + +\generate{% + \file{telprint.ins}{\from{telprint.dtx}{install}}% + \file{telprint.drv}{\from{telprint.dtx}{driver}}% + \usedir{tex/generic/oberdiek}% + \file{telprint.sty}{\from{telprint.dtx}{package}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* telprint.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `telprint.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{telprint.drv}% + [2006/08/16 v1.7 Formatting of German phone numbers (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\usepackage[ngerman,english]{babel} +\begin{document} + \DocInput{telprint.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{315} +% +% \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{telprint.drv} +% +% \title{The \xpackage{telprint} package} +% \date{2006/08/16 v1.7} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% Package \xpackage{telprint} provides \cs{telprint} for formatting +% German phone numbers. +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% \subsection{Introduction} +% +% This is a very old package that I have written +% to format phone numbers. It follows German +% conventions and the documentation is mainly in German. +% +% \subsection{Short overview in English} +% +% \LaTeX: +% \begin{quote} +% |\usepackage{telprint}|\\ +% |\telprint{123/456-789}|\\ +% \end{quote} +% \plainTeX: +% \begin{quote} +% |\input telprint.sty|\\ +% |\telprint{123/456-789}| +% \end{quote} +% +% \DescribeMacro\telprint +% |\telprint{...}| formats the explicitly given number. +% Digits, spaces and some special characters +% ('+', '/', '-', '(', ')', '\textasciitilde', ' ') are supported. +% Numbers are divided into groups of two digits from the right. +% Examples: +% \begin{quote} +% |\telprint{0761/12345} ==> 07\,61/1\,23\,45|\\ +% |\telprint{01234/567-89} ==> 0\,12\,34/5\,67\leavevmode\hbox{-}89|\\ +% |\telprint{+49 (6221) 297} ==> +49~(62\,21)~2\,97| +% \end{quote} +% +% \subsubsection{Configuration} +% +% The output of the symbols can be configured by +% \cs{telhyphen}, \cs{telslash}, \cs{telleftparen}, \cs{telrightparen}, +% \cs{telplus}, \cs{teltilde}. +% Example: +% \begin{quote} +% |\telslash{\,/\,}\\| +% |\telprint{12/34} ==> 12\,/\,34| +% \end{quote} +% +% \DescribeMacro\telspace +% \cs{telspace} configures the space between digit groups. +% +% \DescribeMacro\telnumber +% \cs{telnumber} only formats a number in digit groups; special +% characters are not recognized. +% +% \subsection{Documentation in German} +% +% \begin{otherlanguage*}{ngerman} +% \begin{itemize} +% \item \DescribeMacro\telprint |telprint#1|\\ +% Der eigentliche Anwenderbefehl zur formatierten Ausgabe von +% Telefonnummern. Diese d\"urfen dabei nur als Zahlen angegeben +% werden(, da sie tokenweise analysiert werden). +% Als Trenn- oder Sonderzeichen werden unterst\"utzt: +% '+', '/', '-', '(', ')', '\textasciitilde', ' ' +% Einfache Leerzeichen werden erkannt und durch Tilden ersetzt, um +% Trennungen in der Telefonnummer zu verhindern. (Man beachte aus +% gleichem Grunde die \cs{hbox} bei '-'.) +% Beispiele: +% \begin{quote} +% |\telprint{0761/12345} ==> 07\,61/1\,23\,45|\\ +% |\telprint{01234/567-89} ==> 0\,12\,34/5\,67\leavevmode\hbox{-}89|\\ +% |\telprint{+49 (6221) 297} ==> +49~(62\,21)~2\,97| +% \end{quote} +% \end{itemize} +% Der Rest enth\"alt eher Technisches: +% \begin{itemize} +% \item \DescribeMacro\telspace |\telspace#1|\\ +% Mit diesem Befehl wird der Abstand zwischen den Zifferngruppen +% angegeben (Default: |\,|). +% (Durch |\telspace{}| kann dieser zusaetzliche Abstand abgestellt +% werden.) +% \item \DescribeMacro\telhyphen |\telhyphen#1|\\ +% Dieser Befehl gibt die Art des Bindestriches, wie er ausgegeben +% werden soll. In der Eingabe darf jedoch nur der einfache +% Bindestrich stehen: +% |\telprint{123-45}|, jedoch NIE |\telprint{123--45}|! +% Kopka-Bindestrich-Fans geben an: +% |\telhyphen{\leavevmode\hbox{--}}| +% \item +% \DescribeMacro{\telslash} +% \DescribeMacro{\telleftparen} +% \DescribeMacro{\telrightparen} +% \DescribeMacro{\telplus} +% \DescribeMacro{\teltilde} +% |\telslash#1|, |\telleftparen#1|, |\telrightparen#1|, |\telplus#1|, +% |\teltilde|\\ +% Diese Befehle konfigurieren die Zeichen '/', '(', ')', '+' +% und '\textasciitilde'. Sie funktionieren analog zu \cs{telhyphen}. +% \item \DescribeMacro\telnumber |\telnumber#1|\\ +% Richtung interner Befehl: Er dient dazu, eine Zifferngruppe +% in Zweiergruppen auszugeben. +% Die einzelnen Zahlen werden im Tokenregister \cs{TELtoks} +% gespeichert. Abwechselnd werden dabei zwischen zwei Token +% (Zahlen) \cs{TELx} bzw. \cs{TELy} eingefuegt, abh\"angig von dem +% wechselnden Wert von \cs{TELswitch}. Zum Schluss kann dann einfach +% festgestellt werden ob die Nummer nun eine geradzahlige oder +% ungeradzahlige Zahl von Ziffern aufwies. Dem entsprechend wird +% \cs{TELx} mit dem Zusatzabstand belegt und \cs{TELy} leer definiert +% oder umgekehrt. ) +% \item |\TEL...| interne Befehle, Technisches:\\ +% \cs{TELsplit} dient zur Aufteilung einer zusammengesetzten +% Telefonnummer (Vorwahl, Hauptnummer, Nebenstelle). In dieser +% Implementation werden als Trennzeichen nur '/' und '-' erkannt. +% Die einzelnen Bestandteile wie Vorwahl werden dann dem Befehl +% \cs{telnumber} zur Formatierung uebergeben. +% \item Die Erkennung von einfachen Leerzeichen ist um einiges +% schwieriger: Die Tokentrennung ueber Parameter |#1#2| funktioniert +% nicht f\"ur einfache Leerzeichen, da TeX sie \emph{niemals} als +% eigenst\"andige Argumente behandelt! (The TeXbook, Chapter 20, +% p. 201) +% +% (Anmerkung am Rande: Deshalb funktionieren die entsprechenden +% Tokenmakros auf S. 149 des Buches "`Einf\"uhrung in TeX"' von +% N. Schwarz (3. Aufl.) nicht, wenn im Tokenregister als erstes +% ein einfaches Leerzeichen steht!) +% \end{itemize} +% \end{otherlanguage*} +% +% \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 + \expandafter\let\expandafter\x\csname ver@telprint.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{telprint}{The package is already loaded}% + \endgroup + \expandafter\endinput + \fi +\endgroup +% \end{macrocode} +% Package identification: +% \begin{macrocode} +\begingroup + \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@telprint.sty\endcsname +\ProvidesPackage{telprint}% + [2006/08/16 v1.7 Formatting of German phone numbers (HO)] +% \end{macrocode} +% +% \begin{macrocode} +\ifx\telprint\UnDeFiNeD +% \fi in derselben Zeile wie \endinput oder \expandafter verwenden! +\else\endinput\fi +% \end{macrocode} +% \begin{macrocode} +\ifx\DeclareRobustCommand\UnDeFiNeD + \def\DeclareRobustCommand*#1[1]{\def#1##1} + \def\TELreset{\let\DeclareRobustCommand=\UnDeFiNeD} + \immediate\write-1{Package `telprint' warning: % + Macros are not robust!} +\else + \let\TELreset=\relax +\fi +% \end{macrocode} +% \begin{macro}{\telspace} +% \begin{macrocode} +\DeclareRobustCommand*{\telspace}[1]{\def\TELspace{#1}} +\telspace{{}$\,${}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\telhyphen} +% \begin{macrocode} +\DeclareRobustCommand*{\telhyphen}[1]{\def\TELhyphen{#1}} +\telhyphen{\leavevmode\hbox{-}}% \hbox zur Verhinderung der Trennung +% \end{macrocode} +% \end{macro} +% \begin{macro}{\telslash} +% \begin{macrocode} +\DeclareRobustCommand*{\telslash}[1]{\def\TELslash{#1}} +\telslash{/}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\telleftparen} +% \begin{macrocode} +\DeclareRobustCommand*{\telleftparen}[1]{\def\TELleftparen{#1}} +\telleftparen{(}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\telrightparen} +% \begin{macrocode} +\DeclareRobustCommand*{\telrightparen}[1]{\def\TELrightparen{#1}} +\telrightparen{)}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\telplus} +% \begin{macrocode} +\DeclareRobustCommand*{\telplus}[1]{\def\TELplus{#1}} +\telplus{+}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\teltilde} +% \begin{macrocode} +\DeclareRobustCommand*{\teltilde}[1]{\def\TELtilde{#1}} +\teltilde{~}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\TELtoks} +% \begin{macrocode} +\newtoks\TELtoks +% \end{macrocode} +% \end{macro} +% \begin{macro}{\TELnumber} +% \begin{macrocode} +\def\TELnumber#1#2\TELnumberEND{% + \begingroup + \def\0{#2}% + \expandafter\endgroup + \ifx\0\empty + \TELtoks=\expandafter{\the\TELtoks#1}% + \ifnum\TELswitch=0 + \def\TELx{\TELspace}\def\TELy{}% + \else + \def\TELx{}\def\TELy{\TELspace}% + \fi + \the\TELtoks + \else + \ifnum\TELswitch=0 + \TELtoks=\expandafter{\the\TELtoks#1\TELx}% + \def\TELswitch{1}% + \else + \TELtoks=\expandafter{\the\TELtoks#1\TELy}% + \def\TELswitch{0}% + \fi + \TELnumber#2\TELnumberEND + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\telnumber} +% \begin{macrocode} +\DeclareRobustCommand*{\telnumber}[1]{% + \TELtoks={}% + \def\TELswitch{0}% + \TELnumber#1{}\TELnumberEND +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\TELsplit} +% \begin{macrocode} +\def\TELsplit{\futurelet\TELfuture\TELdosplit} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\TELdosplit} +% \begin{macrocode} +\def\TELdosplit#1#2\TELsplitEND +{% + \def\TELsp{ }% + \expandafter\ifx\TELsp\TELfuture + \let\TELfuture=\relax + \expandafter\telnumber\expandafter{\the\TELtoks}~% + \telprint{#1#2}% Das Leerzeichen kann nicht #1 sein! + \else + \def\TELfirst{#1}% + \ifx\TELfirst\empty + \expandafter\telnumber\expandafter{\the\TELtoks}% + \TELtoks={}% + \else\if-\TELfirst + \expandafter\telnumber\expandafter{\the\TELtoks}\TELhyphen + \telprint{#2}% + \else\if/\TELfirst + \expandafter\telnumber\expandafter{\the\TELtoks}\TELslash + \telprint{#2}% + \else\if(\TELfirst + \expandafter\telnumber\expandafter{\the\TELtoks}\TELleftparen + \telprint{#2}% + \else\if)\TELfirst + \expandafter\telnumber\expandafter{\the\TELtoks}\TELrightparen + \telprint{#2}% + \else\if+\TELfirst + \expandafter\telnumber\expandafter{\the\TELtoks}\TELplus + \telprint{#2}% + \else\def\TELtemp{~}\ifx\TELtemp\TELfirst + \expandafter\telnumber\expandafter{\the\TELtoks}\TELtilde + \telprint{#2}% + \else + \TELtoks=\expandafter{\the\TELtoks#1}% + \TELsplit#2{}\TELsplitEND + \fi\fi\fi\fi\fi\fi\fi + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\telprint} +% \begin{macrocode} +\DeclareRobustCommand*{\telprint}[1]{% + \TELtoks={}% + \TELsplit#1{}\TELsplitEND +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\TELreset\let\TELreset=\UnDeFiNeD +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/telprint.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/telprint.pdf}] Documentation. +% \end{description} +% +% \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 telprint.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@{}} +% telprint.sty & tex/generic/oberdiek/telprint.sty\\ +% telprint.pdf & doc/generic/oberdiek/telprint.pdf\\ +% telprint.dtx & source/generic/oberdiek/telprint.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 telprint.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{telprint.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 telprint.dtx +%makeindex -s gind.ist telprint.idx +%pdflatex telprint.dtx +%makeindex -s gind.ist telprint.idx +%pdflatex telprint.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{1996/11/28 v1.0} +% \item +% Erste lauff\"ahige Version. +% \item +% Nur '-' und '/' als zul\"assige Sonderzeichen. +% \end{Version} +% \begin{Version}{1997/09/16 v1.1} +% \item +% Dokumentation und Kommentare (Posting in de.comp.text.tex). +% \item +% Erweiterung um Sonderzeichen '(', ')', '+', '\textasciitilde' und ' '. +% \item +% Trennungsverhinderung am 'hyphen'. +% \end{Version} +% \begin{Version}{1997/10/16 v1.2} +% \item +% Schutz vor wiederholtem Einlesen. +% \item +% Unter \LaTeXe\ Nutzung des \cs{DeclareRobustCommand}-Features. +% \end{Version} +% \begin{Version}{1997/12/09 v1.3} +% \item +% Tempor\"are Variable eingespart. +% \end{Version} +% \begin{Version}{2004/11/02 v1.4} +% \item +% Fehler in der Dokumentation korrigiert. +% \end{Version} +% \begin{Version}{2005/09/30 v1.5} +% \item +% Konfigurierbare Symbole: '/', '(', ')', '+' und '\textasciitilde'. +% \end{Version} +% \begin{Version}{2006/02/12 v1.6} +% \item +% LPPL 1.3. +% \item +% Kurze \"Ubersicht in Englisch. +% \item +% CTAN. +% \end{Version} +% \begin{Version}{2006/08/26 v1.7} +% \item +% New DTX framework. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/twoopt.dtx b/Master/texmf-dist/source/latex/oberdiek/twoopt.dtx index 8e139668c6a..955019a1298 100644 --- a/Master/texmf-dist/source/latex/oberdiek/twoopt.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/twoopt.dtx @@ -1,82 +1,180 @@ % \iffalse meta-comment % -% twoopt.dtx -% -% This file is part of the package `twoopt' for use with LaTeX2e. -% -% Function: Defining commands with two optional arguments. -% -% Copyright (C) 1998,1999 Heiko Oberdiek. -% -% This program can be redistributed and/or modified -% under the terms of the LaTeX Project Public License -% distributed from CTAN archives in directory -% macros/latex/base/lppl.txt; either version 1 of -% the License, or (at your option) any later version. -% -% Please send error reports and suggestions for improvements to -% Heiko Oberdiek <oberdiek@ruf.uni-freiburg.de>. -% -%<*dtx> - \ProvidesFile{twoopt.dtx} -%</dtx> -%<package>\NeedsTeXFormat{LaTeX2e}[1995/12/01] -%<package>\ProvidesPackage{twoopt} -%<driver>\ProvidesFile{twoopt.drv} -% \fi -% \ProvidesFile{twoopt.dtx} - [1999/04/12 v1.3 Definitions with two optional arguments (HO)] -% -% \GetFileInfo{twoopt.dtx} -% -% \CheckSum{103} -% -%% \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 \~} -%% -% \iffalse +% Copyright (C) 1999, 2006 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 twoopt.dtx +% and the derived files +% twoopt.sty, twoopt.pdf, twoopt.ins, twoopt.drv. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/twoopt.dtx +% CTAN:macros/latex/contrib/oberdiek/twoopt.pdf +% +% Unpacking: +% (a) If twoopt.ins is present: +% tex twoopt.ins +% (b) Without twoopt.ins: +% tex twoopt.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{twoopt.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If twoopt.drv is present: +% latex twoopt.drv +% (b) Without twoopt.drv: +% latex twoopt.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 twoopt.dtx +% makeindex -s gind.ist twoopt.idx +% pdflatex twoopt.dtx +% makeindex -s gind.ist twoopt.idx +% pdflatex twoopt.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/twoopt.sty +% TDS:doc/latex/oberdiek/twoopt.pdf +% TDS:source/latex/oberdiek/twoopt.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: twoopt 2006/02/20 v1.4 Definitions with two optional arguments (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 1999, 2006 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 twoopt.dtx +and the derived files + twoopt.sty, twoopt.pdf, twoopt.ins, twoopt.drv. + +\endpreamble + +\generate{% + \file{twoopt.ins}{\from{twoopt.dtx}{install}}% + \file{twoopt.drv}{\from{twoopt.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{twoopt.sty}{\from{twoopt.dtx}{package}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* twoopt.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `twoopt.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> %<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{twoopt.drv}% + [2006/02/20 v1.4 Definitions with two optional arguments (HO)] \documentclass{ltxdoc} \usepackage{holtxdoc} \begin{document} - \DocInput{twoopt.dtx} + \DocInput{twoopt.dtx} \end{document} %</driver> % \fi % -% \DoNotIndex{\csname,\endcsname,\expandafter,\noexpand,\string} -% \DoNotIndex{\begingroup,\endgroup,\def,\xdef,\long,\let} +% \CheckSum{105} +% +% \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{twoopt.drv} +% +% \title{The \xpackage{twoopt} package} +% \date{2006/02/20 v1.4} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} % -% \newenvironment{param}{^^A -% \newcommand{\entry}[1]{\meta{\###1}:&}^^A -% \begin{tabular}[t]{@{}l@{ }l@{}}^^A -% }{^^A -% \end{tabular}^^A -% } -% -% \SetupTitle{definitions,optional,argument,LaTeX} % \maketitle % % \begin{abstract} -% This package provides commands to define macros with two -% optional arguments. +% This package provides commands to define macros with two +% optional arguments. % \end{abstract} % % \tableofcontents % +% \newenvironment{param}{^^A +% \newcommand{\entry}[1]{\meta{\###1}:&}^^A +% \begin{tabular}[t]{@{}l@{ }l@{}}^^A +% }{^^A +% \end{tabular}^^A +% } +% % \section{Usage} % \DescribeMacro{\newcommandtwoopt} % \DescribeMacro{\renewcommandtwoopt} @@ -115,13 +213,15 @@ % \end{tabular} % \end{quote} % -% \Installation -% -% \StopEventually{} +% \StopEventually{ +% } % % \section{Implementation} % \begin{macrocode} %<*package> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{twoopt} + [2006/02/20 v1.4 Definitions with two optional arguments (HO)] % \end{macrocode} % \begin{macro}{\newcommandtwoopt} % \begin{macrocode} @@ -257,38 +357,139 @@ % \begin{macrocode} %</package> % \end{macrocode} -% -% \StartHistory -% \HistVersion{1998/10/30 v1.0} -% \begin{itemize} -% \item The first version was built as a response to a question -% of \Email[Rebecca and Rowland]{rebecca@astrid.u-net.com}, +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/twoopt.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/twoopt.pdf}] Documentation. +% \end{description} +% +% \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 twoopt.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@{}} +% twoopt.sty & tex/latex/oberdiek/twoopt.sty\\ +% twoopt.pdf & doc/latex/oberdiek/twoopt.pdf\\ +% twoopt.dtx & source/latex/oberdiek/twoopt.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 twoopt.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{twoopt.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 twoopt.dtx +%makeindex -s gind.ist twoopt.idx +%pdflatex twoopt.dtx +%makeindex -s gind.ist twoopt.idx +%pdflatex twoopt.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{1998/10/30 v1.0} +% \item +% The first version was built as a response to a question +% of \NameEmail{Rebecca and Rowland}{rebecca@astrid.u-net.com}, % published in the newsgroup % \href{news:comp.text.tex}{comp.text.tex}:\\ % \URL{``Re: [Q] LaTeX command with two optional arguments?''}^^A % {http://www.dejanews.com/[ST_rn=ps]/getdoc.xp?AN=406573518} -% \end{itemize} -% \HistVersion{1998/10/30 v1.1} -% \begin{itemize} -% \item Improvements added in response to -% \Email[Stefan Ulrich]{ulrich@cis.uni-muenchen.de} +% \end{Version} +% \begin{Version}{1998/10/30 v1.1} +% \item +% Improvements added in response to +% \NameEmail{Stefan Ulrich}{ulrich@cis.uni-muenchen.de} % in the same thread:\\ % \URL{``Re: [Q] LaTeX command with two optional arguments?''}^^A % {http://www.dejanews.com/[ST_rn=ps]/getdoc.xp?AN=406703373} -% \end{itemize} -% \HistVersion{1998/11/04 v1.2} -% \begin{itemize} -% \item Fixes for LaTeX bugs 2896, 2901, 2902 added. -% \end{itemize} -% \HistVersion{1999/04/12 v1.3} -% \begin{itemize} -% \item Fixes removed because of LaTeX [1998/12/01]. -% \item Documentation in dtx format. -% \item Copyright: LPPL (\CTAN{macros/latex/base/lppl.txt}) -% \item First CTAN release. -% \end{itemize} -% -% \hfuzz10pt +% \end{Version} +% \begin{Version}{1998/11/04 v1.2} +% \item +% Fixes for LaTeX bugs 2896, 2901, 2902 added. +% \end{Version} +% \begin{Version}{1999/04/12 v1.3} +% \item +% Fixes removed because of LaTeX [1998/12/01]. +% \item +% Documentation in dtx format. +% \item +% Copyright: LPPL (\CTAN{macros/latex/base/lppl.txt}) +% \item +% First CTAN release. +% \end{Version} +% \begin{Version}{2006/02/20 v1.4} +% \item +% Code is not changed. +% \item +% New DTX framework. +% \item +% LPPL 1.3 +% \end{Version} +% \end{History} +% % \PrintIndex % % \Finale diff --git a/Master/texmf-dist/source/latex/oberdiek/twoopt.ins b/Master/texmf-dist/source/latex/oberdiek/twoopt.ins deleted file mode 100644 index 5fa883f6d02..00000000000 --- a/Master/texmf-dist/source/latex/oberdiek/twoopt.ins +++ /dev/null @@ -1,72 +0,0 @@ -% twoopt.ins -% -% This file is part of the package `twoopt' for use with LaTeX2e. -% -% Function: Defining commands with two optional arguments. -% -% Copyright (C) 1998,1999 Heiko Oberdiek. -% -% This program can be redistributed and/or modified -% under the terms of the LaTeX Project Public License -% distributed from CTAN archives in directory -% macros/latex/base/lppl.txt; either version 1 of -% the License, or (at your option) any later version. -% -% Please send error reports and suggestions for improvements to -% Heiko Oberdiek <oberdiek@ruf.uni-freiburg.de>. -% - -\def\batchfile{twoopt.ins} -\input docstrip.tex -{\ifx\generate\undefined -\Msg{**********************************************} -\Msg{*} -\Msg{* This installation requires docstrip} -\Msg{* version 2.3c or later.} -\Msg{*} -\Msg{* An older version of docstrip has been input} -\Msg{*} -\Msg{**********************************************} -\errhelp{Move or rename old `docstrip.tex'.} -\errmessage{Old docstrip in input path} -\batchmode -\csname @@end\endcsname -\fi} - -\keepsilent - -\preamble - -This file is part of the package `twoopt' for use with LaTeX2e. - -Function: Defining commands with two optional arguments. - -Copyright (C) 1998,1999 Heiko Oberdiek. - -This program can be redistributed and/or modified -under the terms of the LaTeX Project Public License -distributed from CTAN archives in directory -macros/latex/base/lppl.txt; either version 1 of -the License, or (at your option) any later version. - -Please send error reports and suggestions for improvements to - Heiko Oberdiek <oberdiek@ruf.uni-freiburg.de>. - -\endpreamble - -\generateFile{twoopt.sty}{f}{\from{twoopt.dtx}{package}} -%\generateFile{twoopt.drv}{f}{\from{twoopt.dtx}{driver}} - -\Msg{***********************************************************} -\Msg{* To finish the installation you have to move the following} -\Msg{* file into a directory searched by TeX:} -\Msg{*} -\Msg{* \space\space twoopt.sty} -\Msg{*} -\Msg{* To produce the documentation run the file `twoopt.dtx'} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing} -\Msg{***********************************************************} - -\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/zref.dtx b/Master/texmf-dist/source/latex/oberdiek/zref.dtx new file mode 100644 index 00000000000..999d3372bfd --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/zref.dtx @@ -0,0 +1,3261 @@ +% \iffalse meta-comment +% +% Copyright (C) 2006 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 zref.dtx +% and the derived files +% zref.sty, zref.pdf, zref.ins, zref.drv, +% zref-base.sty, zref-abspage.sty, zref-counter.sty, +% zref-dotfill.sty, zref-hyperref.sty, zref-lastpage.sty, +% zref-perpage.sty, zref-savepos.sty, zref-titleref.sty, +% zref-totpages.sty, zref-user.sty, zref-xr.sty, +% zref-example.tex. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/zref.dtx +% CTAN:macros/latex/contrib/oberdiek/zref.pdf +% +% Unpacking: +% (a) If zref.ins is present: +% tex zref.ins +% (b) Without zref.ins: +% tex zref.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{zref.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If zref.drv is present: +% latex zref.drv +% (b) Without zref.drv: +% latex zref.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 zref.dtx +% makeindex -s gind.ist zref.idx +% pdflatex zref.dtx +% makeindex -s gind.ist zref.idx +% pdflatex zref.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/zref.sty +% TDS:tex/latex/oberdiek/zref-base.sty +% TDS:tex/latex/oberdiek/zref-abspage.sty +% TDS:tex/latex/oberdiek/zref-counter.sty +% TDS:tex/latex/oberdiek/zref-dotfill.sty +% TDS:tex/latex/oberdiek/zref-hyperref.sty +% TDS:tex/latex/oberdiek/zref-lastpage.sty +% TDS:tex/latex/oberdiek/zref-perpage.sty +% TDS:tex/latex/oberdiek/zref-savepos.sty +% TDS:tex/latex/oberdiek/zref-titleref.sty +% TDS:tex/latex/oberdiek/zref-totpages.sty +% TDS:tex/latex/oberdiek/zref-user.sty +% TDS:tex/latex/oberdiek/zref-xr.sty +% TDS:doc/latex/oberdiek/zref.pdf +% TDS:doc/latex/oberdiek/zref-example.tex +% TDS:source/latex/oberdiek/zref.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: zref 2006/05/25 v1.2 New reference scheme for LaTeX2e (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\preamble + +This is a generated file. + +Copyright (C) 2006 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 zref.dtx +and the derived files + zref.sty, zref.pdf, zref.ins, zref.drv, + zref-base.sty, zref-abspage.sty, zref-counter.sty, + zref-dotfill.sty, zref-hyperref.sty, zref-lastpage.sty, + zref-perpage.sty, zref-savepos.sty, zref-titleref.sty, + zref-totpages.sty, zref-user.sty, zref-xr.sty, + zref-example.tex. + +\endpreamble + +\generate{% + \file{zref.ins}{\from{zref.dtx}{install}}% + \file{zref.drv}{\from{zref.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{zref.sty}{\from{zref.dtx}{package}}% + \file{zref-base.sty}{\from{zref.dtx}{base}}% + \file{zref-abspage.sty}{\from{zref.dtx}{abspage}}% + \file{zref-counter.sty}{\from{zref.dtx}{counter}}% + \file{zref-dotfill.sty}{\from{zref.dtx}{dotfill}}% + \file{zref-hyperref.sty}{\from{zref.dtx}{hyperref}}% + \file{zref-lastpage.sty}{\from{zref.dtx}{lastpage}}% + \file{zref-perpage.sty}{\from{zref.dtx}{perpage}}% + \file{zref-savepos.sty}{\from{zref.dtx}{savepos}}% + \file{zref-titleref.sty}{\from{zref.dtx}{titleref}}% + \file{zref-totpages.sty}{\from{zref.dtx}{totpages}}% + \file{zref-user.sty}{\from{zref.dtx}{user}}% + \file{zref-xr.sty}{\from{zref.dtx}{xr}}% + \usedir{doc/latex/oberdiek}% + \file{zref-example.tex}{\from{zref.dtx}{example}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* zref.sty, zref-base.sty, zref-abspage.sty, zref-counter.sty,} +\Msg{* zref-dotfill.sty, zref-hyperref.sty, zref-lastpage.sty,} +\Msg{* zref-perpage.sty, zref-savepos.sty, zref-titleref.sty,} +\Msg{* zref-totpages.sty, zref-user.sty, zref-xr.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `zref.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{zref.drv}% + [2006/05/25 v1.2 New reference scheme for LaTeX2e (HO)] +\documentclass{ltxdoc} +\usepackage{holtxdoc} +\begin{document} + \DocInput{zref.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{1452} +% +% \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{zref.drv} +% +% \title{The \xpackage{zref} package} +% \date{2006/05/25 v1.2} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% Package \xpackage{zref} tries to get rid of the restriction +% in \LaTeX's reference system that only two properties are +% supported. The package implements an extensible referencing +% system, where properties are handled in a more flexible way. +% It offers an interface for macro programmers for the access +% to the system and some applications that uses the new +% reference scheme. +% \end{abstract} +% +% \tableofcontents +% +% \newcommand*{\metacs}[1]{\texttt{\itshape #1}} +% +% \newcommand{\markexp}{^^A +% \textsuperscript{exp}^^A +% \space +% } +% \newcommand{\markrobust}{^^A +% \textsuperscript{robust}^^A +% \space +% } +% \newcommand{\marknowarn}{^^A +% \textsuperscript{nowarn}^^A +% \space +% } +% \newcommand{\markbabel}{^^A +% \textsuperscript{babel}^^A +% \space +% } +% +% \section{Introduction} +% +% Standard \LaTeX's reference system with \cs{label}, \cs{ref}, +% and \cs{pageref} supports two properties, the apperance of +% the counter that is last incremented by \cs{refstepcounter} and +% the page with the \cs{label} command. +% +% Unhappily \LaTeX\ does not provide an interface for adding +% another properties. Packages such as \xpackage{hyperref}, +% \xpackage{nameref}, or \xpackage{titleref} are forced to +% use ugly hacks to extend the reference system. +% These ugly hacks are one of the causes for \xpackage{hyperref}'s +% difficulty regarding compatibility with other packages. +% +% \subsection{Standard \LaTeX\ behaviour} +% +% References are created by the \cs{label} command: +% \begin{quote} +% |\chapter{Second chapter}|\\ +% |\section{First section on page 7} % section 2.1|\\ +% |\label{myref}| +% \end{quote} +% Now \LaTeX\ records the section number |2.1| and the page |7| +% in the reference. Internally the reference is a list with +% two entries: +% \begin{quote} +% |\r@myref| $\rightarrow$ |{2.1}{7}| +% \end{quote} +% The length of the list if fixed in the \LaTeX\ kernel, +% An interface for adding new properties is missing. +% +% There are several tries to add new properties: +% \begin{description} +% \item[\xpackage{hyperref}] uses a list of five +% properties instead of the standard list with two entries. +% This causes many compatibility problems with \LaTeX\ and +% other packages. +% \item[\xpackage{titleref}] stores its title data into the +% first entry in the list. \LaTeX\ is happy because it +% does only see its list with two entries. The situation +% becomes more difficult, if more properties are added +% this way. Then the macros form a nested structure +% inside the first reference argument for the label. +% Expandable extractions will then become painful. +% \end{description} +% +% \subsection{Basic idea} +% +% Some time ago Morten H\o gholm sent me an experimental +% cross referencing mechanism as ``expl3'' code. His +% idea is: +% \begin{quote} +% |\g_xref_mylabel_plist| $\rightarrow$\\ +% \mbox{}\qquad|\xref_dance_key{salsa}\xref_name_key{Morten}|\dots +% \end{quote} +% The entries have the following format: +% \begin{quote} +% |\xref_|\meta{your key}|_key{|\meta{some text}|}| +% \end{quote} +% This approach is much more flexible: +% \begin{itemize} +% \item New properties can easily be added, just use a new key. +% \item The length of the list is not fixed. A reference +% can use a subset of the keys. +% \item The order of the entries does not matter. +% \end{itemize} +% Unhappily I am not familiar with the experimental code +% for \LaTeX3 that will need some time before its first release. +% Thus I have implemented it as \LaTeXe\ package without disturbing +% the existing \LaTeX\ reference system. +% +% \subsection{Interfaces} +% +% The package provides a generic \emph{interface for programmers}. +% Commands of this interface are prefixed by \cs{zref@}. +% +% Option \xoption{user} enabels the \emph{user interface}. +% Here the commands are prefixed by \cs{z} to avoid name +% clashes with existing macros. +% +% Then the packages provides some \emph{modules}. They +% are applications for the reference system and can also be +% considered as examples how to use the reference system. +% +% The modules can be loaded as packages. The package +% name is prefixed with |zref-|, for example: +%\begin{quote} +%\begin{verbatim} +%\RequirePackage{zref-abspage} +%\end{verbatim} +%\end{quote} +% This is the preferred way if the package is loaded from +% within other packages to avoid option clashes. +% +% As alternative package |zref| can be used and the modules +% are given as options: +%\begin{quote} +%\begin{verbatim} +%\usepackage[perpage,user]{zref} +%\end{verbatim} +%\end{quote} +% +% \section{Interface for programmers} +% +% The user interface is described in the next section \ref{sec:user}. +% +% \subsection{Entities} +% +% \paragraph{Reference.} +% Internally a reference is a list of key value pairs: +% \begin{quote} +% |\Z@R@myref| $\rightarrow$ +% |\default{2.1}\page{7}| +% \end{quote} +% The generic format of a entry is: +% \begin{quote} +% |\Z@R@|\meta{refname} $\rightarrow$ +% |\|\meta{propname}|{|\meta{value}|}| +% \end{quote} +% \meta{refname} is the name that denoted references +% (the name used in \cs{label} and \cs{ref}). \meta{propname} +% is the name of the property or key. The property key macro +% is never executed, it is used in parameter text matching only. +% +% \paragraph{Property.} +% Because the name of a property is used in a macro name +% that must survive the \xfile{.aux} file, the name is +% restricted to letters and `@'. +% +% \paragraph{Property list.} +% Often references are used for special purposes. Thus it +% saves memory if just the properties are used in this +% reference that are necessary for its purpose. +% +% Therefore this package uses the concept of \emph{property lists}. +% A property list is a set of properties. The set of properties +% that is used by the default \cs{label} command is the +% \emph{main property list}. +% +% \subsection{Property list} +% +% \markexp means that the implementation of the +% marked macro is expandable. +% +% \begin{declcs}{zref@newlist} +% \M{listname} +% \end{declcs} +% Declares a new empty property list. +% +% \begin{declcs}{zref@addprop} +% \M{listname} \M{propname} +% \end{declcs} +% Adds the property \meta{propname} to the property list \meta{listname}. +% The property and list must exist. +% +% \begin{declcs}{zref@listexists} +% \M{listname} \M{then} +% \end{declcs} +% Executes \meta{then} if the property list \meta{listname} exists +% or raise an error otherwise. +% +% \begin{declcs}{zref@iflistundefined}\markexp \M{listname} +% \M{then} \M{else} +% \end{declcs} +% Executes \meta{then} if the list exists or \meta{else} +% otherwise. +% +% \begin{declcs}{zref@iflistcontainsprop} +% \M{listname} \M{propname} \M{then} \M{else} +% \end{declcs} +% Executes \meta{then} if the property \meta{propname} is part +% of property list \meta{listname} or otherwise it +% runs the \meta{else} part. +% +% \subsection{Property} +% +% \begin{declcs}{zref@newprop} +% \* \M{propname} |[|\meta{default}|]| \M{value} +% \end{declcs} +% This command declares and configures a new property with +% name \meta{propname}. +% +% In case of unknown references +% or the property does not exist in the reference, the +% \meta{default} is used as value. If it is not specified +% here, a global default is used, see \cs{zref@setdefault}. +% +% The correct values of some properties are not known +% immediately but at page shipout time. Prominent example +% is the page number. These properties are declared with +% the star form of the command. +% +% \begin{declcs}{zref@setcurrent} +% \M{propname} \M{value} +% \end{declcs} +% This sets the current value of the property \meta{propname}. +% It is a generalization of setting \LaTeX's \cs{currentlabel}. +% +% \begin{declcs}{zref@propexists} +% \M{propname} \M{then} +% \end{declcs} +% Calls \meta{then} if the property \meta{propname} is available +% or generates an error message otherwise. +% +% \begin{declcs}{zref@ifpropundefined}\markexp +% \M{propname} \M{then} \M{else} +% \end{declcs} +% Calls \meta{then} or \meta{else} depending on the existence +% of property \meta{propname}. +% +% \subsection{Reference generation} +% +% \begin{declcs}{zref@label} +% \M{refname} +% \end{declcs} +% This works similar to \cs{label}. The reference \meta{refname} is +% created and put into the \xfile{.aux} file with the +% properties of the main property list. +% +% \begin{declcs}{zref@labelbylist} +% \M{refname} \M{listname} +% \end{declcs} +% Same as \cs{zref@label} except that the properties are +% taken from the specified property list \meta{listname}. +% +% \begin{declcs}{zref@labelbyprops} +% \M{refname} |{|\meta{propnameA}|,|\meta{propnameB}|,|\dots|}| +% \end{declcs} +% Same as \cs{zref@label} except that these properties +% are used that are given as comma separated list in the +% second argument. +% +% \begin{declcs}{zref@newlabel} +% \M{refname} |{|\dots|}| +% \end{declcs} +% This is the macro that is used in the \xfile{.aux} file. +% It is basically the same as \cs{newlabel} apart from +% the format of the data in the second argument. +% +% \subsection{Data extraction} +% +% \begin{declcs}{zref@extractdefault}\markexp +% \M{refname} \M{propname} \M{default} +% \end{declcs} +% This is the basic command that refernces the value of a +% property \meta{propname} for the reference \meta{refname}. +% In case of errors such as undefined reference the \meta{default} +% is used instead. +% +% \begin{declcs}{zref@extract}\markexp +% \M{refname} \M{propname} +% \end{declcs} +% The command is an abbreviation for \cs{zref@extractdefault}. +% As default the default of the property is taken, otherwise +% the global default. +% +% Example for page references: +% \begin{quote} +% \begin{tabular}{@{}ll} +% \LaTeX:& |\pageref{foobar}|\\ +% \xpackage{zref}:& |\zref@extract{foobar}{page}| +% \end{tabular} +% \end{quote} +% Both \cs{zref@extract} and \cs{zref@extractdefault} are +% expandable. That means, these macros can directly +% be used in expandable calculations, see the example file. +% On the other side, babel's shorthands are not supported, +% there are no warnings in case of undefined references. +% +% If an user interface doesn't need expandable macros +% then it can use \cs{zref@used} and \cs{zref@wrapper@babel} +% for its user macros. +% +% \begin{declcs}{zref@used} +% \M{refname} +% \end{declcs} +% This command is not expandable. It causes the warnings if +% the reference \meta{refname} is not defined. Use the +% \cs{zref@extract} commands inside expandable contexts and +% mark their use outside by \cs{zref@used}, see the example +% file. +% +% \begin{declcs}{zref@ifrefundefined}\markexp +% \M{refname} \M{then} \M{else} +% \end{declcs} +% A possibility to check whether a reference exists. +% +% \begin{declcs}{zref@ifrefcontainsprop}\markexp +% \M{refname} \M{propname} \M{then} \M{else} +% \end{declcs} +% Test whether a reference provides a property. +% +% \subsection{Setup} +% +% \begin{declcs}{zref@default} +% \end{declcs} +% Holds the global default for unknown values. +% +% \begin{declcs}{zref@setdefault} +% |{|\meta{value}|}| +% \end{declcs} +% Sets the global default for unknown values. +% The global default is used, if a property does not specify +% an own default and the value for a property +% cannot be extracted. This can happen if the reference is +% unknown or the reference does not have the property. +% +% \begin{declcs}{zref@setmainlist} +% |{|\meta{value}|}| +% \end{declcs} +% Sets the name of the main property list. The package +% sets and uses |main|. +% +% \subsection{Declared properties} +% +% \begin{quote} +% \renewcommand*{\arraystretch}{1.05} +% \setlength{\tabcolsep}{2\tabcolsep} +% \def\VV{\vphantom{\large \"Ag}} +% \def\EMPTY{{\itshape\textless empty\textgreater}} +% \begin{tabular}{@{}>{\sffamily}l|>{\ttfamily}l|>{\ttfamily}l|>{\ttfamily}l@{}} +% \rmfamily Modul& +% \rmfamily Property& +% \rmfamily Property list& +% \rmfamily Default\\ +% \hline +% & default & main & \EMPTY\\ +% & page & main & \EMPTY\\ +% \hline +% abspage\textrm{, }totpages & abspage & main & 0\\ +% \hline +% perpage & pagevalue & perpage & 0\\ +% & page & perpage & \EMPTY\\ +% & abspage & perpage & 0\\ +% \hline +% counter & counter & main & \EMPTY\\ +% \hline +% titleref & title & main & \EMPTY\\ +% \hline +% savepos & posx & savepos & 0\\ +% & posy & savepos & 0\\ +% \hline +% hyperref & anchor & main & \EMPTY\\ +% & url & & \EMPTY\\ +% \hline +% xr & url & & \EMPTY\\ +% \end{tabular} +% \end{quote} +% +% \subsection{Wrapper for advanced situations} +% +% \begin{declcs}{zref@wrapper@babel} +% |{|\dots|}| \M{name} +% \end{declcs} +% This macro helps to add shorthand support. The second +% argument is protected, then the code of the first argument +% is called with the protected name appended. Examples +% are in the sources. +% +% \begin{declcs}{zref@wrapper@immediate} +% |{|\dots|}| +% \end{declcs} +% There are situations where a label must be written instantly +% to the \xfile{.aux} file, for example after the last page. +% If the \cs{label} command is put inside this wrapper, +% immediate writing is enabled. See the implementation for +% option \xoption{lastpage}. +% +% \begin{declcs}{zref@wrapper@unexpanded} +% |{|\dots|}| +% \end{declcs} +% Assuming someone wants to extract a value for property |bar| +% and store the result in a macro |\foo| without traces of +% the expanding macros and without expanding the value. +% This (theoretical?) problem can be solved by this wrapper: +% \begin{quote} +%\begin{verbatim} +%\edef\foo{% +% \zref@wrapper@unexpanded{% +% \zref@extract{someref}{bar}% +% }% +%} +%\end{verbatim} +% \end{quote} +% The \cs{edef} forces the expansion of \cs{zref@extract}, +% but the extraction of the value is prevented by +% the wrapper that uses \eTeX'\ \cs{unexpanded} for this +% purpose. +% +% \subsection{Counter for unique names} +% +% Some modules (\xoption{titleref} and \xoption{dotfillmin}) +% need unique names for automatically generated label names. +% +% \begin{declcs}{zref@require@unique} +% \end{declcs} +% This command creates the unique counter |zref@unique| if the +% counter does not already exist. +% +% \begin{declcs}{thezref@unique} +% \end{declcs} +% This command is used to generate unique label names. +% +% \section{User interface}\label{sec:user} +% +% \subsection{Module \xoption{user}} +% +% The user interface for this package and its modules +% is enabled by \xpackage{zref}'s package option \xoption{user} +% or package \xpackage{zref-user}. +% The names of user commands are prefixed by |z| in order +% to avoid name clashes with existing macros of the same +% functionality. Thus the package does not disturb the +% traditional reference scheme, both can be used together. +% +% The syntax descriptions contain the following markers +% that are intended as hints for programmers: +% \begin{quote} +% \begin{tabular}{@{}ll@{}} +% \markbabel\unskip & Babel shorthands are allowed.\\ +% \markrobust\unskip & Robust macro.\\ +% \markexp\unskip & Expandable version:\\ +% & \textbullet\ robust, +% unless the extracted values are fragile,\\ +% & \textbullet\ no babel shorthand suport. +% \end{tabular} +% \end{quote} +% +% The basic user interface of the package without modules +% are commands that mimic the standard \LaTeX\ behaviour +% of \cs{label}, \cs{ref}, and \cs{pageref}: +% +% \begin{declcs}{zlabel} +% \M{refname}\markbabel +% \end{declcs} +% Similar to \cs{label}. It generates a label with name +% \meta{refname} in the new reference scheme. +% +% \begin{declcs}{zref} +% |[|\meta{propname}|]| \M{refname}\markbabel +% \end{declcs} +% Without optional argument similar to \cs{ref}, it returns +% the default reference property. This property is named +% |default|: +% \[ +% |\zref{|x|}| \equiv |\zref[default]{|x|}| +% \] +% +% \begin{declcs}{zpageref} +% \M{refname}\markbabel +% \end{declcs} +% Convenience macro, similar to \cs{pageref}. +% \[ +% |\zpageref{|x|}| \equiv |\zref[page]{|x|}| +% \] +% +% \begin{declcs}{zrefused} +% \M{refname}\markbabel +% \end{declcs} +% Some of the user commands in the modules are expandable. +% The use of such commands do not cause any undefined +% reference warnings, because inside of expandable +% contexts this is not possible. However, if there is +% a place outside of expandable contexts, \cs{refused} +% is strongly recommended. The reference \meta{refname} +% is marked as used, undefined ones will generate +% warnings. +% +% \subsection{Module \xoption{abspage}} +% +% With the help of package \xpackage{everyshi} (\cite{everyshi}) +% a new counter |abspage| with absolute page numbers is provided. +% Also a new property |abspage| is defined and added to the +% main property list. Thus you can reference the absolute +% page number: +% \begin{quote} +% |Section \zref{foo} is on page \zpageref{foo}.|\\ +% |This is page \zref[abspage]{foo} of \zref[abspage]{LastPage}.| +% \end{quote} +% The example also makes use of option \xoption{lastpage}. +% +% \subsection{Module \xoption{lastpage}} +% +% Provides the functionality of package \xpackage{lastpage} +% (\cite{lastpage}) in the new reference scheme. +% The label |LastPage| is put at the end of the document. +% You can refer the last page number with: +% \begin{quote} +% |\zpageref{LastPage}| +% \end{quote} +% +% \subsection{Module \xoption{totpages}} +% +% For the total number of pages of a document you need to +% know the absolute page number of the last page. +% Both options \xoption{abspage} and \xoption{lastpage} +% are necessary and automatically enabled. +% +% \begin{declcs}{ztotpages}\markexp +% \end{declcs} +% Prints the total number of pages or |0| if this +% number is not yet known. This command can also used +% in calculations or counter assignments. +% +% \subsection{Module \xoption{perpage}} +% +% With \cs{@addtoreset} or \cs{numberwithin} a counter can be +% reset if another counter is incremented. This do not work +% well if the other counter is the page counter. The page counter is +% incremented in the output routine that is often called asynchronous +% somewhere on the next page. A reference mechanism costs at least +% two \LaTeX\ runs, but ensures correct page counter values. +% +% \begin{declcs}{zmakeperpage} +% |[|\meta{reset}|]| \M{counter} +% \end{declcs} +% At the of a new page counter \meta{counter} starts +% counting with value \meta{reset} (default is \texttt{1}). +% The macro has the same +% syntax and semantics as \cs{MakePerPage} of package +% \xpackage{perpage} (\cite{perpage}). +% Also \xoption{perpage} of package \xpackage{footmisc} (\cite{footmisc}) +% can easily be simulated by +% \begin{quote} +% |\zmakeperpage{footnote}| \itshape |% \usepackage[perpage]{footmisc}| +%\end{quote} +% If footnote symbols are used, some people dislike the +% first symbol \ensuremath{\dagger}. It can easily be skipped: +% \begin{quote} +% |\zmakeperpage[2]{footnote}| +% \end{quote} +% +% \begin{declcs}{thezpage}\\ +% counter |zpage| +% \end{declcs} +% If the formatted counter value of the counter that is reset at +% a new page contains the page value, then you can use \cs{thezpage}, +% the page number of the current page. Or counter |zpage| can be +% used, if the page number should be formatted differently from +% the current page number. Example: +%\begin{quote} +%\begin{verbatim} +%\newcounter{foobar} +%\zmakeperpage{foobar} +%\renewcommand*{\thefoobar}{\thezpage-\arabic{foobar}} +% % or +%\renewcommand*{\thefoobar}{\roman{zpage}-\arabic{foobar}} +%\end{verbatim} +%\end{quote} +% +% \begin{declcs}{zunmakeperpage} +% \M{counter} +% \end{declcs} +% The reset mechanism for this counter is deactivated. +% +% +% \subsection{Module \xoption{counter}} +% +% This option just add the property |counter| to the main +% property list. The property stores the counter name, +% that was responsible for the reference. This is the +% property \xpackage{hyperref}'s \cs{autoref} feature +% uses. Thus this property |counter| may be useful +% for a reimplementation of the autoref feature, +% see the section \ref{sec:todo} with the todo list. +% +% \subsection{Module \xoption{titleref}} +% +% This option makes section and caption titles available +% to the reference system similar to packages \xpackage{titleref} +% or \xpackage{nameref}. +% +% \begin{declcs}{ztitleref} +% \M{refname}\markbabel +% \end{declcs} +% Print the section or caption title of reference \meta{refname}, +% similar to \cs{nameref} or \cs{titleref}. +% +% \begin{declcs}{ztitlerefsetup} +% |{|\textit{key$_1$=value$_1$, key$_2$=value$_2$, \dots}|}| +% \end{declcs} +% This command allows to configure the behaviour of modul +% \xoption{titleref}. The following keys are available: +% \begin{description} +% \let\bfseries\relax +% \item[\texttt{title=}\meta{value}]\mbox{}\\* +% Sets the current title. +% \item[\texttt{stripperiod=true\string|false}]\mbox{}\\* +% Follow package \xpackage{nameref} that +% removes a last period. Default: |true|. +% \item[\texttt{expand=true\string|false}]\mbox{}\\* +% Package \cs{titleref} expands the title first. This way +% garbage and dangerous commands can be removed, e.g. +% \cs{label}, \cs{index}\dots. See implementation section +% for more details. Default is |false|. +% \item[\texttt{cleanup=\{}\textrm{\dots}\texttt{\}}]\mbox{}\\* +% Hook to add own cleanup code, if method |expand| is used. +% See implementation section for more details. +% \end{description} +% +% \subsection{Module \xoption{savepos}} +% +% This option supports a feature that \pdfTeX\ provides. +% \pdfTeX\ is able to tell the current position on the +% page. The page position is not instantly known. First the +% page must be constructed by \TeX's asynchronous output +% routine. Thus the time where the position is known is +% the page shipout time. Thus a reference system where the +% information is recorded in the first run and made available +% for use in the second run comes in handy. +% +% \begin{declcs}{zsavepos} +% \M{refname} +% \end{declcs} +% It generates a reference with name \meta{refname} to +% the location where the command is executed. +% +% \begin{declcs}{zposx}\markexp +% \M{refname}\\ +% \SpecialUsageIndex{\zposy}\cs{zposy}\markexp \M{refname} +% \end{declcs} +% Get the position as number. Unit is sp. Horizontal +% positions by \cs{zposx} increase from left to right. +% Vertical positions by \cs{zposy} from bottom to top. +% +% Do not rely on absolute page numbers. Because of problems +% with the origin the numbers may differ in DVI or PDF mode +% of \pdfTeX. Therefore work with relative values by comparisons. +% +% Both \cs{zposx} and \cs{zposy} are expandable and can be +% used inside calculations (\cs{setcounter}, \cs{addtocounter}, +% package \xpackage{calc}, \cs{numexpr}). However this property +% prevents from notifying \LaTeX\ that the reference is actually +% used (the notifying is not expandable). Therefore you should +% mark the reference as used by \cs{zrefused}. +% +% This module uses \pdfTeX's \cs{pdfsavepos}, \cs{pdflastxpos}, +% and \cs{pdflastypos}. They are available in PDF mode and +% since version 1.40.0 also in DVI mode. +% +% \subsection{Module \xoption{dotfill}} +% +% \begin{declcs}{zdotfill} +% \end{declcs} +% This package provides the command \cs{zdotfill} that works +% similar to \cs{dotfill}, but can be configured. Especially +% it suppresses the dots if a minimum number of dots cannot be set. +% +% \begin{declcs}{zdotfillsetup} +% |{|\textit{key$_1$=value$_1$, key$_2$=value$_2$, \dots}|}| +% \end{declcs} +% This command allows to configure the behaviour of \cs{zdotfill}. +% The following keys are available: +% \begin{description} +% \let\bfseries\relax +% \item[\texttt{min=}\meta{count value}]\mbox{}\\* +% If the actual number of dots are smaller than \meta{count value}, +% then the dots are suppressed. Default: |2|. +% \item[\texttt{unit=}\meta{dimen value}]\mbox{}\\* +% The width of a dot unit is given by \meta{dimen value}. +% Default: |0.44em| (same as the unit in \cs{dotfill}). +% \item[\texttt{dot=}\meta{value}]\mbox{}\\* +% The dot itself is given by \meta{value}. Default: |.| (dot, same as +% the dot in \cs{dotfill}). +% \end{description} +% +% \subsection{Module \xoption{xr}} +% +% This package provides the functionality of package \xpackage{xr}, +% see \cite{xr}. It also supports the syntax of \xpackage{xr-hyper}. +% +% \begin{declcs}{zexternaldocument} +% \* |[|\meta{prefix}|]|\markbabel \M{external document} +% |[|\meta{url}|]| +% \end{declcs} +% See \cs{externaldocument} for a description of this option. +% The standard reference scheme and the scheme of this +% package use different name spaces for reference names. +% If the external document uses both systems. Then one +% import statement would put the names in one namespace +% and probably causing problems with multiple references +% of the same name. Thus the star form only looks for +% \cs{newlabel} in the \xfile{.aux} files, whereas without +% star only \cs{zref@newlabel}s are used. +% +% In the star form it tries to detect labels from +% \xpackage{hyperref}, \xpackage{titleref}, and \xpackage{ntheorem}. +% If such an extended property from the packages before cannot +% be found or are empty, they are not included in the +% imported reference. +% +% Warnings are given if a reference name is already in use +% and the item is ignored. Unknown properties will automatically +% be declared. +% +% If the external references contain |anchor| properties, +% then we need also a url to be able to address the external +% file. As default the filename is taken with a default +% extension. +% +% \begin{declcs}{zxrsetup} +% |{|\textit{key$_1$=value$_1$, key$_2$=value$_2$, \dots}|}| +% \end{declcs} +% Currently the key |ext| is defined, this sets the +% url default extension. +% +% \begin{declcs}{zref@xr@ext} +% \end{declcs} +% If the \meta{url} is not specified in \cs{zref@externaldocument}, +% then the url will be constructed with the file name and +% this macro as extension. \cs{XR@ext} is used if +% \xpackage{hyperref} is loaded, otherwise |pdf|. +% +% +% \section{ToDo}\label{sec:todo} +% +% Among other things the following issues are left for future work: +% \begin{itemize} +% \item +% The user land macros are not checked for robustness yet. +% They can be fragile. If this happens, use \cs{protect} +% until a later version of this package. The \cs{protect} +% will not disturb, if the protected macro become robust +% in the future. +% \item Other applications: autoref, hyperref, \dots +% \end{itemize} +% +% \section{Example} +% +% \begin{macrocode} +%<*example> +% \end{macrocode} +% +% \begin{macrocode} +\documentclass{book} + +\usepackage[ngerman]{babel}% + +\usepackage[savepos,totpages,titleref,dotfill,counter,user]{zref} + +% \end{macrocode} +% +% Chapters are wrapped inside \cs{ChapterStart} and +% \cs{ChapterStop}. The first argument \verb|#1| of \cs{ChapterStart} +% is used to form a label id \verb|chap:#1|. At the end of +% the chapter another label is set by \cs{zref@wrapper@immediate}, because +% otherwise at the end of document a deferred write would not +% be written, because there is no page for shipout. +% +% Also this example shows how chapter titles can be recorded. +% A new property \verb|chaptitle| is declared and added to the +% main property list. In \cs{ChapterStart} the current value +% of the property is updated. +% \begin{macrocode} +\makeatletter +\zref@newprop{chaptitle}{} +\zref@addprop{main}{chaptitle} + +\newcommand*{\ChapterStart}[2]{% + \cleardoublepage + \def\current@chapid{#1}% + \zref@setcurrent{chaptitle}{#2}% + \chapter{#2}% + \zlabel{chap:#1}% +} +\newcommand*{\ChapterStop}{% + \cleardoublepage + \zref@wrapper@immediate{% + \zref@labelbyprops{chapend:\current@chapid}{abspage}% + }% +} +% \end{macrocode} +% \cs{ChapterPages} calculates and returns the number of pages of the +% referenced chapter. +% \begin{macrocode} +\newcommand*{\ChapterPages}[1]{% + \zrefused{chap:#1}% + \zrefused{chapend:#1}% + \number\numexpr + \zref@extract{chapend:#1}{abspage}% + -\zref@extract{chap:#1}{abspage}% + +1\relax +} +\makeatother +% \end{macrocode} +% \begin{macrocode} +\begin{document} +% \end{macrocode} +% As exception we use \cs{makeatletter} here, because +% this is just an example file that also should show some of +% programmer's interface. +% \begin{macrocode} +\makeatletter + +\frontmatter +\zlabel{documentstart} + +\begin{itemize} +\item + The frontmatter part has + \number\numexpr\zref@extract{chap:first}{abspage}-1\relax~pages. +\item + Chapter \zref{chap:first} has \ChapterPages{first} page(s). +\item + Section \zref{hello} is on the + \ifcase\numexpr + \zref@extractdefault{hello}{page}{0}% + -\zref@extractdefault{chap:first}{page}{0}% + +1\relax + ??\or first\or second\or third\or forth\fi + ~page inside its chapter. +\item + The document has + \zref[abspage]{LastPage} pages. + This number is \ifodd\ztotpages odd\else even\fi. +\item + The last page is labeled with \zpageref{LastPage}. +\item + The title of chapter \zref{chap:next} is ``\zref[chaptitle]{chap:next}''. +\end{itemize} + +\tableofcontents + +\mainmatter +\ChapterStart{first}{First chapter} + +% \end{macrocode} +% The user level commands should protect babel shorthands +% where possible. On the other side, expandable extracting +% macros are useful in calculations, see above the +% examples with \cs{numexpr}. +% \begin{macrocode} +\section{Test} +\zlabel{a"o} +Section \zref{a"o} on page +\zref@wrapper@babel\zref@extract{a"o}{page}. + +Text. +\newpage + +\section{Hello World} +\zlabel{hello} + +\ChapterStop + +\ChapterStart{next}{Next chapter with \emph{umlauts}: "a"o"u"s} + +% \end{macrocode} +% +% Here an example follows that makes use of \pdfTeX's ``savepos'' +% feature. The position on the page is not known before the +% page is constructed and shipped out. Therefore the position +% ist stored in references and are available for calculations +% in the next \LaTeX\ compile run. +% \begin{macrocode} +The width of the first column is + \the\dimexpr \zposx{secondcol}sp - \zposx{firstcol}sp\relax,\\ +the height difference of the two baselines is + \the\dimexpr \zposy{firstcol}sp - \zposy{secondline}sp\relax:\\ +\begin{tabular}{ll} +\zsavepos{firstcol}Hello&\zsavepos{secondcol}World\\ +\zsavepos{secondline}Second line&foobar\\ +\end{tabular} + +% \end{macrocode} +% With \cs{zrefused} \LaTeX\ is notified, if the references +% are not yet available and \LaTeX\ can generate the rerun +% hint. +% \begin{macrocode} +\zrefused{firstcol} +\zrefused{secondcol} +\zrefused{secondline} + +\ChapterStop +% \end{macrocode} +% Test for module \cs{dotfill}. +% \begin{macrocode} +\ChapterStart{dotfill}{Test for dotfill feature} +\newcommand*{\dftest}[1]{% + #1& + [\makebox[#1]{\dotfill}]& + [\makebox[#1]{\zdotfill}]\\ +} +\begin{tabular}{rll} +& [\verb|\dotfill|] & [\verb|\zdotfill|]\\ +\dftest{0.43em} +\dftest{0.44em} +\dftest{0.45em} +\dftest{0.87em} +\dftest{0.88em} +\dftest{0.89em} +\dftest{1.31em} +\dftest{1.32em} +\dftest{1.33em} +\end{tabular} +\ChapterStop +\end{document} +% \end{macrocode} +% +% \begin{macrocode} +%</example> +% \end{macrocode} +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \subsection{Package \xpackage{zref}} +% +% \subsubsection{Identification} +% +% \begin{macrocode} +%<*package> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{zref} + [2006/05/25 v1.2 New reference scheme for LaTeX2e (HO)] +% \end{macrocode} +% +% \subsubsection{Load basic module} +% +% \begin{macrocode} +\RequirePackage{zref-base}[2006/05/25] +% \end{macrocode} +% Abort package loading if \xpackage{zref-base} could not be +% loaded successfully. +% \begin{macrocode} +\@ifundefined{ZREF@baseok}{\endinput}{} +% \end{macrocode} +% +% \subsubsection{Process options} +% +% Known modules are loaded and the release date is checked. +% \begin{macrocode} +\def\ZREF@temp#1{% + \DeclareOption{#1}{% + \AtEndOfPackage{% + \RequirePackage{zref-#1}[2006/05/25]% + }% + }% +} +\ZREF@temp{abspage} +\ZREF@temp{counter} +\ZREF@temp{dotfill} +\ZREF@temp{hyperref} +\ZREF@temp{lastpage} +\ZREF@temp{perpage} +\ZREF@temp{savepos} +\ZREF@temp{titleref} +\ZREF@temp{totpages} +\ZREF@temp{user} +\ZREF@temp{xr} +% \end{macrocode} +% \begin{macrocode} +\ProcessOptions\relax +%</package> +% \end{macrocode} +% +% +% \subsection{Module base} +% +% \subsubsection{Prefixes} +% +% This package uses the following prefixes for macro names: +% \begin{description} +% \item[\cs{zref@}:] Macros of the programmer's interface. +% \item[\cs{ZREF@}:] Internal macros. +% \item[\cs{Z@L@}\metacs{listname}:] +% The properties of the list \meta{listname}. +% \item[\cs{Z@D@}\metacs{propname}:] +% The default value for property \meta{propname}. +% \item[\cs{Z@E@}\metacs{propname}:] +% Extract function for property \meta{propname}. +% \item[\cs{Z@X@}\metacs{propname}:] +% Information whether a property value for property +% \meta{propname} is expanded +% immediately or at shipout time. +% \item[\cs{Z@C@}\metacs{propname}:] +% Current value of the property \meta{propname}. +% \item[\cs{Z@R@}\metacs{labelname}:] +% Data for reference \meta{labelname}. +% \item[\cs{ZREF@org@}:] Original versions of patched commands. +% \item[\cs{z}:] For macros in user land, defined if +% option \xoption{user} is set. +% \end{description} +% The following family names are used for keys defined +% according to the \xpackage{keyval} package: +% \begin{description} +% \item[\texttt{ZREF@TR}:] Setup for \xoption{titleref}. +% \end{description} +% +% \subsubsection{Identification} +% +% \begin{macrocode} +%<*base> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{zref-base}% + [2006/05/25 Module base for zref (HO)] +% \end{macrocode} +% +% \subsubsection{Utilities} +% +% \begin{macro}{\ZREF@name} +% Several times the package name is used, thus we store it +% in \cmd{\ZREF@name}. +% \begin{macrocode} +\def\ZREF@name{zref} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ZREF@ErrorNoLine} +% An error message for this package without line information is +% generated by \cs{ZREF@ErrorNoLine} +% \begin{macrocode} +\def\ZREF@ErrorNoLine#1#2{% + \begingroup + \let\on@line\@empty + \PackageError\ZREF@name{#1}{#2}% + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ZREF@UpdatePdfTeX} +% \cs{ZREF@UpdatePdfTeX} is used as help message text in +% error messages. +% \begin{macrocode} +\def\ZREF@UpdatePdfTeX{Update pdfTeX.} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ifZREF@found} +% The following switch is usded in list processing. +% \begin{macrocode} +\newif\ifZREF@found +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ZREF@patch} +% Macro \cs{ZREF@patch} first checks the existence of +% the command and safes it. +% \begin{macrocode} +\def\ZREF@patch#1{% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname #1\endcsname\relax + \expandafter\@gobble + \else + \expandafter\let\csname ZREF@org@#1\expandafter\endcsname + \csname #1\endcsname + \expandafter\@firstofone + \fi +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Check for \eTeX} +% +% The use of \eTeX\ should be standard nowadays for \LaTeX. +% We test for \eTeX\ in order to use its features later. +% \begin{macrocode} +\begingroup + \@ifundefined{eTeXversion}{% + \ZREF@ErrorNoLine{% + Missing support for eTeX; package is abandoned% + }{% + Use a TeX compiler that support eTeX and enable eTeX % + in the format.% + }% + \endgroup + \endinput + }{} +\endgroup +% \end{macrocode} +% +% \subsubsection{Auxiliary file stuff} +% +% We are using some commands in the \xfile{.aux} files. +% However sometimes these auxiliary files are interpreted +% by \LaTeX\ processes that haven't loaded this package +% (e.g. package \xpackage{xr}). +% Therefore we provide dummy definitions. +% \begin{macrocode} +\RequirePackage{auxhook} +\AddLineBeginAux{% + \string\providecommand\string\zref@newlabel[2]{}% +} +% \end{macrocode} +% \begin{macro}{\zref@newlabel} +% For the implementation of \cs{zref@newlabel} we call +% the same internal macro \cs{@newl@bel} that is used +% in \cs{newlabel}. Thus we have for free: +% \begin{itemize} +% \item \cs{Z@R@}\metacs{labelname} is defined. +% \item \LaTeX's check for multiple references. +% \item \LaTeX's check for changed references. +% \end{itemize} +% \begin{macrocode} +\def\zref@newlabel{% + \@newl@bel{Z@R}% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Property lists} +% +% \begin{macro}{\zref@newlist} +% Property lists are stored as list of property names +% enclosed in curly braces. \cs{zref@newlist} +% creates a new list as empty list. Assignments to +% property lists are global. +% \begin{macrocode} +\def\zref@newlist#1{% + \zref@iflistundefined{#1}{% + \@ifdefinable{Z@L@#1}{% + \global\expandafter\let\csname Z@L@#1\endcsname\@empty + \PackageInfo{zref}{New property list: #1}% + }% + }{% + \PackageError\ZREF@name{% + Property list `#1' already exists% + }\@ehc + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\zref@iflistundefined} +% \cs{zref@iflistundefined} checks the existence of the +% property list \verb|#1|. If the property list is present, +% then \verb|#2| is executed and \verb|#3| otherwise. +% \begin{macrocode} +\def\zref@iflistundefined#1{% + \expandafter\ifx\csname Z@L@#1\endcsname\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\zref@listexists} +% \cs{zref@listexists} only executes \verb|#2| if the +% property list \verb|#1| exists and raises an error +% message otherwise. +% \begin{macrocode} +\def\zref@listexists#1{% + \zref@iflistundefined{#1}{% + \PackageError\ZREF@name{% + Property list `#1' does not exist% + }\@ehc + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\zref@listcontainsprop} +% \cs{zref@listcontainsprop} checks, whether a property \verb|#2| is +% already present in a property list \verb|#1|. +% \begin{macrocode} +\def\zref@listcontainsprop#1{% + \expandafter\ZREF@listcontainsprop\csname Z@L@#1\endcsname +} +\def\ZREF@listcontainsprop#1#2{% + \begingroup + \ZREF@foundfalse + \edef\y{#2}% + \@tfor\x:=#1\do{% + \edef\x{\x}% + \ifx\x\y + \ZREF@foundtrue + \fi + }% + \expandafter\endgroup + \ifZREF@found + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\zref@addprop} +% \cs{zref@addprop} adds the property \verb|#2| to the property +% list \verb|#1|, if the property is not already in the list. +% Otherwise a warning is given. +% \begin{macrocode} +\def\zref@addprop#1#2{% + \zref@listexists{#1}{% + \zref@propexists{#2}{% + \zref@listcontainsprop{#1}{#2}{% + \PackageWarning\ZREF@name{% + Property `#2' is already in list `#1'% + }% + }{% + \expandafter\g@addto@macro\csname Z@L@#1\endcsname{{#2}}% + }% + }% + }% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Properties} +% +% \begin{macro}{\zref@ifpropundefined} +% \cs{zref@ifpropundefined} checks the existence of the +% property \verb|#1|. If the property is present, +% then \verb|#2| is executed and \verb|#3| otherwise. +% \begin{macrocode} +\def\zref@ifpropundefined#1{% + \expandafter\ifx\csname Z@E@#1\endcsname\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\zref@propexists} +% Some macros rely on the existence of a property. +% \cs{zref@propexists} only executes \verb|#2| if the +% property \verb|#1| exists and raises an error +% message otherwise. +% \begin{macrocode} +\def\zref@propexists#1{% + \zref@ifpropundefined{#1}{% + \PackageError\ZREF@name{% + Property `#1' does not exist% + }\@ehc + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\zref@newprop} +% A new property is declared by \cs{zref@newprop}, the +% property name \meta{propname} is given in \verb|#1|. The +% property is created and configured. If the star form +% is given, then the expansion of the property value +% is delayed to page shipout time, when the reference +% is written to the \xfile{.aux} file. +% \begin{description} +% \item[\cs{Z@D@}\metacs{propname}:] +% Stores the default value for this property. +% \item[\cs{Z@E@}\metacs{propname}:] +% Extract function. +% \item[\cs{Z@X@}\metacs{propname}:] +% Information whether the expansion of the property value +% is delayed to shipout time. +% \item[\cs{Z@C@}\metacs{propname}:] +% Current value of the property. +% \end{description} +% \begin{macrocode} +\def\zref@newprop{% + \@ifstar{% + \let\ZREF@X\noexpand + \ZREF@newprop + }{% + \let\ZREF@X\@empty + \ZREF@newprop + }% +} +\def\ZREF@newprop#1{% + \PackageInfo{zref}{New property: #1}% + \def\ZREF@P{#1}% + \@ifnextchar[\ZREF@@newprop{\ZREF@@newprop[\zref@default]}% +} +\def\ZREF@@newprop[#1]{% + \global\@namedef{Z@D@\ZREF@P}{#1}% + \global\expandafter\let\csname Z@X@\ZREF@P\endcsname\ZREF@X + \expandafter\ZREF@@@newprop\csname\ZREF@P\endcsname + \zref@setcurrent\ZREF@P +} +\def\ZREF@@@newprop#1{% + \expandafter\gdef\csname Z@E@\ZREF@P\endcsname##1#1##2##3\ZREF@nil{##2}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\zref@setcurrent} +% \cs{zref@setcurrent} sets the current value for a property. +% \begin{macrocode} +\def\zref@setcurrent#1{% + \expandafter\def\csname Z@C@#1\endcsname +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Reference generation} +% +% \begin{macro}{\zref@label} +% Label macro that uses the main property list. +% \begin{macrocode} +\def\zref@label#1{% + \zref@labelbylist{#1}\ZREF@mainlist +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\zref@labelbylist} +% Label macro that stores the properties, specified in the +% property list \verb|#2|. +% \begin{macrocode} +\def\zref@labelbylist#1#2{% + \@bsphack + \zref@listexists{#2}{% + \expandafter\expandafter\expandafter\ZREF@label + \expandafter\expandafter\expandafter{% + \csname Z@L@#2\endcsname + }{#1}% + }% + \@esphack +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\zref@labelbyprops} +% The properties are directly specified in a comma separated list. +% \begin{macrocode} +\def\zref@labelbyprops#1#2{% + \@bsphack + \begingroup + \edef\l{#2}% + \toks@{}% + \@for\x:=#2\do{% + \zref@ifpropundefined{\x}{% + \PackageWarning\ZREF@name{% + Property `\x' is not known% + }% + }{% + \toks@\expandafter\expandafter\expandafter{% + \expandafter\the\expandafter\toks@\expandafter{\x}% + }% + }% + }% + \expandafter\endgroup + \expandafter\ZREF@label\expandafter{\the\toks@}{#1}% + \@esphack +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ifZREF@immediate} +% The switch \cs{ifZREF@immediate} tells us, whether the +% label should be written immediately or at page shipout time. +% \cs{ZREF@label} need to be notified about this, because +% it must disable the deferred execution of property values, +% if the label is written immediately. +% \begin{macrocode} +\newif\ifZREF@immediate +% \end{macrocode} +% \end{macro} +% \begin{macro}{\zref@wrapper@immediate} +% The argument of \cs{zref@wrapper@immediate} is executed inside +% a group where \cs{write} is redefined by adding +% \cs{immediate} before its execution. Also \cs{ZREF@label} +% is notified via the switch \cs{ifZREF@immediate}. +% \begin{macrocode} +\long\def\zref@wrapper@immediate#1{% + \begingroup + \ZREF@immediatetrue + \let\ZREF@org@write\write + \def\write{\immediate\ZREF@org@write}% + #1% + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ZREF@label} +% \cs{ZREF@label} writes the data in the \xfile{.aux} file. +% \verb|#1| contains the list of valid properties, +% \verb|#2| the name of the reference. In case of immediate +% writing, the deferred execution of property values is +% disabled. Also \thepage is made expandable in this case. +% \begin{macrocode} +\def\ZREF@label#1#2{% + \if@filesw + \begingroup + \ifZREF@immediate + \let\ZREF@org@thepage\thepage + \fi + \protected@write\@auxout{% + \ifZREF@immediate + \let\thepage\ZREF@org@thepage + \fi + \let\ZREF@temp\@empty + \@tfor\ZREF@P:=#1\do{% + \expandafter\ifx + \csname\ifZREF@immediate relax\else Z@X@\ZREF@P\fi\endcsname + \noexpand + \expandafter\let\csname Z@C@\ZREF@P\endcsname\relax + \fi + \toks@\expandafter{\ZREF@temp}% + \edef\ZREF@temp{% + \the\toks@ + \expandafter\string\csname\ZREF@P\endcsname{% + \expandafter\noexpand\csname Z@C@\ZREF@P\endcsname + }% + }% + }% + }{% + \string\zref@newlabel{#2}{\ZREF@temp}% + }% + \endgroup + \fi +} +\def\ZREF@addtoks#1{% + \toks@\expandafter\expandafter\expandafter{% + \expandafter\the\expandafter\toks@#1% + }% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Reference querying and extracting} +% +% Design goal for the extracting macros is that the extraction +% process is full expandable. Thus these macros can be used +% in expandable contexts. But there are problems that cannot +% be solved by full expandable macros: +% \begin{itemize} +% \item In standard \LaTeX\ undefined references sets a flag +% and generate a warning. Both actions are not expandable. +% \item Babel's support for its shorthand uses commands that +% use non-expandable assignments. However currently there +% is hope, that primitives are added to \pdfTeX\ that +% allows the detection of contexts. Then the shorthand +% can detect, if they are executed inside \cs{csname} +% and protect themselves automatically. +% \end{itemize} +% \begin{macro}{\zref@ifrefundefined} +% If a reference \verb|#1| is undefined, then macro +% \cs{zref@ifrefundefined} calls \verb|#2| and \verb|#3| otherwise. +% \begin{macrocode} +\def\zref@ifrefundefined#1{% + \expandafter\ifx\csname Z@R@#1\endcsname\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\zref@refused} +% The problem with undefined references is addressed by +% the macro \cs{zref@refused}. This can be used outside +% the expandable context. In case of an undefined reference +% 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 +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\zref@extract} +% \cs{zref@extract} is an abbreviation for the case +% that the default of the property is used as default +% value. +% \begin{macrocode} +\def\zref@extract#1#2{% + \expandafter\expandafter\expandafter\ZREF@extract + \expandafter\expandafter\expandafter{% + \csname Z@D@#2\endcsname + }{#1}{#2}% +} +\def\ZREF@extract#1#2#3{% + \zref@extractdefault{#2}{#3}{#1}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\zref@ifrefcontainsprop} +% \cs{zref@ifrefcontainsprop} looks, if the reference \verb|#1| +% has the property \verb|#2| and calls then \verb|#3| and +% \verb|#4| otherwise. +% \begin{macrocode} +\def\zref@ifrefcontainsprop#1#2{% + \zref@ifrefundefined{#1}{% + \@secondoftwo + }{% + \expandafter\ZREF@ifrefcontainsprop + \csname Z@E@#2\expandafter\endcsname + \csname#2\expandafter\expandafter\expandafter\endcsname + \expandafter\expandafter\expandafter{% + \csname Z@R@#1\endcsname + }% + }% +} +\def\ZREF@ifrefcontainsprop#1#2#3{% + \expandafter\ifx\expandafter\ZREF@novalue + #1#3#2\ZREF@novalue\ZREF@nil\@empty + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi +} +\def\ZREF@novalue{\ZREF@NOVALUE} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\zref@extractdefault} +% The basic extracting macro is \cs{zref@extractdefault} with +% the reference name in \verb|#1|, the property in \verb|#2| and +% the default value in \verb|#3| in case for problems. +% \begin{macrocode} +\def\zref@extractdefault#1#2#3{% + \zref@ifrefundefined{#1}{% + \ZREF@unexpanded{#3}% + }{% + \expandafter\expandafter\expandafter\ZREF@unexpanded + \expandafter\expandafter\expandafter{% + \csname Z@E@#2\expandafter\expandafter\expandafter\endcsname + \csname Z@R@#1\expandafter\endcsname + \csname#2\endcsname{#3}\ZREF@nil + }% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\zref@wrapper@unexpanded} +% \begin{macrocode} +\long\def\zref@wrapper@unexpanded#1{% + \let\ZREF@unexpanded\unexpanded + #1% + \let\ZREF@unexpanded\@firstofone +} +\let\ZREF@unexpanded\@firstofone +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Compatibility with \xpackage{babel}} +% +% \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}% +} +\def\ZREF@wrapper@babel#1#2{% + #2{#1}% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Unique counter support} +% +% \begin{macro}{\zref@require@unique} +% Generate the counter |zref@unique| if the counter does not +% already exist. +% \begin{macrocode} +\def\zref@require@unique{% + \@ifundefined{c@zref@unique}{% + \newcounter{zref@unique}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\thezref@unique} +% \cs{thezref@unique} is used for automatically generated unique +% labelnames. +% \begin{macrocode} + \renewcommand*{\thezref@unique}{% + zref@\number\c@zref@unique + }% + }{}% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Setup} +% +% \begin{macro}{\zref@setdefault} +% Standard \LaTeX\ prints ``??'' in bold face if a reference +% is not known. \cs{zref@default} holds the text that is +% printed in case of unknown references and is used, if +% the default was not specified during the definition +% of the new property by \cs{ref@newprop}. +% The global default value can be set by \cs{zref@setdefault}. +% \begin{macrocode} +\def\zref@setdefault#1{% + \def\zref@default{#1}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\zref@default} +% Now we initialize \cs{zref@default} with the same value +% that \LaTeX\ uses for its undefined references. +% \begin{macrocode} +\zref@setdefault{% + \nfss@text{\reset@font\bfseries ??}% +} +% \end{macrocode} +% \end{macro} +% +% \paragraph{Main property list.} +% +% \begin{macro}{\zref@setmainlist} +% The name of the default property list is stored in +% \cs{ZREF@mainlist} and can be set by \cs{zref@setmainlist}. +% \begin{macrocode} +\def\zref@setmainlist#1{% + \def\ZREF@mainlist{#1}% +} +\zref@setmainlist{main} +% \end{macrocode} +% \end{macro} +% Now we create the list. +% \begin{macrocode} +\zref@newlist\ZREF@mainlist +% \end{macrocode} +% +% \paragraph{Main properties.} +% +% The two properties \texttt{default} and \texttt{page} +% are created and added to the main property list. +% They store the data that +% standard \LaTeX\ uses in its references created by +% \cs{label}. +% \begin{description} +% \item[\texttt{default}] the apperance of the latest +% counter that is incremented by \cs{refstepcounter} +% \item[\texttt{page}] the apperance of the page counter +% \end{description} +% \begin{macrocode} +\zref@newprop{default}{\@currentlabel} +\zref@newprop*{page}{\thepage} +\zref@addprop\ZREF@mainlist{default} +\zref@addprop\ZREF@mainlist{page} +% \end{macrocode} +% +% \paragraph{Mark successful loading} +% +% \begin{macrocode} +\let\ZREF@baseok\@empty +%</base> +% \end{macrocode} +% +% +% \subsection{Module \xoption{user}} +% +% \begin{macrocode} +%<*user> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{zref-user}% + [2006/05/25 v1.2 Module user for zref (HO)] +\RequirePackage{zref-base}[2006/05/25] +\@ifundefined{ZREF@baseok}{\endinput}{} +% \end{macrocode} +% +% Option \xoption{zuser} enables a small user interface. +% All macros are prefixed by \cs{z}. +% +% First we define the pendants to the standard \LaTeX\ referencing +% commands \cs{label}, \cs{ref}, and \cs{pageref}. +% +% \begin{macro}{\zlabel} +% Similar to \cs{label} the macro \cs{zlabel} writes a reference +% entry in the \xfile{.aux} file. The main property list is used. +% Also we add the babel patch. The \cs{label} command can also be +% used inside section titles, but it must not go into the +% table of contents. Therefore we have to check this situation. +% \begin{macrocode} +\newcommand*\zlabel{% + \ifx\label\@gobble + \expandafter\@gobble + \else + \expandafter\zref@wrapper@babel\expandafter\zref@label + \fi +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\zref} +% Macro \cs{zref} is the corresponding macro for \cs{ref}. +% Also it provides an optional argument in order to +% select another property. +% \begin{macrocode} +\newcommand*{\zref}[2][default]{% + \zref@propexists{#1}{% + \zref@wrapper@babel\ZREF@zref{#2}{#1}% + }% +}% +\def\ZREF@zref#1{% + \zref@refused{#1}% + \zref@extract{#1}% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\zpageref} +% For macro \cs{zpageref} we just call \cs{zref} +% with property \verb|page|. +% \begin{macrocode} +\newcommand*\zpageref{% + \zref[page]% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\zrefused} +% For the following expandible user macros \cs{zrefused} +% should be used to notify \LaTeX\ in case of undefined +% references. +% \begin{macrocode} +\newcommand*{\zrefused}{\zref@refused}% +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</user> +% \end{macrocode} +% +% +% \subsection{Module \xoption{abspage}} +% +% \begin{macrocode} +%<*abspage> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{zref-abspage}% + [2006/05/25 v1.2 Module abspage for zref (HO)] +\RequirePackage{zref-base}[2006/05/25] +\@ifundefined{ZREF@baseok}{\endinput}{} +% \end{macrocode} +% +% Module \xoption{abspage} adds a new property \verb|abspage| +% to the \verb|main| property list for absolute page numbers. +% These are recorded by the help of package \xpackage{everyshi}. +% \begin{macrocode} +\RequirePackage{everyshi}% +\newcounter{abspage}% +\setcounter{abspage}{0}% +\EveryShipout{% + \stepcounter{abspage}% +}% +\zref@newprop*{abspage}[0]{\the\c@abspage}% +\zref@addprop\ZREF@mainlist{abspage}% +% \end{macrocode} +% Note that counter \verb|abspage| shows the +% previous page during page processing. Before +% shipout the counter is incremented. +% Thus the property is correctly written with +% deferred writing. If the counter is written +% using \cs{zref@wrapper@immediate}, then the number +% is too small by one. +% +% \begin{macrocode} +%</abspage> +% \end{macrocode} +% +% +% \subsection{Module \xoption{counter}} +% +% \begin{macrocode} +%<*counter> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{zref-counter}% + [2006/05/25 v1.2 Module counter for zref (HO)] +\RequirePackage{zref-base}[2006/05/25] +\@ifundefined{ZREF@baseok}{\endinput}{} +% \end{macrocode} +% +% For features such as \xpackage{hyperref}'s \cs{autoref} +% we need the name of the counter. The property +% \verb|counter| is defined and added to the main property +% list. +% \begin{macrocode} +\zref@newprop{counter}{} +\zref@addprop\ZREF@mainlist{counter} +% \end{macrocode} +% +% \cs{refstepcounter} is the central macro where we know +% which counter is responsible for the reference. +% \begin{macrocode} +\AtBeginDocument{% + \ZREF@patch{refstepcounter}{% + \def\refstepcounter#1{% + \zref@setcurrent{counter}{#1}% + \ZREF@org@refstepcounter{#1}% + }% + }% +} +% \end{macrocode} +% \begin{macrocode} +%</counter> +% \end{macrocode} +% +% +% \subsection{Module \xoption{lastpage}} +% +% \begin{macrocode} +%<*lastpage> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{zref-lastpage}% + [2006/05/25 v1.2 Module lastpage for zref (HO)] +\RequirePackage{zref-base}[2006/05/25] +\@ifundefined{ZREF@baseok}{\endinput}{} +% \end{macrocode} +% +% The Module \xoption{lastpage} implements the service +% of package \xpackage{lastpage} by setting a reference +% \verb|LastPage| at the end of the document. +% If option \xoption{abspage} is given, also the absolute +% page number is available, because the properties of +% the main property list are used. +% \begin{macrocode} +\AtBeginDocument{% + \AtEndDocument{% + \if@filesw + \clearpage + \begingroup + \advance\c@page\m@ne + \zref@wrapper@immediate{\zref@label{LastPage}}% + \endgroup + \fi + }% +} +% \end{macrocode} +% \begin{macrocode} +%</lastpage> +% \end{macrocode} +% +% \subsection{Module \xoption{totpages}} +% +% \begin{macrocode} +%<*totpages> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{zref-totpages}% + [2006/05/25 v1.2 Module totpages for zref (HO)] +\RequirePackage{zref-base}[2006/05/25] +\@ifundefined{ZREF@baseok}{\endinput}{} +% \end{macrocode} +% +% The absolute page number of the last page is the total +% page number. +% \begin{macrocode} +\RequirePackage{zref-abspage}[2006/05/25] +\RequirePackage{zref-lastpage}[2006/05/25] +% \end{macrocode} +% +% \begin{macro}{\ztotpages} +% Macro \cs{ztotpages} contains the number of pages. It can be +% used inside expandable calculations. It expands to zero if +% the reference is not yet available. +% \begin{macrocode} +\newcommand*{\ztotpages}{% + \zref@extractdefault{LastPage}{abspage}{0}% +} +% \end{macrocode} +% \end{macro} +% Also we mark the reference |LastPage| as used: +% \begin{macrocode} +\AtBeginDocument{% + \zref@refused{LastPage}% +} +% \end{macrocode} +% \begin{macrocode} +%</totpages> +% \end{macrocode} +% +% +% \subsection{Module \xoption{perpage}} +% +% \begin{macrocode} +%<*perpage> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{zref-perpage}% + [2006/05/25 v1.2 Module perpage for zref (HO)] +\RequirePackage{zref-base}[2006/05/25] +\@ifundefined{ZREF@baseok}{\endinput}{} +% \end{macrocode} +% +% This module resets a counter at page boundaries. +% Because of the asynchronous output routine +% page counter properties cannot be asked directly, +% references are necessary. +% +% For detecting changed pages module \xoption{abspage} +% is loaded. +% \begin{macrocode} +\RequirePackage{zref-abspage}[2006/05/25] +% \end{macrocode} +% +% We group the properties for the needed references +% in the property list |perpage|. The property |pagevalue| +% records the correct value of the page counter. +% \begin{macrocode} +\zref@newprop*{pagevalue}[0]{\number\c@page} +\zref@newlist{perpage} +\zref@addprop{perpage}{abspage} +\zref@addprop{perpage}{page} +\zref@addprop{perpage}{pagevalue} +% \end{macrocode} +% The page value, known by the reference mechanism, will be +% stored in counter |zpage|. +% \begin{macrocode} +\newcounter{zpage} +% \end{macrocode} +% Counter |zref@unique| helps in generating unique reference +% names. +% \begin{macrocode} +\zref@require@unique +% \end{macrocode} +% In order to be able to reset the counter, we hook here +% into \cs{stepcounter}. In fact two nested hooks are used +% to allow other packages to use the first hook at the beginning +% of \cs{stepcounter}. +% \begin{macrocode} +\let\ZREF@org@stepcounter\stepcounter +\def\stepcounter#1{% + \ifcsname @stepcounterhook@#1\endcsname + \csname @stepcounterhook@#1\endcsname + \fi + \ZREF@org@stepcounter{#1}% +} +% \end{macrocode} +% +% \begin{macro}{\zmakeperpage} +% Makro \cs{zmakeperpage} resets a counter at each page +% break. It uses the same syntax and semantics as +% \cs{MakePerPage} from package \xpackage{perpage} (\cite{perpage}). +% The initial start value can be given by the optional +% argument. Default is one that means after the first +% \cs{stepcounter} on a new page the counter starts with +% one. +% \begin{macrocode} +\newcommand*{\zmakeperpage}{% + \@ifnextchar[\ZREF@makeperpage@opt{\ZREF@@makeperpage[\z@]}% +} +% \end{macrocode} +% \end{macro} +% We hook before the counter is incremented in \cs{stepcounter}, +% package \xpackage{perpage} afterwards. Thus a little +% calculation is necessary. +% \begin{macrocode} +\def\ZREF@makeperpage@opt[#1]{% + \begingroup + \edef\x{\endgroup + \noexpand\ZREF@@makeperpage[\number\numexpr#1-1\relax]% + }% + \x +} +% \end{macrocode} +% \begin{macrocode} +\def\ZREF@@makeperpage[#1]#2{% + \@ifundefined{@stepcounterhook@#2}{% + \expandafter\gdef\csname @stepcounterhook@#2\endcsname{}% + }{}% + \expandafter\gdef\csname ZREF@perpage@#2\endcsname{% + \ZREF@@perpage@step{#2}{#1}% + }% + \expandafter\g@addto@macro\csname @stepcounterhook@#2\endcsname{% + \ifcsname ZREF@perpage@#2\endcsname + \csname ZREF@perpage@#2\endcsname + \fi + }% +} +% \end{macrocode} +% \begin{macro}{\ZREF@@perpage@step} +% The heart of this module follows. +% \begin{macrocode} +\def\ZREF@@perpage@step#1#2{% +% \end{macrocode} +% First the reference is generated. +% \begin{macrocode} + \global\advance\c@zref@unique\@ne + \begingroup + \expandafter\zref@labelbylist\expandafter{\thezref@unique}{perpage}% +% \end{macrocode} +% The \cs{expandafter} commands are necessary, because \cs{ZREF@temp} +% is also used inside of \cs{zref@labelbylist}. +% +% The evaluation of the reference follows. If the reference +% is not yet kwown, we use the page counter as approximation. +% \begin{macrocode} + \zref@ifrefundefined\thezref@unique{% + \global\c@zpage=\c@page + \global\let\thezpage\thepage + \expandafter\xdef\csname ZREF@abspage@#1\endcsname{\number\c@abspage}% + }{% +% \end{macrocode} +% The reference is used to set \cs{thezpage} and counter |zpage|. +% \begin{macrocode} + \global\c@zpage=\zref@extract\thezref@unique{pagevalue}\relax + \xdef\thezpage{\noexpand\zref@extract{\thezref@unique}{page}}% + \expandafter\xdef\csname ZREF@abspage@#1\endcsname{% + \zref@extractdefault\thezref@unique{abspage}{\number\c@abspage}% + }% + }% +% \end{macrocode} +% Page changes are detected by a changed absolute page number. +% \begin{macrocode} + \expandafter\ifx\csname ZREF@abspage@#1\expandafter\endcsname + \csname ZREF@currentabspage@#1\endcsname + \else + \global\csname c@#1\endcsname=#2\relax + \global\expandafter\let + \csname ZREF@currentabspage@#1\expandafter\endcsname + \csname ZREF@abspage@#1\endcsname + \fi + \endgroup +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\zunmakeperpage} +% Macro \cs{zunmakeperpage} cancels the effect of \cs{zmakeperpage}. +% \begin{macrocode} +\newcommand*{\zunmakeperpage}[1]{% + \global\expandafter\let\csname ZREF@perpage@#1\endcsname\@undefined +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</perpage> +% \end{macrocode} +% +% +% \subsection{Module \xoption{titleref}} +% +% \begin{macrocode} +%<*titleref> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{zref-titleref}% + [2006/05/25 v1.2 Module titleref for zref (HO)] +\RequirePackage{zref-base}[2006/05/25] +\@ifundefined{ZREF@baseok}{\endinput}{} +% \end{macrocode} +% +% \subsubsection{Implementation} +% \begin{macrocode} +\RequirePackage{keyval} +% \end{macrocode} +% +% This module makes section and caption titles available +% for the reference system. It uses some of the ideas +% of package \xpackage{nameref} and \xpackage{titleref}. +% +% \begin{macro}{\zref@titleref@current} +% Later we will redefine the section and caption macros +% to catch the current title and remember the value in +% \cs{zref@titleref@current}. +% \begin{macrocode} +\let\zref@titleref@current\@empty +% \end{macrocode} +% \end{macro} +% Now we can add the property \verb|title| is added to +% the main property list. +% \begin{macrocode} +\zref@newprop{title}{\zref@titleref@current}% +\zref@addprop\ZREF@mainlist{title}% +% \end{macrocode} +% +% The title strings go into the \xfile{.aux} file, thus +% they need some kind of protection. +% Package \xpackage{titleref} uses a protected expansion +% method. The advantage is that this can be used to +% cleanup the string and to remove \cs{label}, \cs{index} +% and other macros unwanted for referencing. +% But there is the risk that fragile stuff can break. +% +% Therefore package \xpackage{nameref} does not expand +% the string. Thus the entries can safely be written to +% the \xfile{.aux} file. But potentially dangerous +% macros such as \cs{label} remain in the string and +% can cause problems when using the string in references. +% +% \begin{macro}{\ifzref@titleref@expand} +% The switch \cs{ifzref@titleref@expand} distinguishes +% between the both methods. Package \xpackage{nameref}'s +% behaviour is achieved by setting the switch to false, +% otherwise \xpackage{titleref}'s expansion is used. +% Default is false. +% \begin{macrocode} +\newif\ifzref@titleref@expand +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ZREF@titleref@hook} +% The hook \cs{ZREF@titleref@hook} allows to extend +% the cleanup for the expansion method. Thus +% unnecessary macros can be removed or dangerous commands +% removed. The hook is executed before the expansion of +% \cs{zref@titleref@current}. +% \begin{macrocode} +\let\ZREF@titleref@hook\@empty +% \end{macrocode} +% \end{macro} +% \begin{macro}{\zref@titleref@cleanup} +% The hook should not be used directly, instead we provide the +% macro \cs{zref@titleref@cleanup} to add stuff to the hook +% and prevents that a previous non-empty content is not discarded +% accidently. +% \begin{macrocode} +\def\zref@titleref@cleanup#1{% + \begingroup + \toks@\expandafter{% + \ZREF@titleref@hook + #1% + }% + \expandafter\endgroup + \expandafter\def\expandafter\ZREF@titleref@hook\expandafter{% + \the\toks@ + }% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ifzref@titleref@stripperiod} +% Sometimes a title contains a period at the end. +% Package \xpackage{nameref} removes this. This behaviour +% is controlled by the switch \cs{ifzref@titleref@stripperiod} +% and works regardless of the setting of option \xoption{expand}. +% Period stripping is the default. +% \begin{macrocode} +\newif\ifzref@titleref@stripperiod +\zref@titleref@stripperiodtrue +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\zref@titleref@setcurrent} +% Macro \cs{zref@titleref@setcurrent} sets a new current title +% stored in \cs{zref@titleref@current}. Some cleanup and +% expansion is performed that can be controlled by the +% previous switches. +% \begin{macrocode} +\def\zref@titleref@setcurrent#1{% + \def\zref@titleref@current{#1}% + \ifzref@titleref@expand + \begingroup + \let\label\@gobble + \let\index\@gobble + \let\glossary\@gobble + \let\markboth\@gobbletwo + \let\@mkboth\@gobbletwo + \let\markright\@gobble + \let\protect\@unexpandable@protect + \ZREF@titleref@hook + \edef\x{\endgroup + \noexpand\def\noexpand\zref@titleref@current{% + \zref@titleref@current + }% + }% + \x + \fi + \edef\zref@titleref@current{% + \detokenize\expandafter{\zref@titleref@current}% + }% + \ifzref@titleref@stripperiod + \edef\zref@titleref@current{% + \expandafter\ZREF@stripperiod\zref@titleref@current + \@empty.\@empty\@nil + }% + \fi +}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ZREF@stripperiod} +% If \cs{ZREF@stripperiod} is called, the argument consists of +% space tokens and tokens with catcode 12 (other), because +% of \eTeX's \cs{detokenize}. +% \begin{macrocode} +\def\ZREF@stripperiod#1.\@empty#2\@nil{#1}% +% \end{macrocode} +% \end{macro} +% +% \subsubsection{User interface} +% +% \begin{macro}{\ztitlerefsetup} +% The behaviour of option \xoption{titleref} is controlled +% by switches and a hook. They can be set by \cs{ztitlerefsetup} +% with a key value interface, provided by package \xpackage{keyval}. +% Also the current title can be given explicitly by the key +% \verb|title|. +% \begin{macrocode} +\define@key{ZREF@TR}{expand}[true]{% + \csname zref@titleref@expand#1\endcsname +}% +\define@key{ZREF@TR}{stripperiod}[true]{% + \csname zref@titleref@stripperiod#1\endcsname +}% +\define@key{ZREF@TR}{cleanup}{% + \zref@titleref@cleanup{#1}% +}% +\define@key{ZREF@TR}{title}{% + \def\zref@titleref@current{#1}% +}% +\newcommand*{\ztitlerefsetup}{% + \setkeys{ZREF@TR}% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ztitleref} +% The user command \cs{ztitleref} references the title. +% For safety \cs{label} is disabled to prevent multiply +% defined references. +% \begin{macrocode} +\newcommand*{\ztitleref}{% + \zref@wrapper@babel\ZREF@titleref +}% +\def\ZREF@titleref#1{% + \begingroup + \zref@refused{#1}% + \let\label\@gobble + \zref@extract{#1}{title}% + \endgroup +}% +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Patches for section and caption commands} +% +% The section and caption macros are patched to extract the +% title data. +% +% Captions of figures and tables. +% \begin{macrocode} +\AtBeginDocument{% + \ZREF@patch{@caption}{% + \long\def\@caption#1[#2]{% + \zref@titleref@setcurrent{#2}% + \ZREF@org@@caption{#1}[{#2}]% + }% + }% +% \end{macrocode} +% +% Section commands without star. The title version for the +% table of contents is used because it is usually shorter and +% more robust. +% \begin{macrocode} + \ZREF@patch{@part}{% + \def\@part[#1]{% + \zref@titleref@setcurrent{#1}% + \ZREF@org@@part[{#1}]% + }% + }% + \ZREF@patch{@chapter}{% + \def\@chapter[#1]{% + \zref@titleref@setcurrent{#1}% + \ZREF@org@@chapter[{#1}]% + }% + }% + \ZREF@patch{@sect}{% + \def\@sect#1#2#3#4#5#6[#7]{% + \zref@titleref@setcurrent{#7}% + \ZREF@org@@sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]% + }% + }% +% \end{macrocode} +% The star versions of the section commands. +% \begin{macrocode} + \ZREF@patch{@spart}{% + \def\@spart#1{% + \zref@titleref@setcurrent{#1}% + \ZREF@org@@spart{#1}% + }% + }% + \ZREF@patch{@schapter}{% + \def\@schapter#1{% + \zref@titleref@setcurrent{#1}% + \ZREF@org@@schapter{#1}% + }% + }% + \ZREF@patch{@ssect}{% + \def\@ssect#1#2#3#4#5{% + \zref@titleref@setcurrent{#5}% + \ZREF@org@@ssect{#1}{#2}{#3}{#4}{#5}% + }% + }% +% \end{macrocode} +% +% Package \xpackage{titlesec}. +% \begin{macrocode} + \@ifpackageloaded{titlesec}{% + \ZREF@patch{ttl@sect@i}{% + \def\ttl@sect@i#1#2[#3]#4{% + \zref@titlesec@setcurrent{#4}% + \ZREF@org@ttl@sect@i{#1}{#2}[{#3}]{#4}% + }% + }% + }{}% +}% +% \end{macrocode} +% +% \begin{macrocode} +%</titleref> +% \end{macrocode} +% +% +% \subsection{Module \xoption{xr}} +% +% \begin{macrocode} +%<*xr> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{zref-xr}% + [2006/05/25 v1.2 Module xr for zref (HO)] +\RequirePackage{zref-base}[2006/05/25] +\@ifundefined{ZREF@baseok}{\endinput}{} +% \end{macrocode} +% \begin{macrocode} +\RequirePackage{keyval} +% \end{macrocode} +% +% We declare property |url|, because this is added, +% if a reference is imported and has not already set this field. +% Or if |hyperref| is used, then this property can be asked. +% \begin{macrocode} +\zref@newprop{url}{}% +% \end{macrocode} +% +% +% Most code, especially the handling of the \xfile{.aux} +% files are taken from David Carlisle's \xpackage{xr} package. +% Therefore I drop the documentation for these macros here. +% +% \begin{macro}{\zref@xr@ext} +% If the URL is not specied, then assume +% processed file with a guessed extension. +% Use the setting of \xpackage{hyperref} if available. +% \begin{macrocode} +\providecommand*{\zref@xr@ext}{% + \@ifundefined{XR@ext}{pdf}{\XR@ext}% +}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ifZREF@xr@zreflabel} +% The use of the star form of \cs{zexternaldocument} +% is remembered in the switch \cs{ifZREF@xr@zreflabel}. +% \begin{macrocode} +\newif\ifZREF@xr@zreflabel +% \end{macrocode} +% \end{macro} +% \begin{macro}{\zexternaldocument} +% In its star form it looks for \cs{newlabel}, +% otherwise for \cs{zref@newlabel}. +% Later we +% will read \xfile{.aux} files that expects +% |@| to have catcode 11 (letter). +% \begin{macrocode} +\newcommand*{\zexternaldocument}{% + \begingroup + \csname @safe@actives@true\endcsname + \makeatletter + \@ifstar{% + \ZREF@xr@zreflabelfalse + \@testopt\ZREF@xr@externaldocument{}% + }{% + \ZREF@xr@zreflabeltrue + \@testopt\ZREF@xr@externaldocument{}% + }% +}% +% \end{macrocode} +% \end{macro} +% +% If the \cs{include} featuer was used, there can be +% several \xfile{.aux} files. These files are read +% one after another, especially they are not recursively +% read in order to save read registers. Thus it can +% happen that the read order of the newlabel commands +% differs from \LaTeX's order using \cs{input}. +% +% \begin{macro}{\ZREF@xr@externaldocument} +% It reads the remaining arguments. \cs{newcommand} +% comes in handy for the optional argument. +% \begin{macrocode} +\def\ZREF@xr@externaldocument[#1]#2{% + \def\ZREF@xr@prefix{#1}% + \let\ZREF@xr@filelist\@empty + \edef\ZREF@xr@file{#2.aux}% + \filename@parse{#2}% + \@testopt\ZREF@xr@graburl{#2.\zref@xr@ext}% +}% +\def\ZREF@xr@graburl[#1]{% + \edef\ZREF@xr@url{#1}% + \ZREF@xr@checkfile + \endgroup +}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ZREF@xr@processfile} +% We follow \xpackage{xr} here, \cs{IfFileExists} offers +% a nicer test, but we have to open the file anyway. +% \begin{macrocode} +\def\ZREF@xr@checkfile{% + \openin\@inputcheck\ZREF@xr@file\relax + \ifeof\@inputcheck + \PackageWarning{zref/xr}{% + File `\ZREF@xr@file' not found or empty,\MessageBreak + labels not imported% + }% + \else + \PackageInfo{zref/xr}{% + Label \ifZREF@xr@zreflabel (zref) \fi import from `\ZREF@xr@file'% + }% + \def\ZREF@xr@found{0}% + \def\ZREF@xr@ignored{0}% + \ZREF@xr@processfile + \closein\@inputcheck + \begingroup + \let\on@line\@empty + \PackageInfo{zref/xr}{% + Statistics for `\ZREF@xr@file': + \ZREF@xr@found\space found, % + \ZREF@xr@ignored\space ignored% + }% + \endgroup + \fi + \ifx\ZREF@xr@filelist\@empty + \else + \edef\ZREF@xr@file{\expandafter\@car\ZREF@xr@filelist\@nil}% + \edef\ZREF@xr@filelist{\expandafter\@cdr\ZREF@xr@filelist\@nil}% + \expandafter\ZREF@xr@checkfile + \fi +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ZREF@xr@processfile} +% \begin{macrocode} +\def\ZREF@xr@processfile{% + \read\@inputcheck to\ZREF@xr@line + \expandafter\ZREF@xr@processline\ZREF@xr@line..\ZREF@nil + \ifeof\@inputcheck + \else + \expandafter\ZREF@xr@procesfile + \fi +}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ZREF@xr@processline} +% The most work must be done for analyzing the +% arguments of \cs{newlabel}. +% \begin{macrocode} +\long\def\ZREF@xr@processline#1#2#3\ZREF@nil{% + \def\x{#1}% + \toks@{#2}% + \ifZREF@xr@zreflabel + \ifx\x\ZREF@xr@zref@newlabel + \expandafter\ZREF@xr@process@zreflabel\ZREF@xr@line...\ZREF@nil + \fi + \else + \ifx\x\ZREF@xr@newlabel + \expandafter\ZREF@xr@process@label\ZREF@xr@line...[]\ZREF@nil + \fi + \fi + \ifx\x\ZREF@xr@@input + \edef\ZREF@xr@filelist{% + \unexpanded\expandafter{\ZREF@xr@filelist}% + {\filename@area\the\toks@}% + }% + \fi + \ifeof\@inputcheck + \else + \expandafter\ZREF@xr@processfile + \fi +}% +\def\ZREF@xr@process@zreflabel\zref@newlabel#1#2#3\ZREF@nil{% + \def\ZREF@xr@refname{Z@R@\ZREF@xr@prefix#1}% + \edef\ZREF@xr@found{\the\numexpr\ZREF@xr@found+1\relax}% + \def\x{#2}% + \@ifundefined{\ZREF@xr@refname}{% + \let\ZREF@xr@list\x + \ifx\ZREF@xr@list\@empty + \PackageWarningNoLine{zref/xr}{% + Label `#1' without properties ignored\MessageBreak + in file `\ZREF@xr@file'% + }% + \edef\ZREF@xr@ignored{\the\numexpr\ZREF@xr@ignored+1\relax}% + \else + \expandafter\ZREF@xr@checklist\x\ZREF@nil + \expandafter\global\expandafter\let + \csname \ZREF@xr@refname\endcsname\x + \fi + \ZREF@xr@urlcheck{\ZREF@xr@prefix#1}% + }{% + \ZREF@xr@ignorewarning{\ZREF@xr@prefix#1}% + }% +}% +\def\ZREF@xr@process@label\newlabel#1#2#3[#4]#5\ZREF@nil{% + \def\ZREF@xr@refname{Z@R@\ZREF@xr@prefix#1}% + \edef\ZREF@xr@found{\the\numexpr\ZREF@xr@found+1\relax}% + \def\x{#2}% + \@ifundefined{\ZREF@xr@refname}{% + \expandafter\ZREF@xr@scanparams + \csname\ZREF@xr@refname\expandafter\endcsname + \x{}{}{}{}{}\ZREF@nil + \ifx\\#4\\% + \else + % ntheorem knows an optional argument at the end of \newlabel + \zref@ifpropundefined{theotype}{% + \zref@newprop{theotype}{}% + }{}% + \expandafter\g@addto@macro + \csname\ZREF@xr@refname\endcsname{\theotype{#4}}% + \fi + \ZREF@xr@urlcheck{\ZREF@xr@prefix#1}% + }{% + \ZREF@xr@ignorewarning{\ZREF@xr@prefix#1}% + }% +} +\def\ZREF@xr@zref@newlabel{\zref@newlabel}% +\def\ZREF@xr@newlabel{\newlabel}% +\def\ZREF@xr@@input{\@input}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ZREF@xr@ignorewarning} +% \begin{macrocode} +\def\ZREF@xr@ignorewarning#1{% + \PackageWarningNoLine{zref/xr}{% + Label `#1' is already in use\MessageBreak + in file `\ZREF@xr@file'% + }% + \edef\ZREF@xr@ignored{\the\numexpr\ZREF@xr@ignored+1\relax}% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ZREF@xr@checklist} +% \begin{macrocode} +\def\ZREF@xr@checklist#1#2#3\ZREF@nil{% + \ifx\@undefined#1\relax + \expandafter\ZREF@xr@checkkey\string#1\@nil + \fi + \ifx\\#3\\% + \else + \@ReturnAfterFi{% + \ZREF@xr@checklist#3\ZREF@nil + }% + \fi +}% +\long\def\@ReturnAfterFi#1\fi{\fi#1}% +\def\ZREF@xr@checkkey#1#2\@nil{% + \zref@ifpropundefined{#2}{% + \zref@newprop{#2}{}% + }{}% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ZREF@xr@scanparams} +% \begin{macrocode} +\def\ZREF@xr@scanparams#1#2#3#4#5#6#7\ZREF@nil{% + \global\let#1\@empty + \ZREF@foundfalse + \ZREF@xr@scantitleref#1#2\TR@TitleReference{}{}\ZREF@nil + \ifZREF@found + \else + \g@addto@macro#1{\default{#2}}% + \fi + % page + \g@addto@macro#1{\page{#3}}% + % nameref title + \ifZREF@found + \else + \ifx\\#4\\% + \else + \zref@ifpropundefined{title}{% + \zref@newprop{title}{}% + }{}% + \g@addto@macro#1{\title{#4}}% + \fi + \fi + % anchor + \ifx\\#5\\% + \else + \zref@ifpropundefined{anchor}{% + \zref@newprop{anchor}{}% + }{}% + \g@addto@macro#1{\anchor{#5}}% + \fi + \ifx\\#6\\% + \else + \zref@ifpropundefined{url}{% + \zref@newprop{url}{}% + }{}% + \g@addto@macro#1{\url{#6}}% + \fi +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ZREF@xr@scantitleref} +% \begin{macrocode} +\def\ZREF@xr@scantitleref#1#2\TR@TitleReference#3#4#5\ZREF@nil{% + \ifx\\#5\\% + \else + \g@addto@macro#1{% + \default{#3}% + \title{#4}% + }% + \ZREF@foundtrue + \fi +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ZREF@xr@urlcheck}% +% \begin{macrocode} +\def\ZREF@xr@urlcheck#1{% + \zref@ifrefcontainsprop{#1}{anchor}{% + \zref@ifrefcontainsprop{#1}{url}{% + }{% + \expandafter\g@addto@macro\csname Z@R@#1\expandafter\endcsname + \expandafter{% + \expandafter\url\expandafter{\ZREF@xr@url}% + }% + }% + }{% + }% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\zxrsetup} +% Just one key for setting the default extension is currently used. +% \begin{macrocode} +\define@key{ZREF@XR}{ext}{% + \def\zref@xr@ext{#1}% +}% +\newcommand*{\zxrsetup}{% + \setkeys{ZREF@XR}% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</xr> +% \end{macrocode} +% +% +% \subsection{Module \xoption{hyperref}} +% +% UNFINISHED :-( +% +% \begin{macrocode} +%<*hyperref> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{zref-hyperref}% + [2006/05/25 v1.2 Module hyperref for zref (HO)] +\RequirePackage{zref-base}[2006/05/25] +\@ifundefined{ZREF@baseok}{\endinput}{} +% \end{macrocode} +% +% \begin{macrocode} +\zref@newprop{anchor}[]{% + \@ifundefined{@currentHref}{}{\@currentHref}% +}% +\zref@addprop\ZREF@mainlist{anchor}% +% \end{macrocode} +% +% \begin{macrocode} +%</hyperref> +% \end{macrocode} +% +% +% \subsection{Module \xoption{savepos}} +% +% Option \xoption{savepos} provides an interface for +% \pdfTeX's \cmd{\pdfsavepos}, see the manual for +% \pdfTeX. +% +% \subsubsection{Identification} +% +% \begin{macrocode} +%<*savepos> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{zref-savepos}% + [2006/05/25 v1.2 Module savepos for zref (HO)] +\RequirePackage{zref-base}[2006/05/25] +\@ifundefined{ZREF@baseok}{\endinput}{} +% \end{macrocode} +% +% \subsubsection{Availability} +% +% First we check, whether the feature is available. +% \begin{macrocode} +\begingroup + \@ifundefined{pdfsavepos}{% + \ZREF@ErrorNoLine{% + \string\pdfsavepos\space is not supported\MessageBreak + in this pdfTeX version% + }\ZREF@UpdatePdfTeX + \endgroup + \endinput + }{}% +\endgroup +% \end{macrocode} +% In PDF mode we are done. However support for DVI mode +% was added later in version 1.40.0. In earlier versions +% \cs{pdfsavepos} is defined, but its execution raises +% an error. +% \begin{macrocode} +\RequirePackage{ifpdf} +\ifpdf +\else + \ifnum\pdftexversion<140 % + \ZREF@ErrorNoLine{% + \string\pdfsavepos\space is not supported in DVI mode\MessageBreak + of this pdfTeX version% + }\ZREF@UpdatePdfTeX + \expandafter\expandafter\expandafter\endinput + \fi +\fi +% \end{macrocode} +% +% \subsubsection{Setup} +% +% \begin{macrocode} +\zref@newlist{savepos} +\zref@newprop*{posx}[0]{\the\pdflastxpos} +\zref@newprop*{posy}[0]{\the\pdflastypos} +\zref@addprop{savepos}{posx} +\zref@addprop{savepos}{posy} +% \end{macrocode} +% +% \subsubsection{User macros} +% +% \begin{macro}{\zsavepos} +% The current location is stored in a reference with the +% given name. +% \begin{macrocode} +\def\zsavepos#1{% + \@bsphack + \if@filesw + \pdfsavepos + \zref@labelbylist{#1}{savepos}% + \fi + \@esphack +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\zposx} +% \begin{macro}{\zposy} +% The horizontal and vertical position are available by +% \cs{zposx} and \cs{zposy}. Do not rely on absolute +% positions. They differ in DVI and PDF mode of \pdfTeX. +% Use differences instead. The unit of the position numbers +% is sp. +% \begin{macrocode} +\newcommand*{\zposx}[1]{% + \zref@extract{#1}{posx}% +}% +\newcommand*{\zposy}[1]{% + \zref@extract{#1}{posy}% +}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% Typically horizontal and vertical positions are used +% inside calculations. Therefore the extracting macros +% should be expandable and babel's patch is not applyable. +% +% Also it is in the responsibility of the user to marked +% used positions by \cs{zrefused} +% in order to notify \LaTeX\ about undefined references. +% +% \begin{macrocode} +%</savepos> +% \end{macrocode} +% +% +% \subsection{Module \xoption{dotfill}} +% +% \begin{macrocode} +%<*dotfill> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{zref-dotfill}% + [2006/05/25 v1.2 Module dotfill for zref (HO)] +\RequirePackage{zref-base}[2006/05/25] +\@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}[2006/05/25] +% \end{macrocode} +% For automatically generated label names we use the unique +% counter of module \xoption{base}. +% \begin{macrocode} +\zref@require@unique +% \end{macrocode} +% Configuration is done by the key value interface of package +% \xpackage{keyval}. +% \begin{macrocode} +\RequirePackage{keyval} +% \end{macrocode} +% The definitions of the keys follow. +% \begin{macrocode} +\define@key{ZREF@DF}{unit}{% + \def\ZREF@df@unit{#1}% +} +\define@key{ZREF@DF}{min}{% + \def\ZREF@df@min{#1}% +} +\define@key{ZREF@DF}{dot}{% + \def\ZREF@df@dot{#1}% +} +% \end{macrocode} +% Defaults are set, see user interface. +% \begin{macrocode} +\providecommand\ZREF@df@min{2} +\providecommand\ZREF@df@unit{.44em} +\providecommand\ZREF@df@dot{.} +% \end{macrocode} +% \begin{macro}{\zdotfillsetup} +% Configuration of \cs{zdotfill} is done by \cs{zdotfillsetup}. +% \begin{macrocode} +\newcommand*{\zdotfillsetup}{\setkeys{ZREF@DF}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\zdotfill} +% \cs{zdotfill} sets labels at the left and the right to get +% the horizontal position. \cs{zsavepos} is not used, because +% we do not need the vertical position. +% \begin{macrocode} +\newcommand*{\zdotfill}{% + \leavevmode + \global\advance\c@zref@unique\@ne + \begingroup + \def\ZREF@temp{zref@\number\c@zref@unique}% + \pdfsavepos + \zref@labelbyprops{\thezref@unique L}{posx}% + \setlength{\dimen@}{\ZREF@df@unit}% + \zref@ifrefundefined{\thezref@unique R}{% + \ZREF@dotfill + }{% + \ifnum\numexpr\zposx{\thezref@unique R}-\zposx{\thezref@unique L}\relax + <\dimexpr\ZREF@df@min\dimen@\relax + \hfill + \else + \ZREF@dotfill + \fi + }% + \pdfsavepos + \zref@labelbyprops{\thezref@unique R}{posx}% + \endgroup + \kern\z@ +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ZREF@dotfill} +% Help macro that actually sets the dots. +% \begin{macrocode} +\def\ZREF@dotfill{% + \cleaders\hb@xt@\dimen@{\hss\ZREF@df@dot\hss}\hfill +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</dotfill> +% \end{macrocode} +% \section{Installation} +% +% \paragraph{CTAN.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/zref.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/zref.pdf}] Documentation. +% \end{description} +% +% \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 zref.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@{}} +% zref.sty & tex/latex/oberdiek/zref.sty\\ +% zref-base.sty & tex/latex/oberdiek/zref-base.sty\\ +% zref-abspage.sty & tex/latex/oberdiek/zref-abspage.sty\\ +% zref-counter.sty & tex/latex/oberdiek/zref-counter.sty\\ +% zref-dotfill.sty & tex/latex/oberdiek/zref-dotfill.sty\\ +% zref-hyperref.sty & tex/latex/oberdiek/zref-hyperref.sty\\ +% zref-lastpage.sty & tex/latex/oberdiek/zref-lastpage.sty\\ +% zref-perpage.sty & tex/latex/oberdiek/zref-perpage.sty\\ +% zref-savepos.sty & tex/latex/oberdiek/zref-savepos.sty\\ +% zref-titleref.sty & tex/latex/oberdiek/zref-titleref.sty\\ +% zref-totpages.sty & tex/latex/oberdiek/zref-totpages.sty\\ +% zref-user.sty & tex/latex/oberdiek/zref-user.sty\\ +% zref-xr.sty & tex/latex/oberdiek/zref-xr.sty\\ +% zref.pdf & doc/latex/oberdiek/zref.pdf\\ +% zref-example.tex & doc/latex/oberdiek/zref-example.tex\\ +% zref.dtx & source/latex/oberdiek/zref.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. +% +% \paragraph{Refresh file databases.} If your \TeX~distribution +% (\teTeX, \mikTeX, \dots) rely on file 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 zref.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 intension: +% \begin{quote} +% \verb|latex \install=y\input{zref.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 zref.dtx +%makeindex -s gind.ist zref.idx +%pdflatex zref.dtx +%makeindex -s gind.ist zref.idx +%pdflatex zref.dtx +%\end{verbatim} +% \end{quote} +% +% \newcommand*{\bibpackage}[4]{^^A +% \bibitem{#1} +% Package \xpackage{#1}, #2, #3.^^A +% \ifx\\#4\\\else#4\fi\par +% } +% +% \begin{thebibliography}{99} +% \bibpackage{everyshi}{Martin Schr\"oder}{2001/05/15 v3.00} +% {\CTAN{macros/latex/contrib/ms/everyshi.dtx}} +% \bibpackage{footmisc}{Robin Fairbairns}{2004/01/23 v5.3a} +% {\CTAN{macros/latex/contrib/footmisc/footmisc.dtx}} +% \bibpackage{hyperref}{Sebastian Rahtz, Heiko Oberdiek}{2006/08/16 v6.75c} +% {\CTAN{macros/latex/contrib/hyperref/}} +% \bibpackage{lastpage}{Jeff Goldberg}{1994/06/25 v0.1b} +% {\CTAN{macros/latex/contrib/lastpage/}} +% \bibpackage{nameref}{Sebastian Rahtz, Heiko Oberdiek}{2006/02/12 v2.24} +% {\CTAN{macros/latex/contrib/hyperref/nameref.dtx}} +% \bibpackage{perpage}{David Kastrup}{2002/12/20 v1.0} +% {\CTAN{macros/latex/contrib/bigfoot/perpage.dtx}} +% \bibpackage{titleref}{Donald Arsenau}{2001/04/05 v3.1} +% {\CTAN{macros/latex/contrib/misc/titleref.sty}} +% \bibpackage{totpages}{Wilhelm M\"uller}{1999/07/14 v1.00} +% {\CTAN{macros/latex/contrib/totpages/}} +% \bibpackage{xr}{David Carlisle}{1994/05/28 v5.02} +% {\CTAN{macros/latex/required/tools/xr.pdf}} +% \bibpackage{xr-hyper}{David Carlisle}{2000/03/22 v6.00beta4} +% {\CTAN{macros/latex/contrib/hyperref/xr-hyper.sty}} +% \end{thebibliography} +% +% \begin{History} +% \begin{Version}{2006/02/20 v1.0} +% \item +% First version. +% \end{Version} +% \begin{Version}{2006/05/03 v1.1} +% \item +% Module perpage added. +% \item +% Module redesign as packages. +% \end{Version} +% \begin{Version}{2006/05/25 v1.2} +% \item +% Module dotfillmin added. +% \item +% Module base: macros \cs{zref@require@uniqe} and \cs{thezref@unique} +% added (used by modules titleref and dotfillmin). +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput |