From e3d3d0b218d7c26a0ab0547288ce9b8f0ec4a7ff Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 10 Dec 2019 22:17:04 +0000 Subject: oberdiek (10dec19) git-svn-id: svn://tug.org/texlive/trunk@53088 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/source/latex/oberdiek/README.txt | 2 +- .../texmf-dist/source/latex/oberdiek/alphalph.dtx | 1535 ---------- .../source/latex/oberdiek/askinclude.dtx | 1947 ------------- Master/texmf-dist/source/latex/oberdiek/bitset.dtx | 2957 -------------------- .../texmf-dist/source/latex/oberdiek/catchfile.dtx | 777 ----- .../texmf-dist/source/latex/oberdiek/holtxdoc.dtx | 27 +- .../source/latex/oberdiek/listingsutf8.dtx | 675 ----- .../texmf-dist/source/latex/oberdiek/oberdiek.ins | 10 +- .../texmf-dist/source/latex/oberdiek/oberdiek.tex | 95 +- .../texmf-dist/source/latex/oberdiek/pdfescape.dtx | 1533 ---------- .../texmf-dist/source/latex/oberdiek/picture.dtx | 768 ----- .../source/latex/oberdiek/resizegather.dtx | 2 +- .../texmf-dist/source/latex/oberdiek/selinput.dtx | 853 ------ 13 files changed, 20 insertions(+), 11161 deletions(-) delete mode 100644 Master/texmf-dist/source/latex/oberdiek/alphalph.dtx delete mode 100644 Master/texmf-dist/source/latex/oberdiek/askinclude.dtx delete mode 100644 Master/texmf-dist/source/latex/oberdiek/bitset.dtx delete mode 100644 Master/texmf-dist/source/latex/oberdiek/catchfile.dtx delete mode 100644 Master/texmf-dist/source/latex/oberdiek/listingsutf8.dtx delete mode 100644 Master/texmf-dist/source/latex/oberdiek/pdfescape.dtx delete mode 100644 Master/texmf-dist/source/latex/oberdiek/picture.dtx delete mode 100644 Master/texmf-dist/source/latex/oberdiek/selinput.dtx (limited to 'Master/texmf-dist/source/latex/oberdiek') diff --git a/Master/texmf-dist/source/latex/oberdiek/README.txt b/Master/texmf-dist/source/latex/oberdiek/README.txt index 9abb0caf695..1a01bea3650 100644 --- a/Master/texmf-dist/source/latex/oberdiek/README.txt +++ b/Master/texmf-dist/source/latex/oberdiek/README.txt @@ -1,4 +1,4 @@ -README 2019/12/05 +README 2019/12/09 This file describes the directory CTAN:macros/latex/contrib/oberdiek/ diff --git a/Master/texmf-dist/source/latex/oberdiek/alphalph.dtx b/Master/texmf-dist/source/latex/oberdiek/alphalph.dtx deleted file mode 100644 index 7c70cd4825e..00000000000 --- a/Master/texmf-dist/source/latex/oberdiek/alphalph.dtx +++ /dev/null @@ -1,1535 +0,0 @@ -% \iffalse meta-comment -% -% File: alphalph.dtx -% Version: 2016/05/16 v2.5 -% Info: Convert numbers to letters -% -% Copyright (C) -% 1999, 2006-2008, 2010, 2011 Heiko Oberdiek -% 2016-2019 Oberdiek Package Support Group -% https://github.com/ho-tex/oberdiek/issues -% -% This work may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either -% version 1.3c of this license or (at your option) any later -% version. This version of this license is in -% https://www.latex-project.org/lppl/lppl-1-3c.txt -% and the latest version of this license is in -% https://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". -% -% The Current Maintainers of this work are -% Heiko Oberdiek and the Oberdiek Package Support Group -% https://github.com/ho-tex/oberdiek/issues -% -% The Base Interpreter refers to any `TeX-Format', -% because some files are installed in TDS:tex/generic//. -% -% This work consists of the main source file alphalph.dtx -% and the derived files -% alphalph.sty, alphalph.pdf, alphalph.ins, alphalph.drv, -% alphalph-test1.tex, alphalph-test2.tex, alphalph-test3.tex. -% -% 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 - \catcode123=1 % - \catcode125=2 % - \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 -% -%<*install> -\input docstrip.tex -\Msg{************************************************************************} -\Msg{* Installation} -\Msg{* Package: alphalph 2016/05/16 v2.5 Convert numbers to letters (HO)} -\Msg{************************************************************************} - -\keepsilent -\askforoverwritefalse - -\let\MetaPrefix\relax -\preamble - -This is a generated file. - -Project: alphalph -Version: 2016/05/16 v2.5 - -Copyright (C) - 1999, 2006-2008, 2010, 2011 Heiko Oberdiek - 2016-2019 Oberdiek Package Support Group - -This work may be distributed and/or modified under the -conditions of the LaTeX Project Public License, either -version 1.3c of this license or (at your option) any later -version. This version of this license is in - https://www.latex-project.org/lppl/lppl-1-3c.txt -and the latest version of this license is in - https://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". - -The Current Maintainers of this work are -Heiko Oberdiek and the Oberdiek Package Support Group -https://github.com/ho-tex/oberdiek/issues - - -The Base Interpreter refers to any `TeX-Format', -because some files are installed in TDS:tex/generic//. - -This work consists of the main source file alphalph.dtx -and the derived files - alphalph.sty, alphalph.pdf, alphalph.ins, alphalph.drv, - alphalph-test1.tex, alphalph-test2.tex, alphalph-test3.tex. - -\endpreamble -\let\MetaPrefix\DoubleperCent - -\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}}% -% \usedir{doc/latex/oberdiek/test}% -% \file{alphalph-test1.tex}{\from{alphalph.dtx}{test1}}% -% \file{alphalph-test2.tex}{\from{alphalph.dtx}{test2,etex}}% -% \file{alphalph-test3.tex}{\from{alphalph.dtx}{test2,noetex}}% -} - -\catcode32=13\relax% active space -\let =\space% -\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 -% -%<*ignore> -\fi -% -%<*driver> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{alphalph.drv}% - [2016/05/16 v2.5 Convert numbers to letters (HO)]% -\documentclass{ltxdoc} -\usepackage{alphalph}[2016/05/16] -\makeatletter -\newalphalph{\fnsymbolwrap}[wrap]{\@fnsymbol}{} -\newcommand*{\fnsymbolsingle}[1]{% - \ensuremath{% - \ifcase#1% - \or *% - \or \dagger - \or \ddagger - \or \mathsection - \or \mathparagraph - \else - \@ctrerr - \fi - }% -} -\makeatother -\newalphalph{\fnsymbolmult}[mult]{\fnsymbolsingle}{} -\usepackage{amsmath} -\DeclareMathOperator{\opDiv}{div} -\DeclareMathOperator{\opMod}{mod} -\newcommand*{\Def}{% - \ensuremath{% - \mathrel{\mathop{:}}=% - }% -} -\usepackage{holtxdoc}[2011/11/22] -\begin{document} - \DocInput{alphalph.dtx}% -\end{document} -% -% \fi -% -% -% -% \GetFileInfo{alphalph.drv} -% -% \title{The \xpackage{alphalph} package} -% \date{2016/05/16 v2.5} -% \author{Heiko Oberdiek\thanks -% {Please report any issues at \url{https://github.com/ho-tex/oberdiek/issues}}} -% -% \maketitle -% -% \begin{abstract} -% The package provides methods to represent numbers with a limited -% set of symbols. Both \hologo{LaTeX} and \hologo{plainTeX} are supported. -% \end{abstract} -% -% \tableofcontents -% -% \section{Documentation} -% -% \subsection{Introduction} -% \hologo{LaTeX} counters can be represented in different ways -% by using presentation commands: -% \begin{quote} -% \cs{arabic}, \cs{roman}, \cs{Roman},\\ -% \cs{alph}, \cs{Alph}, \cs{fnsymbol} -% \end{quote} -% The ranges of supported counter values are more or less -% restricted. Only \cs{arabic} can be used with any counter -% value \hologo{TeX} supports. -% \begin{quote} -% \catcode`\|=12 % -% \begin{tabular}{@{}l|l|l|l@{}} -% Presentation & Supported & Ignored & Error message\\ -% command & domain & values & ``Counter too large''\\ -% \hline -% \cs{arabic} -% & \ttfamily -MAX..MAX & &\\ -% \cs{roman}, \cs{Roman} -% & \ttfamily 1..MAX & \ttfamily -MAX..0 &\\ -% \cs{alph}, \cs{Alph} -% & \ttfamily 1..26 & 0 & \ttfamily -MAX..-1, 27..MAX\\ -% \cs{fnsymbol} -% & \ttfamily 1..9 & 0 & \ttfamily -MAX..-1, 10..MAX\\ -% \hline -% \end{tabular}\\[1ex] -% \texttt{MAX} = \texttt{2147483647} -% \end{quote} -% Ordinal numbers are often used in documents: numbering -% of chapters, sections, figures, footnotes and so on. -% The layouter chooses \cs{Alph} for chapter numbers -% and \cs{fnsymbol} for footnotes. But what can be done -% if there are more than 26 chapters or more than 10 footnotes? -% This package \xpackage{alphalph} allows to define new -% presentation commands. They rely on a existing command -% and define presentations for values greater the limits. -% Three different methods are provided by the package. -% In the following use cases they are presentated. -% -% \subsection{Use cases} -% -% \subsubsection{Number system based on symbols} -% -% Asume you are writing a book and your lecturer demands -% that chapter numbers must be letters. But you have already -% 30 chapters and you have only 26 letters? -% -% In the decimal system the situation would be clear. -% If you run out of digits, you are using more digits -% to represent a number. This method can be also be used -% for letters. After chapter 26 with |Z| we us |AA|, |AB|, |AC|, and |AD| -% for the remaining chapters. -% -% Happily this package already defines this presentation command: -%\begin{quote} -%\begin{verbatim} -%\usepackage{alphalph} -%\renewcommand*{\thechapter}{% -% \AlphAlph{\value{chapter}}% -%} -%\end{verbatim} -%\end{quote} -% \cs{AlphAlph} generates: -% \AlphAlph{1}, \AlphAlph{2}, \AlphAlph{3}, \dots, -% \AlphAlph{26}, \AlphAlph{27}, \AlphAlph{28}, \dots -% -% The other presentation command is \cs{alphalph} for lowercase letters. -% -% \subsubsection{Wrap symbols around} -% -% Nine footnote symbols are quite a few. -% Too soon the symbols are consumed -% and \hologo{LaTeX} complains with the error ``Counter too large''. -% However, it could be acceptable to start again with the symbols -% from the beginning, especially if there are less than nine symbols -% on a page. -% This could be achieved by a counter reset. -% But finding the right place can be difficult or needs manual -% actions. Also a -% unique counter value can be desirable (e.g. for generating -% unique anchor/link names). -% Package \xpackage{alphalph} allows you to define -% a macro that implements a ``wrap around'', but letting -% the value of the counter untouched: -%\begin{quote} -%\begin{verbatim} -%\usepackage{alphalph} -%\makeatletter -%\newalphalph{\fnsymbolwrap}[wrap]{\@fnsymbol}{} -%\makeatother -%\renewcommand*{\thefootnote}{% -% \fnsymbolwrap{\value{footnote}}% -%} -%\end{verbatim} -%\end{quote} -% \cs{fnsymbolwrap} generates: -% \fnsymbolwrap{1}~(1), \fnsymbolwrap{2}~(2), \fnsymbolwrap{3}~(3), \dots, -% \fnsymbolwrap{9}~(9), \fnsymbolwrap{10}~(10), \fnsymbolwrap{11}~11, \dots -% -% \subsubsection{Multiple symbols} -% -% \Hologo{LaTeX}'s standard set of footnote symbols contains doubled -% symbols at the higher positions. Could this principle -% be generalized? -% Yes, but first we need a clean footnote symbol list without -% doubled entries, example: -%\begin{quote} -%\begin{verbatim} -%\usepackage{alphalph} -%\makeatletter -%\newcommand*{\fnsymbolsingle}[1]{% -% \ensuremath{% -% \ifcase#1% -% \or *% -% \or \dagger -% \or \ddagger -% \or \mathsection -% \or \mathparagraph -% \else -% \@ctrerr -% \fi -% }% -%} -%\makeatother -%\newalphalph{\fnsymbolmult}[mult]{\fnsymbolsingle}{} -%\renewcommand*{\thefootnote}{% -% \fnsymbolmult{\value{footnote}}% -%} -%\end{verbatim} -%\end{quote} -% The own definition of \cs{fnsymbolsingle} has the -% advantage that this list can easily modified. -% Otherwise you can use \cs{@fnsymbol} directly, -% because it uses the same first five symbols. -%\begin{quote} -%\begin{verbatim} -%\usepackage{alphalph} -%\makeatletter -%\newalphalph{\fnsymbolmult}[mult]{\@fnsymbol}{5} -%\makeatother -%\renewcommand*{\thefootnote}{% -% \fnsymbolmult{\value{footnote}}% -%} -%\end{verbatim} -%\end{quote} -% \cs{fnsymbolmult} generates: -% \fnsymbolmult{1}~(1), \fnsymbolmult{2}~(2), \fnsymbolmult{3}~(3), -% \fnsymbolmult{4}~(4), \fnsymbolmult{5}~(5), \fnsymbolmult{6}~(6), -% \dots, \fnsymbolmult{16}~16, \fnsymbolmult{17}~17, \dots -% -% \bigskip -% The same method can also be used for the chapter problem -% in the first discussed use case: -%\begin{quote} -%\begin{verbatim} -%\usepackage{alphalph} -%\makeatletter -%\newalphalph{\AlphMult}[mult]{\@Alph}{26} -%\makeatother -%\renewcommand*{\chapter}{% -% \AlphMult{\value{chapter}}% -%} -%\end{verbatim} -%\end{quote} -% \cs{AlphMult} then generates AA, BB, CC, and DD for chapters 27--30. -% -% \subsection{Glossary} -% -% \begin{description} -% \item[Counter presentation command] is a macro that -% expects a \hologo{LaTeX} counter name as argument. -% Numbers cannot be used. Examples: -% \cs{arabic}, \cs{alph}, \cs{fnsymbol}. -% \item[Number presentation command] is a macro that -% expects a number as argument. A number is anything -% that \hologo{TeX} accepts as number including \cs{value}. -% Examples: \cs{alphalph}, \cs{AlphAlph}, \cs{alphalph@alph} -% -% However, \cs{alph} or \cs{fnsymbol} are not number -% presentation commands because they expect a counter -% name as argument. Happily \hologo{LaTeX} counter presentation -% commands internally uses number presentation commands -% with the same name, but prefixed by `@'. Thus -% \cs{@alph}, \cs{@fnsymbol} are number presentation commands. -% \item[Symbols provider] is a command that can be used -% to get a list of symbols. For example, \cs{@Alph} -% provides the 26 uppercase letters from `A' to `Z'. -% Basically a symbol provider is a number presentation -% command, usually with a limited range. -% \item[Number of symbols] is the number of the -% last symbol slot of a symbol provider. Thus \cs{@Alph} -% generates 26 symbols, \cs{@fnsymbol} provides 9 symbols. -% \end{description} -% -% \subsection{Package usage} -% -% The package \Package{alphalph} can be used with both \hologo{plainTeX} -% and \hologo{LaTeX}: -% \begin{description} -% \item[\hologo{plainTeX}:] |\input alphalph.sty| -% \item[\hologo{LaTeX2e}:] |\usepackage{alphalph}|\\ -% There aren't any options. -% \end{description} -% -% \subsection{User commands} -% -% \begin{declcs}{AlphAlph} \M{number}\\ -% \cs{alphalph} \M{number} -% \end{declcs} -% Both macros are number presentation commands that -% expects a number as argument. \hologo{LaTeX} counters -% are used with \cs{value}. -% -% The macros represents a number by letters. -% First single letters |A..Z| are used, then -% two letters |AA..ZZ|, three letters |AAA...ZZZ|, \dots -% follow. -% -% Macro \cs{AlphAlph} uses uppercase letters, -% \cs{alphalph} generates the lowercase variant. -% \begin{quote} -% \catcode`\|=12 -% \def\entry#1{ -% \texttt{#1} -% & \texttt{\AlphAlph{#1}} -% & \texttt{\alphalph{#1}} -% } -% \begin{tabular}{@{}l|l|l@{}} -% \meta{number} & \verb|\AlphAlph{|\meta{number}\verb|}| -% & \verb|\alphalph{|\meta{number}\verb|}|\\ -% \hline -% \entry{1}\\ -% \entry{2}\\ -% \entry{26}\\ -% \entry{27}\\ -% \entry{30}\\ -% \entry{2000}\\ -% \entry{3752127}\\ -% \entry{10786572}\\ -% \entry{2147483647}\\ -% \end{tabular} -% \end{quote} -% -% \begin{declcs}{newalphalph} -% \M{cmd} -% |[|\meta{method}|]| -% \M{symbols provider} -% \M{number of symbols} -% \end{declcs} -% Macro \cs{newalphalph} defines \meta{cmd} as new -% number presentation command. Like \cs{newcommand} an error -% is thrown, if macro \meta{cmd} already exists. -% -% The \meta{method} is one of |alph|, |wrap|, or |mult|. -% The default is |alph|. -% -% As symbol provider a number presentation command -% can be used, e.g. \cs{@fnsymbol}, \cs{@Alph}, or -% \cs{alphalph@alph}. -% -% The last argument is the number of symbols. -% If the argument is empty, then \cs{newalphalph} tries -% to find this number itself. \hologo{LaTeX}'s number presentation -% commands throw an error message, if the number is too large. -% This error message is put in a macro \cs{@ctrerr}. -% Thus \cs{newalphalph} calls the symbol provider and tests -% a number by typesetting it in a temporary box. The error -% macro \cs{@ctrerr} is catched, it proofs that the number -% is not supported. Also if the width of the result is zero -% the number is considered as unavailable. -% -% The empty argument is useful for potentially variable lists. -% However if the end cannot be detected, then the number of -% symbols must be given. This is also a lot faster. Therefore don't -% let the argument empty without reason. -% -% \subsection{Programmer commands} -% -% \begin{declcs}{alphalph@Alph} \M{number}\\ -% \cs{alphalph@alph} \M{number} -% \end{declcs} -% They are basically the same as \cs{@Alph} and \cs{@alph}. -% Some languages of package \xpackage{babel} redefine -% \hologo{LaTeX}'s macros to include some font setup that -% breaks expandibility. Therefore \cs{AlphAlph} and \cs{alphalph} -% are based on \cs{alphalph@Alph} and \cs{alphalph@alph} to get -% the letters. The behaviour of these symbol providers for numbers -% outside the range |1..26| is undefined. -% -% \subsection{Design principles} -% -% \subsubsection{Number presentation commands} -% -% All number presentation commands that this package defines -% (including \cs{alphalph} and \cs{AlphAlph}) have the following -% properties: -% \begin{itemize} -% \item They are fully expandable. This means that they can safely -% \begin{itemize} -% \item be written to a file, -% \item used in moving arguments (\hologo{LaTeX}: they are \emph{robust}), -% \item used in a \cmd{\csname}-\cmd{\endcsname} pair. -% \end{itemize} -% \item If the argument is zero or negative, the commands expand -% to nothing like \cmd{\romannumeral}. -% \item The argument is a \hologo{TeX} number. Anything that would be -% accepted by \cmd{\number} is a valid argument: -% \begin{itemize} -% \item explicite constants, -% \item macros that expand to a number, -% \item count registers, \hologo{LaTeX} counter can used -% via \cmd{\value}, e.\,g.:\\ -% |\alphalph{\value{page}}| -% \item \dots -% \end{itemize} -% \item \hologo{eTeX}'s numeric expressions are supported, if \hologo{eTeX} is -% available. Then \cs{numexpr} is applied to the argument. -% Package \cs{calc}'s expressions are not supported. -% That would violate the expandibility. -% \end{itemize} -% -% \subsubsection{General usability} -% -% \begin{description} -% \item[\hologo{TeX} format:] -% The package does not depend on \hologo{LaTeX}, it can also be used -% by \hologo{plainTeX}, for example. -% \item[\hologo{eTeX}:] \eTeX is supported, the macros are shorter and -% faster. But \eTeX's extensions are not requirements. -% Without \hologo{eTeX}, just the implementation changes. The properties -% remain unchanged. -% \end{description} -% -% \StopEventually{ -% } -% -% \section{Implementation} -% \subsection{Begin\texorpdfstring{ of package}{}} -% \begin{macrocode} -%<*package> -% \end{macrocode} -% Reload check, especially if the package is not used with \LaTeX. -% \begin{macrocode} -\begingroup\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode35=6 % # - \catcode39=12 % ' - \catcode44=12 % , - \catcode45=12 % - - \catcode46=12 % . - \catcode58=12 % : - \catcode64=11 % @ - \catcode123=1 % { - \catcode125=2 % } - \expandafter\let\expandafter\x\csname ver@alphalph.sty\endcsname - \ifx\x\relax % plain-TeX, first loading - \else - \def\empty{}% - \ifx\x\empty % LaTeX, first loading, - % variable is initialized, but \ProvidesPackage not yet seen - \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}% - \aftergroup\endinput - \fi - \fi -\endgroup% -% \end{macrocode} -% Package identification: -% \begin{macrocode} -\begingroup\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode35=6 % # - \catcode39=12 % ' - \catcode40=12 % ( - \catcode41=12 % ) - \catcode44=12 % , - \catcode45=12 % - - \catcode46=12 % . - \catcode47=12 % / - \catcode58=12 % : - \catcode64=11 % @ - \catcode91=12 % [ - \catcode93=12 % ] - \catcode123=1 % { - \catcode125=2 % } - \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\@undefined - \xdef#1{#3}% - \fi - \ifx#1\relax - \xdef#1{#3}% - \fi - }% - \fi -\expandafter\x\csname ver@alphalph.sty\endcsname -\ProvidesPackage{alphalph}% - [2016/05/16 v2.5 Convert numbers to letters (HO)]% -% \end{macrocode} -% -% \subsection{Catcodes} -% -% \begin{macrocode} -\begingroup\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode123=1 % { - \catcode125=2 % } - \catcode64=11 % @ - \def\x{\endgroup - \expandafter\edef\csname AlPh@AtEnd\endcsname{% - \endlinechar=\the\endlinechar\relax - \catcode13=\the\catcode13\relax - \catcode32=\the\catcode32\relax - \catcode35=\the\catcode35\relax - \catcode61=\the\catcode61\relax - \catcode64=\the\catcode64\relax - \catcode123=\the\catcode123\relax - \catcode125=\the\catcode125\relax - }% - }% -\x\catcode61\catcode48\catcode32=10\relax% -\catcode13=5 % ^^M -\endlinechar=13 % -\catcode35=6 % # -\catcode64=11 % @ -\catcode123=1 % { -\catcode125=2 % } -\def\TMP@EnsureCode#1#2{% - \edef\AlPh@AtEnd{% - \AlPh@AtEnd - \catcode#1=\the\catcode#1\relax - }% - \catcode#1=#2\relax -} -\TMP@EnsureCode{33}{12}% ! -\TMP@EnsureCode{39}{12}% ' -\TMP@EnsureCode{40}{12}% ( -\TMP@EnsureCode{41}{12}% ) -\TMP@EnsureCode{43}{12}% + -\TMP@EnsureCode{44}{12}% , -\TMP@EnsureCode{46}{12}% . -\TMP@EnsureCode{47}{12}% / -\TMP@EnsureCode{59}{12}% ; -\TMP@EnsureCode{60}{12}% < -\TMP@EnsureCode{62}{12}% > -\TMP@EnsureCode{91}{12}% [ -\TMP@EnsureCode{93}{12}% ] -\TMP@EnsureCode{96}{12}% ` -\TMP@EnsureCode{124}{12}% | -\edef\AlPh@AtEnd{\AlPh@AtEnd\noexpand\endinput} -% \end{macrocode} -% -% \subsection{Package loading} -% -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname RequirePackage\endcsname\relax - \input infwarerr.sty\relax - \input intcalc.sty\relax -\else - \RequirePackage{infwarerr}[2007/09/09]% - \RequirePackage{intcalc}[2007/09/09]% -\fi -% \end{macrocode} -% -% \subsection{\hologo{eTeX} detection} -% -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname numexpr\endcsname\relax - \catcode124=9 % '!': ignore - \catcode43=14 % '+': comment -\else - \catcode124=14 % '!': comment - \catcode43=9 % '+': ignore -\fi -% \end{macrocode} -% -% \subsection{Help macros} -% -% \begin{macro}{\AlPh@Error} -% \begin{macrocode} -\def\AlPh@Error#1{% - \begingroup - \escapechar=92 % backslash - \@PackageError{alphalph}{#1}\@ehc - \endgroup -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\AlPh@IfDefinable} -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname @ifdefinable\endcsname\relax - \def\AlPh@IfDefinable#1#2{% - \ifcase\ifx#1\@undefined\else\ifx#1\relax\else1\fi\fi0 % - #2% - \else - \AlPh@Error{% - Command \string#1 already defined% - }% - \fi - }% -% \end{macrocode} -% \end{macro} -% \begin{macrocode} -\else -% \end{macrocode} -% \begin{macro}{\AlPh@IfDefinable} -% \begin{macrocode} - \let\AlPh@IfDefinable\@ifdefinable -% \end{macrocode} -% \end{macro} -% \begin{macrocode} -\fi -% \end{macrocode} -% -% \begin{macro}{\@ReturnAfterElseFi} -% \begin{macro}{\@ReturnAfterFi} -% The following commands moves the `then' and `else' part respectively -% behind the |\if|-construct. This prevents a too deep |\if|-nesting -% and so a \hologo{TeX} capacity error because of a limited input stack size. -% I use this trick in several packages, so I don't prefix these internal -% commands in order not to have the same macros with different names. -% (It saves memory.) -% \begin{macrocode} -\long\def\@ReturnAfterElseFi#1\else#2\fi{\fi#1} -\long\def\@ReturnAfterFi#1\fi{\fi#1} -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\@gobblefour} -% \Hologo{LaTeX} defines commands for eating arguments. -% Define \cs{@gobblefour} if it is not defined (\hologo{plainTeX}). -% \begin{macrocode} -\expandafter\ifx\csname @gobblefour\endcsname\relax - \long\def\@gobblefour#1#2#3#4{}% -\fi -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{AlPh@IfOptArg} -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname kernel@ifnextchar\endcsname\relax - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname @ifnextchar\endcsname\relax - \def\AlPh@IfOptArg#1#2{% - \def\AlPh@TempA{#1}% - \def\AlPh@TempB{#2}% - \futurelet\AlPh@Token\AlPh@IfOptArgNext - }% - \let\AlPh@BracketLeft=[%] - \def\AlPh@IfOptArgNext{% - \ifx\AlPh@Token\AlPh@BracketLeft - \expandafter\AlPh@TempA - \else - \expandafter\AlPh@TempB - \fi - }% - \else - \def\AlPh@IfOptArg{\@ifnextchar[}%] - \fi -\else - \def\AlPh@IfOptArg{\kernel@ifnextchar[}%] -\fi -% \end{macrocode} -% \end{macro} -% -% \subsection{Symbol provider} -% -% \subsubsection{Alphabet} -% -% The output of \cs{alphalph} and \cs{AlphAlph} should be -% usable as part of command names (see \cs{@namedef}, \cs{csname}, \dots). -% Unhappily some languages of package \xpackage{babel} -% redefine \hologo{LaTeX}'s \cs{@alph} and \cs{@Alph} in a manner that -% they cannot be used in expandable context any more. -% Therefore package \xpackage{alphalph} provides its own -% commands. -% -% \begin{macro}{\alphalph@Alph} -% \begin{macro}{\alphalph@alph} -% The two commands \cmd{\AlPh@Alph} and \cmd{\AlPh@alph} convert a -% number into a letter (uppercase and lowercase respectivly). -% The character |@| is used as an error symbol, -% if the number isn't in the range of 1 until 26. -% Here we need no space after the number |#1|, because the error -% symbol |@| for the zero case stops scanning the number. -% This error symbol should not appear anywhere (except for bugs). -% \begin{macrocode} -\def\alphalph@Alph#1{% - \ifcase#1% - @% - \or A\or B\or C\or D\or E\or F\or G\or H\or I\or J\or K\or L\or M% - \or N\or O\or P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z% - \else - \AlPh@ctrerr - @% - \fi -} -\def\alphalph@alph#1{% - \ifcase#1% - @% - \or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m% - \or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z% - \else - \AlPh@ctrerr - @% - \fi -} -% \end{macrocode} -% \end{macro} -% \end{macro} -% \begin{macro}{\AlPh@ctrerr} -% Macro \cs{AlPh@ctrerr} is used as hook for the algorithm -% to get the available number of symbols. -% \begin{macrocode} -\def\AlPh@ctrerr{} -% \end{macrocode} -% \end{macro} -% -% \subsection{Finding number of symbols} -% -% \begin{macro}{\AlPh@GetNumberOfSymbols} -% \noindent -% |#1|: symbols provider -% \begin{macrocode} -\def\AlPh@GetNumberOfSymbols#1{% - \AlPh@TestNumber1!{#1}% - \ifAlPh@Unavailable - \def\AlPh@Number{0}% - \AlPh@Error{No symbols found}% - \else - \def\AlPh@Number{1}% - \AlPh@ExpSearch2!{#1}% - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\ifAlPh@Unavailable} -% \begin{macrocode} -\let\ifAlPh@Unavailable\iffalse -\def\AlPh@Unavailabletrue{% - \global\let\ifAlPh@Unavailable\iftrue -} -\def\AlPh@Unavailablefalse{% - \global\let\ifAlPh@Unavailable\iffalse -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AlPh@TestNumber} -% |#1|: number to be tested\\ -% |#2|: symbols provider -% \begin{macrocode} -\def\AlPh@TestNumber#1!#2{% - \AlPh@Unavailablefalse - \begingroup - \setbox0=\hbox{% - \begingroup % color - \let\@ctrerr\AlPh@Unavailabletrue - \let\AlPh@ctrerr\AlPh@Unavailabletrue - #2{#1}% - \endgroup - }% - \ifdim\wd0=0pt % - \AlPh@Unavailabletrue - \fi - \endgroup -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AlPh@ExpSearch} -% |#1|: number to be tested\\ -% |#2|: symbols provider -% \begin{macrocode} -\def\AlPh@ExpSearch#1!#2{% - \let\AlPh@Next\relax - \AlPh@TestNumber#1!{#2}% - \ifAlPh@Unavailable - \expandafter\AlPh@BinSearch\AlPh@Number!#1!{#2}% - \else - \def\AlPh@Number{#1}% - \ifnum#1>1073741823 % - \AlPh@TestNumber2147483647!{#2}% - \ifAlPh@Unavailable - \AlPh@BinSearch#1!2147483647!{#2}% - \else - \def\AlPh@Number{0}% - \AlPh@Error{% - Maximal symbol number not found% - }% - \fi - \else - \def\AlPh@Next{% - \expandafter\AlPh@ExpSearch\number\intcalcShl{#1}!{#2}% - }% - \fi - \fi - \AlPh@Next -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AlPh@BinSearch} -% |#1|: available number\\ -% |#2|: unavailable number, |#2| $>$ |#1|\\ -% |#3|: symbols provider -% \begin{macrocode} -\def\AlPh@BinSearch#1!#2!#3{% - \expandafter\AlPh@ProcessBinSearch - \number\intcalcShr{\intcalcAdd{#1}{#2}}!% - #1!#2!{#3}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AlPh@ProcessBinSearch} -% |#1|: number to be tested, |#2| $\leq$ |#1| $\leq$ |#3|\\ -% |#2|: available number\\ -% |#3|: unavailable number\\ -% |#4|: symbols provider -% \begin{macrocode} -\def\AlPh@ProcessBinSearch#1!#2!#3!#4{% - \let\AlPh@Next\relax - \ifnum#1>#2 % - \ifnum#1<#3 % - \AlPh@TestNumber#1!{#4}% - \ifAlPh@Unavailable - \def\AlPh@Next{% - \AlPh@BinSearch#2!#1!{#4}% - }% - \else - \def\AlPh@Next{% - \AlPh@BinSearch#1!#3!{#4}% - }% - \fi - \else - \def\AlPh@Number{#2}% - \fi - \else - \def\AlPh@Number{#2}% - \fi - \AlPh@Next -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Methods} -% -% The names of method macros start with \cs{AlPh@Method}. -% These macros do the main job in converting a number to -% its representation. -% A method command is called with three arguments. -% The first argument is the number of symbols. The -% second argument is the basic macro for converting -% a number with limited number range. The last parameter -% is the number that needs converting. -% -% \subsubsection{Common methods} -% -% \begin{macro}{\AlPh@CheckPositive} -% \noindent -% |#1|: number to be checked -% |#2|: continuation macro\\ -% |#3|: number of symbols (hidden here)\\ -% |#4|: symbol provider (hidden here) -% \begin{macrocode} -\def\AlPh@CheckPositive#1!#2{% - \ifnum#1<1 % - \expandafter\@gobblefour - \fi - #2{#1}% -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Method `alph'} -% -% \begin{macro}{\AlPh@Method@alph} -% \noindent -% |#1|: number of symbols\\ -% |#2|: symbols provider\\ -% |#3|: number to be converted -% \begin{macrocode} -\def\AlPh@Method@alph#1#2#3{% - \expandafter\AlPh@CheckPositive -| \number#3!% -+ \the\numexpr#3!% - \AlPh@ProcessAlph - {#1}{#2}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AlPh@ProcessAlph} -% |#1|: current number\\ -% |#2|: number of symbols\\ -% |#3|: symbols provider -% \begin{macrocode} -\def\AlPh@ProcessAlph#1#2#3{% - \ifnum#1>#2 % - \@ReturnAfterElseFi{% - \expandafter\AlPh@StepAlph\number - \intcalcInc{% - \intcalcMod{\intcalcDec{#1}}{#2}% - }% - \expandafter!\number - \intcalcDiv{\intcalcDec{#1}}{#2}% - !{#2}{#3}% - }% - \else - \@ReturnAfterFi{% - #3{#1}% - }% - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AlPh@StepAlph} -% |#1|: current last digit\\ -% |#2|: new current number\\ -% |#3|: number of symbols\\ -% |#4|: symbols provider -% \begin{macrocode} -\def\AlPh@StepAlph#1!#2!#3#4{% - \AlPh@ProcessAlph{#2}{#3}{#4}% - #4{#1}% -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Method `wrap'} -% -% \begin{macro}{\AlPh@Method@wrap} -% \noindent -% |#1|: number of symbols\\ -% |#2|: symbols provider\\ -% |#3|: number to be converted -% \begin{macrocode} -\def\AlPh@Method@wrap#1#2#3{% - \expandafter\AlPh@CheckPositive -| \number#3!% -+ \the\numexpr#3!% - \AlPh@ProcessWrap - {#1}{#2}% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\AlPh@ProcessWrap} -% |#1|: number to be converted\\ -% |#2|: number of symbols\\ -% |#3|: symbols provider -% \begin{macrocode} -\def\AlPh@ProcessWrap#1#2#3{% - \ifnum#1>#2 % - \@ReturnAfterElseFi{% - \expandafter\AlPh@StepWrap\number - \intcalcInc{\intcalcMod{\intcalcDec{#1}}{#2}}% - !{#3}% - }% - \else - \@ReturnAfterFi{% - #3{#1}% - }% - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AlPh@StepWrap} -% |#1|: final number\\ -% |#2|: symbols provider -% \begin{macrocode} -\def\AlPh@StepWrap#1!#2{% - #2{#1}% -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Method `mult'} -% -% After the number of symbols is exhausted, -% repetitions of the symbol are used. -% \begin{gather*} -% x \Def \text{number to be converted}\\ -% n \Def \text{number of symbols}\\ -% r \Def \text{repetition length}\\ -% s \Def \text{symbol slot}\\ -% r = ((x - 1) \div n) + 1\\ -% s = ((x - 1) \mod n) + 1 -% \end{gather*} -% \begin{macro}{\AlPh@Method@mult} -% \noindent -% |#1|: number of symbols\\ -% |#2|: symbols provider\\ -% |#3|: number to be converted -% \begin{macrocode} -\def\AlPh@Method@mult#1#2#3{% - \expandafter\AlPh@CheckPositive -| \number#3!% -+ \the\numexpr#3!% - \AlPh@ProcessMult - {#1}{#2}% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\AlPh@ProcessMult} -% |#1|: number to be converted\\ -% |#2|: number of symbols\\ -% |#3|: symbols provider -% \begin{macrocode} -\def\AlPh@ProcessMult#1#2#3{% - \ifnum#1>#2 % - \@ReturnAfterElseFi{% - \expandafter\AlPh@StepMult\romannumeral - \intcalcInc{\intcalcDiv{\intcalcDec{#1}}{#2}}% - 000% - \expandafter!\number - \intcalcInc{\intcalcMod{\intcalcDec{#1}}{#2}}% - !{#3}% - }% - \else - \@ReturnAfterFi{% - #3{#1}% - }% - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AlPh@StepMult} -% |#1#2|: repetitions coded as list of character `m'\\ -% |#3|: symbol slot\\ -% |#4|: symbols provider -% \begin{macrocode} -\def\AlPh@StepMult#1#2!#3!#4{% - \ifx\\#2\\% - \else - \@ReturnAfterFi{% - \AlPh@StepMult#2!#3!{#4}% - }% - \fi - #4{#3}% -} -% \end{macrocode} -% \end{macro} -% -% \subsection{User interface} -% -% \begin{macro}{\newalphalph} -% Macro \cs{newalphalph} had three arguments in versions below 2.0. -% For the new method argument we use an optional argument an first -% position.\\ -% |#1|: cmd\\ -% |[#2]|: method name: |alph| (default), |wrap|, |mult|\\ % hash-ok -% |#3|: symbols provider\\ -% |#4|: number of symbols -% \begin{macrocode} -\AlPh@IfDefinable\newalphalph{% - \def\newalphalph#1{% - \AlPh@IfOptArg{% - \AlPh@newalphalph{#1}% - }{% - \AlPh@newalphalph{#1}[alph]% - }% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AlPh@newalphalph} -% |#1|: cmd -% |#2|: method name\\ -% |#3|: symbols provider\\ -% |#4|: number of symbols -% \begin{macrocode} -\def\AlPh@newalphalph#1[#2]#3#4{% - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname AlPh@Method@#2\endcsname\relax - \AlPh@Error{% - Unknown method % -| `#2'% -+ `\detokenize{#2}'% - }% - \else - \ifx\\#4\\% - \AlPh@GetNumberOfSymbols{#3}% - \ifcase\AlPh@Number - \else - \begingroup - \escapechar=92 % backslash - \@PackageInfo{alphalph}{% - Number of symbols for \string#1 is \AlPh@Number - }% - \endgroup - \expandafter\AlPh@NewAlphAlph - \csname AlPh@Method@#2\expandafter\endcsname - \AlPh@Number!{#1}{#3}% - \fi - \else - \expandafter\AlPh@NewAlphAlph - \csname AlPh@Method@#2\expandafter\endcsname -| \number#4!% -+ \the\numexpr#4!% - {#1}{#3}% - \fi - \fi -}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AlPh@NewAlphAlph} -% |#1|: method macro\\ -% |#2|: number of symbols\\ -% |#3|: cmd\\ -% |#4|: symbols provider -% \begin{macrocode} -\def\AlPh@NewAlphAlph#1#2!#3#4{% - \AlPh@IfDefinable#3{% - \ifnum#2>0 % - \def#3{#1{#2}{#4}}% - \else - \AlPh@Error{% - Definition of \string#3 failed,\MessageBreak - because number of symbols (#2) is not positive% - }% - \fi - }% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\AlphAlph} -% \begin{macrocode} -\newalphalph\AlphAlph\alphalph@Alph{26} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\alphalph} -% \begin{macrocode} -\newalphalph\alphalph\alphalph@alph{26} -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\AlPh@AtEnd% -% -% \end{macrocode} -% -% \section{Installation} -% -% \subsection{Download} -% -% \paragraph{Package.} This package is available on -% CTAN\footnote{\CTANpkg{alphalph}}: -% \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{Bundle.} All the packages of the bundle `oberdiek' -% are also available in a TDS compliant ZIP archive. There -% the packages are already unpacked and the documentation files -% are generated. The files and directories obey the TDS standard. -% \begin{description} -% \item[\CTANinstall{install/macros/latex/contrib/oberdiek.tds.zip}] -% \end{description} -% \emph{TDS} refers to the standard ``A Directory Structure -% for \TeX\ Files'' (\CTANpkg{tds}). Directories -% with \xfile{texmf} in their name are usually organized this way. -% -% \subsection{Bundle installation} -% -% \paragraph{Unpacking.} Unpack the \xfile{oberdiek.tds.zip} in the -% TDS tree (also known as \xfile{texmf} tree) of your choice. -% Example (linux): -% \begin{quote} -% |unzip oberdiek.tds.zip -d ~/texmf| -% \end{quote} -% -% \subsection{Package installation} -% -% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting -% \docstrip\ archive. The files are extracted by running the -% \xfile{.dtx} through \plainTeX: -% \begin{quote} -% \verb|tex 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} -% \def\t{^^A -% \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\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 -% }^^A -% \sbox0{\t}^^A -% \ifdim\wd0>\linewidth -% \begingroup -% \advance\linewidth by\leftmargin -% \advance\linewidth by\rightmargin -% \edef\x{\endgroup -% \def\noexpand\lw{\the\linewidth}^^A -% }\x -% \def\lwbox{^^A -% \leavevmode -% \hbox to \linewidth{^^A -% \kern-\leftmargin\relax -% \hss -% \usebox0 -% \hss -% \kern-\rightmargin\relax -% }^^A -% }^^A -% \ifdim\wd0>\lw -% \sbox0{\small\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\footnotesize\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\scriptsize\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\tiny\t}^^A -% \ifdim\wd0>\linewidth -% \lwbox -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \end{quote} -% If you have a \xfile{docstrip.cfg} that configures and enables \docstrip's -% TDS installing feature, then some files can already be in the right -% place, see the documentation of \docstrip. -% -% \subsection{Refresh file name databases} -% -% If your \TeX~distribution -% (\TeX\,Live, \mikTeX, \dots) relies on file name databases, you must refresh -% these. For example, \TeX\,Live\ users run \verb|texhash| or -% \verb|mktexlsr|. -% -% \subsection{Some details for the interested} -% -% \paragraph{Unpacking with \LaTeX.} -% The \xfile{.dtx} chooses its action depending on the format: -% \begin{description} -% \item[\plainTeX:] Run \docstrip\ and extract the files. -% \item[\LaTeX:] Generate the documentation. -% \end{description} -% If you insist on using \LaTeX\ for \docstrip\ (really, -% \docstrip\ does not need \LaTeX), then inform the autodetect routine -% about your intention: -% \begin{quote} -% \verb|latex \let\install=y\input{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{\link{question}}^^A -% {https://groups.google.com/group/comp.text.tex/msg/17a74cd721641038}^^A -% of \NameEmail{Will Douglas}{william.douglas@wolfson.ox.ac.uk} -% and the -% \URL{\link{request}}^^A -% {https://groups.google.com/group/comp.text.tex/msg/8f9768825640315f}^^A -% of \NameEmail{Donald Arsenau}{asnd@reg.triumf.ca}, -% published in the newsgroup -% \href{news:comp.text.tex}{comp.text.tex}: -% \URL{``\link{Re: alph counters \textgreater\ 26}''}^^A -% {https://groups.google.com/group/comp.text.tex/msg/cec563eef8bf65d0} -% \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 -% \hologo{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 \hologo{plainTeX}) -% \item -% New DTX framework. -% \item -% LPPL 1.3 -% \end{Version} -% \begin{Version}{2006/05/30 v1.4} -% \item -% \cs{newalphalph} added. -% \end{Version} -% \begin{Version}{2007/04/11 v1.5} -% \item -% Line ends sanitized. -% \end{Version} -% \begin{Version}{2007/09/09 v2.0} -% \item -% New implementation that uses package \cs{intcalc}. -% This removes the dependency on \hologo{eTeX}. -% \item -% \cs{newalphalph} is extended to support new methods `wrap' and 'multi'. -% \item -% Documentation rewritten. -% \end{Version} -% \begin{Version}{2008/08/11 v2.1} -% \item -% Code is not changed. -% \item -% URLs updated from \texttt{www.dejanews.com} -% to \texttt{groups.google.com}. -% \end{Version} -% \begin{Version}{2010/03/01 v2.2} -% \item -% Compatibility with \hologo{iniTeX}. -% \end{Version} -% \begin{Version}{2010/04/18 v2.3} -% \item -% Documentation fixes (Martin M\"unch). -% \end{Version} -% \begin{Version}{2011/05/13 v2.4} -% \item -% Documentation fixes (Jim Diamond) and using package -% \xpackage{hologo} for the documentation. -% \item -% Catalogue file added. -% \end{Version} -% \begin{Version}{2016/05/16 v2.5} -% \item -% Documentation updates. -% \end{Version} -% \end{History} -% -% \PrintIndex -% -% \Finale -\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/askinclude.dtx b/Master/texmf-dist/source/latex/oberdiek/askinclude.dtx deleted file mode 100644 index 0fcab173ebf..00000000000 --- a/Master/texmf-dist/source/latex/oberdiek/askinclude.dtx +++ /dev/null @@ -1,1947 +0,0 @@ -% \iffalse meta-comment -% -% File: askinclude.dtx -% Version: 2018/11/01 v2.4 -% Info: Interactive asking of included files -% -% Copyright (C) -% 1991-1994 Pablo A. Straub -% 2007, 2008, 2011 Heiko Oberdiek -% 2016-2019 Oberdiek Package Support Group -% https://github.com/ho-tex/oberdiek/issues -% -% This work may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either -% version 1.3c of this license or (at your option) any later -% version. This version of this license is in -% https://www.latex-project.org/lppl/lppl-1-3c.txt -% and the latest version of this license is in -% https://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". -% -% The Current Maintainers of this work are -% Heiko Oberdiek and the Oberdiek Package Support Group -% https://github.com/ho-tex/oberdiek/issues -% -% This work consists of the main source file askinclude.dtx -% and the derived files -% askinclude.sty, askinclude.pdf, askinclude.ins, askinclude.drv, -% askinclude.bib, askinclude-a.tex, askinclude-b.tex, -% askinclude-c.tex, askinclude-test1.tex, -% askinclude-test2.tex, askinclude-test3.tex, -% askinclude-test4.tex, askinclude-test5.tex, -% askinclude-test6.tex, askinclude-test7.tex, -% askinclude-test8.tex, askinclude-test9.tex, -% askinclude-test10.tex, askinclude-test11.tex, -% askinclude-test12.tex, askinclude-test13.tex, -% askinclude-test14.tex, askinclude-test15.tex, -% askinclude-test16.tex, askinclude-test17.tex, -% askinclude-test18.tex, askinclude-test19.tex, -% askinclude-test20.tex, askinclude-test21.tex, -% askinclude-test22.tex, askinclude-test23.tex, -% askinclude-test24.tex. -% -% Distribution: -% CTAN:macros/latex/contrib/oberdiek/askinclude.dtx -% CTAN:macros/latex/contrib/oberdiek/askinclude.pdf -% -% Unpacking: -% (a) If askinclude.ins is present: -% tex askinclude.ins -% (b) Without askinclude.ins: -% tex askinclude.dtx -% (c) If you insist on using LaTeX -% latex \let\install=y\input{askinclude.dtx} -% (quote the arguments according to the demands of your shell) -% -% Documentation: -% (a) If askinclude.drv is present: -% latex askinclude.drv -% (b) Without askinclude.drv: -% latex askinclude.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 askinclude.dtx -% bibtex askinclude.aux -% makeindex -s gind.ist askinclude.idx -% pdflatex askinclude.dtx -% makeindex -s gind.ist askinclude.idx -% pdflatex askinclude.dtx -% -% Installation: -% TDS:tex/latex/oberdiek/askinclude.sty -% TDS:doc/latex/oberdiek/askinclude.pdf -% TDS:source/latex/oberdiek/askinclude.dtx -% -%<*ignore> -\begingroup - \catcode123=1 % - \catcode125=2 % - \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 -% -%<*install> -\input docstrip.tex -\Msg{************************************************************************} -\Msg{* Installation} -\Msg{* Package: askinclude 2018/11/01 v2.4 Interactive asking of included files} -\Msg{************************************************************************} - -\keepsilent -\askforoverwritefalse - -\let\MetaPrefix\relax -\preamble - -This is a generated file. - -Project: askinclude -Version: 2018/11/01 v2.4 - -Copyright (C) - 1991-1994 Pablo A. Straub - 2007, 2008, 2011 Heiko Oberdiek - 2016-2019 Oberdiek Package Support Group - -This work may be distributed and/or modified under the -conditions of the LaTeX Project Public License, either -version 1.3c of this license or (at your option) any later -version. This version of this license is in - https://www.latex-project.org/lppl/lppl-1-3c.txt -and the latest version of this license is in - https://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". - -The Current Maintainers of this work are -Heiko Oberdiek and the Oberdiek Package Support Group -https://github.com/ho-tex/oberdiek/issues - - -This work consists of the main source file askinclude.dtx -and the derived files - askinclude.sty, askinclude.pdf, askinclude.ins, askinclude.drv, - askinclude.bib, askinclude-a.tex, askinclude-b.tex, - askinclude-c.tex, askinclude-test1.tex, - askinclude-test2.tex, askinclude-test3.tex, - askinclude-test4.tex, askinclude-test5.tex, - askinclude-test6.tex, askinclude-test7.tex, - askinclude-test8.tex, askinclude-test9.tex, - askinclude-test10.tex, askinclude-test11.tex, - askinclude-test12.tex, askinclude-test13.tex, - askinclude-test14.tex, askinclude-test15.tex, - askinclude-test16.tex, askinclude-test17.tex, - askinclude-test18.tex, askinclude-test19.tex, - askinclude-test20.tex, askinclude-test21.tex, - askinclude-test22.tex, askinclude-test23.tex, - askinclude-test24.tex. - -\endpreamble -\let\MetaPrefix\DoubleperCent - -\generate{% - \file{askinclude.ins}{\from{askinclude.dtx}{install}}% - \file{askinclude.drv}{\from{askinclude.dtx}{driver}}% - \nopreamble - \nopostamble - \file{askinclude.bib}{\from{askinclude.dtx}{bib}}% - \usepreamble\defaultpreamble - \usepostamble\defaultpostamble - \usedir{tex/latex/oberdiek}% - \file{askinclude.sty}{\from{askinclude.dtx}{package}}% -% \usedir{doc/latex/oberdiek/test}% - \file{askinclude-a.tex}{\from{askinclude.dtx}{a}}% - \file{askinclude-b.tex}{\from{askinclude.dtx}{b}}% - \file{askinclude-c.tex}{\from{askinclude.dtx}{c}}% -% \file{askinclude-test1.tex}{\from{askinclude.dtx}{test0,test1}}% -% \file{askinclude-test2.tex}{\from{askinclude.dtx}{test0,test2}}% -% \file{askinclude-test3.tex}{\from{askinclude.dtx}{test0,test3}}% -% \file{askinclude-test4.tex}{\from{askinclude.dtx}{test0,test4}}% -% \file{askinclude-test5.tex}{\from{askinclude.dtx}{test0,test5}}% -% \file{askinclude-test6.tex}{\from{askinclude.dtx}{test0,test6}}% -% \file{askinclude-test7.tex}{\from{askinclude.dtx}{test0,test7}}% -% \file{askinclude-test8.tex}{\from{askinclude.dtx}{test0,test8}}% -% \file{askinclude-test9.tex}{\from{askinclude.dtx}{test0,test9}}% -% \file{askinclude-test10.tex}{\from{askinclude.dtx}{test0,test10}}% -% \file{askinclude-test11.tex}{\from{askinclude.dtx}{test0,test11}}% -% \file{askinclude-test12.tex}{\from{askinclude.dtx}{test0,test12}}% -% \file{askinclude-test13.tex}{\from{askinclude.dtx}{test0,test13}}% -% \file{askinclude-test14.tex}{\from{askinclude.dtx}{test0,test14}}% -% \file{askinclude-test15.tex}{\from{askinclude.dtx}{test0,test15}}% -% \file{askinclude-test16.tex}{\from{askinclude.dtx}{test0,test16}}% -% \file{askinclude-test17.tex}{\from{askinclude.dtx}{test0,test17}}% -% \file{askinclude-test18.tex}{\from{askinclude.dtx}{test0,test18}}% -% \file{askinclude-test19.tex}{\from{askinclude.dtx}{test0,test19}}% -% \file{askinclude-test20.tex}{\from{askinclude.dtx}{test0,test20}}% -% \file{askinclude-test21.tex}{\from{askinclude.dtx}{test0,test21}}% -% \file{askinclude-test22.tex}{\from{askinclude.dtx}{test0,test22}}% -% \file{askinclude-test23.tex}{\from{askinclude.dtx}{test0,test23}}% -% \file{askinclude-test24.tex}{\from{askinclude.dtx}{test0,test24}}% -} - -\catcode32=13\relax% active space -\let =\space% -\Msg{************************************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* file into a directory searched by TeX:} -\Msg{*} -\Msg{* askinclude.sty} -\Msg{*} -\Msg{* To produce the documentation run the file `askinclude.drv'} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing!} -\Msg{*} -\Msg{************************************************************************} - -\endbatchfile -% -%<*bib> -@online{texlive, - author={Fairbairns, Robin}, - title={[tex-live] licence on includeonly.sty}, - date={2007-10-13}, - url={https://www.tug.org/pipermail/tex-live/2007-October/014928.html}, - urldate={2011-12-02}, -} -@online{newsthread, - author={Vo{\ss}, Herbert}, - title={askinclude.sty}, - note={Thread in newsgroup {\xnewsgroup{comp.text.tex}}; - Message-ID: {\texttt{fev72m\$b35\$02\$2@news.t-online.com}}}, - date={2007-10-15}, - url={https://groups.google.com/group/comp.text.tex/browse_thread/thread/728a3e73c04c6789/349e31865c40d00c}, - urldate={2011-12-02}, -} -@manual{makematch, - author={Kastrup, David}, - title={makematch.sty: Pattern matching with wildcards}, - date={2007-02-23}, - version={1.7925}, - url={https://ctan.org/pkg/qstest}, - urldate={2011-12-02}, -} -@manual{excludeonly, - author={Luecking, Daniel H. and Arseneau, Donald}, - title={The excludeonly package}, - date={2003-03-14}, - url={https://ctan.org/pkg/excludeonly}, - urldate={2011-12-02}, -} -% -%<*ignore> -\fi -% -%<*driver> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{askinclude.drv}% - [2018/11/01 v2.4 Interactive asking of included files]% -\documentclass{ltxdoc} -\usepackage{holtxdoc}[2011/11/22] -\usepackage{ifluatex} -\ifluatex -\else - \usepackage[T1]{fontenc}% - \usepackage{lmodern}% -\fi -\usepackage{csquotes} -\usepackage[ - backend=bibtex, - bibencoding=ascii, - alldates=iso,seconds=true, -]{biblatex}[2011/11/13] -\bibliography{oberdiek-source} -\bibliography{askinclude} -\begin{document} - \DocInput{askinclude.dtx}% -\end{document} -% -% \fi -% -% -% -% \GetFileInfo{askinclude.drv} -% -% \title{The \xpackage{askinclude} package} -% \date{2018/11/01 v2.4} -% \author{ -% Pablo A. Straub\\[1ex] -% Heiko Oberdiek\thanks -% {Please report any issues at \url{https://github.com/ho-tex/oberdiek/issues}}} -% -% -% \maketitle -% -% \begin{abstract} -% This package replaces \cs{includeonly} by an interactive user -% interface. -% \end{abstract} -% -% \tableofcontents -% -% \section{Documentation} -% -% \subsection{User interface} -% -% The \cs{include} feature of \LaTeX\ allows the division of -% the text body in separate compilation units. It is page -% based and stores counter settings in additional auxiliary -% files. \cs{includeonly} limits the actually included files -% to the ones, listed in its argument. -% -% Example: -%\begin{quote} -%\begin{verbatim} -%\documentclass{report} -% -%\usepackage{askinclude} -% -% % Don't use \include in the preamble. -% % Instead \input can be used or make a package -% -%\begin{document} -%\include{title} -%\include{introduction} -%\include{summary} -%\include{index} -%\end{document} -%\end{verbatim} -%\end{quote} -% -% Package \xpackage{askinclude} adds an interactive user interface. -% The user is asked which files he want to include and sets -% \cs{includeonly} accordingly. -% -% The first time the package is used the question looks like: -%\begin{quote} -%\begin{verbatim} -%*********************************** -%*** Package askinclude Question *** -%*********************************** -% -%Previous answer (noregexp): -% [*] -% -%Regular expressions: -% --> [noregexp] disabled -% [makematch] enabled, using package `makematch' -% [pdfmatch] enabled, using pdfTeX's \pdfmatch -% -%Which files do you want to include? -% [foo,bar] comma separated file or pattern list -% [*] all files -% [-] no files -% [?] ask for each file -% [] use the previous answer -% -%\answer=chapter2,summary -%\end{verbatim} -%\end{quote} -% Square brackets are used as quotation symbols, -% they are not part of the answer. -% The answer by the user follows in the last line after |\answer=|. -% \begin{description} -% \def\Item[#1]{\item[{[\texttt{#1}]:}]} -% \Item[foo,bar] -% A comma separated file list (also one file only) is passed -% to macro \cs{includeonly} directly. If regular expression support -% is enabled, the entries in the list are interpreted as -% file name patterns that will be matched against the file names -% in \cs{include}, see \hyperref[sec:regexp]{section \ref*{sec:regexp}}. -% \Item[*] This is a shortcut for specifying \emph{all} files. -% \Item[-] This means \emph{none} of the files is included. -% \Item[?] The switches in single asking mode. -% The user will be asked at each \cs{include}. -% See section \hyperref[sec:single]{section \ref*{sec:single}}. -% \Item[] Just pressing return (empty string) uses the default -% answer, that was stored in the auxiliary file (\xfile{.aux}) -% of the previous \LaTeX run with package \xpackage{askinclude}. -% Without previous runs the default is [|*|] for all files. -% \Item[noregexp] Turns regular expression support off. -% \Item[makematch] Enables regular expression support -% package \xpackage{makematch} provides. -% \Item[pdfmatch] It is shown, if \pdfTeX~1.30 or later is used. -% It relies on an undocumented feature \cs{pdfmatch} that may -% change in future versions of \pdfTeX. -% \end{description} -% Package \xpackage{askinclude} remembers the files of \cs{include} -% in the auxiliary file and the given answer. they are -% presented at the next run -% at the start of the question: -%\begin{quote} -%\begin{verbatim} -%*********************************** -%*** Package askinclude Question *** -%*********************************** -% -%Files, found by previous run in \include: -% (-) title -% (-) introduction -% (-) chapter1 -% (+) chapter2 -% (-) chapter3 -% (+) summary -% -%Previous answer (noregexp): -% [chapter2,summary] -%... -%\end{verbatim} -%\end{quote} -% |(+)| and |(-)| marks files that were and were not included in -% the previous run. The file list and marks are not always correct. -% For example, if \cs{include} statements are added or removed. -% If the method of regular expression support is different, -% then the marks only reflects the mode of the previous answer. -% -% \subsection{Single asking mode} -% \label{sec:single} -% -% The special answer `|?|' trigger single asking mode, -% at the next \cs{include} the user is asked again: -%\begin{quote} -%\begin{verbatim} -%*********************************** -%*** Package askinclude Question *** -%*********************************** -% -%Include `title'? [y]es, [n]o, [A]ll, [N]one, [D]efault (n): -% -%\answer= -%\end{verbatim} -%\end{quote} -% Use the letter inside the square brackets as answer. -% An empty string uses the default answer, the letter in parentheses. -% The answers are: -% \begin{description} -% \def\Item[#1]{\item[{[\texttt{#1}]:}]} -% \Item[y] The file is included. -% \Item[n] The file is excluded. -% \Item[A] This file and all following files are included. -% \Item[N] This file and all following files are excluded. -% \Item[D] Use the default answer for this and all following files. -% \end{description} -% If the file is known from the previous run, then the -% default is `|y|' or `|n|' corresponding to the mark -% `|(+)|' or `|(-)|' in the list of previous files. -% Otherwise `|y|' is used as default. -% -% \subsection{Regular expressions} -% \label{sec:regexp} -% -% Three methods are available that can also set by package options: -% \begin{description} -% \def\Item[#1]{\item[\xoption{#1}:]} -% \Item[noregexp] Regular expression support is disabled. -% \Item[makematch] Use package \xpackage{makematch}. -% \Item[pdfmatch] Use \pdfTeX's \cs{pdfmatch} if available. -% \end{description} -% Without options the value remembered in the auxiliary file -% is used, otherwise the default is \xoption{noregexp}. -% -% \subsubsection{Method \xoption{makematch}} -% -% Package \xpackage{makematch} (part of \xpackage{qstest}), written -% by David Kastrup provides pattern matching based on wildcards: -% \begin{description} -% \item[{[\texttt{*}]}:] The star matches zero or more characters. -% Thus a lonely star machtes anything. -% \item[{[\texttt{!}]}:] The exclamation mark at the begin of a -% pattern negates it, thus the matching files are excluded. -% \end{description} -% The pattern list is evaluated for a file name from left to -% right. Always a file name must match the whole pattern. -% The file is included if it is matched by a pattern and -% not excluded afterwards. Examples: -% \begin{quote} -% \def\no{\textrm{$\emptyset$}} -% \begin{tabular}{>{\ttfamily}l|>{\ttfamily}l|>{\ttfamily}l} -% \textrm{Pattern list} & \textrm{File names} & \textrm{Result}\\ -% \hline -% foobar & foobar,dummy & foobar\\ -% foo* & foobar,xfoobar & foobar\\ -% \relax *foo* & xfoobar & xfoobar\\ -% f*b*r & foobar & foobar\\ -% \relax * & any & any\\ -% !foobar & foobar,other & other\\ -% !foo* & xfoobar & xfoobar\\ -% in*,!*dex & intro,index & intro\\ -% !index,in* & intro,index & intro,index\\ -% \relax *,!chap2 & chap1,chap2,chap3 & chap1,chap3\\ -% \end{tabular} -% \end{quote} -% The example in the last line shows, how the behaviour of package -% \xpackage{excludeonly} \cite{excludeonly} can be simulated. -% -% The documentation of package \xpackage{makematch} tells the -% the empty pattern does not match anything. But if you answer -% the question with an empty string the answer of the previous -% run is used. Also curly braces are not reliable because the -% can get stripped during the processing of the answer. -% Using a pair of empty curly braces or the comma for two empty -% patterns currently works, but this is specific for the current -% implementation and may change in future. But the special -% answer `-' is available. -% -% \subsubsection{Method \xoption{pdfmatch}} -% -% In \pdfTeX\ 1.30 the new primitive \cs{pdfmatch} was introduced. -% It is not documented yet, because it was not decided if it remains -% and which implementation of regular expressions should be used. -% Thus the situation may change in later versions of \pdfTeX. -% Currently (1.30 until 1.40) it uses a library for POSIX 1003.2 regular -% expressions, see manual page ``regex(7)''. -% -% If a pattern in the pattern list is invalid, the package prints -% a warning and removes the pattern from the list. Actually there -% are two warnings, the other warning is generated by \pdfTeX\ itself. -% -% In opposite to \xoption{makematch} the pattern only needs to -% match the specified part of the file name. -% For matching the whole name, the symbols `|^|' and `|$|' for -% begin and end of string must be included. -% -% Additionally an initial exclamation mark `|!|' implements the -% same logic as method \xoption{makematch}. The match result is -% inverted, the matched file excluded. -% -% Examples: -% \begin{quote} -% \def\no{\textrm{$\emptyset$}} -% \begin{tabular}{>{\ttfamily}l|>{\ttfamily}l|>{\ttfamily}l} -% \textrm{Pattern list} & \textrm{File names} & \textrm{Result}\\ -% \hline -% foobar & foobar,dummy & foobar\\ -% foo.* & foobar,xfoobar & foobar,xfoobar\\ -% |^|foo.* & foobar,xfoobar & foobar\\ -% foo|$| & foo,foobar & foo\\ -% fo?bar & fbar,fobar,foobar & fbar,fobar\\ -% fo+bar & fbar,fobar,foobar & fobar,foobar\\ -% fo*bar & fbar,fobar,foobar & fbar,fobar,foobar\\ -% chap3 & chap3,chap32 & chap1,chap3,chap32\\ -% chap[13] & chap1,chap2,chap3 & chap1,chap3\\ -% chap(1\string|3)|$| & chap1,chap3,chap33 & chap1,chap3\\ -% .* & any & any\\ -% !foobar & foobar,other & other\\ -% in.*,!dex & intro,index & intro\\ -% !index,in.* & intro,index & intro,index\\ -% .*,!chap2 & chap1,chap2,chap3 & chap1,chap3\\ -% .*,!bla & foo,bla,blabla & foo\\ -% .*,!|^|bla|$| & foo,bla,blabla & foo,blabla\\ -% \end{tabular} -% \end{quote} -% The example in the last line shows, how the behaviour of package -% \xpackage{excludeonly} \cite{excludeonly} can be simulated. -% As the third last line shows, that sometimes `|^|' and `|$|' can -% be omitted, but this will not work always, shown in the second -% last line. -% -% \subsection{History} -% -% Package \xpackage{askinclude} was invented by Pablo A. Straub in 1991 -% and maintained until 1994. -% ^^A Email address: pablo.straub \symbol{64} gmail.com -% -% In October 2007 it was removed from ``TeX Live'' because of -% the no-commercial license \cite{texlive}. Herbert Vo\ss\ initiated -% a search for the author in the newsgroup \xnewsgroup{comp.text.tex} -% \cite{newsthread} to ask him to change the license. -% -% It seems that the author could not be reached any more. -% Joseph Wright suggested a reimplementation that I (HO) have done -% as package \xpackage{askinc}. Soon it was enhanced by -% feature requests. -% -% Then Ulrike Fischer found email addresses of the original author -% and Jim Hefferon succeeded in contacting him. He allowed a change -% of the license to LPPL and the transfer of the maintainership -% to someone else. -% -% Thus I merged both packages as \xpackage{askinclude} in a new -% major version 2. The license is LPPL. -% -% \subsection{New features of version 2} -% -% \begin{itemize} -% \item License is now LPPL. -% \item A list of \cs{include} files that are detected by the previous -% run is printed before the question. -% \item If the special answer `|?|' is given, then the user is -% asked at each \cs{include}. -% \item Support for regular expressions. -% \item The remaining stuff in the \xfile{.aux} file does not -% cause errors, if the package is removed. -% \item The use of \cs{includeonly} before the package loading time -% is detected and respected by taking precedence. After the package -% is loaded, \cs{includeonly} is disabled and prints a warning. -% \end{itemize} -% -% \subsection{Compatibility to version 1} -% -% \begin{itemize} -% \item The user interface of version 1 with its special answers -% `|*|', `|-|', and `' remain unchanged, but it is extended by -% version 2 with the special answer `|?|' and support for -% regular expressions can be enabled. -% \item As reimplementation the internal macros have changed of course. -% \item \xfile{.aux} files that are written by version 1.x will work -% with version 2.x because \cs{@includeonly} is recognized. -% \item \LaTeX\ 2.09: The package works as \cs{documentstyle} option -% in compatibility mode of \LaTeXe. It is possible that it -% will not work in pure \LaTeX\ 2.09. -% \end{itemize} -% -% \StopEventually{ -% } -% -% \section{Implementation} -% -% \subsection{Header and catcodes} -% -% \begin{macrocode} -%<*package> -\NeedsTeXFormat{LaTeX2e} -\begingroup\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode123=1 % { - \catcode125=2 % } - \catcode64=11 % @ - \def\x{\endgroup - \expandafter\edef\csname AskInc@AtEnd\endcsname{% - \endlinechar=\the\endlinechar\relax - \catcode13=\the\catcode13\relax - \catcode32=\the\catcode32\relax - \catcode35=\the\catcode35\relax - \catcode61=\the\catcode61\relax - \catcode64=\the\catcode64\relax - \catcode123=\the\catcode123\relax - \catcode125=\the\catcode125\relax - }% - }% -\x\catcode61\catcode48\catcode32=10\relax% -\catcode13=5 % ^^M -\endlinechar=13 % -\catcode35=6 % # -\catcode64=11 % @ -\catcode123=1 % { -\catcode125=2 % } -\def\TMP@EnsureCode#1#2{% - \edef\AskInc@AtEnd{% - \AskInc@AtEnd - \catcode#1=\the\catcode#1\relax - }% - \catcode#1=#2\relax -} -\TMP@EnsureCode{33}{12}% ! -\TMP@EnsureCode{39}{12}% ' -\TMP@EnsureCode{40}{12}% ( -\TMP@EnsureCode{41}{12}% ) -\TMP@EnsureCode{42}{12}% * -\TMP@EnsureCode{43}{12}% + -\TMP@EnsureCode{44}{12}% , -\TMP@EnsureCode{45}{12}% - -\TMP@EnsureCode{46}{12}% . -\TMP@EnsureCode{47}{12}% / -\TMP@EnsureCode{58}{12}% : -\TMP@EnsureCode{62}{12}% > -\TMP@EnsureCode{63}{12}% ? -\TMP@EnsureCode{91}{12}% [ -\TMP@EnsureCode{93}{12}% ] -\TMP@EnsureCode{96}{12}% ` -\edef\AskInc@AtEnd{\AskInc@AtEnd\noexpand\endinput} -\ProvidesPackage{askinclude}% - [2018/11/01 v2.4 Interactive asking of included files]% -% \end{macrocode} -% -% Luatex compat -% \begin{macrocode} -\ifx\pdfextension\@undefined\else - \protected\def\pdflastobj {\numexpr\pdffeedback lastobj\relax} - \protected\def\pdfnames {\pdfextension names } - \protected\def\pdfobj {\pdfextension obj } - \let\pdfoutput \outputmode -\fi -% \end{macrocode} -% -% \subsection{Delay action after preamble} -% -% \begin{macro}{\AskInc@AtBeginDocument} -% Some actions such as \xfile{.aux} file writing cannot be -% performed in the preamble. \cs{AtBeginDocument} delays -% such action until |\begin{document}|. However \cs{AtBeginDocument} -% must not be used after that time (\cs{@onlypreamble}). -% Thus \cs{AskInc@AtBeginDocument} uses \cs{AtBeginDocument} -% in the preamble and afterwards executes the code immediately. -% \begin{macrocode} -\AtBeginDocument{% - \let\AskInc@AtBeginDocument\@firstofone -} -\providecommand*{\AskInc@AtBeginDocument}{\AtBeginDocument} -% \end{macrocode} -% \end{macro} -% -% \subsection{Write entry in \xfile{.aux} file} -% -% \begin{macro}{\AskInc@WriteAux} -% The first argument is written to the main \xfile{.aux} file -% and the second argument is executed if writing was possible. -% Remember \cs{nofiles} prevents writing to auxiliary files. -% \begin{macrocode} -\def\AskInc@WriteAux#1#2{% - \AskInc@AtBeginDocument{% - \if@filesw - \immediate\write\@mainaux{#1}% - #2% - \fi - }% -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Remember \cs{include} files} -% -% \begin{macro}{\AskInc@CharHash} -% \begin{macrocode} -\edef\AskInc@CharHash{\string#} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\AskInc@WriteDefAddList} -% \begin{macrocode} -\def\AskInc@WriteDefAddList{% - \AskInc@WriteAux{% -% \end{macrocode} -% \begin{macro}{\AskInc@AddList} -% \begin{macrocode} - \string\providecommand*\string\AskInc@AddList[2]{% - \string\ifcase\string\ifx\AskInc@CharHash1\string\@undefined - \string\else - \string\ifx\AskInc@CharHash1\string\relax - \string\else - \string\ifx\AskInc@CharHash1\string\@empty - \string\else - 1% - \string\fi - \string\fi - \string\fi - 0 % - \string\gdef\AskInc@CharHash1{\AskInc@CharHash2}% - \string\else - \string\g@addto@macro\AskInc@CharHash1{,\AskInc@CharHash2}% - \string\fi - }% -% \end{macrocode} -% \end{macro} -% \begin{macrocode} - }{% - \global\let\AskInc@WriteDefAddList\relax - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@WriteDefAddFile} -% \begin{macrocode} -\def\AskInc@WriteDefAddFile{% - \AskInc@WriteDefAddList - \AskInc@WriteAux{% -% \end{macrocode} -% \begin{macro}{\AskInc@AddFile} -% \begin{macrocode} - \string\providecommand\string\AskInc@AddFile{% - \string\AskInc@AddList\string\AskInc@Files - }% -% \end{macrocode} -% \end{macro} -% \begin{macrocode} - }{% - \global\let\AskInc@WriteDefAddFile\relax - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@AddFile} -% \begin{macrocode} -\AtBeginDocument{% - \global\let\AskInc@AddFile\@gobble -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@WriteAddFile} -% \begin{macrocode} -\def\AskInc@WriteAddFile#1{% - \AskInc@WriteDefAddFile - \AskInc@WriteAux{% - \string\AskInc@AddFile{#1}% - }{}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@Files} -% \begin{macrocode} -\providecommand*{\AskInc@Files}{} -% \end{macrocode} -% \end{macro} -% -% \paragraph{Summary:} -% Now \cs{AskInc@Files} is always defined -% and either empty or contains a comma separated list of -% \cs{include} files of previous run. -% -% The \cs{include} files are remembered by using -% \cs{AskInc@WriteAddFile} at each \cs{include}. -% -% \subsection{Redefine \cs{include}} -% -% \begin{macro}{\AskInc@OrgInclude} -% \begin{macrocode} -\newcommand{\AskInc@OrgInclude}{} -\let\AskInc@OrgInclude\include -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@AskFile} -% \begin{macrocode} -\let\AskInc@AskFile\@gobble -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@MatchFile} -% \begin{macrocode} -\let\AskInc@MatchFile\@gobble -% \end{macrocode} -% \end{macro} -% \begin{macro}{\include} -% \begin{macrocode} -\renewcommand*{\include}[1]{% - \AskInc@WriteAddFile{#1}% - \AskInc@AskFile{#1}% - \AskInc@MatchFile{#1}% - \AskInc@OrgInclude{#1}% -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Store answer and match method in \xfile{.aux} file} -% -% \begin{macrocode} -\AtEndOfPackage{% - \AtBeginDocument{% - \@ifundefined{AskInc@Answer}{}{% - \AskInc@WriteAux{% - \string\gdef\string\AskInc@Answer{\AskInc@Answer}% - }{}% - }% - \@ifundefined{AskInc@MatchMethod}{}{% - \AskInc@WriteAux{% - \string\gdef\string\AskInc@MatchMethod{\AskInc@MatchMethod}% - }{}% - }% - }% -} -% \end{macrocode} -% -% \subsection{Support for \cs{@includeonly}} -% -% \begin{macro}{\@includeonly} -% Macro \cs{@includeonly} is defined for compatiblity reasons only, -% if the \xfile{.aux} file was written by versions before 2 of package -% \xpackage{askinclude}. -% \begin{macrocode} -\providecommand*{\@includeonly}[1]{% - \gdef\AskInc@Answer{#1}% - \ifx\AskInc@Answer\@empty - \gdef\AskInc@Answer{-}% - \fi - \global\let\AskInc@MatchMethod\@empty -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Stop if \cs{includeonly} is active} -% -% If \cs{includeonly} is used before, the questions are skipped -% and the data in the main auxiliary file is preserved. -% \begin{macrocode} -\if@partsw - \PackageWarningNoLine{askinclude}{% - Previous \string\includeonly\space detected,\MessageBreak - therefore asking for files is suppressed% - }% -% \end{macrocode} -% Dummy options. -% \begin{macrocode} - \DeclareOption{makematch}{}% - \DeclareOption{pdfmatch}{}% - \DeclareOption{noregexp}{}% - \ProcessOptions*% -% \end{macrocode} -% Preserve \cs{AskInc@MatchFiles}. -% \begin{macrocode} - \@ifundefined{AskInc@MatchFiles}{% - }{% - \ifx\AskInc@MatchMethod\@empty - \else - \AskInc@WriteAux{% - \string\gdef\string\AskInc@MatchFiles{\AskInc@MatchFiles}% - }{}% - \fi - }% - \expandafter\AskInc@AtEnd -\fi% -% \end{macrocode} -% -% \subsection{\cs{includeonly}} -% -% \begin{macro}{\AskInc@OrgIncludeOnly} -% \begin{macrocode} -\newcommand{\AskInc@OrgIncludeOnly}{}% -\let\AskInc@OrgIncludeOnly\includeonly -% \end{macrocode} -% \end{macro} -% \begin{macro}{\includeonly} -% \begin{macrocode} -\renewcommand*{\includeonly}[1]{% - \PackageWarning{askinclude}{% - \string\includeonly\space is managed by package `askinclude',% - \MessageBreak - therefore it is ignored% - }% -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Options} -% -% \begin{macro}{\AskInc@StringNoRegExp} -% \begin{macrocode} -\def\AskInc@StringNoRegExp{noregexp} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@StringMakeMatch} -% \begin{macrocode} -\def\AskInc@StringMakeMatch{makematch} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@StringPdfMatch} -% \begin{macrocode} -\def\AskInc@StringPdfMatch{pdfmatch} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\ifAskInc@PdfMatchAvailable} -% \begin{macrocode} -\newif\ifAskInc@PdfMatchAvailable -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname pdfmatch\endcsname\relax -\else - \AskInc@PdfMatchAvailabletrue -\fi -% \end{macrocode} -% \end{macro} -% \begin{macrocode} -\DeclareOption{makematch}{% - \let\AskInc@MatchOption\AskInc@StringMakeMatch -} -\ifAskInc@PdfMatchAvailable - \DeclareOption{pdfmatch}{% - \let\AskInc@MatchOption\AskInc@StringPdfMatch - }% -\else - \DeclareOption{pdfmatch}{% - \PackageWarningNoLine{askinclude}{% - Option `pdfmatch' is not available because\MessageBreak - your pdfTeX does not provide \string\pdfmatch - }% - }% -\fi -\DeclareOption{noregexp}{% - \let\AskInc@MatchOption\@empty -} -\ProcessOptions* -% \end{macrocode} -% -% \subsection{Strings} -% -% \begin{macro}{\AskInc@CharAsterisk} -% \begin{macrocode} -\def\AskInc@CharAsterisk{*} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@CharMinus} -% \begin{macrocode} -\def\AskInc@CharMinus{-} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@CharPlus} -% \begin{macrocode} -\def\AskInc@CharPlus{+} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@CharQuestion} -% \begin{macrocode} -\def\AskInc@CharQuestion{?} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@CharExclam} -% \begin{macrocode} -\def\AskInc@CharExclam{!} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@CharYes} -% \begin{macrocode} -\def\AskInc@CharYes{y} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@CharNo} -% \begin{macrocode} -\def\AskInc@CharNo{n} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@CharAll} -% \begin{macrocode} -\def\AskInc@CharAll{A} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@CharNone} -% \begin{macrocode} -\def\AskInc@CharNone{N} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@CharDefault} -% \begin{macrocode} -\def\AskInc@CharDefault{D} -% \end{macrocode} -% \end{macro} -% -% \subsection{Set defaults} -% -% \begin{macro}{\AskInc@SanitizeAnswer} -% \begin{macrocode} -\def\AskInc@SanitizeAnswer#1#2{% - \begingroup - \escapechar=`\\% - \edef\[{\string\[}% - \edef\]{\string\]}% - \edef\({\string\(}% - \edef\){\string\)}% - \edef\*{\string\*}% - \edef\+{\string\+}% - \edef\?{\string\?}% - \edef\|{\string\|}% - \edef\^{\string\^}% - \edef\${\string\$}% - \edef\{{\string\{}% - \edef\}{\string\}}% - \edef\.{\string\.}% - \xdef#1{% - \expandafter\expandafter\expandafter\zap@space - \expandafter#2\space\@empty - }% - \endgroup -} -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\AtBeginDocument{% - \@ifundefined{AskInc@Answer}{% - \global\let\AskInc@Answer\AskInc@CharAsterisk - }{% - \AskInc@SanitizeAnswer\AskInc@Answer\AskInc@Answer - }% - \global\let\AskInc@PreviousAnswer\AskInc@Answer - \@ifundefined{AskInc@MatchMethod}{% - \global\let\AskInc@MatchMethod\@empty - }{}% - \global\let\AskInc@PreviousMatchMethod\AskInc@MatchMethod - \@ifundefined{AskInc@MatchOption}{% - \let\AskInc@MatchOption\AskInc@MatchMethod - }{}% - \ifx\AskInc@MatchOption\AskInc@StringPdfMatch - \ifAskInc@PdfMatchAvailable - \else - \let\AskInc@MatchOption\@empty - \fi - \fi - \@ifundefined{AskInc@MatchFiles}{% - \let\AskInc@MatchFiles\@empty - }{}% -} -% \end{macrocode} -% -% \subsection{Questions} -% -% \subsubsection{Generic question header} -% -% \begin{macro}{\AskInc@QuestionHeader} -% \begin{macrocode} -\def\AskInc@QuestionHeader{% - \typeout{}% - \typeout{***********************************}% - \typeout{*** Package askinclude Question ***}% - \typeout{***********************************}% - \typeout{}% -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Display files} -% -% \begin{macro}{\AskInc@TypeoutFiles} -% \begin{macrocode} -\def\AskInc@TypeoutFiles{% - \global\let\AskInc@PreviousMatches\@empty - \ifx\AskInc@Files\@empty - \else - \typeout{Files, found by previous run in \string\include:}% - \@for\AskInc@File:=\AskInc@Files\do{% - \ifx\AskInc@Answer\AskInc@CharAsterisk - \let\AskInc@Mark\AskInc@CharPlus - \else - \let\AskInc@Mark\AskInc@CharMinus - \ifx\AskInc@Answer\AskInc@CharMinus - \else - \ifx\AskInc@MatchMethod\@empty - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {\@for\AskInc@Temp:=\AskInc@Answer}% - {\@for\AskInc@Temp:=\AskInc@MatchFiles}% - \do{% - \ifx\AskInc@File\AskInc@Temp - \let\AskInc@Mark\AskInc@CharPlus - \fi - }% - \fi - \fi - \typeout{ \@spaces(\AskInc@Mark) \AskInc@File}% - \ifx\AskInc@Mark\AskInc@CharPlus - \ifx\AskInc@PreviousMatches\@empty - \global\let\AskInc@PreviousMatches\AskInc@File - \else - \expandafter\g@addto@macro - \expandafter\AskInc@PreviousMatches{% - \expandafter,\AskInc@File - }% - \fi - \fi - }% - \typeout{}% - \fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Previous answer} -% -% \begin{macro}{\AskInc@TypeoutPreviousAnswer} -% \begin{macrocode} -\def\AskInc@TypeoutPreviousAnswer{% - \typeout{% - Previous answer (% - \ifx\AskInc@MatchMethod\@empty - noregexp% - \else - \AskInc@MatchMethod - \fi - ):% - }% - \typeout{ \@spaces[\AskInc@Answer]}% - \typeout{}% -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Current regular expression support} -% -% \begin{macro}{\AskInc@TypeoutMatchMethod} -% \begin{macrocode} -\def\AskInc@TypeoutMatchMethod{% - \typeout{Regular expressions:}% - \AskInc@TypeoutMethod\@empty{noregexp}{% - \space disabled% - }% - \AskInc@TypeoutMethod\AskInc@StringMakeMatch{makematch}{% - enabled, using package `makematch'% - }% - \ifAskInc@PdfMatchAvailable - \AskInc@TypeoutMethod\AskInc@StringPdfMatch{pdfmatch}{% - \space enabled, using pdfTeX's \string\pdfmatch - }% - \fi - \typeout{}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@TypeoutMethod} -% \begin{macrocode} -\def\AskInc@TypeoutMethod#1#2#3{% - \typeout{% - \ifx#1\AskInc@MatchOption \space--> \else\@spaces\space\fi - [#2] #3% hash-ok - }% -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Main question text} -% -% \begin{macro}{\AskInc@TypeoutMainQuestion} -% \begin{macrocode} -\def\AskInc@TypeoutMainQuestion{% - \typeout{Which files do you want to include?}% - \typeout{ \@spaces[foo,bar] \space\space - comma separated file or pattern list}% - \typeout{ \@spaces[*] \@spaces\@spaces all files}% - \typeout{ \@spaces[-] \@spaces\@spaces no files}% - \typeout{ \@spaces[?] \@spaces\@spaces ask for each file}% -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Main question} -% -% \begin{macro}{\AskInc@MainQuestion} -% \begin{macrocode} -\def\AskInc@MainQuestion{% - \AskInc@QuestionHeader - \AskInc@TypeoutFiles - \AskInc@TypeoutPreviousAnswer - \AskInc@TypeoutMatchMethod - \AskInc@TypeoutMainQuestion - \begingroup - \@makeother\*% - \@makeother\-% - \@makeother\?% - \@makeother\,% - \@makeother\!% - \@makeother\^% - \@makeother\$% - \@makeother\(% - \@makeother\)% - \@makeother\+% - \@makeother\[% - \@makeother\]% - \@makeother\\% - \@makeother\|% - \@makeother\:% - \@makeother\.% - \typein[\answer]% - { \@spaces[] \space\@spaces\@spaces use the previous answer}% - \typeout{}% - \AskInc@SanitizeAnswer\AskInc@@Answer\answer - \endgroup - \let\AskInc@Next\AskInc@MainQuestion - \ifx\AskInc@@Answer\AskInc@StringNoRegExp - \let\AskInc@MatchOption\@empty - \else - \ifx\AskInc@@Answer\AskInc@StringMakeMatch - \let\AskInc@MatchOption\AskInc@StringMakeMatch - \else - \ifx\AskInc@@Answer\AskInc@StringPdfMatch - \ifAskInc@PdfMatchAvailable - \let\AskInc@MatchOption\AskInc@StringPdfMatch - \else - \PackageWarning{askinclude}{% - Method `pdfmatch' is not available because\MessageBreak - your pdfTeX does not provide \string\pdfmatch - }% - \let\AskInc@MatchOption\@empty - \fi - \else - \ifx\AskInc@@Answer\@empty - \global\let\AskInc@@Answer\AskInc@Answer - \fi - \let\AskInc@Next\AskInc@MainAnswer - \fi - \fi - \fi - \AskInc@Next -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Evaluate answer of main question} -% -% \begin{macro}{\AskInc@MainAnswer} -% \begin{macrocode} -\def\AskInc@MainAnswer{% - \ifx\AskInc@@Answer\AskInc@CharQuestion - \global\let\AskInc@Answer\@empty - \global\let\AskInc@MatchMethod\@empty - \global\let\AskInc@AskFile\AskInc@DoAskFile - \AskInc@OrgIncludeOnly{}% - \else - \global\let\AskInc@Answer\AskInc@@Answer - \ifx\AskInc@@Answer\AskInc@CharAsterisk - \global\let\AskInc@MatchMethod\@empty - \else - \ifx\AskInc@@Answer\AskInc@CharMinus - \global\let\AskInc@MatchMethod\@empty - \AskInc@OrgIncludeOnly{}% - \else - \global\let\AskInc@MatchMethod\AskInc@MatchOption - \ifx\AskInc@MatchOption\@empty - \expandafter\AskInc@OrgIncludeOnly\expandafter{% - \AskInc@Answer - }% - \else - \AskInc@MatchInit - \AskInc@OrgIncludeOnly{}% - \fi - \fi - \fi - \fi - \let\AskInc@Include\AskInc@DoInclude -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\AskInc@MatchInit} -% \begin{macrocode} -\def\AskInc@MatchInit{% - \RequirePackage{kvsetkeys}[2007/09/29]% - \expandafter\comma@normalize\expandafter{\AskInc@Answer}% - \global\let\AskInc@MatchList\comma@list -% \end{macrocode} -% \begin{macro}{\AskInc@MatchFile} -% \begin{macrocode} - \def\AskInc@MatchFile##1{% - \AskInc@DoMatch{##1}{% - \AskInc@WriteAddMatch{##1}% - \ifx\@partlist\@empty - \gdef\@partlist{##1}% - \else - \g@addto@macro\@partlist{,##1}% - \fi - }% - }% -% \end{macrocode} -% \end{macro} -% \begin{macrocode} - \ifx\AskInc@MatchMethod\AskInc@StringMakeMatch - \AskInc@MakeMatchInit - \else - \AskInc@PdfMatchInit - \fi - \let\AskInc@MatchInit\@undefined -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@MakeMatchInit} -% \begin{macrocode} -\def\AskInc@MakeMatchInit{% - \RequirePackage{makematch}% -% \end{macrocode} -% \begin{macro}{\AskInc@DoMatch} -% \begin{macrocode} - \def\AskInc@DoMatch##1{% - \def\AskInc@Temp{% - \MakeMatcher[,]\AskInc@Temp - }% - \expandafter\AskInc@Temp\expandafter{\AskInc@MatchList}% - \AskInc@Temp{{##1}}\@firstofone\@gobble - }% -% \end{macrocode} -% \end{macro} -% \begin{macrocode} - \let\AskInc@MakeMatchInit\@undefined -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@PdfMatchInit} -% \begin{macrocode} -\def\AskInc@PdfMatchInit{% -% \end{macrocode} -% \begin{macro}{\ifAskInc@Found} -% \begin{macrocode} - \newif\ifAskInc@Found -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@DoMatch} -% \begin{macrocode} - \def\AskInc@DoMatch##1{% - \AskInc@Foundfalse - \expandafter\comma@parse@normalized\expandafter - {\AskInc@MatchList}{\AskInc@CheckMatch{##1}}% - \ifAskInc@Found - \expandafter\@firstofone - \else - \expandafter\@gobble - \fi - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@CheckMatch} -% \begin{macrocode} - \def\AskInc@CheckMatch##1##2{% - \AskInc@@CheckMatch##2\@empty\@nil{##1}% - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@@CheckMatch} -% \begin{macrocode} - \def\AskInc@@CheckMatch##1##2\@nil##3{% - \def\AskInc@Temp{##1}% - \ifx\AskInc@Temp\AskInc@CharExclam - \ifcase\pdfmatch{##2}{##3}=1 % - \or - \AskInc@Foundfalse - \else - \AskInc@InvalidPattern{##2}{##1##2}% - \fi - \else - \ifcase\pdfmatch{##1##2}{##3} % - \or - \AskInc@Foundtrue - \else - \AskInc@InvalidPattern{##1##2}{##1##2}% - \fi - \fi - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@InvalidPattern} -% Prints a warning with the regular expression and -% removes it from the list to prevent further warnings -% for the same expression. -% \begin{macrocode} - \def\AskInc@InvalidPattern##1##2{% - \edef\AskInc@Temp{##1}% - \PackageWarningNoLine{askinclude}{% - Invalid pattern `\AskInc@Temp' for \string\pdfmatch - }% - \edef\AskInc@Temp{##2}% - \global\expandafter\let\expandafter\AskInc@MatchList - \expandafter\@empty - \expandafter\comma@parse@normalized\expandafter - {\AskInc@MatchList}\AskInc@FilterPattern - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@FilterPattern} -% \begin{macrocode} - \def\AskInc@FilterPattern##1{% - \edef\AskInc@Pattern{##1}% - \ifx\AskInc@Temp\AskInc@Pattern - \else - \ifx\AskInc@MatchList\@empty - \global\let\AskInc@MatchList\AskInc@Pattern - \else - \expandafter\g@addto@macro\expandafter\AskInc@MatchList{% - \expandafter,\AskInc@Pattern - }% - \fi - \fi - }% -% \end{macrocode} -% \end{macro} -% \begin{macrocode} - \let\AskInc@PdfMatchInit\@undefined -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\AskInc@WriteDefAddMatch} -% \begin{macrocode} -\def\AskInc@WriteDefAddMatch{% - \AskInc@WriteDefAddList - \AskInc@WriteAux{% -% \end{macrocode} -% \begin{macro}{\AskInc@AddMatch} -% \begin{macrocode} - \string\providecommand\string\AskInc@AddMatch{% - \string\AskInc@AddList\string\AskInc@MatchFiles - }% -% \end{macrocode} -% \end{macro} -% \begin{macrocode} - }{% - \global\let\AskInc@WriteDefAddMatch\relax - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@AddMatch} -% \begin{macrocode} -\AtBeginDocument{% - \global\let\AskInc@AddMatch\@gobble -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@WriteAddMatch} -% \begin{macrocode} -\def\AskInc@WriteAddMatch#1{% - \AskInc@WriteDefAddMatch - \AskInc@WriteAux{% - \string\AskInc@AddMatch{#1}% - }{}% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\AskInc@SaveAnswer} -% \begin{macrocode} -\def\AskInc@SaveAnswer{% - \AskInc@WriteAux{% - \string\gdef\string\AskInc@Answer{\AskInc@Answer}% - }{}% -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Ask for each file} -% -% \begin{macro}{\AskInc@PreviousAnswer} -% \begin{macrocode} -\@ifundefined{AskInc@PreviousAnswer}{% - \let\AskInc@PreviousAnswer\AskInc@CharAsterisk -}{} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@PreviousMatchMethod} -% \begin{macrocode} -\@ifundefined{AskInc@PreviousMatchMethod}{% - \let\AskInc@PreviousMatchMethod\@empty -}{} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@DoAskFile} -% \begin{macrocode} -\def\AskInc@DoAskFile#1{% - \edef\AskInc@File{#1}% - \ifx\AskInc@PreviousAnswer\AskInc@CharAsterisk - \let\AskInc@Default\AskInc@CharYes - \else - \let\AskInc@Default\AskInc@CharNo - \ifx\AskInc@PreviousAnswer\AskInc@CharMinus - \else - \ifx\AskInc@PreviousMatchMethod\@empty - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {\@for\AskInc@Temp:=\AskInc@PreviousAnswer}% - {\@for\AskInc@Temp:=\AskInc@MatchFiles}% - \do{% - \ifx\AskInc@Temp\AskInc@File - \let\AskInc@Default\AskInc@CharYes - \fi - }% - \fi - \ifx\AskInc@Default\AskInc@CharNo - \let\AskInc@Default\AskInc@CharYes - \@for\AskInc@Temp:=\AskInc@Files\do{% - \ifx\AskInc@Temp\AskInc@File - \let\AskInc@Default\AskInc@CharNo - \fi - }% - \fi - \fi - \let\AskInc@@QuestionHeader\AskInc@QuestionHeader - \AskInc@AskQuestion - \ifx\AskInc@AskResult\AskInc@CharYes - \ifx\AskInc@Answer\@empty - \gdef\AskInc@Answer{#1}% - \else - \g@addto@macro\AskInc@Answer{,#1}% - \fi - \AskInc@SaveAnswer - \let\@partlist\AskInc@Answer - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@AskQuestion} -% \begin{macrocode} -\def\AskInc@AskQuestion{% - \let\AskInc@Temp\answer - \AskInc@@QuestionHeader - \let\AskInc@@QuestionHeader\relax - \typein[\answer]{% - Include `\AskInc@File'? [y]es, [n]o, [A]ll, [N]one, [D]efault % - (\AskInc@Default):% - }% - \typeout{}% - \let\AskInc@AskResult\answer - \let\answer\AskInc@Temp - \ifx\AskInc@AskResult\@empty - \let\AskInc@AskResult\AskInc@Default - \let\AskInc@Next\relax - \else - \ifx\AskInc@AskResult\AskInc@CharYes - \let\AskInc@Next\relax - \else - \ifx\AskInc@AskResult\AskInc@CharNo - \let\AskInc@Next\relax - \else - \ifx\AskInc@AskResult\AskInc@CharAll - \gdef\AskInc@AskQuestion{% - \let\AskInc@AskResult\AskInc@CharYes - }% - \else - \ifx\AskInc@AskResult\AskInc@CharNone - \gdef\AskInc@AskQuestion{% - \let\AskInc@AskResult\AskInc@CharNo - }% - \else - \ifx\AskInc@AskResult\AskInc@CharDefault - \gdef\AskInc@AskQuestion{% - \let\AskInc@AskResult\AskInc@Default - }% - \else - \PackageWarningNoLine{askinclude}{% - Invalid answer [\AskInc@AskResult].\MessageBreak - Answer must be one letter out of [ynAND]% - }% - \fi - \fi - \fi - \let\AskInc@Next\AskInc@AskQuestion - \fi - \fi - \fi - \AskInc@Next -} -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\AtBeginDocument{\AskInc@MainQuestion} -% \end{macrocode} -% -% \begin{macrocode} -\AskInc@AtEnd% -% -% \end{macrocode} -% \section{Installation} -% -% \subsection{Download} -% -% \paragraph{Package.} This package is available on -% CTAN\footnote{\CTANpkg{askinclude}}: -% \begin{description} -% \item[\CTAN{macros/latex/contrib/oberdiek/askinclude.dtx}] The source file. -% \item[\CTAN{macros/latex/contrib/oberdiek/askinclude.pdf}] Documentation. -% \end{description} -% -% -% \paragraph{Bundle.} All the packages of the bundle `oberdiek' -% are also available in a TDS compliant ZIP archive. There -% the packages are already unpacked and the documentation files -% are generated. The files and directories obey the TDS standard. -% \begin{description} -% \item[\CTANinstall{install/macros/latex/contrib/oberdiek.tds.zip}] -% \end{description} -% \emph{TDS} refers to the standard ``A Directory Structure -% for \TeX\ Files'' (\CTANpkg{tds}). Directories -% with \xfile{texmf} in their name are usually organized this way. -% -% \subsection{Bundle installation} -% -% \paragraph{Unpacking.} Unpack the \xfile{oberdiek.tds.zip} in the -% TDS tree (also known as \xfile{texmf} tree) of your choice. -% Example (linux): -% \begin{quote} -% |unzip oberdiek.tds.zip -d ~/texmf| -% \end{quote} -% -% \subsection{Package installation} -% -% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting -% \docstrip\ archive. The files are extracted by running the -% \xfile{.dtx} through \plainTeX: -% \begin{quote} -% \verb|tex askinclude.dtx| -% \end{quote} -% -% \paragraph{TDS.} Now the different files must be moved into -% the different directories in your installation TDS tree -% (also known as \xfile{texmf} tree): -% \begin{quote} -% \def\t{^^A -% \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} -% askinclude.sty & tex/latex/oberdiek/askinclude.sty\\ -% askinclude.pdf & doc/latex/oberdiek/askinclude.pdf\\ -% askinclude.dtx & source/latex/oberdiek/askinclude.dtx\\ -% \end{tabular}^^A -% }^^A -% \sbox0{\t}^^A -% \ifdim\wd0>\linewidth -% \begingroup -% \advance\linewidth by\leftmargin -% \advance\linewidth by\rightmargin -% \edef\x{\endgroup -% \def\noexpand\lw{\the\linewidth}^^A -% }\x -% \def\lwbox{^^A -% \leavevmode -% \hbox to \linewidth{^^A -% \kern-\leftmargin\relax -% \hss -% \usebox0 -% \hss -% \kern-\rightmargin\relax -% }^^A -% }^^A -% \ifdim\wd0>\lw -% \sbox0{\small\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\footnotesize\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\scriptsize\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\tiny\t}^^A -% \ifdim\wd0>\linewidth -% \lwbox -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \end{quote} -% If you have a \xfile{docstrip.cfg} that configures and enables \docstrip's -% TDS installing feature, then some files can already be in the right -% place, see the documentation of \docstrip. -% -% \subsection{Refresh file name databases} -% -% If your \TeX~distribution -% (\TeX\,Live, \mikTeX, \dots) relies on file name databases, you must refresh -% these. For example, \TeX\,Live\ users run \verb|texhash| or -% \verb|mktexlsr|. -% -% \subsection{Some details for the interested} -% -% \paragraph{Unpacking with \LaTeX.} -% The \xfile{.dtx} chooses its action depending on the format: -% \begin{description} -% \item[\plainTeX:] Run \docstrip\ and extract the files. -% \item[\LaTeX:] Generate the documentation. -% \end{description} -% If you insist on using \LaTeX\ for \docstrip\ (really, -% \docstrip\ does not need \LaTeX), then inform the autodetect routine -% about your intention: -% \begin{quote} -% \verb|latex \let\install=y\input{askinclude.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 askinclude.dtx -%bibtex askinclude.aux -%makeindex -s gind.ist askinclude.idx -%pdflatex askinclude.dtx -%makeindex -s gind.ist askinclude.idx -%pdflatex askinclude.dtx -%\end{verbatim} -% \end{quote} -% -% \section{Acknowledgement} -% -% \begin{description} -% \item[Tom Scavo] -% suggested saving the include file list -% from the previous run and a simplified user interface. -% \item[Joseph Wright] suggested questions for each \cs{include}. -% \end{description} -% -% \printbibliography[ -% heading=bibnumbered, -% ] -% -% \begin{History} - -% \begin{Version}{1991/11/05 v0.95} -% \item -% First beta-test version (asked two questions). -% \end{Version} -% \begin{Version}{1991/11/05 v0.99} -% \item -% Second beta-test version (asks one question; uses `|*|' and `|-|'). -% \end{Version} -% \begin{Version}{1991/11/07 v1.0} -% \item -% Changed prompts (sent to \xnewsgroup{comp.text.tex}): -% \URL{``\link{Interactive inclusion of files in LaTeX}''}^^A -% {https://groups.google.com/group/comp.text.tex/msg/34b770a7c277e79c} -% \end{Version} -% \begin{Version}{1991/12/13 v1.1} -% \item -% \textit{Unknown}. -% \end{Version} -% \begin{Version}{1994/11/02 v1.2e} -% \item -% Two small changes to run under LaTeX2e [RF]. -% \item -% Additional documentation [TRS]. -% \end{Version} -% \begin{Version}{2007/10/15 v1.0 (askinc)} -% \item -% Reimplementation, published as \xpackage{askinc} in -% newsgroup \xnewsgroup{comp.text.tex}:\\ -% \URL{``\link{Re: askinclude.sty}''}^^A -% {https://groups.google.com/group/comp.text.tex/msg/2d638b84a858fdc8} -% \item -% Listing of included files, collected from the previous run before -% the question. -% \item -% No error message by \xfile{.aux} file if package is removed. -% \end{Version} -% \begin{Version}{2007/10/23 v2.0} -% \item -% The next version of \xpackage{askinc} becomes -% version 2.0 of \xpackage{askinclude}. -% \item -% `|?|' added for questioning each file. -% \item -% \cs{includeonly} has precedence until package loading. -% Then it is disabled by a warning. -% \item -% Documentation rewritten/added. -% \item -% Tests added. -% \end{Version} -% \begin{Version}{2008/08/11 v2.1} -% \item -% Code is not changed. -% \item -% URLs updated. -% \end{Version} -% \begin{Version}{2011/12/02 v2.2} -% \item -% Bibliography rewritten for biblatex. -% \end{Version} -% \begin{Version}{2016/05/14 v2.3} -% \item -% Luatex compatibility -% \end{Version} -% \begin{Version}{2018/11/01 v2.4} -% \item -% Remove luatex85 package dependency -% \end{Version} -% \end{History} -% -% \PrintIndex -% -% \Finale -\endinput -% \begin{Version}{1991/11/05 v0.95} -% \item -% First beta-test version (asked two questions). -% \end{Version} -% \begin{Version}{1991/11/05 v0.99} -% \item -% Second beta-test version (asks one question; uses `|*|' and `|-|'). -% \end{Version} -% \begin{Version}{1991/11/07 v1.0} -% \item -% Changed prompts (sent to \xnewsgroup{comp.text.tex}): -% \URL{``\link{Interactive inclusion of files in LaTeX}''}^^A -% {https://groups.google.com/group/comp.text.tex/msg/34b770a7c277e79c} -% \end{Version} -% \begin{Version}{1991/12/13 v1.1} -% \item -% \textit{Unknown}. -% \end{Version} -% \begin{Version}{1994/11/02 v1.2e} -% \item -% Two small changes to run under LaTeX2e [RF]. -% \item -% Additional documentation [TRS]. -% \end{Version} -% \begin{Version}{2007/10/15 v1.0 (askinc)} -% \item -% Reimplementation, published as \xpackage{askinc} in -% newsgroup \xnewsgroup{comp.text.tex}:\\ -% \URL{``\link{Re: askinclude.sty}''}^^A -% {https://groups.google.com/group/comp.text.tex/msg/2d638b84a858fdc8} -% \item -% Listing of included files, collected from the previous run before -% the question. -% \item -% No error message by \xfile{.aux} file if package is removed. -% \end{Version} -% \begin{Version}{2007/10/23 v2.0} -% \item -% The next version of \xpackage{askinc} becomes -% version 2.0 of \xpackage{askinclude}. -% \item -% `|?|' added for questioning each file. -% \item -% \cs{includeonly} has precedence until package loading. -% Then it is disabled by a warning. -% \item -% Documentation rewritten/added. -% \item -% Tests added. -% \end{Version} -% \begin{Version}{2008/08/11 v2.1} -% \item -% Code is not changed. -% \item -% URLs updated. -% \end{Version} -% \begin{Version}{2011/12/02 v2.2} -% \item -% Bibliography rewritten for biblatex. -% \end{Version} -% \begin{Version}{2016/05/14 v2.3} -% \item -% Luatex compatibility -% \end{Version} -% \end{History} -% -% \PrintIndex -% -% \Finale -\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/bitset.dtx b/Master/texmf-dist/source/latex/oberdiek/bitset.dtx deleted file mode 100644 index dbb7c1ba2a6..00000000000 --- a/Master/texmf-dist/source/latex/oberdiek/bitset.dtx +++ /dev/null @@ -1,2957 +0,0 @@ -% \iffalse meta-comment -% -% File: bitset.dtx -% Version: 2016/05/16 v1.2 -% Info: Handle bit-vector datatype -% -% Copyright (C) -% 2007, 2011 Heiko Oberdiek -% 2016-2019 Oberdiek Package Support Group -% https://github.com/ho-tex/oberdiek/issues -% -% This work may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either -% version 1.3c of this license or (at your option) any later -% version. This version of this license is in -% https://www.latex-project.org/lppl/lppl-1-3c.txt -% and the latest version of this license is in -% https://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". -% -% The Current Maintainers of this work are -% Heiko Oberdiek and the Oberdiek Package Support Group -% https://github.com/ho-tex/oberdiek/issues -% -% The Base Interpreter refers to any `TeX-Format', -% because some files are installed in TDS:tex/generic//. -% -% This work consists of the main source file bitset.dtx -% and the derived files -% bitset.sty, bitset.pdf, bitset.ins, bitset.drv, bitset-test1.tex, -% bitset-test2.tex, bitset-test3.tex. -% -% Distribution: -% CTAN:macros/latex/contrib/oberdiek/bitset.dtx -% CTAN:macros/latex/contrib/oberdiek/bitset.pdf -% -% Unpacking: -% (a) If bitset.ins is present: -% tex bitset.ins -% (b) Without bitset.ins: -% tex bitset.dtx -% (c) If you insist on using LaTeX -% latex \let\install=y\input{bitset.dtx} -% (quote the arguments according to the demands of your shell) -% -% Documentation: -% (a) If bitset.drv is present: -% latex bitset.drv -% (b) Without bitset.drv: -% latex bitset.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 bitset.dtx -% makeindex -s gind.ist bitset.idx -% pdflatex bitset.dtx -% makeindex -s gind.ist bitset.idx -% pdflatex bitset.dtx -% -% Installation: -% TDS:tex/generic/oberdiek/bitset.sty -% TDS:doc/latex/oberdiek/bitset.pdf -% TDS:source/latex/oberdiek/bitset.dtx -% -%<*ignore> -\begingroup - \catcode123=1 % - \catcode125=2 % - \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 -% -%<*install> -\input docstrip.tex -\Msg{************************************************************************} -\Msg{* Installation} -\Msg{* Package: bitset 2016/05/16 v1.2 Handle bit-vector datatype (HO)} -\Msg{************************************************************************} - -\keepsilent -\askforoverwritefalse - -\let\MetaPrefix\relax -\preamble - -This is a generated file. - -Project: bitset -Version: 2016/05/16 v1.2 - -Copyright (C) - 2007, 2011 Heiko Oberdiek - 2016-2019 Oberdiek Package Support Group - -This work may be distributed and/or modified under the -conditions of the LaTeX Project Public License, either -version 1.3c of this license or (at your option) any later -version. This version of this license is in - https://www.latex-project.org/lppl/lppl-1-3c.txt -and the latest version of this license is in - https://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". - -The Current Maintainers of this work are -Heiko Oberdiek and the Oberdiek Package Support Group -https://github.com/ho-tex/oberdiek/issues - - -The Base Interpreter refers to any `TeX-Format', -because some files are installed in TDS:tex/generic//. - -This work consists of the main source file bitset.dtx -and the derived files - bitset.sty, bitset.pdf, bitset.ins, bitset.drv, bitset-test1.tex, - bitset-test2.tex, bitset-test3.tex. - -\endpreamble -\let\MetaPrefix\DoubleperCent - -\generate{% - \file{bitset.ins}{\from{bitset.dtx}{install}}% - \file{bitset.drv}{\from{bitset.dtx}{driver}}% - \usedir{tex/generic/oberdiek}% - \file{bitset.sty}{\from{bitset.dtx}{package}}% -% \usedir{doc/latex/oberdiek/test}% -% \file{bitset-test1.tex}{\from{bitset.dtx}{test1}}% -% \file{bitset-test2.tex}{\from{bitset.dtx}{test2,etex}}% -% \file{bitset-test3.tex}{\from{bitset.dtx}{test2,noetex}}% -} - -\catcode32=13\relax% active space -\let =\space% -\Msg{************************************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* file into a directory searched by TeX:} -\Msg{*} -\Msg{* bitset.sty} -\Msg{*} -\Msg{* To produce the documentation run the file `bitset.drv'} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing!} -\Msg{*} -\Msg{************************************************************************} - -\endbatchfile -% -%<*ignore> -\fi -% -%<*driver> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{bitset.drv}% - [2016/05/16 v1.2 Handle bit-vector datatype (HO)]% -\documentclass{ltxdoc} -\usepackage{holtxdoc}[2011/11/22] -\usepackage{amstext} -\usepackage{ifluatex} -\ifluatex -\else - \usepackage[T1]{fontenc}% - \usepackage{lmodern}% -\fi -\begin{document} - \DocInput{bitset.dtx}% -\end{document} -% -% \fi -% -% -% -% \GetFileInfo{bitset.drv} -% -% \title{The \xpackage{bitset} package} -% \date{2016/05/16 v1.2} -% \author{Heiko Oberdiek\thanks -% {Please report any issues at \url{https://github.com/ho-tex/oberdiek/issues}}} -% -% \maketitle -% -% \begin{abstract} -% This package defines and implements the data type bit set, -% a vector of bits. The size of the vector may grow dynamically. -% Individual bits can be manipulated. -% \end{abstract} -% -% \tableofcontents -% -% \clearpage -% \section{Documentation} -% -% \subsection{Introduction} -% -% Annotations in the PDF format know entries whose values are -% integers. This numbers are interpreted as set of flags -% specifying properties. For example, annotation dictionaries -% can have a key |/F|. The bits of its integer value -% are interpreted the following way: -% \begin{quote} -% \begin{tabular}{@{}l|l@{}} -% Bit position & Property name\\ -% \hline -% 1 & Invisible\\ -% 2 & Hidden\\ -% 3 & Print\\ -% 4 & NoZoom\\ -% 5 & NoRotate\\ -% 6 & NoView\\ -% 7 & ReadOnly\\ -% \dots & \dots -% \end{tabular} -% \end{quote} -% Now, let's see how these values are set in package \xpackage{hyperref} -% before it uses this package (before v6.77a): -%\begin{quote} -%\begin{verbatim} -%\ifFld@hidden /F 6\else /F 4\fi -%\end{verbatim} -%\end{quote} -% Where are the other flags? The following example for key |/Ff| -% in a widget annotation -% supports at least three properties: -%\begin{quote} -%\begin{verbatim} -%\ifFld@multiline -% \ifFld@readonly /Ff 4097\else /Ff 4096\fi -%\else -% \ifFld@password -% \ifFld@readonly /Ff 8193\else /Ff 8192\fi -% \else -% \ifFld@readonly /Ff 1\fi -% \fi -%\fi -%\end{verbatim} -%\end{quote} -% But you see the point. It would be a nightmare to continue -% this way in supporting the missing flag settings. This kind -% of integers may have up to 32 bits. -% -% Therefore I wanted a data structure for setting and -% clearing individual bits. Also it should provide -% an export as decimal number. The snipsets above are -% executed in expansion contexts without \TeX's stomach -% commands. It would be convenient to have an expandable -% conversion from the data structure to the integer that -% gets written to the PDF file. -% -% This package \xpackage{bitset} implements such a data -% structure. The interface is quite close to Java's -% class |BitSet| in order not to learn to many interfaces -% for the same kind of data structure. -% -% \subsection{Glossary} -% -% \begin{description} -% \item[Bit set:] -% A bit set is a vector of bits or flags. -% The vector size is unlimited and -% grows dynamically. An undefined bit set is treated as bit -% set where all bits are cleared. -% -% Bit sets are addressed by name. A name should consists of -% letters or digits. Technically it must survive \cs{csname}, -% see \LaTeX's environment names for other names with such -% a constraint. Package \xpackage{babel}'s shorthands are -% not supported due to technical reasons. Shorthand support -% would break expandable operations. -% \item[Size:] -% A size of a bit set is the number of bits in use. -% It's the number of the highest index, incremented by one. -% Sizes are in the range |0| up to |2147483647|, the highest -% number supported by \TeX. -% \item[Index:] -% Bit positions in a bit set are addressed by an index number. -% The bit vector is zero based. The first and least significant -% bit is addressed by index |0| and the highest possible bit -% by |2147483646|. -% \item[Bit:] -% A bit is enoded as |0| for cleared/disabled or |1| for set/enabled. -% \end{description} -% -% \subsection{Design principles} -% -% \begin{description} -% \item[Name conventions:] -% To avoid conflicts with existing macro names, the operations -% are prefixed by the package name. -% \item[Zero based indexes:] The first bit is addressed by zero. -% (Convention of array indexing in C, Java, \dots) -% \item[Unlimited size:] -% There is no restriction on the size of a bit set other than -% usual memory limitations. \cs{bitsetSetDec} and \cs{bitsetGetDec} -% transparently switch to package \xpackage{bigintcalc} if the numbers -% get too large for \TeX's number limit. -% \item[Expandibility:] -% Any operation that does not change the bit set is expandable. -% And all operations that extract or calculate some result -% do this in exact two expansion steps. For example, -% a macro \cs{Macro} wants a bit set as decimal number. -% But the argument must be a plain number without macros. -% Thus you could prefix \cs{bitsetGetDec} with \cs{number}. -% However this won't work for bit sets with 31 or more bits -% because of \TeX's number limit of $2^{31}-1$. -% then just hit the operator with two \cs{expandafter}: -% \begin{quote} -% |\expandafter\expandafter\expandafter|\\ -% |\Macro\bitsetGetDec{foo}| -% \end{quote} -% |\bitsetGetDec| is hit first by the third \cs{expandafter} -% and then by the second one. -% \item[Format independence:] This package is written as \LaTeX\ package, -% but it does not depend on \LaTeX. It will also work for other formats -% such as \plainTeX. -% \item[Independence from \TeX\ engines:] -% Vanilla \TeX\ is all you need. Calculations are delegated to -% packages \xpackage{intcalc} and \xpackage{bigintcalc}. -% They don't need any special features, but they will switch -% to a little more efficient implementation if features such -% as \cs{numexpr} are available. -% \item[Numeric arguments:] Anything that is accepted by -% \cs{number}. If \eTeX\ is detected, also expressions -% for \cs{numexpr} are supported. The only exception so far -% is the number for \cs{bitsetSetDec}. The number might be too -% large for \cs{number} or \cs{numexpr}. -% \item[Error messages:] -% In expandable contexts, only a limited set of \TeX\ primitive -% commands work as expected. So called stomach commands behave -% like \cs{relax} and don't get expanded or executed. -% Unhappily also the error commands belong to this category. -% The expandable operations will throw an unknown control -% sequence instead to get \TeX's and user's attention. -% The name of these control sequences starts with -% \cs{BitSetError:} with the type of error after the colon. -% \end{description} -% -% \subsection{Operator overview} -% -% \begin{minipage}{\linewidth} -% \begin{description} -% \def\It#1#2{^^A -% \item[^^A -% {#1} ^^A -% \textmd{(\hyperref[{sec:#2}]{section \ref*{sec:#2}})}^^A -% ]^^A -% \mbox{}\\^^A -% } -% \def\op#1{^^A -% \cs{bitset}\texttt{\bfseries#1}^^A -% } -% \def\M#1{\meta{#1}} -% \def\Q{\hspace*{\fill}} -% \It{Miscellaneous}{misc} -% \op{Reset}\Q \M{BitSet}\\ -% \op{Let}\Q \M{BitSet A} \M{BitSet B} -% \It{Import}{import} -% \op{SetBin}, \op{SetOct}, \op{SetHex}\Q \M{BitSet} \M{Value}\\ -% \op{SetDec}\Q \M{BitSet} \M{Value} -% \It{Export\textsuperscript{a}}{export} -% \op{GetBin}, \op{GetOct}, \op{GetHex}\Q \M{BitSet} \M{MinSize}\\ -% \op{GetDec}\Q \M{BitSet} -% \It{Logical operators}{log} -% \op{And}, \op{AndNot}\Q \M{BitSet A} \M{BitSet B}\\ -% \op{Or}, \op{Xor}\Q \M{BitSet A} \M{BitSet B} -% \It{Shifting}{shift} -% \op{ShiftLeft}, \op{ShiftRight}\Q \M{BitSet} \M{ShiftAmount}\\ -% \It{Bit manipulation}{bitman} -% \op{Clear}, \op{Set}, \op{Flip}\Q \M{BitSet} \M{Index}\\ -% \op{SetValue}\Q \M{BitSet} \M{Index} \M{Value}\\ -% \op{ClearRange}, \op{SetRange}, \op{FlipRange}\\ -% \Q \M{BitSet} \M{IndexFrom} \M{IndexTo}\\ -% \op{SetValueRange}\Q \M{BitSet} \M{IndexFrom} \M{IndexTo} -% \It{Bit retrieval\textsuperscript{a}}{bitret} -% \op{Get}\Q \M{BitSet} \M{Index}\\ -% \op{NextClearBit}, \op{NextSetBit}\Q \M{BitSet} \M{Index}\\ -% \op{GetSetBitList}\Q \M{BitSet} -% \It{Bit set properties}{prop} -% \op{Size}, \op{Cardinality}\Q \M{BitSet} -% \It{Queries\textsuperscript{b}}{query} -% \op{IsDefined}, \op{IsEmpty}\Q \M{BitSet} \M{Then} \M{Else}\\ -% \op{Equals}, \op{Intersects}\Q \M{BitSet A} \M{BitSet B} \M{Then} \M{Else}\\ -% \op{Query}\Q \M{BitSet} \M{Index} \M{Then} \M{Else} -% \end{description} -% \footnotetext[1]{Macros are expandable, full expansion by two steps.} -% \footnotetext[2]{Macros are expandable.} -% \end{minipage} -% -% \subsection{Package loading} -% -% The package can be used as normal \LaTeX\ package: -%\begin{quote} -%|\usepackage{bitset}| -%\end{quote} -% Also \plainTeX\ is supported: -%\begin{quote} -%|\input bitset.sty\relax| -%\end{quote} -% -% \subsection{Operators} -% -% The following macros work on and with bit sets. -% A bit set \meta{BitSet} is represented by a name. -% The should consist of letters and digits. Technically -% it must survive \cs{csname}. It is the same constraint -% that must be satisfied by label or environment names -% in \LaTeX. -% -% However active characters that are shorthands -% of package \xpackage{babel} are not supported. -% Support for shorthands works by an assignment. -% But many operators -% such as \cs{bitsetGetDec} must be usable in expandable -% contexts. There assignments will not be executed in the -% best case or they will cause errors. -% -% The bits in a bit set are addressed by non-negative -% integers starting from zero. Thus negative index -% numbers cause an error message. Because index numbers -% are \TeX\ numbers. The largest index is 2147483647. -% But in practice memory limits and patience limits -% will be very likely reached much before. -% -% \subsubsection{Miscellaneous}\label{sec:misc} -% -% There isn't a separate operation for bit set creation. -% For simplicity an undefined bit set is treated as bit set -% with all bits cleared. -% -% \begin{declcs}{bitsetReset} \M{BitSet} -% \end{declcs} -% Macro \cs{bitsetReset} clears all bits. The result is an -% empty bit set. It may also be used as replacement for -% an operation ``new'', because an undefined bit set is defined -% afterwards. -% -% \begin{declcs}{bitsetLet} \M{BitSet A} \M{BitSet B} -% \end{declcs} -% Macro \cs{bitsetLet} performs a simple assignment similar -% to \TeX's \cs{let}. After the operation \meta{BitSet A} has -% the same value as \meta{BitSet B}. If \meta{BitSet B} is -% undefined, then \meta{BitSet A} will be the empty bit set. -% -% Note: If \meta{BitSet A} exists, it will be overwritten. -% -% \subsubsection{Import}\label{sec:import} -% -% \begin{declcs}{bitsetSetBin} \M{BitSet} \M{BinaryNumber}\\ -% \cs{bitsetSetOct} \M{BitSet} \M{OctalNumber}\\ -% \cs{bitsetSetHex} \M{BitSet} \M{HexadecimalNumber} -% \end{declcs} -% The numbers are interpreted as bit vectors and the flags in -% the bit \meta{BitSet} set are set accordingly. -% These numeric arguments are the only arguments where -% spaces are allowed. Then the numbers are easier to read. -% -% \begin{declcs}{bitsetSetDec} \M{BitSet} \M{DecimalNumber} -% \end{declcs} -% Macro \cs{bitsetSetDec} uses \meta{DecimalNumber} to -% set the bit set \meta{BitSet}. -% The numeric argument must expand -% to a plain number consisting of decimal digits without -% command tokens or spaces. Internally this argument is -% expanded only. It cannot be passed to \cs{number} or -% \cs{numexpr}, because the number may be too large for them. -% However \cs{number} or |\the\numexpr| may be used -% explicitely. This also helps for unexpandable number -% command tokens or registers (\cs{z@}, \cs{@ne}, \cs{count@}, \dots). -% Also \LaTeX'\ \cs{value} needs prefixing: -% \begin{quote} -% |\bitsetSetDec{foo}{\number\value{bar}}| -% \end{quote} -% -% \subsubsection{Export}\label{sec:export} -% -% \begin{declcs}{bitsetGetBin} \M{BitSet} \M{MinSize}\\ -% \cs{bitsetGetOct} \M{BitSet} \M{MinSize}\\ -% \cs{bitsetGetHex} \M{BitSet} \M{MinSize} -% \end{declcs} -% These macros returns the bit set as binary, octal or hexadecimal -% number. If the bit size is smaller than \meta{MinSize} the gap is -% filled with leading zeros. -% Example: -% \begin{quote} -% |\bitsetReset{abc}|\\ -% |\bitsetSet{abc}{2}|\\ -% |\bitsetGetBin{abc}{8}| $\rightarrow$ |00000100|\\ -% |\bitsetSet{abc}{5}\bitsetSet{abc}{7}|\\ -% |\bitsetGetHex{abc}{16}| $\rightarrow$ |00A2| -% \end{quote} -% Macro \cs{bitsetGetHex} uses the uppercase letters |A| to |F|. -% The catcode of the letters is one of 11 (letter) or 12 (other). -% -% \begin{declcs}{bitsetGetDec} \M{BitSet} -% \end{declcs} -% Macro \cs{bitsetGetDec} returns the bit set \meta{BitSet} as -% decimal number. The returned number can be larger than -% \TeX's number limit of $2^{31}-1$. -% -% \subsubsection{Logical operators}\label{sec:log} -% -% \begin{declcs}{bitsetAnd} \M{BitSet A} \M{BitSet B} -% \end{declcs} -% $A_{\text{new}} \mathrel{\mathop{:}}= A_{\text{old}} -% \mathbin{\text{and}} B \qquad (\forall\, \text{bits})$ -% -% \begin{declcs}{bitsetAndNot} \M{BitSet A} \M{BitSet B} -% \end{declcs} -% $A_{\text{new}} \mathrel{\mathop{:}}= A_{\text{old}} -% \mathbin{\text{and}} (\text{not}\,B) \qquad (\forall\, \text{bits})$ -% -% \begin{declcs}{bitsetOr} \M{BitSet A} \M{BitSet B} -% \end{declcs} -% $A_{\text{new}} \mathrel{\mathop{:}}= A_{\text{old}} -% \mathbin{\text{or}} B \qquad (\forall\, \text{bits})$ -% -% \begin{declcs}{bitsetXor} \M{BitSet A} \M{BitSet B} -% \end{declcs} -% $A_{\text{new}} \mathrel{\mathop{:}}= A_{\text{old}} -% \mathbin{\text{xor}} B \qquad (\forall\, \text{bits})$ -% -% \subsubsection{Shifting}\label{sec:shift} -% -% \begin{declcs}{bitsetShiftLeft} \M{BitSet} \M{ShiftAmount}\\ -% \cs{bitsetShiftRight} \M{BitSet} \M{ShiftAmount} -% \end{declcs} -% A left shift by one is a multiplication by two, thus left shifting -% moves the flags to higher positions. The new created low positions -% are filled by zeros. -% -% A right shift is the opposite, dividing by two, movint the bits -% to lower positions. The number will become smaller, the lowest -% bits are lost. -% -% If the \meta{ShiftAmount} is negative, it reverts the meaning of -% the shift operation. A left shift becomes a right shift. -% A \meta{ShiftAmount} of zero is ignored. -% -% \subsubsection{Bit manipulation}\label{sec:bitman} -% -% \begin{declcs}{bitsetClear} \M{BitSet} \M{Index}\\ -% \cs{bitsetSet} \M{BitSet} \M{Index}\\ -% \cs{bitsetFlip} \M{BitSet} \M{Index} -% \end{declcs} -% This macros manipulate a single bit in \meta{BitSet} addressed -% by \cs{Index}. Macro \cs{bitsetClear} disables the bit, -% \cs{bitsetSet} enables it and \cs{bitsetFlip} reverts the current -% setting of the bit. -% -% \begin{declcs}{bitsetSetValue} \M{BitSet} \M{Index} \M{Bit} -% \end{declcs} -% Macro \cs{bitsetSetValue} puts bit \meta{Bit} at position \meta{Index} -% in bit set \meta{BitSet}. \meta{Bit} must be a valid \TeX\ number -% equals to zero (disabled/cleared) or one (enabled/set). -% -% \subsubsection{Bit retrieval}\label{sec:bitret} -% -% \begin{declcs}{bitsetGet} \M{BitSet} \M{Index} -% \end{declcs} -% Macro \cs{bitsetGet} extracts the status of the bit at -% position \meta{Index} in bit set \meta{BitSet}. -% Digit |1| is returned if the bit is set/enabled. If the -% bit is cleared/disabled and in cases of an undefined bitset or -% an index number out of range the return value is |0|. -% -% \begin{declcs}{bitsetNextClearBit} \M{BitSet} \M{Index} -% \end{declcs} -% Starting at position \meta{Index} (inclusive) the bits -% are inspected. The first position without a set bit is returned. -% Possible results are decimal numbers: \meta{Index}, \meta{Index} + 1, -% \dots, ($\infty$) -% -% \begin{declcs}{bitsetNextSetBit} \M{BitSet} \M{Index} -% \end{declcs} -% Starting at position \meta{Index} (inclusive) the bits are -% inspected and the index position of the first found set bit -% is returned. If there isn't such a bit, then the result is -% |-1|. In summary possible results are decimal numbers: -% |-1|, \meta{Index}, \meta{Index} + 1, \dots, ($\infty$) -% -% \begin{declcs}{bitsetGetSetBitList} \M{BitSet} -% \end{declcs} -% Macro \cs{bitsetGetSetBitList} is an application for -% \cs{bitsetNextSetBit}. The set bits are iterated and -% returned as comma separated list of index positions -% in increasing order. The list is empty in case of -% an empty bit set. -% -% \subsubsection{Bit set properties}\label{sec:prop} -% -% \begin{declcs}{bitsetSize} \M{BitSet} -% \end{declcs} -% Macro \cs{bitsetSize} returns number of bits in use. -% It is the same as the index number of the highest set/enabled bit -% incremented by one. -% -% \begin{declcs}{bitsetCardinality} \M{BitSet} -% \end{declcs} -% Macro \cs{bitsetCardinality} counts the number of set/enabled bits. -% -% \subsubsection{Queries}\label{sec:query} -% -% Also the query procedures are expandable. They ask for a piece -% of information about a bit set and execute code depending -% on the answer. -% -% \begin{declcs}{bitsetIsDefined} \M{BitSet} \M{Then} \M{Else} -% \end{declcs} -% If the bit set with the name \meta{BitSet} exists the code -% given in \meta{Then} is executed, otherwise \meta{Else} is used. -% -% \begin{declcs}{bitsetIsEmpty} \M{BitSet} \M{Then} \M{Else} -% \end{declcs} -% If the bit set \meta{BitSet} exists and at least one bit -% is set/enabled, the code in \meta{Then} is executed, -% \meta{Else} otherwise. -% -% \begin{declcs}{bitsetEquals} \M{BitSet A} \M{BitSet B} \M{Then} \M{Else} -% \end{declcs} -% Both bit sets are equal if and only if either both are undefined -% or both are defined and represents the same bit values at the -% same positions. Thus this definition is reflexive, symmeric, -% and transitive, enough for an equivalent relation. -% -% \begin{declcs}{bitsetIntersects} \M{BitSet A} \M{BitSet B} \M{Then} \M{Else} -% \end{declcs} -% If and only if \meta{BitSet A} and \meta{BitSet B} have -% at least one bit at the same position that is set, then -% code part \meta{Then} is executed. -% -% \begin{declcs}{bitsetQuery} \M{BitSet} \M{Index} \M{Then} \M{Else} -% \end{declcs} -% It's just a wrapper for \cs{bitsetGet}. If the bit at position -% \meta{Index} is enabled, code \meta{Then} is called. -% -% \StopEventually{ -% } -% -% \section{Implementation} -% -% The internal format of a bit set is quite simple, a sequence -% of digits |0| and |1|. The least significant bit is left. -% A bit set without any flag set is encoded by |0|. Also -% undefined bit sets are treated that way. After the -% highest bit that is set there are no further zeroes. -% A regular expression of valid bit sets values: -% \begin{quote} -% |0|\string||[01]*1| -% \end{quote} -% -% \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\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode35=6 % # - \catcode39=12 % ' - \catcode44=12 % , - \catcode45=12 % - - \catcode46=12 % . - \catcode58=12 % : - \catcode64=11 % @ - \catcode123=1 % { - \catcode125=2 % } - \expandafter\let\expandafter\x\csname ver@bitset.sty\endcsname - \ifx\x\relax % plain-TeX, first loading - \else - \def\empty{}% - \ifx\x\empty % LaTeX, first loading, - % variable is initialized, but \ProvidesPackage not yet seen - \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{bitset}{The package is already loaded}% - \aftergroup\endinput - \fi - \fi -\endgroup% -% \end{macrocode} -% Package identification: -% \begin{macrocode} -\begingroup\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode35=6 % # - \catcode39=12 % ' - \catcode40=12 % ( - \catcode41=12 % ) - \catcode44=12 % , - \catcode45=12 % - - \catcode46=12 % . - \catcode47=12 % / - \catcode58=12 % : - \catcode64=11 % @ - \catcode91=12 % [ - \catcode93=12 % ] - \catcode123=1 % { - \catcode125=2 % } - \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\@undefined - \xdef#1{#3}% - \fi - \ifx#1\relax - \xdef#1{#3}% - \fi - }% - \fi -\expandafter\x\csname ver@bitset.sty\endcsname -\ProvidesPackage{bitset}% - [2016/05/16 v1.2 Handle bit-vector datatype (HO)]% -% \end{macrocode} -% -% \subsection{Catcodes} -% -% \begin{macrocode} -\begingroup\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode123=1 % { - \catcode125=2 % } - \catcode64=11 % @ - \def\x{\endgroup - \expandafter\edef\csname BitSet@AtEnd\endcsname{% - \endlinechar=\the\endlinechar\relax - \catcode13=\the\catcode13\relax - \catcode32=\the\catcode32\relax - \catcode35=\the\catcode35\relax - \catcode61=\the\catcode61\relax - \catcode64=\the\catcode64\relax - \catcode123=\the\catcode123\relax - \catcode125=\the\catcode125\relax - }% - }% -\x\catcode61\catcode48\catcode32=10\relax% -\catcode13=5 % ^^M -\endlinechar=13 % -\catcode35=6 % # -\catcode64=11 % @ -\catcode123=1 % { -\catcode125=2 % } -\def\TMP@EnsureCode#1#2{% - \edef\BitSet@AtEnd{% - \BitSet@AtEnd - \catcode#1=\the\catcode#1\relax - }% - \catcode#1=#2\relax -} -\TMP@EnsureCode{33}{12}% ! -\TMP@EnsureCode{39}{12}% ' -\TMP@EnsureCode{40}{12}% ( -\TMP@EnsureCode{41}{12}% ) -\TMP@EnsureCode{42}{12}% * -\TMP@EnsureCode{43}{12}% + -\TMP@EnsureCode{44}{12}% , -\TMP@EnsureCode{45}{12}% - -\TMP@EnsureCode{46}{12}% . -\TMP@EnsureCode{47}{12}% / -\TMP@EnsureCode{58}{11}% : (letter!) -\TMP@EnsureCode{60}{12}% < -\TMP@EnsureCode{62}{12}% > -\TMP@EnsureCode{63}{14}% ? (comment!) -\TMP@EnsureCode{91}{12}% [ -\TMP@EnsureCode{93}{12}% ] -\TMP@EnsureCode{96}{12}% ` -\edef\BitSet@AtEnd{\BitSet@AtEnd\noexpand\endinput} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname BitSet@TestMode\endcsname\relax -\else - \catcode63=9 % ? (ignore) -\fi -? \let\BitSet@@TestMode\BitSet@TestMode -% \end{macrocode} -% -% \subsection{Package loading} -% -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname RequirePackage\endcsname\relax - \def\TMP@RequirePackage#1[#2]{% - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname ver@#1.sty\endcsname\relax - \input #1.sty\relax - \fi - }% - \TMP@RequirePackage{infwarerr}[2007/09/09]% - \TMP@RequirePackage{intcalc}[2007/09/27]% - \TMP@RequirePackage{bigintcalc}[2007/09/27]% -\else - \RequirePackage{infwarerr}[2007/09/09]% - \RequirePackage{intcalc}[2007/09/27]% - \RequirePackage{bigintcalc}[2007/09/27]% -\fi -% \end{macrocode} -% -% \subsection{Help macros} -% -% \subsubsection{Number constant} -% -% \begin{macro}{\BitSet@MaxSize} -% \begin{macrocode} -\def\BitSet@MaxSize{2147483647}% -% \end{macrocode} -% \end{macro} -% -% \subsubsection{General basic macros} -% -% \begin{macro}{\BitSet@Empty} -% \begin{macrocode} -\def\BitSet@Empty{} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@FirstOfOne} -% \begin{macrocode} -\def\BitSet@FirstOfOne#1{#1} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Gobble} -% \begin{macrocode} -\def\BitSet@Gobble#1{} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@FirstOfTwo} -% \begin{macrocode} -\def\BitSet@FirstOfTwo#1#2{#1} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@SecondOfTwo} -% \begin{macrocode} -\def\BitSet@SecondOfTwo#1#2{#2} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\BitSet@Space} -% \begin{macrocode} -\def\BitSet@Space{ } -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@ZapSpace} -% \begin{macrocode} -\def\BitSet@ZapSpace#1 #2{% - #1% - \ifx\BitSet@Empty#2% - \else - \expandafter\BitSet@ZapSpace - \fi - #2% -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Tail recursion} -% -% \begin{macro}{\BitSet@Fi} -% \begin{macrocode} -\let\BitSet@Fi\fi -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@AfterFi} -% \begin{macrocode} -\def\BitSet@AfterFi#1#2\BitSet@Fi{\fi#1} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@AfterFiFi} -% \begin{macrocode} -\def\BitSet@AfterFiFi#1#2\BitSet@Fi{\fi\fi#1}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@AfterFiFiFi} -% \begin{macrocode} -\def\BitSet@AfterFiFiFi#1#2\BitSet@Fi{\fi\fi\fi#1}% -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Check macros} -% -% \begin{macro}{\BitSet@IfUndefined} -% \begin{macrocode} -\def\BitSet@IfUndefined#1{% - \expandafter\ifx\csname BS@#1\endcsname\relax - \expandafter\BitSet@FirstOfTwo - \else - \expandafter\BitSet@SecondOfTwo - \fi -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\BitSet@CheckIndex} -% |#1|: continuation code\\ -% |#2|: BitSet\\ -% |#3|: Index -% \begin{macrocode} -\def\BitSet@CheckIndex#1#2#3{% - \BitSet@IfUndefined{#2}{\bitsetReset{#2}}{}% - \expandafter\expandafter\expandafter\BitSet@@CheckIndex - \intcalcNum{#3}!% - {#2}{#1}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@CheckIndex} -% |#1|: plain Index\\ -% |#2|: BitSet\\ -% |#3|: continuation code -% \begin{macrocode} -\def\BitSet@@CheckIndex#1!#2#3{% - \ifnum#1<0 % - \BitSet@AfterFi{% - \@PackageError{bitset}{% - Invalid negative index (#1)% - }\@ehc - }% - \else - \BitSet@AfterFi{% - #3{#2}{#1}% - }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Miscellaneous}\label{src:misc} -% -% \begin{macro}{\bitsetReset} -% \begin{macrocode} -\def\bitsetReset#1{% - \expandafter\def\csname BS@#1\endcsname{0}% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\bitsetLet} -% \begin{macrocode} -\def\bitsetLet#1#2{% - \BitSet@IfUndefined{#2}{% - \bitsetReset{#1}% - }{% - \expandafter\let\csname BS@#1\expandafter\endcsname - \csname BS@#2\endcsname - }% -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Import}\label{src:import} -% -% \subsubsection{From binary number} -% -% \begin{macro}{\bitsetSetBin} -% \begin{macrocode} -\def\bitsetSetBin#1#2{% - \edef\BitSet@Temp{#2}% - \edef\BitSet@Temp{% - \expandafter\expandafter\expandafter\BitSet@ZapSpace - \expandafter\BitSet@Temp\BitSet@Space\BitSet@Empty - }% - \edef\BitSet@Temp{% - \expandafter\BitSet@KillZeros\BitSet@Temp\BitSet@Empty - }% - \ifx\BitSet@Temp\BitSet@Empty - \expandafter\let\csname BS@#1\endcsname\BitSet@Zero - \else - \expandafter\edef\csname BS@#1\endcsname{% - \expandafter\BitSet@Reverse\BitSet@Temp!% - }% - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@KillZeros} -% \begin{macrocode} -\def\BitSet@KillZeros#1{% - \ifx#10% - \expandafter\BitSet@KillZeros - \else - #1% - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Reverse} -% \begin{macrocode} -\def\BitSet@Reverse#1#2!{% - \ifx\\#2\\% - #1% - \else - \BitSet@AfterFi{% - \BitSet@Reverse#2!#1% - }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{From octal/hex number} -% -% \begin{macro}{\bitsetSetOct} -% \begin{macrocode} -\def\bitsetSetOct{% - \BitSet@SetOctHex\BitSet@FromFirstOct -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\bitsetSetHex} -% \begin{macrocode} -\def\bitsetSetHex{% - \BitSet@SetOctHex\BitSet@FromFirstHex -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@SetOctHex} -% \begin{macrocode} -\def\BitSet@SetOctHex#1#2#3{% - \edef\BitSet@Temp{#3}% - \edef\BitSet@Temp{% - \expandafter\expandafter\expandafter\BitSet@ZapSpace - \expandafter\BitSet@Temp\BitSet@Space\BitSet@Empty - }% - \edef\BitSet@Temp{% - \expandafter\BitSet@KillZeros\BitSet@Temp\BitSet@Empty - }% - \ifx\BitSet@Temp\BitSet@Empty - \expandafter\let\csname BS@#2\endcsname\BitSet@Zero - \else - \edef\BitSet@Temp{% - \expandafter#1\BitSet@Temp!% - }% - \ifx\BitSet@Temp\BitSet@Empty - \expandafter\let\csname BS@#2\endcsname\BitSet@Zero - \else - \expandafter\edef\csname BS@#2\endcsname{% - \expandafter\BitSet@Reverse\BitSet@Temp!% - }% - \fi - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@FromFirstOct} -% \begin{macrocode} -\def\BitSet@FromFirstOct#1{% - \ifx#1!% - \else - \ifcase#1 \BitSet@AfterFiFi\BitSet@FromFirstOct - \or 1% - \or 10% - \or 11% - \or 100% - \or 101% - \or 110% - \or 111% - \else \BitSetError:WrongOctalDigit% - \fi - \expandafter\BitSet@FromOct - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@FromOct} -% \begin{macrocode} -\def\BitSet@FromOct#1{% - \ifx#1!% - \else - \ifcase#1 000% - \or 001% - \or 010% - \or 011% - \or 100% - \or 101% - \or 110% - \or 111% - \else \BitSetError:WrongOctalDigit% - \fi - \expandafter\BitSet@FromOct - \fi -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\BitSet@FromFirstHex} -% \begin{macrocode} -\def\BitSet@FromFirstHex#1{% - \ifx#1!% - \else - \ifx#10% - \BitSet@AfterFiFi\BitSet@FromFirstHex - \fi - \expandafter\ifx\csname BitSet@Hex#1\endcsname\relax - \BitSetError:InvalidHexDigit% - \else - \expandafter\expandafter\expandafter\BitSet@KillZeros - \csname BitSet@Hex#1\endcsname - \fi - \expandafter\BitSet@FromHex - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@FromHex} -% \begin{macrocode} -\def\BitSet@FromHex#1{% - \ifx#1!% - \else - \expandafter\ifx\csname BitSet@Hex#1\endcsname\relax - \BitSetError:InvalidHexDigit% - \else - \csname BitSet@Hex#1\endcsname - \fi - \expandafter\BitSet@FromHex - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Hex[0..F]} -% \begin{macrocode} -\def\BitSet@Temp#1{% - \expandafter\def\csname BitSet@Hex#1\endcsname -} -\BitSet@Temp 0{0000}% -\BitSet@Temp 1{0001}% -\BitSet@Temp 2{0010}% -\BitSet@Temp 3{0011}% -\BitSet@Temp 4{0100}% -\BitSet@Temp 5{0101}% -\BitSet@Temp 6{0110}% -\BitSet@Temp 7{0111}% -\BitSet@Temp 8{1000}% -\BitSet@Temp 9{1001}% -\BitSet@Temp A{1010}% -\BitSet@Temp B{1011}% -\BitSet@Temp C{1100}% -\BitSet@Temp D{1101}% -\BitSet@Temp E{1110}% -\BitSet@Temp F{1111}% -\BitSet@Temp a{1010}% -\BitSet@Temp b{1011}% -\BitSet@Temp c{1100}% -\BitSet@Temp d{1101}% -\BitSet@Temp e{1110}% -\BitSet@Temp f{1111}% -% \end{macrocode} -% \end{macro} -% -% \subsubsection{From decimal number} -% -% \begin{macro}{\bitsetSetDec} -% \begin{macrocode} -\def\bitsetSetDec#1#2{% - \edef\BitSet@Temp{#2}% - \edef\BitSet@Temp{% - \expandafter\expandafter\expandafter\BitSet@ZapSpace - \expandafter\BitSet@Temp\BitSet@Space\BitSet@Empty - }% - \edef\BitSet@Temp{% - \expandafter\BitSet@KillZeros\BitSet@Temp\BitSet@Empty - }% - \ifx\BitSet@Temp\BitSet@Empty - \expandafter\let\csname BS@#1\endcsname\BitSet@Zero - \else - \ifcase\bigintcalcSgn{\BitSet@Temp} % - \expandafter\let\csname BS@#1\endcsname\BitSet@Zero - \or - \ifnum\bigintcalcCmp\BitSet@Temp\BitSet@MaxSize>0 % - \expandafter\edef\csname BS@#1\endcsname{% - \expandafter\BitSet@SetDecBig\BitSet@Temp!% - }% - \else - \expandafter\edef\csname BS@#1\endcsname{% - \expandafter\BitSet@SetDec\BitSet@Temp!% - }% - \fi - \else - \@PackageError{bitset}{% - Bit sets cannot be negative% - }\@ehc - \fi - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@SetDecBig} -% \begin{macrocode} -\def\BitSet@SetDecBig#1#2#3#4#5#6#7#8#9!{% - \ifx\\#9\\% - \BitSet@SetDec#1#2#3#4#5#6#7#8!% - \else - \ifcase\BigIntCalcOdd#1#2#4#5#6#7#8#9! % - 0% - \or - 1% -? \else\BitSetError:ThisCannotHappen% - \fi - \BitSet@AfterFi{% - \expandafter\expandafter\expandafter\BitSet@SetDecBig - \BigIntCalcShr#1#2#3#4#5#6#7#8#9!!% - }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@SetDec} -% \begin{macrocode} -\def\BitSet@SetDec#1!{% - \ifcase#1 % - \or 1% - \else - \ifodd#1 % - 1% - \else - 0% - \fi - \BitSet@AfterFi{% - \expandafter\expandafter\expandafter\BitSet@SetDec - \IntCalcShr#1!!% - }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Export}\label{src:export} -% -% \subsubsection{To binary number} -% -% \begin{macro}{\bitsetGetBin} -% \begin{macrocode} -\def\bitsetGetBin#1#2{% - \romannumeral0% - \expandafter\expandafter\expandafter\BitSet@@GetBin - \intcalcNum{#2}!{#1}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@GetBin} -% \begin{macrocode} -\def\BitSet@@GetBin#1!#2{% - \BitSet@IfUndefined{#2}{% - \ifnum#1>1 % - \BitSet@AfterFi{% - \expandafter\expandafter\expandafter\BitSet@Fill - \IntCalcDec#1!!0% - }% - \else - \BitSet@AfterFi{ 0}% - \BitSet@Fi - }{% - \expandafter\expandafter\expandafter\BitSet@NumBinRev - \expandafter\expandafter\expandafter1% - \expandafter\expandafter\expandafter!% - \csname BS@#2\endcsname!!#1!% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Fill} -% |#1|: number of leading digits |0|\\ -% |#2|: result -% \begin{macrocode} -\def\BitSet@Fill#1!{% - \ifnum#1>0 % - \BitSet@AfterFi{% - \expandafter\expandafter\expandafter\BitSet@Fill - \IntCalcDec#1!!0% - }% - \else - \BitSet@AfterFi{ }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\BitSet@NumBinRev} -% |#1|: bit counter (including |#2|)\\ -% |#2#3|: reverted number\\ -% |#4|: result\\ -% |#5|: min size -% \begin{macrocode} -\def\BitSet@NumBinRev#1!#2#3!{% - \ifx\\#3\\% - \BitSet@AfterFi{% - \BitSet@NumBinFill#1!#2% - }% - \else - \BitSet@AfterFi{% - \expandafter\expandafter\expandafter\BitSet@NumBinRev - \IntCalcInc#1!!#3!#2% - }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@NumBinFill} -% \begin{macrocode} -\def\BitSet@NumBinFill#1!#2!#3!{% - \ifnum#3>#1 % - \BitSet@AfterFi{% - \expandafter\expandafter\expandafter\BitSet@Fill - \IntCalcSub#3!#1!!#2% - }% - \else - \BitSet@AfterFi{ #2}% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{To octal/hexadecimal number} -% -% \begin{macro}{\bitsetGetOct} -% \begin{macrocode} -\def\bitsetGetOct#1#2{% - \romannumeral0% - \bitsetIsEmpty{#1}{% - \expandafter\expandafter\expandafter\BitSet@@GetOctHex - \intcalcNum{#2}!3!230% - }{% - \expandafter\expandafter\expandafter\BitSet@@GetOct - \expandafter\expandafter\expandafter1% - \expandafter\expandafter\expandafter!% - \expandafter\expandafter\expandafter!% - \csname BS@#1\endcsname00% - \BitSet@Empty\BitSet@Empty\BitSet@Empty!{#2}% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\bitsetGetHex} -% \begin{macrocode} -\def\bitsetGetHex#1#2{% - \romannumeral0% - \bitsetIsEmpty{#1}{% - \expandafter\expandafter\expandafter\BitSet@@GetOctHex - \intcalcNum{#2}!4!340% - }{% - \expandafter\expandafter\expandafter\BitSet@@GetHex - \expandafter\expandafter\expandafter1% - \expandafter\expandafter\expandafter!% - \expandafter\expandafter\expandafter!% - \csname BS@#1\endcsname000% - \BitSet@Empty\BitSet@Empty\BitSet@Empty\BitSet@Empty!{#2}% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@GetOct} -% |#1|: number of digits\\ -% |#2|: result\\ -% |#3#4#5|: bits -% \begin{macrocode} -\def\BitSet@@GetOct#1!#2!#3#4#5{% - \ifx#5\BitSet@Empty - \BitSet@AfterFi{% - \expandafter\expandafter\expandafter\BitSet@GetOctHex - \IntCalcDec#1!!#2!23% - }% - \else - \BitSet@AfterFi{% - \expandafter\expandafter\expandafter\BitSet@@GetOct - \number\IntCalcInc#1!\expandafter\expandafter\expandafter!% - \csname BitSet@Oct#5#4#3\endcsname#2!% - }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Oct[000..111]} -% \begin{macrocode} -\def\BitSet@Temp#1#2#3#4{% - \expandafter\def\csname BitSet@Oct#1#2#3\endcsname{#4}% -} -\BitSet@Temp0000% -\BitSet@Temp0011% -\BitSet@Temp0102% -\BitSet@Temp0113% -\BitSet@Temp1004% -\BitSet@Temp1015% -\BitSet@Temp1106% -\BitSet@Temp1117% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@GetHex} -% |#1|: number of digits\\ -% |#2|: result\\ -% |#3#4#5#6|: bits -% \begin{macrocode} -\def\BitSet@@GetHex#1!#2!#3#4#5#6{% - \ifx#6\BitSet@Empty - \BitSet@AfterFi{% - \expandafter\expandafter\expandafter\BitSet@GetOctHex - \IntCalcDec#1!!#2!34% - }% - \else - \BitSet@AfterFi{% - \expandafter\expandafter\expandafter\BitSet@@GetHex - \number\IntCalcInc#1!\expandafter\expandafter\expandafter!% - \csname BitSet@Hex#6#5#4#3\endcsname#2!% - }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Hex[0000..1111]} -% \begin{macrocode} -\def\BitSet@Temp#1#2#3#4#5{% - \expandafter\def\csname BitSet@Hex#1#2#3#4\endcsname{#5}% -} -\BitSet@Temp00000% -\BitSet@Temp00011% -\BitSet@Temp00102% -\BitSet@Temp00113% -\BitSet@Temp01004% -\BitSet@Temp01015% -\BitSet@Temp01106% -\BitSet@Temp01117% -\BitSet@Temp10008% -\BitSet@Temp10019% -\BitSet@Temp1010A% -\BitSet@Temp1011B% -\BitSet@Temp1100C% -\BitSet@Temp1101D% -\BitSet@Temp1110E% -\BitSet@Temp1111F% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@GetOctHex} -% Leading zeros $ (|#4| - |#1| * 3 + 2)/3 $ if $ |#4| > |#1| * 3$\\ -% |#1|: digit size\\ -% |#2|: result\\ -% |#3|: bits per digit - 1\\ -% |#4|: bits per digit -% |#5|: garbage\\ -% |#6|: min size -% \begin{macrocode} -\def\BitSet@GetOctHex#1!#2!#3#4#5!#6{% - \expandafter\BitSet@@GetOctHex - \number\intcalcNum{#6}\expandafter\expandafter\expandafter!% - \IntCalcMul#1!#4!!#3#4#2% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@GetOctHex} -% |#1|: plain min size\\ -% |#2|: digits * (bits per digit)\\ -% |#3|: bits per digit - 1\\ -% |#4|: bits per digit -% \begin{macrocode} -\def\BitSet@@GetOctHex#1!#2!#3#4{% - \ifnum#1>#2 % - \BitSet@AfterFi{% - \expandafter\expandafter\expandafter\expandafter - \expandafter\expandafter\expandafter\BitSet@Fill - \expandafter\IntCalcDiv\number - \expandafter\expandafter\expandafter\IntCalcAdd - \IntCalcSub#1!#2!!#3!!#4!!% - }% - \else - \BitSet@AfterFi{ }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{To decimal number} -% -% \begin{macro}{\bitsetGetDec} -% \begin{macrocode} -\def\bitsetGetDec#1{% - \romannumeral0% - \BitSet@IfUndefined{#1}{ 0}{% - \expandafter\expandafter\expandafter\BitSet@GetDec - \csname BS@#1\endcsname!% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@GetDec} -% \begin{macrocode} -\def\BitSet@GetDec#1#2!{% - \ifx\\#2\\% - \BitSet@AfterFi{ #1}% - \else - \BitSet@AfterFi{% - \BitSet@@GetDec2!#1!#2!% - }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@GetDec} -% |#1|: power of two\\ -% |#2|: result\\ -% |#3#4|: number -% \begin{macrocode} -\def\BitSet@@GetDec#1!#2!#3#4!{% - \ifx\\#4\\% - \ifx#31% - \BitSet@AfterFiFi{% - \expandafter\expandafter\expandafter\BitSet@Space - \IntCalcAdd#1!#2!% - }% - \else - \BitSet@AfterFiFi{ #2}% - \fi - \else - \ifx#31% - \BitSet@AfterFiFi{% - \csname BitSet@N#1% - \expandafter\expandafter\expandafter\endcsname - \IntCalcAdd#1!#2!!#4!% - }% - \else - \BitSet@AfterFiFi{% - \csname BitSet@N#1\endcsname#2!#4!% - }% - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@N[1,2,4,...]} -% \begin{macrocode} -\def\BitSet@Temp#1#2{% - \expandafter\def\csname BitSet@N#1\endcsname{% - \BitSet@@GetDec#2!% - }% -} -\BitSet@Temp{1}{2} -\BitSet@Temp{2}{4} -\BitSet@Temp{4}{8} -\BitSet@Temp{8}{16} -\BitSet@Temp{16}{32} -\BitSet@Temp{32}{64} -\BitSet@Temp{64}{128} -\BitSet@Temp{128}{256} -\BitSet@Temp{256}{512} -\BitSet@Temp{512}{1024} -\BitSet@Temp{1024}{2048} -\BitSet@Temp{2048}{4096} -\BitSet@Temp{4096}{8192} -\BitSet@Temp{8192}{16384} -\BitSet@Temp{16384}{32768} -\BitSet@Temp{32768}{65536} -\BitSet@Temp{65536}{131072} -\BitSet@Temp{131072}{262144} -\BitSet@Temp{262144}{524288} -\BitSet@Temp{524288}{1048576} -\BitSet@Temp{1048576}{2097152} -\BitSet@Temp{2097152}{4194304} -\BitSet@Temp{4194304}{8388608} -\BitSet@Temp{8388608}{16777216} -\BitSet@Temp{16777216}{33554432} -\BitSet@Temp{33554432}{67108864} -\BitSet@Temp{67108864}{134217728} -\BitSet@Temp{134217728}{268435456} -\BitSet@Temp{268435456}{536870912} -\BitSet@Temp{536870912}{1073741824} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@N1073741824} -% \begin{macrocode} -\expandafter\def\csname BitSet@N1073741824\endcsname{% - \BitSet@GetDecBig2147483648!% -}% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\BitSet@GetDecBig} -% |#1|: current power of two\\ -% |#2|: result\\ -% |#3#4|: number -% \begin{macrocode} -\def\BitSet@GetDecBig#1!#2!#3#4!{% - \ifx\\#4\\% - \ifx#31% - \BitSet@AfterFiFi{% - \expandafter\expandafter\expandafter\BitSet@Space - \BigIntCalcAdd#1!#2!% - }% - \else - \BitSet@AfterFiFi{ #2}% - \fi - \else - \ifx#31% - \BitSet@AfterFiFi{% - \expandafter\expandafter\expandafter\BitSet@@GetDecBig - \BigIntCalcAdd#1!#2!!#1!#4!% - }% - \else - \BitSet@AfterFiFi{% - \expandafter\expandafter\expandafter\BitSet@GetDecBig - \BigIntCalcShl#1!!#2!#4!% - }% - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@GetDecBig} -% |#1|: result\\ -% |#2|: power of two\\ -% |#3#4|: number -% \begin{macrocode} -\def\BitSet@@GetDecBig#1!#2!{% - \expandafter\expandafter\expandafter\BitSet@GetDecBig - \BigIntCalcShl#2!!#1!% -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Logical operators}\label{src:log} -% -% \subsubsection{\cs{bitsetAnd}} -% -% \begin{macro}{\bitsetAnd} -% Decision table for \cs{bitsetAnd}: -% \begin{quote} -% \begin{tabular}{l|l|l|l|} -% & undef(B) & empty(B) & cardinality(B)$>$0\\ -% \hline -% undef(A) & A := empty & A := empty & A := empty\\ -% \hline -% empty(A) & & &\\ -% \hline -% cardinality(A)$>$0 & A := empty & A := empty & A \&= B\\ -% \hline -% \end{tabular} -% \end{quote} -% \begin{macrocode} -\def\bitsetAnd#1#2{% - \bitsetIsEmpty{#1}{% - \bitsetReset{#1}% - }{% - \bitsetIsEmpty{#2}{% - \bitsetReset{#1}% - }{% - \expandafter\edef\csname BS@#1\endcsname{% - \expandafter\expandafter\expandafter\BitSet@And - \csname BS@#1\expandafter\expandafter\expandafter\endcsname - \expandafter\expandafter\expandafter!% - \csname BS@#2\endcsname!!% - }% - \expandafter\ifx\csname BS@#1\endcsname\BitSet@Empty - \bitsetReset{#1}% - \fi - }% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@And} -% \begin{macrocode} -\def\BitSet@And#1#2!#3#4!#5!{% - \ifx\\#2\\% - \ifnum#1#3=11 #51\fi - \else - \ifx\\#4\\% - \ifnum#1#3=11 #51\fi - \else - \ifnum#1#3=11 % - #51% - \BitSet@AfterFiFiFi{% - \BitSet@And#2!#4!!% - }% - \else - \BitSet@AfterFiFiFi{% - \BitSet@And#2!#4!#50!% - }% - \fi - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{\cs{bitsetAndNot}} -% -% \begin{macro}{\bitsetAndNot} -% Decision table for \cs{bitsetAndNot}: -% \begin{quote} -% \begin{tabular}{l|l|l|l|} -% & undef(B) & empty(B) & cardinality(B)$>$0\\ -% \hline -% undef(A) & A := empty & A := empty & A := empty\\ -% \hline -% empty(A) & & &\\ -% \hline -% cardinality(A)$>$0 & & & A \&= !B\\ -% \hline -% \end{tabular} -% \end{quote} -% \begin{macrocode} -\def\bitsetAndNot#1#2{% - \bitsetIsEmpty{#1}{% - \bitsetReset{#1}% - }{% - \bitsetIsEmpty{#2}{% - }{% - \expandafter\edef\csname BS@#1\endcsname{% - \expandafter\expandafter\expandafter\BitSet@AndNot - \csname BS@#1\expandafter\expandafter\expandafter\endcsname - \expandafter\expandafter\expandafter!% - \csname BS@#2\endcsname!!% - }% - \expandafter\ifx\csname BS@#1\endcsname\BitSet@Empty - \bitsetReset{#1}% - \fi - }% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@AndNot} -% \begin{macrocode} -\def\BitSet@AndNot#1#2!#3#4!#5!{% - \ifx\\#2\\% - \ifnum#1#3=10 #51\fi - \else - \ifx\\#4\\% - #5% - \ifnum#1#3=10 1\else 0\fi - #2% - \else - \ifnum#1#3=10 % - #51% - \BitSet@AfterFiFiFi{% - \BitSet@AndNot#2!#4!!% - }% - \else - \BitSet@AfterFiFiFi{% - \BitSet@AndNot#2!#4!#50!% - }% - \fi - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{\cs{bitsetOr}} -% -% \begin{macro}{\bitsetOr} -% Decision table for \cs{bitsetOr}: -% \begin{quote} -% \begin{tabular}{l|l|l|l|} -% & undef(B) & empty(B) & cardinality(B)$>$0\\ -% \hline -% undef(A) & A := empty & A := empty & A := B\\ -% \hline -% empty(A) & & & A := B\\ -% \hline -% cardinality(A)$>$0 & & & A \string|= B\\ -% \hline -% \end{tabular} -% \end{quote} -% \begin{macrocode} -\def\bitsetOr#1#2{% - \bitsetIsEmpty{#2}{% - \BitSet@IfUndefined{#1}{\bitsetReset{#1}}{}% - }{% - \bitsetIsEmpty{#1}{% - \expandafter\let\csname BS@#1\expandafter\endcsname - \csname BS@#2\endcsname - }{% - \expandafter\edef\csname BS@#1\endcsname{% - \expandafter\expandafter\expandafter\BitSet@Or - \csname BS@#1\expandafter\expandafter\expandafter\endcsname - \expandafter\expandafter\expandafter!% - \csname BS@#2\endcsname!% - }% - }% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Or} -% \begin{macrocode} -\def\BitSet@Or#1#2!#3#4!{% - \ifnum#1#3>0 1\else 0\fi - \ifx\\#2\\% - #4% - \else - \ifx\\#4\\% - #2% - \else - \BitSet@AfterFiFi{% - \BitSet@Or#2!#4!% - }% - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{\cs{bitsetXor}} -% -% \begin{macro}{\bitsetXor} -% Decision table for \cs{bitsetXor}: -% \begin{quote} -% \begin{tabular}{l|l|l|l|} -% & undef(B) & empty(B) & cardinality(B)$>$0\\ -% \hline -% undef(A) & A := empty & A := empty & A := B\\ -% \hline -% empty(A) & & & A := B\\ -% \hline -% cardinality(A)$>$0 & & & A \string^= B\\ -% \hline -% \end{tabular} -% \end{quote} -% \begin{macrocode} -\def\bitsetXor#1#2{% - \bitsetIsEmpty{#2}{% - \BitSet@IfUndefined{#1}{\bitsetReset{#1}}{}% - }{% - \bitsetIsEmpty{#1}{% - \expandafter\let\csname BS@#1\expandafter\endcsname - \csname BS@#2\endcsname - }{% - \expandafter\edef\csname BS@#1\endcsname{% - \expandafter\expandafter\expandafter\BitSet@Xor - \csname BS@#1\expandafter\expandafter\expandafter\endcsname - \expandafter\expandafter\expandafter!% - \csname BS@#2\endcsname!!% - }% - \expandafter\ifx\csname BS@#1\endcsname\BitSet@Empty - \bitsetReset{#1}% - \fi - }% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Xor} -% \begin{macrocode} -\def\BitSet@Xor#1#2!#3#4!#5!{% - \ifx\\#2\\% - \ifx#1#3% - \ifx\\#4\\% - \else - #50#4% - \fi - \else - #51#4% - \fi - \else - \ifx\\#4\\% - #5% - \ifx#1#30\else 1\fi - #2% - \else - \ifx#1#3% - \BitSet@AfterFiFiFi{% - \BitSet@Xor#2!#4!#50!% - }% - \else - #51% - \BitSet@AfterFiFiFi{% - \BitSet@Xor#2!#4!!% - }% - \fi - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Shifting}\label{src:shift} -% -% \subsubsection{\cs{bitsetShiftLeft}} -% -% \begin{macro}{\bitsetShiftLeft} -% \begin{macrocode} -\def\bitsetShiftLeft#1#2{% - \BitSet@IfUndefined{#1}{% - \bitsetReset{#1}% - }{% - \bitsetIsEmpty{#1}{% - }{% - \expandafter\expandafter\expandafter\BitSet@ShiftLeft - \intcalcNum{#2}!{#1}% - }% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@ShiftLeft} -% \begin{macrocode} -\def\BitSet@ShiftLeft#1!#2{% - \ifcase\intcalcSgn{#1} % - \or - \begingroup - \uccode`m=`0 % - \uppercase\expandafter{\expandafter\endgroup - \expandafter\edef\csname BS@#2\expandafter\endcsname - \expandafter{% - \romannumeral#1000\expandafter\BitSet@Space - \csname BS@#2\endcsname - }% - }% - \else - \expandafter\BitSet@ShiftRight\BitSet@Gobble#1!{#2}% - \fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{\cs{bitsetShiftRight}} -% -% \begin{macro}{\bitsetShiftRight} -% \begin{macrocode} -\def\bitsetShiftRight#1#2{% - \BitSet@IfUndefined{#1}{% - \bitsetReset{#1}% - }{% - \bitsetIsEmpty{#1}{% - }{% - \expandafter\expandafter\expandafter\BitSet@ShiftRight - \intcalcNum{#2}!{#1}% - }% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@ShiftRight} -% \begin{macrocode} -\def\BitSet@ShiftRight#1!#2{% - \ifcase\intcalcSgn{#1} % - \or - \expandafter\edef\csname BS@#2\endcsname{% - \expandafter\expandafter\expandafter\BitSet@Kill - \csname BS@#2\expandafter\endcsname\expandafter\BitSet@Empty - \expandafter=% - \expandafter{\expandafter}\expandafter{\expandafter}% - \romannumeral#1000!% - }% - \else - \expandafter\BitSet@ShiftLeft\BitSet@Gobble#1!{#2}% - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Kill} -% \begin{macrocode} -\def\BitSet@Kill#1#2=#3#4#5{% - #3#4% - \ifx#5!% - \ifx#1\BitSet@Empty - 0% - \else - #1#2% - \fi - \else - \ifx#1\BitSet@Empty - 0% - \BitSet@AfterFiFi\BitSet@Cleanup - \else - \BitSet@Kill#2=% - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Bit manipulation}\label{src:bitman} -% -% \begin{macro}{\bitsetClear} -% \begin{macrocode} -\def\bitsetClear{% - \BitSet@CheckIndex\BitSet@Clear -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\bitsetSet} -% \begin{macrocode} -\def\bitsetSet{% - \BitSet@CheckIndex\BitSet@Set -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\bitsetFlip} -% \begin{macrocode} -\def\bitsetFlip{% - \BitSet@CheckIndex\BitSet@Flip -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\bitsetSetValue} -% \begin{macrocode} -\def\bitsetSetValue#1#2#3{% - \expandafter\expandafter\expandafter\BitSet@SetValue - \intcalcNum{#3}!{#1}{#2}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@SetValue} -% |#1|: plain value\\ -% |#2|: BitSet\\ -% |#3|: Index -% \begin{macrocode} -\def\BitSet@SetValue#1!{% - \BitSet@CheckIndex{% - \ifcase#1 % - \expandafter\BitSet@Clear - \or - \expandafter\BitSet@Set - \else - \BitSet@ErrorInvalidBitValue{#1}% - \expandafter\expandafter\expandafter\BitSet@Gobble - \expandafter\BitSet@Gobble - \fi - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@ErrorInvalidBitValue} -% |#1|: Wrong bit value -% \begin{macrocode} -\def\BitSet@ErrorInvalidBitValue#1{% - \@PackageError{bitset}{% - Invalid bit value (#1) not in range 0..1% - }\@ehc -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Clear operation} -% -% \begin{macro}{\BitSet@Clear} -% |#1|: BitSet\\ -% |#2|: plain and checked index -% \begin{macrocode} -\def\BitSet@Clear#1#2{% - \edef\BitSet@Temp{% - \expandafter\expandafter\expandafter\BitSet@@Clear - \csname BS@#1\expandafter\endcsname - \expandafter\BitSet@Empty\expandafter=\expandafter!% - \romannumeral#2000!% - }% - \expandafter\let\csname BS@#1\expandafter\endcsname - \ifx\BitSet@Temp\BitSet@Empty - \BitSet@Zero - \else - \BitSet@Temp - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@Clear} -% \begin{macrocode} -\def\BitSet@@Clear#1#2=#3!#4{% - \ifx#4!% - \ifx#1\BitSet@Empty - \else - \ifx\BitSet@Empty#2% - \else - #30#2% - \fi - \fi - \else - \ifx#1\BitSet@Empty - \BitSet@AfterFiFi\BitSet@Cleanup - \else - \ifx#10% - \BitSet@AfterFiFiFi{% - \BitSet@@Clear#2=#30!% - }% - \else - #31% - \BitSet@AfterFiFiFi{% - \BitSet@@Clear#2=!% - }% - \fi - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Set operation} -% -% \begin{macro}{\BitSet@Set} -% |#1|: BitSet\\ -% |#2|: plain and checked Index -% \begin{macrocode} -\def\BitSet@Set#1#2{% - \expandafter\edef\csname BS@#1\endcsname{% - \expandafter\expandafter\expandafter\BitSet@@Set - \csname BS@#1\expandafter\endcsname - \expandafter\BitSet@Empty\expandafter=% - \expandafter{\expandafter}\expandafter{\expandafter}% - \romannumeral#2000!% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@Set} -% \begin{macrocode} -\def\BitSet@@Set#1#2=#3#4#5{% - #3#4% - \ifx#5!% - 1#2% - \else - \ifx#1\BitSet@Empty - 0% - \BitSet@AfterFiFi\BitSet@@@Set - \else - #1% - \BitSet@@Set#2=% - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@@Set} -% \begin{macrocode} -\def\BitSet@@@Set#1{% - \ifx#1!% - 1% - \else - 0% - \expandafter\BitSet@@@Set - \fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Flip operation} -% -% \begin{macro}{\BitSet@Flip} -% |#1|: BitSet\\ -% |#2|: plain and checked Index -% \begin{macrocode} -\def\BitSet@Flip#1#2{% - \edef\BitSet@Temp{% - \expandafter\expandafter\expandafter\BitSet@@Flip - \csname BS@#1\expandafter\endcsname - \expandafter\BitSet@Empty\expandafter=\expandafter!% - \romannumeral#2000!% - }% - \expandafter\let\csname BS@#1\expandafter\endcsname - \ifx\BitSet@Temp\BitSet@Empty - \BitSet@Zero - \else - \BitSet@Temp - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@Flip} -% \begin{macrocode} -\def\BitSet@@Flip#1#2=#3!#4{% - \ifx#4!% - \ifx#11% - \ifx\BitSet@Empty#2% - \else - #30#2% - \fi - \else - #31#2% - \fi - \else - \ifx#1\BitSet@Empty - #30% - \BitSet@AfterFiFi\BitSet@@@Set - \else - \ifx#10% - \BitSet@AfterFiFiFi{% - \BitSet@@Flip#2=#30!% - }% - \else - #31% - \BitSet@AfterFiFiFi{% - \BitSet@@Flip#2=!% - }% - \fi - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Range operators} -% -% \begin{macro}{\bitsetClearRange} -% \begin{macrocode} -\def\bitsetClearRange{% - \BitSet@Range\BitSet@Clear -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\bitsetSetRange} -% \begin{macrocode} -\def\bitsetSetRange{% - \BitSet@Range\BitSet@Set -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\bitsetFlipRange} -% \begin{macrocode} -\def\bitsetFlipRange{% - \BitSet@Range\BitSet@Flip -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\bitsetSetValueRange} -% \begin{macrocode} -\def\bitsetSetValueRange#1#2#3#4{% - \expandafter\expandafter\expandafter\BitSet@SetValueRange - \intcalcNum{#4}!{#1}{#2}{#3}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@SetValueRange} -% \begin{macrocode} -\def\BitSet@SetValueRange#1!#2#3#4{% - \ifcase#1 % - \BitSet@Range\BitSet@Clear{#2}{#3}{#4}% - \or - \BitSet@Range\BitSet@Set{#2}{#3}{#4}% - \else - \BitSet@ErrorInvalidBitValue{#1}% - \fi -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\BitSet@Range} -% |#1|: clear/set/flip macro\\ -% |#2|: BitSet\\ -% |#3|: Index from\\ -% |#4|: Index to -% \begin{macrocode} -\def\BitSet@Range#1#2#3#4{% - \edef\BitSet@Temp{% - \noexpand\BitSet@@Range\noexpand#1{#2}% - \intcalcNum{#3}!\intcalcNum{#4}!% - }% - \BitSet@Temp -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@Range} -% |#1|: clear/set/flip macro\\ -% |#2|: BitSet\\ -% |#3|: Index from\\ -% |#4|: Index to -% \begin{macrocode} -\def\BitSet@@Range#1#2#3!#4!{% - \ifnum#3<0 % - \BitSet@NegativeIndex#1{#2}#3!#4!0!#4!% - \else - \ifnum#4<0 % - \BitSet@NegativeIndex#1{#2}#3!#4!#3!0!% - \else - \ifcase\intcalcCmp{#3}{#4} % - \or - \@PackageError{bitset}{% - Wrong index numbers in range [#3..#4]\MessageBreak% hash-ok - for clear/set/flip on bit set `#2'.\MessageBreak - The lower index exceeds the upper index.\MessageBreak - Canceling the operation as error recovery% - }\@ehc - \else - \BitSet@@@Range#3!#4!#1{#2}% - \fi - \fi - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@NegativeIndex} -% \begin{macrocode} -\def\BitSet@NegativeIndex#1#2#3!#4!#5!#6!{% - \@PackageError{bitset}{% - Negative index in range [#3..#4]\MessageBreak % hash-ok - for \string\bitset - \ifx#1\BitSet@Clear - Clear% - \else - \ifx#1\BitSet@Set - Set% - \else - Flip% - \fi - \fi - Range on bit set `#2'.\MessageBreak - Using [#5..#6] as error recovery% hash-ok - }\@ehc - \BitSet@@Range#1{#2}#5!#6!% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@Range} -% \begin{macrocode} -\def\BitSet@@@Range#1!#2!#3#4{% - \ifnum#1<#2 % - #3{#4}{#1}% - \BitSet@AfterFi{% - \expandafter\expandafter\expandafter\BitSet@@@Range - \IntCalcInc#1!!#2!#3{#4}% - }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Bit retrieval}\label{src:bitret} -% -% \subsubsection{\cs{bitsetGet}} -% -% \begin{macro}{\bitsetGet} -% \begin{macrocode} -\def\bitsetGet#1#2{% - \number - \expandafter\expandafter\expandafter\BitSet@Get - \intcalcNum{#2}!{#1}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Get} -% |#1|: plain index\\ -% |#2|: BitSet -% \begin{macrocode} -\def\BitSet@Get#1!#2{% - \ifnum#1<0 % - \BitSet@AfterFi{% - 0 \BitSetError:NegativeIndex% - }% - \else - \BitSet@IfUndefined{#2}{0}{% - \expandafter\expandafter\expandafter\BitSet@@Get - \csname BS@#2\expandafter\endcsname - \expandafter!\expandafter=% - \expandafter{\expandafter}\expandafter{\expandafter}% - \romannumeral\intcalcNum{#1}000!% - }% - \expandafter\BitSet@Space - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@Get} -% \begin{macrocode} -\def\BitSet@@Get#1#2=#3#4#5{% - #3#4% - \ifx#5!% - \ifx#1!% - 0% - \else - #1% - \fi - \else - \ifx#1!% - 0% - \BitSet@AfterFiFi\BitSet@Cleanup - \else - \BitSet@@Get#2=% - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{\cs{bitsetNextClearBit}, \cs{bitsetNextSetBit}} -% -% \begin{macro}{\bitsetNextClearBit} -% \begin{macrocode} -\def\bitsetNextClearBit#1#2{% - \number - \expandafter\expandafter\expandafter\BitSet@NextClearBit - \intcalcNum{#2}!{#1} % -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@NextClearBit} -% |#1|: Index\\ -% |#2|: BitSet -% \begin{macrocode} -\def\BitSet@NextClearBit#1!#2{% - \ifnum#1<0 % - \BitSet@NextClearBit0!{#2}% - \BitSet@AfterFi{% - \expandafter\BitSet@Space - \expandafter\BitSetError:NegativeIndex\romannumeral0% - }% - \else - \bitsetIsEmpty{#2}{#1}{% - \expandafter\BitSet@Skip - \number#1\expandafter\expandafter\expandafter!% - \csname BS@#2\endcsname!!!!!!!!!=% - {\BitSet@@NextClearBit#1!}% - }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@NextClearBit} -% |#1|: index for next bit in |#2|\\ -% |#2|: next bit -% \begin{macrocode} -\def\BitSet@@NextClearBit#1!#2{% - \ifx#2!% - #1% - \else - \ifx#20% - #1% - \BitSet@AfterFiFi\BitSet@Cleanup - \else - \BitSet@AfterFiFi{% - \expandafter\expandafter\expandafter\BitSet@@NextClearBit - \IntCalcInc#1!!% - }% - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\bitsetNextSetBit} -% \begin{macrocode} -\def\bitsetNextSetBit#1#2{% - \number - \expandafter\expandafter\expandafter\BitSet@NextSetBit - \intcalcNum{#2}!{#1} % -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@NextSetBit} -% |#1|: Index\\ -% |#2|: BitSet -% \begin{macrocode} -\def\BitSet@NextSetBit#1!#2{% - \ifnum#1<0 % - \BitSet@NextSetBit0!{#2}% - \BitSet@AfterFi{% - \expandafter\BitSet@Space - \expandafter\BitSetError:NegativeIndex\romannumeral0% - }% - \else - \bitsetIsEmpty{#2}{-1}{% - \expandafter\BitSet@Skip - \number#1\expandafter\expandafter\expandafter!% - \csname BS@#2\endcsname!!!!!!!!!=% - {\BitSet@@NextSetBit#1!}% - }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@NextSetBit} -% |#1|: index for next bit in |#2|\\ -% |#2|: next bit -% \begin{macrocode} -\def\BitSet@@NextSetBit#1!#2{% - \ifx#2!% - -1% - \else - \ifx#21% - #1% - \BitSet@AfterFiFi\BitSet@Cleanup - \else - \BitSet@AfterFiFi{% - \expandafter\expandafter\expandafter\BitSet@@NextSetBit - \IntCalcInc#1!!% - }% - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Cleanup} -% \begin{macrocode} -\def\BitSet@Cleanup#1!{} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\BitSet@Skip} -% |#1|: number of bits to skip\\ -% |#2|: bits\\ -% |#3|: continuation code -% \begin{macrocode} -\def\BitSet@Skip#1!#2{% - \ifx#2!% - \BitSet@AfterFi{% - \BitSet@SkipContinue% - }% - \else - \ifcase#1 % - \BitSet@AfterFiFi{% - \BitSet@SkipContinue#2% - }% - \or - \BitSet@AfterFiFi\BitSet@SkipContinue - \or - \BitSet@AfterFiFi{% - \expandafter\BitSet@SkipContinue\BitSet@Gobble - }% - \else - \ifnum#1>8 % - \BitSet@AfterFiFiFi{% - \expandafter\BitSet@Skip - \number\IntCalcSub#1!8!\expandafter!% - \BitSet@GobbleSeven - }% - \else - \BitSet@AfterFiFiFi{% - \expandafter\expandafter\expandafter\BitSet@Skip - \IntCalcDec#1!!% - }% - \fi - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@SkipContinue} -% |#1|: remaining bits\\ -% |#2|: continuation code -% \begin{macrocode} -\def\BitSet@SkipContinue#1!#2=#3{% - #3#1!% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@GobbleSeven} -% \begin{macrocode} -\def\BitSet@GobbleSeven#1#2#3#4#5#6#7{} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{\cs{bitsetGetSetBitList}} -% -% \begin{macro}{\bitsetGetSetBitList} -% It's just a wrapper for \cs{bitsetNextSetBit}. -% \begin{macrocode} -\def\bitsetGetSetBitList#1{% - \romannumeral0% - \bitsetIsEmpty{#1}{ }{% - \expandafter\BitSet@GetSetBitList - \number\BitSet@NextSetBit0!{#1}!{#1}{}!% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@GetSetBitList} -% |#1|: found index\\ -% |#2|: BitSet\\ -% |#3|: comma -% |#4|: result -% \begin{macrocode} -\def\BitSet@GetSetBitList#1!#2#3#4!{% - \ifnum#1<0 % - \BitSet@AfterFi{ #4}% - \else - \BitSet@AfterFi{% - \expandafter\BitSet@GetSetBitList\number - \expandafter\expandafter\expandafter\BitSet@NextSetBit - \IntCalcInc#1!!{#2}!{#2},#4#3#1!% - }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Bit set properties}\label{src:prop} -% -% \begin{macro}{\bitsetSize} -% \begin{macrocode} -\def\bitsetSize#1{% - \number - \BitSet@IfUndefined{#1}{0 }{% - \expandafter\expandafter\expandafter\BitSet@Size - \expandafter\expandafter\expandafter1% - \expandafter\expandafter\expandafter!% - \csname BS@#1\endcsname!0!% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Size} -% |#1|: counter\\ -% |#2#3|: bits\\ -% |#4|: result -% \begin{macrocode} -\def\BitSet@Size#1!#2#3!#4!{% - \ifx#21% - \ifx\\#3\\% - \BitSet@AfterFiFi{#1 }% - \else - \BitSet@AfterFiFi{% - \expandafter\expandafter\expandafter\BitSet@Size - \IntCalcInc#1!!#3!#1!% - }% - \fi - \else - \ifx\\#3\\% - \BitSet@AfterFiFi{#4 }% - \else - \BitSet@AfterFiFi{% - \expandafter\expandafter\expandafter\BitSet@Size - \IntCalcInc#1!!#3!#4!% - }% - \fi - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\bitsetCardinality} -% \begin{macrocode} -\def\bitsetCardinality#1{% - \number - \BitSet@IfUndefined{#1}{0 }{% - \expandafter\expandafter\expandafter\BitSet@Cardinality - \expandafter\expandafter\expandafter0% - \expandafter\expandafter\expandafter!% - \csname BS@#1\endcsname!% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Cardinality} -% |#1|: result\\ -% |#2#3|: bits -% \begin{macrocode} -\def\BitSet@Cardinality#1!#2#3!{% - \ifx#21% - \ifx\\#3\\% - \BitSet@AfterFiFi{\IntCalcInc#1! }% - \else - \BitSet@AfterFiFi{% - \expandafter\expandafter\expandafter\BitSet@Cardinality - \IntCalcInc#1!!#3!% - }% - \fi - \else - \ifx\\#3\\% - \BitSet@AfterFiFi{#1 }% - \else - \BitSet@AfterFiFi{% - \BitSet@Cardinality#1!#3!% - }% - \fi - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Queries}\label{src:query} -% -% \begin{macro}{\bitsetIsDefined} -% \begin{macrocode} -\def\bitsetIsDefined#1{% - \BitSet@IfUndefined{#1}% - \BitSet@SecondOfTwo - \BitSet@FirstOfTwo -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\bitsetIsEmpty} -% \begin{macrocode} -\def\bitsetIsEmpty#1{% - \BitSet@IfUndefined{#1}\BitSet@FirstOfTwo{% - \expandafter\ifx\csname BS@#1\endcsname\BitSet@Zero - \expandafter\BitSet@FirstOfTwo - \else - \expandafter\BitSet@SecondOfTwo - \fi - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Zero} -% \begin{macrocode} -\def\BitSet@Zero{0} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\bitsetQuery} -% \begin{macrocode} -\def\bitsetQuery#1#2{% - \ifnum\bitsetGet{#1}{#2}=1 % - \expandafter\BitSet@FirstOfTwo - \else - \expandafter\BitSet@SecondOfTwo - \fi -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\bitsetEquals} -% \begin{macrocode} -\def\bitsetEquals#1#2{% - \BitSet@IfUndefined{#1}{% - \BitSet@IfUndefined{#2}\BitSet@FirstOfTwo\BitSet@SecondOfTwo - }{% - \BitSet@IfUndefined{#2}\BitSet@SecondOfTwo{% - \expandafter\ifx\csname BS@#1\expandafter\endcsname - \csname BS@#2\endcsname - \expandafter\BitSet@FirstOfTwo - \else - \expandafter\BitSet@SecondOfTwo - \fi - }% - }% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\bitsetIntersects} -% \begin{macrocode} -\def\bitsetIntersects#1#2{% - \bitsetIsEmpty{#1}\BitSet@SecondOfTwo{% - \bitsetIsEmpty{#2}\BitSet@SecondOfTwo{% - \expandafter\expandafter\expandafter\BitSet@Intersects - \csname BS@#1\expandafter\expandafter\expandafter\endcsname - \expandafter\expandafter\expandafter!% - \csname BS@#2\endcsname!% - }% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Intersects} -% \begin{macrocode} -\def\BitSet@Intersects#1#2!#3#4!{% - \ifnum#1#3=11 % - \BitSet@AfterFi\BitSet@FirstOfTwo - \else - \ifx\\#2\\% - \BitSet@AfterFiFi\BitSet@SecondOfTwo - \else - \ifx\\#4\\% - \BitSet@AfterFiFiFi\BitSet@SecondOfTwo - \else - \BitSet@AfterFiFiFi{% - \BitSet@Intersects#2!#4!% - }% - \fi - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\BitSet@AtEnd% -% -% \end{macrocode} -%% \section{Installation} -% -% \subsection{Download} -% -% \paragraph{Package.} This package is available on -% CTAN\footnote{\CTANpkg{bitset}}: -% \begin{description} -% \item[\CTAN{macros/latex/contrib/oberdiek/bitset.dtx}] The source file. -% \item[\CTAN{macros/latex/contrib/oberdiek/bitset.pdf}] Documentation. -% \end{description} -% -% -% \paragraph{Bundle.} All the packages of the bundle `oberdiek' -% are also available in a TDS compliant ZIP archive. There -% the packages are already unpacked and the documentation files -% are generated. The files and directories obey the TDS standard. -% \begin{description} -% \item[\CTANinstall{install/macros/latex/contrib/oberdiek.tds.zip}] -% \end{description} -% \emph{TDS} refers to the standard ``A Directory Structure -% for \TeX\ Files'' (\CTANpkg{tds}). Directories -% with \xfile{texmf} in their name are usually organized this way. -% -% \subsection{Bundle installation} -% -% \paragraph{Unpacking.} Unpack the \xfile{oberdiek.tds.zip} in the -% TDS tree (also known as \xfile{texmf} tree) of your choice. -% Example (linux): -% \begin{quote} -% |unzip oberdiek.tds.zip -d ~/texmf| -% \end{quote} -% -% \subsection{Package installation} -% -% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting -% \docstrip\ archive. The files are extracted by running the -% \xfile{.dtx} through \plainTeX: -% \begin{quote} -% \verb|tex bitset.dtx| -% \end{quote} -% -% \paragraph{TDS.} Now the different files must be moved into -% the different directories in your installation TDS tree -% (also known as \xfile{texmf} tree): -% \begin{quote} -% \def\t{^^A -% \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} -% bitset.sty & tex/generic/oberdiek/bitset.sty\\ -% bitset.pdf & doc/latex/oberdiek/bitset.pdf\\ -% bitset.dtx & source/latex/oberdiek/bitset.dtx\\ -% \end{tabular}^^A -% }^^A -% \sbox0{\t}^^A -% \ifdim\wd0>\linewidth -% \begingroup -% \advance\linewidth by\leftmargin -% \advance\linewidth by\rightmargin -% \edef\x{\endgroup -% \def\noexpand\lw{\the\linewidth}^^A -% }\x -% \def\lwbox{^^A -% \leavevmode -% \hbox to \linewidth{^^A -% \kern-\leftmargin\relax -% \hss -% \usebox0 -% \hss -% \kern-\rightmargin\relax -% }^^A -% }^^A -% \ifdim\wd0>\lw -% \sbox0{\small\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\footnotesize\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\scriptsize\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\tiny\t}^^A -% \ifdim\wd0>\linewidth -% \lwbox -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \end{quote} -% If you have a \xfile{docstrip.cfg} that configures and enables \docstrip's -% TDS installing feature, then some files can already be in the right -% place, see the documentation of \docstrip. -% -% \subsection{Refresh file name databases} -% -% If your \TeX~distribution -% (\TeX\,Live, \mikTeX, \dots) relies on file name databases, you must refresh -% these. For example, \TeX\,Live\ users run \verb|texhash| or -% \verb|mktexlsr|. -% -% \subsection{Some details for the interested} -% -% \paragraph{Unpacking with \LaTeX.} -% The \xfile{.dtx} chooses its action depending on the format: -% \begin{description} -% \item[\plainTeX:] Run \docstrip\ and extract the files. -% \item[\LaTeX:] Generate the documentation. -% \end{description} -% If you insist on using \LaTeX\ for \docstrip\ (really, -% \docstrip\ does not need \LaTeX), then inform the autodetect routine -% about your intention: -% \begin{quote} -% \verb|latex \let\install=y\input{bitset.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 bitset.dtx -%makeindex -s gind.ist bitset.idx -%pdflatex bitset.dtx -%makeindex -s gind.ist bitset.idx -%pdflatex bitset.dtx -%\end{verbatim} -% \end{quote} -% -% \begin{History} -% \begin{Version}{2007/09/28 v1.0} -% \item -% First version. -% \end{Version} -% \begin{Version}{2011/01/30 v1.1} -% \item -% Already loaded package files are not input in \hologo{plainTeX}. -% \end{Version} -% \begin{Version}{2016/05/16 v1.2} -% \item -% Documentation updates. -% \end{Version} -% \end{History} -% -% \PrintIndex -% -% \Finale -\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/catchfile.dtx b/Master/texmf-dist/source/latex/oberdiek/catchfile.dtx deleted file mode 100644 index 439a7871e7b..00000000000 --- a/Master/texmf-dist/source/latex/oberdiek/catchfile.dtx +++ /dev/null @@ -1,777 +0,0 @@ -% \iffalse meta-comment -% -% File: catchfile.dtx -% Version: 2016/05/16 v1.7 -% Info: Catch the contents of a file -% -% Copyright (C) -% 2007, 2010, 2011 Heiko Oberdiek -% 2016-2019 Oberdiek Package Support Group -% https://github.com/ho-tex/oberdiek/issues -% -% This work may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either -% version 1.3c of this license or (at your option) any later -% version. This version of this license is in -% https://www.latex-project.org/lppl/lppl-1-3c.txt -% and the latest version of this license is in -% https://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". -% -% The Current Maintainers of this work are -% Heiko Oberdiek and the Oberdiek Package Support Group -% https://github.com/ho-tex/oberdiek/issues -% -% The Base Interpreter refers to any `TeX-Format', -% because some files are installed in TDS:tex/generic//. -% -% This work consists of the main source file catchfile.dtx -% and the derived files -% catchfile.sty, catchfile.pdf, catchfile.ins, catchfile.drv, -% catchfile-test1.tex, catchfile-test2.tex, -% catchfile-test3.tex. -% -% Distribution: -% CTAN:macros/latex/contrib/oberdiek/catchfile.dtx -% CTAN:macros/latex/contrib/oberdiek/catchfile.pdf -% -% Unpacking: -% (a) If catchfile.ins is present: -% tex catchfile.ins -% (b) Without catchfile.ins: -% tex catchfile.dtx -% (c) If you insist on using LaTeX -% latex \let\install=y\input{catchfile.dtx} -% (quote the arguments according to the demands of your shell) -% -% Documentation: -% (a) If catchfile.drv is present: -% latex catchfile.drv -% (b) Without catchfile.drv: -% latex catchfile.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 catchfile.dtx -% makeindex -s gind.ist catchfile.idx -% pdflatex catchfile.dtx -% makeindex -s gind.ist catchfile.idx -% pdflatex catchfile.dtx -% -% Installation: -% TDS:tex/generic/oberdiek/catchfile.sty -% TDS:doc/latex/oberdiek/catchfile.pdf -% TDS:source/latex/oberdiek/catchfile.dtx -% -%<*ignore> -\begingroup - \catcode123=1 % - \catcode125=2 % - \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 -% -%<*install> -\input docstrip.tex -\Msg{************************************************************************} -\Msg{* Installation} -\Msg{* Package: catchfile 2016/05/16 v1.7 Catch the contents of a file (HO)} -\Msg{************************************************************************} - -\keepsilent -\askforoverwritefalse - -\let\MetaPrefix\relax -\preamble - -This is a generated file. - -Project: catchfile -Version: 2016/05/16 v1.7 - -Copyright (C) - 2007, 2010, 2011 Heiko Oberdiek - 2016-2019 Oberdiek Package Support Group - -This work may be distributed and/or modified under the -conditions of the LaTeX Project Public License, either -version 1.3c of this license or (at your option) any later -version. This version of this license is in - https://www.latex-project.org/lppl/lppl-1-3c.txt -and the latest version of this license is in - https://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". - -The Current Maintainers of this work are -Heiko Oberdiek and the Oberdiek Package Support Group -https://github.com/ho-tex/oberdiek/issues - - -The Base Interpreter refers to any `TeX-Format', -because some files are installed in TDS:tex/generic//. - -This work consists of the main source file catchfile.dtx -and the derived files - catchfile.sty, catchfile.pdf, catchfile.ins, catchfile.drv, - catchfile-test1.tex, catchfile-test2.tex, - catchfile-test3.tex. - -\endpreamble -\let\MetaPrefix\DoubleperCent - -\generate{% - \file{catchfile.ins}{\from{catchfile.dtx}{install}}% - \file{catchfile.drv}{\from{catchfile.dtx}{driver}}% - \usedir{tex/generic/oberdiek}% - \file{catchfile.sty}{\from{catchfile.dtx}{package}}% -% \usedir{doc/latex/oberdiek/test}% -% \file{catchfile-test1.tex}{\from{catchfile.dtx}{test1}}% -% \file{catchfile-test2.tex}{\from{catchfile.dtx}{test2}}% -% \file{catchfile-test3.tex}{\from{catchfile.dtx}{test3}}% -} - -\catcode32=13\relax% active space -\let =\space% -\Msg{************************************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* file into a directory searched by TeX:} -\Msg{*} -\Msg{* catchfile.sty} -\Msg{*} -\Msg{* To produce the documentation run the file `catchfile.drv'} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing!} -\Msg{*} -\Msg{************************************************************************} - -\endbatchfile -% -%<*ignore> -\fi -% -%<*driver> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{catchfile.drv}% - [2016/05/16 v1.7 Catch the contents of a file (HO)]% -\documentclass{ltxdoc} -\usepackage{holtxdoc}[2011/11/22] -\begin{document} - \DocInput{catchfile.dtx}% -\end{document} -% -% \fi -% -% -% -% \GetFileInfo{catchfile.drv} -% -% \title{The \xpackage{catchfile} package} -% \date{2016/05/16 v1.7} -% \author{Heiko Oberdiek\thanks -% {Please report any issues at \url{https://github.com/ho-tex/oberdiek/issues}}} -% -% \maketitle -% -% \begin{abstract} -% This package catches the contents of a file and puts it in a macro. -% It requires \eTeX. Both \LaTeX\ and \plainTeX\ are supported. -% \end{abstract} -% -% \tableofcontents -% -% \section{Documentation} -% -% The package relies on \eTeX's \cs{everyeof}. Otherwise it -% aborts with an error message. -% -% \begin{declcs}{CatchFileDef} \M{cmd} \M{file name} \M{setup}\\ -% \cs{CatchFileEdef} \M{cmd} \M{file name} \M{setup} -% \end{declcs} -% Macro \meta{cmd} is defined with the contents -% of file \meta{file name}. -% \cs{CatchFileDef} uses \cs{def}, \cs{CatchFileEdef} \cs{edef} -% for the definition. -% Additional setup code for setting -% catcodes or treatment of line ends can be given in code -% \meta{setup}. See the test files for an example. -% -% \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\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode35=6 % # - \catcode39=12 % ' - \catcode44=12 % , - \catcode45=12 % - - \catcode46=12 % . - \catcode58=12 % : - \catcode64=11 % @ - \catcode123=1 % { - \catcode125=2 % } - \expandafter\let\expandafter\x\csname ver@catchfile.sty\endcsname - \ifx\x\relax % plain-TeX, first loading - \else - \def\empty{}% - \ifx\x\empty % LaTeX, first loading, - % variable is initialized, but \ProvidesPackage not yet seen - \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{catchfile}{The package is already loaded}% - \aftergroup\endinput - \fi - \fi -\endgroup% -% \end{macrocode} -% Package identification: -% \begin{macrocode} -\begingroup\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode35=6 % # - \catcode39=12 % ' - \catcode40=12 % ( - \catcode41=12 % ) - \catcode44=12 % , - \catcode45=12 % - - \catcode46=12 % . - \catcode47=12 % / - \catcode58=12 % : - \catcode64=11 % @ - \catcode91=12 % [ - \catcode93=12 % ] - \catcode123=1 % { - \catcode125=2 % } - \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\@undefined - \xdef#1{#3}% - \fi - \ifx#1\relax - \xdef#1{#3}% - \fi - }% - \fi -\expandafter\x\csname ver@catchfile.sty\endcsname -\ProvidesPackage{catchfile}% - [2016/05/16 v1.7 Catch the contents of a file (HO)]% -% \end{macrocode} -% -% \subsection{Catcodes} -% -% \begin{macrocode} -\begingroup\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode123=1 % { - \catcode125=2 % } - \catcode64=11 % @ - \def\x{\endgroup - \expandafter\edef\csname CatchFile@AtEnd\endcsname{% - \endlinechar=\the\endlinechar\relax - \catcode13=\the\catcode13\relax - \catcode32=\the\catcode32\relax - \catcode35=\the\catcode35\relax - \catcode61=\the\catcode61\relax - \catcode64=\the\catcode64\relax - \catcode123=\the\catcode123\relax - \catcode125=\the\catcode125\relax - }% - }% -\x\catcode61\catcode48\catcode32=10\relax% -\catcode13=5 % ^^M -\endlinechar=13 % -\catcode35=6 % # -\catcode64=11 % @ -\catcode123=1 % { -\catcode125=2 % } -\def\TMP@EnsureCode#1#2{% - \edef\CatchFile@AtEnd{% - \CatchFile@AtEnd - \catcode#1=\the\catcode#1\relax - }% - \catcode#1=#2\relax -} -\TMP@EnsureCode{39}{12}% ' -\TMP@EnsureCode{44}{12}% , -\TMP@EnsureCode{45}{12}% - -\TMP@EnsureCode{46}{12}% . -\TMP@EnsureCode{47}{12}% / -\TMP@EnsureCode{91}{12}% [ -\TMP@EnsureCode{93}{12}% ] -\TMP@EnsureCode{96}{12}% ` -\edef\CatchFile@AtEnd{\CatchFile@AtEnd\noexpand\endinput} -% \end{macrocode} -% -% \subsection{Preparations} -% -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname RequirePackage\endcsname\relax - \input infwarerr.sty\relax - \input ltxcmds.sty\relax -\else - \RequirePackage{infwarerr}[2007/09/09]% - \RequirePackage{ltxcmds}[2010/03/09]% -\fi -% \end{macrocode} -% -% Check for \eTeX's \cs{everyeof}. -% \begin{macrocode} -\begingroup - \escapechar=92\relax - \edef\TestString{\string\everyeof}% - \edef\TestMeaning{\meaning\everyeof}% - \ifx\TestString\TestMeaning - \else - \@PackageError{catchfile}{% - Cannot find e-TeX's \string\everyeof,\MessageBreak - package loading is aborted% - }\@ehd - \endgroup - \expandafter\CatchFile@AtEnd - \fi% -\endgroup -% \end{macrocode} -% -% \subsection{Looking for primitive \cs{input}} -% -% \begin{macro}{\CatchFile@Input} -% The package needs the expandable primitive \cs{input}. -% However there are formats that redefine it. For example, -% \LaTeX's \cs{input} is not expandable, but it stores -% the primitive in \cs{@@input}. The third possibility -% is \cs{pdfprimitive}, introduced in \pdfTeX\ 1.40.0. -% -% Thus we try to find the primitive and store it in -% \cs{CatchFile@Input}. If it is used, it must be expanded -% twice (because of the solution with \cs{pdfprimitive}). -% \begin{macrocode} -\begingroup - \def\Check#1#2#3#4\endgroup{% - \edef\TestString{\string#1}% - \edef\TestMeaning{\meaning#2}% - \ifx\TestString\TestMeaning - \endgroup - \let\CatchFile@Primitive#2% - \def\CatchFile@Input{\CatchFile@Primitive#3}% - \else - #4\endgroup - \fi - }% - \Check\input\input{}% - \Check\input\@@input{}% - \Check\pdfprimitive\pdfprimitive\input - \@PackageError{% - Cannot find primitive \string\input,\MessageBreak - package loading is aborted% - }\@ehd - \csname endgroup\endcsname - \CatchFile@AtEnd% -\endgroup -% \end{macrocode} -% \end{macro} -% -% \subsection{Input file check} -% -% \begin{macro}{\CatchFile@CheckFileExists} -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname IfFileExists\endcsname\relax - \input pdftexcmds.sty\relax - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname pdf@filesize\endcsname\relax - \def\CatchFile@CheckFileExists#1{% - \expandafter\ifx\csname @inputcheck\endcsname\relax - \csname newread\endcsname\@inputcheck - \fi - \openin\@inputcheck#1\relax - \expandafter\closein\expandafter\@inputcheck - \ifeof\@inputcheck - \let\CatchFile@File\relax - \else - \def\CatchFile@File{#1}% - \fi - }% - \else - \def\CatchFile@CheckFileExists#1{% - \expandafter\expandafter\expandafter\ifx - \expandafter\expandafter\expandafter\relax\pdf@filesize{#1}\relax - \let\CatchFile@File\relax - \else - \def\CatchFile@File{#1}% - \fi - }% - \fi -\else - \def\CatchFile@CheckFileExists#1{% - \IfFileExists{#1}{% - \expandafter\CatchFile@DefFile\@filef@und\@nil - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname @addtofilelist\endcsname\relax - \else - \@addtofilelist\CatchFile@File - \fi - }{% - \let\CatchFile@File\relax - }% - }% - \def\CatchFile@DefFile#1 \@nil{% - \def\CatchFile@File{#1}% - }% -\fi -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\CatchFile@NotFound} -% \begin{macrocode} -\def\CatchFile@NotFound#1#2{% - \def#1{}% - \@PackageError{catchfile}{% - File `#2' not found% - }\@ehc -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Catch file contents} -% -% \begin{macrocode} -\ltx@IfUndefined{RequirePackage}{% - \input etexcmds.sty\relax -}{% - \RequirePackage{etexcmds}[2010/01/28]% -} -% \end{macrocode} -% -% \begin{macro}{\CatchFileEdef} -% \begin{macrocode} -\long\def\CatchFileEdef#1#2#3{% - \CatchFile@CheckFileExists{#2}% - \ifx\CatchFile@File\relax - \CatchFile@NotFound{#1}{#2}% - \else - \begingroup - \everyeof{\noexpand}% - #3% - \xdef\CatchFile@Contents{\CatchFile@Input\CatchFile@File\space}% - \endgroup - \let#1\CatchFile@Contents - \fi -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\CatchFileDef} -% \begin{macrocode} -\long\def\CatchFileDef#1#2#3{% - \CatchFile@CheckFileExists{#2}% - \ifx\CatchFile@File\relax - \CatchFile@NotFound{#1}{#2}% - \else - \begingroup - \everyeof\expandafter{% - \CatchFile@EOF - \expandafter\CatchFile@Finish - \noexpand - }% - \ltx@ifundefined{etex@unexpanded}{% - \expandafter\long\expandafter\def\expandafter\CatchFile@Do - \expandafter##\expandafter1\CatchFile@EOF{% - \toks\ltx@zero{##1}% - \xdef\CatchFile@gtemp{\the\toks\ltx@zero}% - \def\CatchFile@Finish{% - \endgroup - \let#1\CatchFile@gtemp - \global\let\CatchFile@gtemp\ltx@undefined - }% - }% - }{% - \expandafter\long\expandafter\def\expandafter\CatchFile@Do - \expandafter##\expandafter1\CatchFile@EOF{% - \edef\CatchFile@Finish{% - \endgroup - \etex@unexpanded{% - \edef#1{\etex@unexpanded{##1}}% - }% - }% - }% - }% - #3\relax - \expandafter\expandafter\expandafter\CatchFile@Do - \CatchFile@Input\CatchFile@File\relax - \fi -} -% \end{macrocode} -% \cs{relax} after |#3| was added to make it more robust in -% case the user uses something like -%\begin{verbatim} -%\CatchFileDef{\content}{\jobname.tt}{\endlinechar=-1} -%\end{verbatim} -% that expands the following \cs{expandafter} after |#3| prematurely -% (contribution of Martin Scharrer). -% \end{macro} -% \begin{macro}{\CatchFile@EOF} -% If the file is read the catcode mappings are fixed. -% This means that the same character cannot occur -% inside the file with different catcodes. -% Thus we use as end of file marker the at sign -% twice with different catcodes. -% \begin{macrocode} -\begingroup - \lccode65=64 % lowercase('A') = '@' - \lccode66=64 % lowercase('B') = '@' - \catcode65=8 % catcode('A') = subscript - \catcode66=3 % catcode('B') = math shift -\lowercase{\endgroup - \def\CatchFile@EOF{AB}% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\CatchFile@AtEnd% -% -% \end{macrocode} -%% \section{Installation} -% -% \subsection{Download} -% -% \paragraph{Package.} This package is available on -% CTAN\footnote{\CTANpkg{catchfile}}: -% \begin{description} -% \item[\CTAN{macros/latex/contrib/oberdiek/catchfile.dtx}] The source file. -% \item[\CTAN{macros/latex/contrib/oberdiek/catchfile.pdf}] Documentation. -% \end{description} -% -% -% \paragraph{Bundle.} All the packages of the bundle `oberdiek' -% are also available in a TDS compliant ZIP archive. There -% the packages are already unpacked and the documentation files -% are generated. The files and directories obey the TDS standard. -% \begin{description} -% \item[\CTANinstall{install/macros/latex/contrib/oberdiek.tds.zip}] -% \end{description} -% \emph{TDS} refers to the standard ``A Directory Structure -% for \TeX\ Files'' (\CTANpkg{tds}). Directories -% with \xfile{texmf} in their name are usually organized this way. -% -% \subsection{Bundle installation} -% -% \paragraph{Unpacking.} Unpack the \xfile{oberdiek.tds.zip} in the -% TDS tree (also known as \xfile{texmf} tree) of your choice. -% Example (linux): -% \begin{quote} -% |unzip oberdiek.tds.zip -d ~/texmf| -% \end{quote} -% -% \subsection{Package installation} -% -% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting -% \docstrip\ archive. The files are extracted by running the -% \xfile{.dtx} through \plainTeX: -% \begin{quote} -% \verb|tex catchfile.dtx| -% \end{quote} -% -% \paragraph{TDS.} Now the different files must be moved into -% the different directories in your installation TDS tree -% (also known as \xfile{texmf} tree): -% \begin{quote} -% \def\t{^^A -% \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} -% catchfile.sty & tex/generic/oberdiek/catchfile.sty\\ -% catchfile.pdf & doc/latex/oberdiek/catchfile.pdf\\ -% catchfile.dtx & source/latex/oberdiek/catchfile.dtx\\ -% \end{tabular}^^A -% }^^A -% \sbox0{\t}^^A -% \ifdim\wd0>\linewidth -% \begingroup -% \advance\linewidth by\leftmargin -% \advance\linewidth by\rightmargin -% \edef\x{\endgroup -% \def\noexpand\lw{\the\linewidth}^^A -% }\x -% \def\lwbox{^^A -% \leavevmode -% \hbox to \linewidth{^^A -% \kern-\leftmargin\relax -% \hss -% \usebox0 -% \hss -% \kern-\rightmargin\relax -% }^^A -% }^^A -% \ifdim\wd0>\lw -% \sbox0{\small\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\footnotesize\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\scriptsize\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\tiny\t}^^A -% \ifdim\wd0>\linewidth -% \lwbox -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \end{quote} -% If you have a \xfile{docstrip.cfg} that configures and enables \docstrip's -% TDS installing feature, then some files can already be in the right -% place, see the documentation of \docstrip. -% -% \subsection{Refresh file name databases} -% -% If your \TeX~distribution -% (\TeX\,Live, \mikTeX, \dots) relies on file name databases, you must refresh -% these. For example, \TeX\,Live\ users run \verb|texhash| or -% \verb|mktexlsr|. -% -% \subsection{Some details for the interested} -% -% \paragraph{Unpacking with \LaTeX.} -% The \xfile{.dtx} chooses its action depending on the format: -% \begin{description} -% \item[\plainTeX:] Run \docstrip\ and extract the files. -% \item[\LaTeX:] Generate the documentation. -% \end{description} -% If you insist on using \LaTeX\ for \docstrip\ (really, -% \docstrip\ does not need \LaTeX), then inform the autodetect routine -% about your intention: -% \begin{quote} -% \verb|latex \let\install=y\input{catchfile.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 catchfile.dtx -%makeindex -s gind.ist catchfile.idx -%pdflatex catchfile.dtx -%makeindex -s gind.ist catchfile.idx -%pdflatex catchfile.dtx -%\end{verbatim} -% \end{quote} -% -% \begin{History} -% \begin{Version}{2007/05/30 v1.0} -% \item -% First version. -% \end{Version} -% \begin{Version}{2007/09/09 v1.1} -% \item -% Catcode section rewritten. -% \end{Version} -% \begin{Version}{2007/11/11 v1.2} -% \item -% Use of package \xpackage{pdftexcmds} for \LuaTeX\ support. -% \end{Version} -% \begin{Version}{2010/03/01 v1.3} -% \item -% Fix for unknown \cs{@PackageErrorNoLine}. -% \end{Version} -% \begin{Version}{2010/04/08 v1.4} -% \item -% \cs{closein} also added if \cs{ifeof} is true. -% \end{Version} -% \begin{Version}{2010/04/28 v1.5} -% \item -% \cs{CatchFileDef}: Getting rid of warning `end of semi simple group -% entered at line \dots\ of -% a different file (Florent Chervet). -% \item -% \cs{CatchFileDef}: Fix for error `Illegal parameter number in -% definition of \dots' (HO) including improvement that uses -% \cs{unexpanded} if available (Florent Chervet). -% \end{Version} -% \begin{Version}{2011/03/01 v1.6} -% \item -% \cs{relax} added after the setup argument of -% \cs{CatchFileDef} to prevent premature file reading -% (Martin Scharrer). -% \end{Version} -% \begin{Version}{2016/05/16 v1.7} -% \item -% Documentation updates. -% \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 index 6c31061ccf4..9ac40aa5ae9 100644 --- a/Master/texmf-dist/source/latex/oberdiek/holtxdoc.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/holtxdoc.dtx @@ -1,7 +1,7 @@ % \iffalse meta-comment % % File: holtxdoc.dtx -% Version: 2019/11/12 v0.29 +% Version: 2019/12/09 v0.30 % Info: Private additional ltxdoc support % % Copyright (C) @@ -79,7 +79,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: holtxdoc 2019/11/12 v0.29 Private additional ltxdoc support (HO)} +\Msg{* Package: holtxdoc 2019/12/09 v0.30 Private additional ltxdoc support (HO)} \Msg{************************************************************************} \keepsilent @@ -91,7 +91,7 @@ This is a generated file. Project: holtxdoc -Version: 2019/11/12 v0.29 +Version: 2019/12/09 v0.30 Copyright (C) 1999-2012 Heiko Oberdiek @@ -152,7 +152,7 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{holtxdoc.drv}% - [2019/11/12 v0.29 Private additional ltxdoc support (HO)]% + [2019/12/09 v0.30 Private additional ltxdoc support (HO)]% \documentclass{ltxdoc} \usepackage{holtxdoc}[2011/11/22] \begin{document} @@ -166,7 +166,7 @@ and the derived files % \GetFileInfo{holtxdoc.drv} % % \title{The \xpackage{holtxdoc} package} -% \date{2019/11/12 v0.29} +% \date{2019/12/09 v0.30} % \author{Heiko Oberdiek\thanks % {Please report any issues at \url{https://github.com/ho-tex/oberdiek/issues}}} % @@ -207,7 +207,7 @@ and the derived files % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{holtxdoc}% - [2019/11/12 v0.29 Private additional ltxdoc support (HO)] + [2019/12/09 v0.30 Private additional ltxdoc support (HO)] % \end{macrocode} % % \begin{macrocode} @@ -217,7 +217,6 @@ and the derived files \RequirePackage{pdftexcmds}[2010/04/01] \RequirePackage{ltxcmds}[2010/03/09] \RequirePackage{hologo}[2011/11/22] -\RequirePackage{ifluatex}[2010/03/01] \RequirePackage{array} % \end{macrocode} % @@ -467,12 +466,12 @@ and the derived files \def\XeTeX{\hologo{XeTeX}} \def\XeLaTeX{\hologo{XeLaTeX}} \def\plainTeX{\hologo{plainTeX}} -\providecommand*{\teTeX}{te\TeX} -\providecommand*{\mikTeX}{mik\TeX} +\providecommand*{\teTeX}{\hologo{teTeX}} +\providecommand*{\mikTeX}{\hologo{MiKTeX}} \providecommand*{\MakeIndex}{\textsl{MakeIndex}} \providecommand*{\docstrip}{\textsf{docstrip}} -\providecommand*{\iniTeX}{\mbox{ini-\TeX}} -\providecommand*{\VTeX}{V\TeX} +\providecommand*{\iniTeX}{\hologo{iniTeX}} +\providecommand*{\VTeX}{\hologo{VTeX}} % \end{macrocode} % % \subsection{Setup} @@ -800,6 +799,12 @@ and the derived files % Add \verb|\bibpackage| (previously defined inline in some of the packages). % Adjust CTAN links. % \end{Version} +% \begin{Version}{2019/12/09 v0.30} +% \item +% Documentation updates. +% \item Don't use \xpackage{ifluatex} legacy package. +% \item use `\xpackage{hologo} definitions in more cases. +% \end{Version} % \end{History} % % \PrintIndex diff --git a/Master/texmf-dist/source/latex/oberdiek/listingsutf8.dtx b/Master/texmf-dist/source/latex/oberdiek/listingsutf8.dtx deleted file mode 100644 index 4912923a88a..00000000000 --- a/Master/texmf-dist/source/latex/oberdiek/listingsutf8.dtx +++ /dev/null @@ -1,675 +0,0 @@ -% \iffalse meta-comment -% -% File: listingsutf8.dtx -% Version: 2016/05/16 v1.3 -% Info: Allow UTF-8 in listings input -% -% Copyright (C) -% 2007, 2011 Heiko Oberdiek -% 2016-2019 Oberdiek Package Support Group -% https://github.com/ho-tex/oberdiek/issues -% -% This work may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either -% version 1.3c of this license or (at your option) any later -% version. This version of this license is in -% https://www.latex-project.org/lppl/lppl-1-3c.txt -% and the latest version of this license is in -% https://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". -% -% The Current Maintainers of this work are -% Heiko Oberdiek and the Oberdiek Package Support Group -% https://github.com/ho-tex/oberdiek/issues -% -% This work consists of the main source file listingsutf8.dtx -% and the derived files -% listingsutf8.sty, listingsutf8.pdf, listingsutf8.ins, listingsutf8.drv, -% listingsutf8-test1.tex, listingsutf8-test2.tex, -% listingsutf8-test3.tex, listingsutf8-test4.tex, -% listingsutf8-test5.tex. -% -% Distribution: -% CTAN:macros/latex/contrib/oberdiek/listingsutf8.dtx -% CTAN:macros/latex/contrib/oberdiek/listingsutf8.pdf -% -% Unpacking: -% (a) If listingsutf8.ins is present: -% tex listingsutf8.ins -% (b) Without listingsutf8.ins: -% tex listingsutf8.dtx -% (c) If you insist on using LaTeX -% latex \let\install=y\input{listingsutf8.dtx} -% (quote the arguments according to the demands of your shell) -% -% Documentation: -% (a) If listingsutf8.drv is present: -% latex listingsutf8.drv -% (b) Without listingsutf8.drv: -% latex listingsutf8.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 listingsutf8.dtx -% makeindex -s gind.ist listingsutf8.idx -% pdflatex listingsutf8.dtx -% makeindex -s gind.ist listingsutf8.idx -% pdflatex listingsutf8.dtx -% -% Installation: -% TDS:tex/latex/oberdiek/listingsutf8.sty -% TDS:doc/latex/oberdiek/listingsutf8.pdf -% TDS:source/latex/oberdiek/listingsutf8.dtx -% -%<*ignore> -\begingroup - \catcode123=1 % - \catcode125=2 % - \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 -% -%<*install> -\input docstrip.tex -\Msg{************************************************************************} -\Msg{* Installation} -\Msg{* Package: listingsutf8 2016/05/16 v1.3 Allow UTF-8 in listings input (HO)} -\Msg{************************************************************************} - -\keepsilent -\askforoverwritefalse - -\let\MetaPrefix\relax -\preamble - -This is a generated file. - -Project: listingsutf8 -Version: 2016/05/16 v1.3 - -Copyright (C) - 2007, 2011 Heiko Oberdiek - 2016-2019 Oberdiek Package Support Group - -This work may be distributed and/or modified under the -conditions of the LaTeX Project Public License, either -version 1.3c of this license or (at your option) any later -version. This version of this license is in - https://www.latex-project.org/lppl/lppl-1-3c.txt -and the latest version of this license is in - https://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". - -The Current Maintainers of this work are -Heiko Oberdiek and the Oberdiek Package Support Group -https://github.com/ho-tex/oberdiek/issues - - -This work consists of the main source file listingsutf8.dtx -and the derived files - listingsutf8.sty, listingsutf8.pdf, listingsutf8.ins, listingsutf8.drv, - listingsutf8-test1.tex, listingsutf8-test2.tex, - listingsutf8-test3.tex, listingsutf8-test4.tex, - listingsutf8-test5.tex. - -\endpreamble -\let\MetaPrefix\DoubleperCent - -\generate{% - \file{listingsutf8.ins}{\from{listingsutf8.dtx}{install}}% - \file{listingsutf8.drv}{\from{listingsutf8.dtx}{driver}}% - \usedir{tex/latex/oberdiek}% - \file{listingsutf8.sty}{\from{listingsutf8.dtx}{package}}% -% \usedir{doc/latex/oberdiek/test}% -% \file{listingsutf8-test1.tex}{\from{listingsutf8.dtx}{test1}}% -% \file{listingsutf8-test2.tex}{\from{listingsutf8.dtx}{test2,utf8}}% -% \file{listingsutf8-test3.tex}{\from{listingsutf8.dtx}{test3,utf8x}}% -% \file{listingsutf8-test4.tex}{\from{listingsutf8.dtx}{test4,utf8,noetex}}% -% \file{listingsutf8-test5.tex}{\from{listingsutf8.dtx}{test5,utf8x,noetex}}% -} - -\catcode32=13\relax% active space -\let =\space% -\Msg{************************************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* file into a directory searched by TeX:} -\Msg{*} -\Msg{* listingsutf8.sty} -\Msg{*} -\Msg{* To produce the documentation run the file `listingsutf8.drv'} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing!} -\Msg{*} -\Msg{************************************************************************} - -\endbatchfile -% -%<*ignore> -\fi -% -%<*driver> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{listingsutf8.drv}% - [2016/05/16 v1.3 Allow UTF-8 in listings input (HO)]% -\documentclass{ltxdoc} -\usepackage{holtxdoc}[2011/11/22] -\begin{document} - \DocInput{listingsutf8.dtx}% -\end{document} -% -% \fi -% -% -% -% \GetFileInfo{listingsutf8.drv} -% -% \title{The \xpackage{listingsutf8} package} -% \date{2016/05/16 v1.3} -% \author{Heiko Oberdiek\thanks -% {Please report any issues at \url{https://github.com/ho-tex/oberdiek/issues}}} -% -% \maketitle -% -% \begin{abstract} -% Package \xpackage{listings} does not support files with multi-byte -% encodings such as UTF-8. In case of \cs{lstinputlisting} a simple -% workaround is possible if an one-byte encoding exists that the file -% can be converted to. Also \eTeX\ and \pdfTeX\ regardless of its mode -% are required. -% \end{abstract} -% -% \tableofcontents -% -% \section{Documentation} -% -% \subsection{User interface} -% -% Load this package after or instead of package \xpackage{listings} -% \cite{listings}. -% The package does not define own options and passes given options to -% package \xpackage{listings}. -% -% The syntax of package \xpackage{listings}' key \xoption{inputencoding} -% is extended: -% \begin{quote} -% |inputencoding=utf8/|\meta{one-byte-encoding}\\ -% Example: |inputencoding=utf8/latin1| -% \end{quote} -% That means the file is encoded in UTF-8 and can -% be converted to the given \meta{one-byte-encoding}. -% The available encodings for \meta{one-byte-encoding} are -% listed in section ``1.2 Supported encodings'' of -% package \xpackage{stringenc}'s documentation \cite{stringenc}. -% Of course, the encoding must encode its characters with -% one byte exactly. This excludes the unicode encodings -% (\xoption{utf8}, \xoption{utf16}, \dots). -% -% Only \cs{lstinputlisting} is supported by the syntax extension -% of key \xoption{inputencoding}. -% -% Internally package \xpackage{listingsutf8} reads the file as binary file -% via primitives of \pdfTeX\ (\cs{pdffiledump}). Then the file -% contents is converted as string using package \xpackage{stringenc} and -% finally the string is read as virtual file by \eTeX's \cs{scantokens}. -% -% \subsection{Future} -% -% Workarounds are not provided for -% \begin{itemize} -% \item \cs{lstinline} -% \item Environment |lstlisting|. -% \item Environments defined by \cs{lstnewenvironment}. -% \end{itemize} -% Perhaps someone will find time to extend package \xpackage{listings} -% with full native support for UTF-8. Then this package would become obsolete. -% -% \StopEventually{ -% } -% -% \section{Implementation} -% -% \begin{macrocode} -%<*package> -% \end{macrocode} -% -% \subsection{Catcodes and identification} -% -% \begin{macrocode} -\begingroup\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode123=1 % { - \catcode125=2 % } - \catcode64=11 % @ - \def\x{\endgroup - \expandafter\edef\csname lstU@AtEnd\endcsname{% - \endlinechar=\the\endlinechar\relax - \catcode13=\the\catcode13\relax - \catcode32=\the\catcode32\relax - \catcode35=\the\catcode35\relax - \catcode61=\the\catcode61\relax - \catcode64=\the\catcode64\relax - \catcode123=\the\catcode123\relax - \catcode125=\the\catcode125\relax - }% - }% -\x\catcode61\catcode48\catcode32=10\relax% -\catcode13=5 % ^^M -\endlinechar=13 % -\catcode35=6 % # -\catcode64=11 % @ -\catcode123=1 % { -\catcode125=2 % } -\def\TMP@EnsureCode#1#2{% - \edef\lstU@AtEnd{% - \lstU@AtEnd - \catcode#1=\the\catcode#1\relax - }% - \catcode#1=#2\relax -} -\TMP@EnsureCode{10}{12}% ^^J -\TMP@EnsureCode{33}{12}% ! -\TMP@EnsureCode{36}{3}% $ -\TMP@EnsureCode{38}{4}% & -\TMP@EnsureCode{39}{12}% ' -\TMP@EnsureCode{40}{12}% ( -\TMP@EnsureCode{41}{12}% ) -\TMP@EnsureCode{42}{12}% * -\TMP@EnsureCode{43}{12}% + -\TMP@EnsureCode{44}{12}% , -\TMP@EnsureCode{45}{12}% - -\TMP@EnsureCode{46}{12}% . -\TMP@EnsureCode{47}{12}% / -\TMP@EnsureCode{58}{12}% : -\TMP@EnsureCode{60}{12}% < -\TMP@EnsureCode{62}{12}% > -\TMP@EnsureCode{91}{12}% [ -\TMP@EnsureCode{93}{12}% ] -\TMP@EnsureCode{94}{7}% ^ (superscript) -\TMP@EnsureCode{95}{8}% _ (subscript) -\TMP@EnsureCode{96}{12}% ` -\TMP@EnsureCode{124}{12}% | -\TMP@EnsureCode{126}{13}% ~ (active) -\edef\lstU@AtEnd{\lstU@AtEnd\noexpand\endinput} -% \end{macrocode} -% -% Package identification. -% \begin{macrocode} -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{listingsutf8}% - [2016/05/16 v1.3 Allow UTF-8 in listings input (HO)] -% \end{macrocode} -% -% \subsection{Package options} -% -% Just pass options to package listings. -% -% \begin{macrocode} -\DeclareOption*{% - \PassOptionsToPackage\CurrentOption{listings}% -} -\ProcessOptions* -% \end{macrocode} -% Key \xoption{inputencoding} was introduced in version -% 2002/04/01 v1.0 of package \xpackage{listings}. -% \begin{macrocode} -\RequirePackage{listings}[2002/04/01] -% \end{macrocode} -% Ensure that \cs{inputencoding} is provided. -% \begin{macrocode} -\AtBeginDocument{% - \@ifundefined{inputencoding}{% - \RequirePackage{inputenc}% - }{}% -} -% \end{macrocode} -% -% \subsection{Check prerequisites} -% -% \begin{macrocode} -\RequirePackage{pdftexcmds}[2011/04/22] -% \end{macrocode} -% -% \begin{macrocode} -\def\lstU@temp#1#2{% - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname #1\endcsname\relax - \PackageWarningNoLine{listingsutf8}{% - Package loading is aborted because of missing % - \@backslashchar#1.\MessageBreak - #2% - }% - \expandafter\lstU@AtEnd - \fi -} -\lstU@temp{scantokens}{It is provided by e-TeX}% -\lstU@temp{pdf@unescapehex}{It is provided by pdfTeX >= 1.30}% -\lstU@temp{pdf@filedump}{It is provided by pdfTeX >= 1.30}% -\lstU@temp{pdf@filesize}{It is provided by pdfTeX >= 1.30}% -% \end{macrocode} -% -% \begin{macrocode} -\RequirePackage{stringenc}[2010/03/01] -% \end{macrocode} -% -% \subsection{Add support for UTF-8} -% -% \begin{macro}{\iflstU@utfviii} -% \begin{macrocode} -\newif\iflstU@utfviii -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\lstU@inputenc} -% \begin{macrocode} -\def\lstU@inputenc#1{% - \expandafter\lstU@@inputenc#1utf8/utf8/\@nil -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\lstU@@inputenc} -\def\lstU@@inputenc#1utf8/#2utf8/#3\@nil{% - \ifx\\#1\\% - \lstU@utfviiitrue - \def\lst@inputenc{#2}% - \else - \lstU@utfviiifalse - \fi -} -% \begin{macrocode} -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\lst@Key{inputencoding}\relax{% - \def\lst@inputenc{#1}% - \lstU@inputenc{#1}% -} -% \end{macrocode} -% -% \subsubsection{Conversion} -% -% \begin{macro}{\lstU@input} -% \begin{macrocode} -\def\lstU@input#1{% - \iflstU@utfviii - \edef\lstU@text{% - \pdf@unescapehex{% - \pdf@filedump{0}{\pdf@filesize{#1}}{#1}% - }% - }% - \lstU@CRLFtoLF\lstU@text - \StringEncodingConvert\lstU@text\lstU@text{utf8}\lst@inputenc - \def\lstU@temp{% - \scantokens\expandafter{\lstU@text}% - }% - \else - \def\lstU@temp{% - \input{#1}% - }% - \fi - \lstU@temp -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Convert CR/LF pairs to LF} -% -% \begin{macro}{\lstU@CRLFtoLF} -% \begin{macrocode} -\begingroup - \endlinechar=-1 % - \@makeother\^^J % - \@makeother\^^M % - \gdef\lstU@CRLFtoLF#1{% - \edef#1{% - \expandafter\lstU@CRLFtoLF@aux#1^^M^^J\@nil - }% - }% - \gdef\lstU@CRLFtoLF@aux#1^^M^^J#2\@nil{% - #1% - \ifx\relax#2\relax - \@car - \fi - ^^J% - \lstU@CRLFtoLF@aux#2\@nil - }% -\endgroup % -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Patch \cs{lst@InputListing}} -% -% \begin{macrocode} -\def\lstU@temp#1\def\lst@next#2#3\@nil{% - \def\lst@InputListing##1{% - #1% - \def\lst@next{\lstU@input{##1}}% - #3% - }% -} -\expandafter\lstU@temp\lst@InputListing{#1}\@nil -% \end{macrocode} -% -% \begin{macrocode} -\lstU@AtEnd% -% -% \end{macrocode} -%% \section{Installation} -% -% \subsection{Download} -% -% \paragraph{Package.} This package is available on -% CTAN\footnote{\CTANpkg{listingsutf8}}: -% \begin{description} -% \item[\CTAN{macros/latex/contrib/oberdiek/listingsutf8.dtx}] The source file. -% \item[\CTAN{macros/latex/contrib/oberdiek/listingsutf8.pdf}] Documentation. -% \end{description} -% -% -% \paragraph{Bundle.} All the packages of the bundle `oberdiek' -% are also available in a TDS compliant ZIP archive. There -% the packages are already unpacked and the documentation files -% are generated. The files and directories obey the TDS standard. -% \begin{description} -% \item[\CTANinstall{install/macros/latex/contrib/oberdiek.tds.zip}] -% \end{description} -% \emph{TDS} refers to the standard ``A Directory Structure -% for \TeX\ Files'' (\CTANpkg{tds}). Directories -% with \xfile{texmf} in their name are usually organized this way. -% -% \subsection{Bundle installation} -% -% \paragraph{Unpacking.} Unpack the \xfile{oberdiek.tds.zip} in the -% TDS tree (also known as \xfile{texmf} tree) of your choice. -% Example (linux): -% \begin{quote} -% |unzip oberdiek.tds.zip -d ~/texmf| -% \end{quote} -% -% \subsection{Package installation} -% -% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting -% \docstrip\ archive. The files are extracted by running the -% \xfile{.dtx} through \plainTeX: -% \begin{quote} -% \verb|tex listingsutf8.dtx| -% \end{quote} -% -% \paragraph{TDS.} Now the different files must be moved into -% the different directories in your installation TDS tree -% (also known as \xfile{texmf} tree): -% \begin{quote} -% \def\t{^^A -% \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} -% listingsutf8.sty & tex/latex/oberdiek/listingsutf8.sty\\ -% listingsutf8.pdf & doc/latex/oberdiek/listingsutf8.pdf\\ -% listingsutf8.dtx & source/latex/oberdiek/listingsutf8.dtx\\ -% \end{tabular}^^A -% }^^A -% \sbox0{\t}^^A -% \ifdim\wd0>\linewidth -% \begingroup -% \advance\linewidth by\leftmargin -% \advance\linewidth by\rightmargin -% \edef\x{\endgroup -% \def\noexpand\lw{\the\linewidth}^^A -% }\x -% \def\lwbox{^^A -% \leavevmode -% \hbox to \linewidth{^^A -% \kern-\leftmargin\relax -% \hss -% \usebox0 -% \hss -% \kern-\rightmargin\relax -% }^^A -% }^^A -% \ifdim\wd0>\lw -% \sbox0{\small\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\footnotesize\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\scriptsize\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\tiny\t}^^A -% \ifdim\wd0>\linewidth -% \lwbox -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \end{quote} -% If you have a \xfile{docstrip.cfg} that configures and enables \docstrip's -% TDS installing feature, then some files can already be in the right -% place, see the documentation of \docstrip. -% -% \subsection{Refresh file name databases} -% -% If your \TeX~distribution -% (\TeX\,Live, \mikTeX, \dots) relies on file name databases, you must refresh -% these. For example, \TeX\,Live\ users run \verb|texhash| or -% \verb|mktexlsr|. -% -% \subsection{Some details for the interested} -% -% \paragraph{Unpacking with \LaTeX.} -% The \xfile{.dtx} chooses its action depending on the format: -% \begin{description} -% \item[\plainTeX:] Run \docstrip\ and extract the files. -% \item[\LaTeX:] Generate the documentation. -% \end{description} -% If you insist on using \LaTeX\ for \docstrip\ (really, -% \docstrip\ does not need \LaTeX), then inform the autodetect routine -% about your intention: -% \begin{quote} -% \verb|latex \let\install=y\input{listingsutf8.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 listingsutf8.dtx -%makeindex -s gind.ist listingsutf8.idx -%pdflatex listingsutf8.dtx -%makeindex -s gind.ist listingsutf8.idx -%pdflatex listingsutf8.dtx -%\end{verbatim} -% \end{quote} -% -% \begin{thebibliography}{9} -% -% \bibitem{inputenc} -% Alan Jeffrey, Frank Mittelbach, -% \textit{inputenc.sty}, 2006/05/05 v1.1b. -% \CTANpkg{inputenc} -% -% \bibitem{listings} -% Carsten Heinz, Brooks Moses: -% \textit{The \xpackage{listings} package}; -% 2007/02/22;\\ -% \CTANpkg{listings}. -% -% \bibitem{stringenc} -% Heiko Oberdiek: -% \textit{The \xpackage{stringenc} package}; -% 2007/10/22;\\ -% \CTANpkg{stringenc}. -% -% \end{thebibliography} -% -% \begin{History} -% \begin{Version}{2007/10/22 v1.0} -% \item -% First version. -% \end{Version} -% \begin{Version}{2007/11/11 v1.1} -% \item -% Use of package \xpackage{pdftexcmds}. -% \end{Version} -% \begin{Version}{2011/11/10 v1.2} -% \item -% DOS line ends CR/LF normalized to LF to avoid empty lines -% (Bug report of Thomas Benkert in de.comp.text.tex). -% \end{Version} -% \begin{Version}{2016/05/16 v1.3} -% \item -% Documentation updates. -% \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 304bd89a99e..a0a0048ce07 100644 --- a/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins +++ b/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins @@ -1,5 +1,5 @@ % oberdiek.ins -% 2019/12/05 +% 2019/12/09 % % Copyright (C) % 1999, 2001, 2006 Heiko Oberdiek @@ -27,13 +27,9 @@ \input docstrip \batchinput{aliascnt.dtx} -\batchinput{alphalph.dtx} -\batchinput{askinclude.dtx} \batchinput{auxhook.dtx} \batchinput{bigintcalc.dtx} -\batchinput{bitset.dtx} \batchinput{bmpsize.dtx} -\batchinput{catchfile.dtx} \batchinput{centernot.dtx} \batchinput{chemarr.dtx} \batchinput{classlist.dtx} @@ -60,7 +56,6 @@ \batchinput{intcalc.dtx} \batchinput{kvdefinekeys.dtx} \batchinput{kvsetkeys.dtx} -\batchinput{listingsutf8.dtx} \batchinput{ltxcmds.dtx} \batchinput{pagegrid.dtx} \batchinput{pagesel.dtx} @@ -69,15 +64,12 @@ \batchinput{pdfcolparallel.dtx} \batchinput{pdfcolparcolumns.dtx} \batchinput{pdfcrypt.dtx} -\batchinput{pdfescape.dtx} \batchinput{pdfrender.dtx} -\batchinput{picture.dtx} \batchinput{protecteddef.dtx} \batchinput{refcount.dtx} \batchinput{resizegather.dtx} \batchinput{rotchiffre.dtx} \batchinput{scrindex.dtx} -\batchinput{selinput.dtx} \batchinput{setouterhbox.dtx} \batchinput{settobox.dtx} \batchinput{soulutf8.dtx} diff --git a/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex b/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex index 2597af8c6f7..676c3ab28c0 100644 --- a/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex +++ b/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex @@ -10,7 +10,7 @@ \newcommand*{\Author}{Heiko Oberdiek} \newcommand*{\Email}{ho-tex at tug.org} -\newcommand*{\Date}{2019/12/05} +\newcommand*{\Date}{2019/12/09} % Copyright (C) 2006-2016 by % Heiko Oberdiek @@ -176,22 +176,14 @@ \begin{overview} \entry{aliascnt}{Alias counters}% [\entrysep] -\entry{alphalph}{Convert numbers to letters}% -[\entrysep] -\entry{askinclude}{Interactive asking of included files}% -[\entrysep] \entry{atveryend}{Hooks at the very end of document}% [\entrysep] \entry{auxhook}{Hooks for auxiliary files}% [\entrysep] \entry{bigintcalc}{Expandable calculations on big integers}% [\entrysep] -\entry{bitset}{Handle bit-vector datatype}% -[\entrysep] \entry{bmpsize}{Extract size/resolution from bitmap files}% [\entrysep] -\entry{catchfile}{Catch the contents of a file}% -[\entrysep] \entry{centernot}{Centers the not symbol horizontally}% [\entrysep] \entry{chemarr}{Arrows for chemical reactions}% @@ -244,8 +236,6 @@ [\entrysep] \entry{kvsetkeys}{Key value parser}% [\entrysep] -\entry{listingsutf8}{Allow UTF-8 in listings input}% -[\entrysep] \entry{ltxcmds}{\hologo{LaTeX} kernel commands for general use}% [\entrysep] \entry{pagegrid}{Print page grid in background}% @@ -262,12 +252,8 @@ [\entrysep] \entry{pdfcrypt}{Allows the setting of PDF encryption}% [\entrysep] -\entry{pdfescape}{Implements \hologo{pdfTeX}'s escape features}% -[\entrysep] \entry{pdfrender}{Access to some PDF graphics parameters}% [\entrysep] -\entry{picture}{Dimens for picture macros}% -[\entrysep] \entry{protecteddef}{Define protected commands}% [\entrysep] \entry{refcount}{Data extraction from label references}% @@ -314,24 +300,6 @@ share the same counter register and clear list. \end{abstract} \tocinclude{aliascnt} -\newpage -\subsection{\pkgsectformat{alphalph}} -\label{alphalph} -\begin{abstract} -The package provides methods to represent numbers with a limited -set of symbols. Both \hologo{LaTeX} and \hologo{plainTeX} are supported. -\end{abstract} -\tocinclude{alphalph} - -\newpage -\subsection{\pkgsectformat{askinclude}} -\label{askinclude} -\begin{abstract} -This package replaces \cs{includeonly} by an interactive user -interface. -\end{abstract} -\tocinclude{askinclude} - \newpage \subsection{\pkgsectformat{auxhook}} \label{auxhook} @@ -350,16 +318,6 @@ with big integers that can exceed \TeX's number limits. \end{abstract} \tocinclude{bigintcalc} -\newpage -\subsection{\pkgsectformat{bitset}} -\label{bitset} -\begin{abstract} -This package defines and implements the data type bit set, -a vector of bits. The size of the vector may grow dynamically. -Individual bits can be manipulated. -\end{abstract} -\tocinclude{bitset} - \newpage \subsection{\pkgsectformat{bmpsize}} \label{bmpsize} @@ -373,15 +331,6 @@ options \xoption{viewport}, \xoption{trim} and \xoption{clip}. \end{abstract} \tocinclude{bmpsize} -\newpage -\subsection{\pkgsectformat{catchfile}} -\label{catchfile} -\begin{abstract} -This package catches the contents of a file and puts it in a macro. -It requires \eTeX. Both \LaTeX\ and \plainTeX\ are supported. -\end{abstract} -\tocinclude{catchfile} - \newpage \subsection{\pkgsectformat{centernot}} \label{centernot} @@ -649,18 +598,6 @@ only one level of curly braces is removed from the values. \end{abstract} \tocinclude{kvsetkeys} -\newpage -\subsection{\pkgsectformat{listingsutf8}} -\label{listingsutf8} -\begin{abstract} -Package \xpackage{listings} does not support files with multi-byte -encodings such as UTF-8. In case of \cs{lstinputlisting} a simple -workaround is possible if an one-byte encoding exists that the file -can be converted to. Also \eTeX\ and \pdfTeX\ regardless of its mode -are required. -\end{abstract} -\tocinclude{listingsutf8} - \newpage \subsection{\pkgsectformat{ltxcmds}} \label{ltxcmds} @@ -738,16 +675,6 @@ for \VTeX\ and some older versions of \pdfTeX. \end{abstract} \tocinclude{pdfcrypt} -\newpage -\subsection{\pkgsectformat{pdfescape}} -\label{pdfescape} -\begin{abstract} -This package implements \pdfTeX's escape features -(\cs{pdfescapehex}, \cs{pdfunescapehex}, \cs{pdfescapename}, -\cs{pdfescapestring}) using \TeX\ or \eTeX. -\end{abstract} -\tocinclude{pdfescape} - \newpage \subsection{\pkgsectformat{pdfrender}} \label{pdfrender} @@ -759,17 +686,6 @@ provides an interface for setting these parameters. \tocinclude{pdfrender} -\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{protecteddef}} \label{protecteddef} @@ -828,15 +744,6 @@ is supported. Index preambles can be given either by means of package \end{abstract} \tocinclude{scrindex} -\newpage -\subsection{\pkgsectformat{selinput}} -\label{selinput} -\begin{abstract} -This package selects the input encoding by specifying between -input characters and their glyph names. -\end{abstract} -\tocinclude{selinput} - \newpage \subsection{\pkgsectformat{setouterhbox}} \label{setouterhbox} diff --git a/Master/texmf-dist/source/latex/oberdiek/pdfescape.dtx b/Master/texmf-dist/source/latex/oberdiek/pdfescape.dtx deleted file mode 100644 index b405d7f7e17..00000000000 --- a/Master/texmf-dist/source/latex/oberdiek/pdfescape.dtx +++ /dev/null @@ -1,1533 +0,0 @@ -% \iffalse meta-comment -% -% File: pdfescape.dtx -% Version: 2016/05/16 v1.14 -% Info: Implements pdfTeX's escape features -% -% Copyright (C) -% 2007, 2010, 2011 Heiko Oberdiek -% 2016-2019 Oberdiek Package Support Group -% https://github.com/ho-tex/oberdiek/issues -% -% This work may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either -% version 1.3c of this license or (at your option) any later -% version. This version of this license is in -% https://www.latex-project.org/lppl/lppl-1-3c.txt -% and the latest version of this license is in -% https://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". -% -% The Current Maintainers of this work are -% Heiko Oberdiek and the Oberdiek Package Support Group -% https://github.com/ho-tex/oberdiek/issues -% -% The Base Interpreter refers to any `TeX-Format', -% because some files are installed in TDS:tex/generic//. -% -% This work consists of the main source file pdfescape.dtx -% and the derived files -% pdfescape.sty, pdfescape.pdf, pdfescape.ins, pdfescape.drv, -% pdfescape-test1.tex, pdfescape-test2.tex, -% pdfescape-test3.tex, pdfescape-test4.tex, -% pdfescape-test5.tex, pdfescape-test6.tex. -% -% Distribution: -% CTAN:macros/latex/contrib/oberdiek/pdfescape.dtx -% CTAN:macros/latex/contrib/oberdiek/pdfescape.pdf -% -% Unpacking: -% (a) If pdfescape.ins is present: -% tex pdfescape.ins -% (b) Without pdfescape.ins: -% tex pdfescape.dtx -% (c) If you insist on using LaTeX -% latex \let\install=y\input{pdfescape.dtx} -% (quote the arguments according to the demands of your shell) -% -% Documentation: -% (a) If pdfescape.drv is present: -% latex pdfescape.drv -% (b) Without pdfescape.drv: -% latex pdfescape.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 pdfescape.dtx -% makeindex -s gind.ist pdfescape.idx -% pdflatex pdfescape.dtx -% makeindex -s gind.ist pdfescape.idx -% pdflatex pdfescape.dtx -% -% Installation: -% TDS:tex/generic/oberdiek/pdfescape.sty -% TDS:doc/latex/oberdiek/pdfescape.pdf -% TDS:source/latex/oberdiek/pdfescape.dtx -% -%<*ignore> -\begingroup - \catcode123=1 % - \catcode125=2 % - \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 -% -%<*install> -\input docstrip.tex -\Msg{************************************************************************} -\Msg{* Installation} -\Msg{* Package: pdfescape 2016/05/16 v1.14 Implements pdfTeX's escape features (HO)} -\Msg{************************************************************************} - -\keepsilent -\askforoverwritefalse - -\let\MetaPrefix\relax -\preamble - -This is a generated file. - -Project: pdfescape -Version: 2016/05/16 v1.14 - -Copyright (C) - 2007, 2010, 2011 Heiko Oberdiek - 2016-2019 Oberdiek Package Support Group - -This work may be distributed and/or modified under the -conditions of the LaTeX Project Public License, either -version 1.3c of this license or (at your option) any later -version. This version of this license is in - https://www.latex-project.org/lppl/lppl-1-3c.txt -and the latest version of this license is in - https://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". - -The Current Maintainers of this work are -Heiko Oberdiek and the Oberdiek Package Support Group -https://github.com/ho-tex/oberdiek/issues - - -The Base Interpreter refers to any `TeX-Format', -because some files are installed in TDS:tex/generic//. - -This work consists of the main source file pdfescape.dtx -and the derived files - pdfescape.sty, pdfescape.pdf, pdfescape.ins, pdfescape.drv, - pdfescape-test1.tex, pdfescape-test2.tex, - pdfescape-test3.tex, pdfescape-test4.tex, - pdfescape-test5.tex, pdfescape-test6.tex. - -\endpreamble -\let\MetaPrefix\DoubleperCent - -\generate{% - \file{pdfescape.ins}{\from{pdfescape.dtx}{install}}% - \file{pdfescape.drv}{\from{pdfescape.dtx}{driver}}% - \usedir{tex/generic/oberdiek}% - \file{pdfescape.sty}{\from{pdfescape.dtx}{package}}% -% \usedir{doc/latex/oberdiek/test}% -% \file{pdfescape-test1.tex}{\from{pdfescape.dtx}{test1}}% -% \file{pdfescape-test2.tex}{\from{pdfescape.dtx}{test2}}% -% \file{pdfescape-test3.tex}{\from{pdfescape.dtx}{test3}}% -% \file{pdfescape-test4.tex}{\from{pdfescape.dtx}{test4}}% -% \file{pdfescape-test5.tex}{\from{pdfescape.dtx}{test5}}% -% \file{pdfescape-test6.tex}{\from{pdfescape.dtx}{test6}}% -} - -\catcode32=13\relax% active space -\let =\space% -\Msg{************************************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* file into a directory searched by TeX:} -\Msg{*} -\Msg{* pdfescape.sty} -\Msg{*} -\Msg{* To produce the documentation run the file `pdfescape.drv'} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing!} -\Msg{*} -\Msg{************************************************************************} - -\endbatchfile -% -%<*ignore> -\fi -% -%<*driver> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{pdfescape.drv}% - [2016/05/16 v1.14 Implements pdfTeX's escape features (HO)]% -\documentclass{ltxdoc} -\usepackage{holtxdoc}[2011/11/22] -\begin{document} - \DocInput{pdfescape.dtx}% -\end{document} -% -% \fi -% -% -% -% \GetFileInfo{pdfescape.drv} -% -% \title{The \xpackage{pdfescape} package} -% \date{2016/05/16 v1.14} -% \author{Heiko Oberdiek\thanks -% {Please report any issues at \url{https://github.com/ho-tex/oberdiek/issues}}} -% -% \maketitle -% -% \begin{abstract} -% This package implements \pdfTeX's escape features -% (\cs{pdfescapehex}, \cs{pdfunescapehex}, \cs{pdfescapename}, -% \cs{pdfescapestring}) using \TeX\ or \eTeX. -% \end{abstract} -% -% \tableofcontents -% -% \section{Documentation} -% -% \begin{declcs}{EdefEscapeHex} \M{cmd} \M{string}\\ -% \cs{EdefUnescapeHex} \M{cmd} \M{string}\\ -% \cs{EdefEscapeName} \M{cmd} \M{string}\\ -% \cs{EdefEscapeString} \M{cmd} \M{string} -% \end{declcs} -% These commands converts \meta{string} and stores the result -% in macro \meta{cmd}. The conversion result is the same -% as the conversion of the corresponding \pdfTeX's primitives. -% Note that the argument \meta{string} is expanded before -% the conversion. -% -% For example, if \pdfTeX\ \textgreater= 1.30 is present, -% then \cs{EdefEscapeHex} -% becomes to: -% \begin{quote} -%\begin{verbatim} -%\def\EdefEscapeHex#1#2{% -% \edef#1{\pdfescapehex{#2}}% -%} -%\end{verbatim} -% \end{quote} -% The package provides implementations for the case that \pdfTeX\ is -% not present (or too old). Even \eTeX\ can be missing, however it is -% used if it is detected. -% -% \paragraph{Babel.} -% The input strings may contain shorthand characters of package -% \xpackage{babel}. -% -% \subsection{Additional unescape macros} -% -% \begin{declcs}{EdefUnescapeName} \M{cmd} \M{string} -% \end{declcs} -% Sequences of a hash sign with two hexadecimal digits are -% converted to the corresponding character (PDF-1.2). -% A hash sign that is not followed by two hexadecimal digits -% is left unchanged. The catcodes in the result string follow -% TeX's conventions. The space has catcode 10 (space) and -% the other characters have catcode 12 (other). -% -% \begin{declcs}{EdefUnescapeString} \M{cmd} \M{string} -% \end{declcs} -% Macro \meta{cmd} stores the unescaped string in \meta{string}. -% All the rules for literal strings are implemented, see -% PDF specification. -% The catcodes in the result string follow TeX's conventions. -% -% \subsection{Sanitizing macro} -% -% \begin{declcs}{EdefSanitize} \M{cmd} \M{string} -% \end{declcs} -% Argument \meta{string} is expanded, converted to a string -% of tokens with catcode 12 (other) and space tokens, and -% stored in macro \meta{cmd}. -% -% \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\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode35=6 % # - \catcode39=12 % ' - \catcode44=12 % , - \catcode45=12 % - - \catcode46=12 % . - \catcode58=12 % : - \catcode64=11 % @ - \catcode123=1 % { - \catcode125=2 % } - \expandafter\let\expandafter\x\csname ver@pdfescape.sty\endcsname - \ifx\x\relax % plain-TeX, first loading - \else - \def\empty{}% - \ifx\x\empty % LaTeX, first loading, - % variable is initialized, but \ProvidesPackage not yet seen - \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{pdfescape}{The package is already loaded}% - \aftergroup\endinput - \fi - \fi -\endgroup% -% \end{macrocode} -% Package identification: -% \begin{macrocode} -\begingroup\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode35=6 % # - \catcode39=12 % ' - \catcode40=12 % ( - \catcode41=12 % ) - \catcode44=12 % , - \catcode45=12 % - - \catcode46=12 % . - \catcode47=12 % / - \catcode58=12 % : - \catcode64=11 % @ - \catcode91=12 % [ - \catcode93=12 % ] - \catcode123=1 % { - \catcode125=2 % } - \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\@undefined - \xdef#1{#3}% - \fi - \ifx#1\relax - \xdef#1{#3}% - \fi - }% - \fi -\expandafter\x\csname ver@pdfescape.sty\endcsname -\ProvidesPackage{pdfescape}% - [2016/05/16 v1.14 Implements pdfTeX's escape features (HO)]% -% \end{macrocode} -% -% \subsection{Catcodes} -% -% \begin{macrocode} -\begingroup\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode123 1 % { - \catcode125 2 % } - \catcode64 11 % - \def\x{\endgroup - \expandafter\edef\csname PE@AtEnd\endcsname{% - \endlinechar=\the\endlinechar\relax - \catcode13=\the\catcode13\relax - \catcode32=\the\catcode32\relax - \catcode35=\the\catcode35\relax - \catcode61=\the\catcode61\relax - \catcode64=\the\catcode64\relax - \catcode123=\the\catcode123\relax - \catcode125=\the\catcode125\relax - }% - }% -\x\catcode61\catcode48\catcode32=10\relax% -\catcode13=5 % ^^M -\endlinechar=13 % -\catcode35=6 % # -\catcode64=11 % @ -\catcode123=1 % { -\catcode125=2 % } -\def\TMP@EnsureCode#1#2#3{% - \edef\PE@AtEnd{% - \PE@AtEnd - #1#2=\the#1#2\relax - }% - #1#2=#3\relax -} -\TMP@EnsureCode\catcode{0}{12}% ^^@ -\TMP@EnsureCode\catcode{34}{12}% " -\TMP@EnsureCode\catcode{36}{3}% $ -\TMP@EnsureCode\catcode{38}{4}% & -\TMP@EnsureCode\catcode{39}{12}% ' -\TMP@EnsureCode\catcode{42}{12}% * -\TMP@EnsureCode\catcode{45}{12}% - -\TMP@EnsureCode\catcode{46}{12}% . -\TMP@EnsureCode\catcode{47}{12}% / -\TMP@EnsureCode\catcode{60}{12}% < -\TMP@EnsureCode\catcode{62}{12}% > -\TMP@EnsureCode\catcode{91}{12}% [ -\TMP@EnsureCode\catcode{93}{12}% ] -\TMP@EnsureCode\catcode{94}{7}% ^ -\TMP@EnsureCode\catcode{96}{12}% ` -\TMP@EnsureCode\uccode{34}{0}% " -\TMP@EnsureCode\uccode{48}{0}% 0 -\TMP@EnsureCode\uccode{61}{0}% = -\edef\PE@AtEnd{\PE@AtEnd\noexpand\endinput} -% \end{macrocode} -% -% \subsection{Load package} -% -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname RequirePackage\endcsname\relax - \def\TMP@RequirePackage#1[#2]{% - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname ver@#1.sty\endcsname\relax - \input #1.sty\relax - \fi - }% - \TMP@RequirePackage{ltxcmds}[2010/04/08]% -\else - \RequirePackage{ltxcmds}[2010/04/08]% -\fi -% \end{macrocode} -% -% \subsection{Sanitizing} -% -% \begin{macro}{\EdefSanitize} -% Macro \cs{EdefSanitize} takes |#2|, entirely converts -% it to token with catcode 12 (other) and stores the -% result in macro |#1|. -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname detokenize\endcsname\relax - \long\def\EdefSanitize#1#2{% - \begingroup - \csname @safe@activestrue\endcsname - \edef#1{#2}% - \PE@onelevel@sanitize#1% - \expandafter\endgroup - \expandafter\def\expandafter#1\expandafter{#1}% - }% - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname @onelevel@sanitize\endcsname\relax - \def\PE@onelevel@sanitize#1{% - \edef#1{\expandafter\PE@strip@prefix\meaning#1}% - }% - \def\PE@strip@prefix#1>{}% - \else - \let\PE@onelevel@sanitize\@onelevel@sanitize - \fi -\else - \long\def\EdefSanitize#1#2{% - \begingroup - \csname @safe@activestrue\endcsname - \edef#1{#2}% - \expandafter\endgroup - \expandafter\def\expandafter#1\expandafter{% - \detokenize\expandafter{#1}% - }% - }% - \def\PE@onelevel@sanitize#1{% - \edef#1{\detokenize\expandafter{#1}}% - }% -\fi -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@sanitize} -% Macro \cs{PE@sanitize} is only defined for -% compatibility with version 1.4. Its use is deprecated. -% \begin{macrocode} -\let\PE@sanitize\EdefSanitize -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Space characters} -% -% \begin{macro}{\PE@space@other} -% \begin{macrocode} -\begingroup - \catcode`\ =12\relax% -\def\x{\endgroup\def\PE@space@other{ }}\x\relax -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@space@space} -% \begin{macrocode} -\def\PE@space@space{ } -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Space normalization} -% -% \begin{macro}{\PE@SanitizeSpaceOther} -% \begin{macrocode} -\def\PE@SanitizeSpaceOther#1{% - \edef#1{\expandafter\PE@SpaceToOther#1 \relax}% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\PE@SpaceToOther} -% \begin{macrocode} -\def\PE@SpaceToOther#1 #2\relax{% - #1% - \ifx\\#2\\% - \else - \PE@space@other - \ltx@ReturnAfterFi{% - \PE@SpaceToOther#2\relax - }% - \fi -} -% \end{macrocode} -% \end{macro} -% -% \subsection{\cs{EdefUnescapeName}} -% -% \begin{macro}{\EdefUnescapeName} -% \begin{macrocode} -\def\EdefUnescapeName#1#2{% - \EdefSanitize#1{#2}% - \PE@SanitizeSpaceOther#1% - \PE@UnescapeName#1% - \PE@onelevel@sanitize#1% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\PE@UnescapeName} -% \begin{macrocode} -\begingroup - \catcode`\$=6 % hash - \catcode`\#=12 % other - \gdef\PE@UnescapeName$1{% - \begingroup - \PE@InitUccodeHexDigit - \def\PE@result{}% - \expandafter\PE@DeName$1#\relax\relax - \expandafter\endgroup - \expandafter\def\expandafter$1\expandafter{\PE@result}% - }% - \gdef\PE@DeName$1#$2$3{% - \ifx\relax$2% - \edef\PE@result{\PE@result$1}% - \let\PE@next\relax - \else - \ifx\relax$3% - % wrong escape sequence in input - \edef\PE@result{\PE@result$1#}% - \let\PE@next\relax - \else - \uppercase{% - \def\PE@testA{$2}% - \def\PE@testB{$3}% - }% - \ifcase\ifcase\expandafter\PE@TestUcHexDigit\PE@testA - \ifcase\expandafter\PE@TestUcHexDigit\PE@testB - \ltx@zero - \else - \ltx@one - \fi - \else - \ltx@one - \fi - \uccode\ltx@zero="\PE@testA\PE@testB\relax - \uppercase{% - \def\PE@temp{^^@}% - }% - \uccode\ltx@zero=\ltx@zero - \edef\PE@result{\PE@result$1\PE@temp}% - \let\PE@next\PE@DeName - \else - % wrong escape sequence in input - \edef\PE@result{\PE@result$1#}% - \def\PE@next{\PE@DeName$2$3}% - \fi - \fi - \fi - \PE@next - }% -\endgroup -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\PE@InitUccodeHexDigit} -% \begin{macrocode} -\def\PE@InitUccodeHexDigit{% - \uccode`a=`A\relax - \uccode`b=`B\relax - \uccode`c=`C\relax - \uccode`d=`D\relax - \uccode`e=`E\relax - \uccode`f=`F\relax - \uccode`A=\ltx@zero - \uccode`B=\ltx@zero - \uccode`C=\ltx@zero - \uccode`D=\ltx@zero - \uccode`E=\ltx@zero - \uccode`F=\ltx@zero - \uccode`0=\ltx@zero - \uccode`1=\ltx@zero - \uccode`2=\ltx@zero - \uccode`3=\ltx@zero - \uccode`4=\ltx@zero - \uccode`5=\ltx@zero - \uccode`6=\ltx@zero - \uccode`7=\ltx@zero - \uccode`8=\ltx@zero - \uccode`9=\ltx@zero -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\PE@TestUcHexDigit} -% \begin{macrocode} -\def\PE@TestUcHexDigit#1{% - \ifnum`#1<48 % 0 - \ltx@one - \else - \ifnum`#1>70 % F - \ltx@one - \else - \ifnum`#1>57 % 9 - \ifnum`#1<65 % A - \ltx@one - \else - \ltx@zero - \fi - \else - \ltx@zero - \fi - \fi - \fi -} -% \end{macrocode} -% \end{macro} -% -% \subsection{\cs{EdefUnescapeString}} -% -% \begin{macro}{\EdefUnescapeString} -% \begin{macrocode} -\def\EdefUnescapeString#1#2{% - \EdefSanitize#1{#2}% - \PE@SanitizeSpaceOther#1% - \PE@NormalizeLineEnd#1% - \PE@UnescapeString#1% - \PE@onelevel@sanitize#1% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\begingroup - \uccode`\8=10 % lf - \uccode`\9=13 % cr -\def\x#1#2{\endgroup -% \end{macrocode} -% \begin{macro}{\PE@NormalizeLineEnd} -% \begin{macrocode} - \def\PE@NormalizeLineEnd##1{% - \def\PE@result{}% - \expandafter\PE@@NormalizeLineEnd##1#2\relax - \let##1\PE@result - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@@NormalizeLineEnd} -% \begin{macrocode} - \def\PE@@NormalizeLineEnd##1#2##2{% - \ifx\relax##2% - \edef\PE@result{\PE@result##1}% - \let\PE@next\relax - \else - \edef\PE@result{\PE@result##1#1}% - \ifx#1##2% lf - \let\PE@next\PE@@NormalizeLineEnd - \else - \def\PE@next{\PE@@NormalizeLineEnd##2}% - \fi - \fi - \PE@next - }% -}% -\uppercase{% - \x 89% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\begingroup - \catcode`\|=0 % - \catcode`\\=12 % -% \end{macrocode} -% \begin{macro}{\PE@UnescapeString} -% \begin{macrocode} - |gdef|PE@UnescapeString#1{% - |begingroup - |def|PE@result{}% - |expandafter|PE@DeString#1\|relax - |expandafter|endgroup - |expandafter|def|expandafter#1|expandafter{|PE@result}% - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@DeString} -% \begin{macrocode} - |gdef|PE@DeString#1\#2{% - |ifx|relax#2% - |edef|PE@result{|PE@result#1}% - |let|PE@next|relax - |else - |if n#2% - |uccode|ltx@zero=10 % - |else|if r#2% - |uccode|ltx@zero=13 % - |else|if t#2% - |uccode|ltx@zero=9 % - |else|if b#2% - |uccode|ltx@zero=8 % - |else|if f#2% - |uccode|ltx@zero=12 % - |else - |uccode|ltx@zero=|ltx@zero - |fi|fi|fi|fi|fi - |ifnum|uccode|ltx@zero>|ltx@zero - |uppercase{% - |edef|PE@temp{^^@}% - }% - |edef|PE@result{|PE@result#1|PE@temp}% - |let|PE@next|PE@DeString - |else - |if\#2% backslash - |edef|PE@result{|PE@result#1}% - |let|PE@next|PE@CheckEndBackslash - |else - |ifnum`#2=10 % linefeed - |edef|PE@result{|PE@result#1}% - |let|PE@next|PE@DeString - |else - |ifcase|PE@TestOctDigit#2% - |edef|PE@result{|PE@result#1}% - |def|PE@next{|PE@OctI#2}% - |else - |edef|PE@result{|PE@result#1#2}% - |let|PE@next|PE@DeString - |fi - |fi - |fi - |fi - |fi - |PE@next - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@CheckEndBackslash} -% \begin{macrocode} - |gdef|PE@CheckEndBackslash#1{% - |ifx|relax#1% - |else - |edef|PE@result{|PE@result\}% - |expandafter|PE@DeString|expandafter#1% - |fi - }% -% \end{macrocode} -% \end{macro} -% \begin{macrocode} -|endgroup -% \end{macrocode} -% \begin{macro}{\PE@TestOctDigit} -% \begin{macrocode} -\def\PE@TestOctDigit#1{% - \ifnum`#1<48 % 0 - \ltx@one - \else - \ifnum`#1>55 % 7 - \ltx@one - \else - \ltx@zero - \fi - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@OctI} -% \begin{macrocode} -\def\PE@OctI#1#2{% - \ifcase\PE@TestOctDigit#2% - \def\PE@next{\PE@OctII{#1#2}}% - \else - \def\PE@next{\PE@OctAll#1#2}% - \fi - \PE@next -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@OctII} -% \begin{macrocode} -\def\PE@OctII#1#2{% - \ifcase\PE@TestOctDigit#2% - \def\PE@next{\PE@OctIII#1#2}% - \else - \def\PE@next{\PE@OctAll{#1}#2}% - \fi - \PE@next -} -% \end{macrocode} -% \end{macro} -% \begin{macrocode} -\ltx@IfUndefined{numexpr}{% - \catcode`\$=9 % - \catcode`\&=14 % -}{% - \catcode`\$=14 % - \catcode`\&=9 % -} -% \end{macrocode} -% \begin{macro}{\PE@OctIII} -% \begin{macrocode} -\def\PE@OctIII#1#2#3{% - \ifnum#1<4 % - \def\PE@next{\PE@OctAll{#1#2#3}}% - \else -$ \count\ltx@cclv#1 % -$ \advance\count\ltx@cclv -4 % - \edef\PE@next{% - \noexpand\PE@OctAll{% -$ \the\count\ltx@cclv -& \the\numexpr#1-4\relax - #2#3% - }% - }% - \fi - \PE@next -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@OctAll} -% \begin{macrocode} -\def\PE@OctAll#1{% - \uccode\ltx@zero='#1\relax - \uppercase{% - \edef\PE@result{\PE@result^^@}% - }% - \PE@DeString -} -% \end{macrocode} -% \end{macro} -% -% \subsection{User macros (\pdfTeX\space analogues)} -% -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname RequirePackage\endcsname\relax - \def\TMP@RequirePackage#1[#2]{% - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname ver@#1.sty\endcsname\relax - \input #1.sty\relax - \fi - }% - \TMP@RequirePackage{pdftexcmds}[2007/11/11]% -\else - \RequirePackage{pdftexcmds}[2007/11/11]% -\fi -% \end{macrocode} -% -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname pdf@escapehex\endcsname\relax -% \end{macrocode} -% -% \begin{macro}{\EdefEscapeHex} -% \begin{macrocode} - \long\def\EdefEscapeHex#1#2{% - \EdefSanitize#1{#2}% - \PE@SanitizeSpaceOther#1% - \PE@EscapeHex#1% - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\EdefUnescapeHex} -% \begin{macrocode} - \def\EdefUnescapeHex#1#2{% - \EdefSanitize#1{#2}% - \PE@UnescapeHex#1% - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\EdefEscapeName} -% \begin{macrocode} - \long\def\EdefEscapeName#1#2{% - \EdefSanitize#1{#2}% - \PE@SanitizeSpaceOther#1% - \PE@EscapeName#1% - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\EdefEscapeString} -% \begin{macrocode} - \long\def\EdefEscapeString#1#2{% - \EdefSanitize#1{#2}% - \PE@SanitizeSpaceOther#1% - \PE@EscapeString#1% - }% -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\else -% \end{macrocode} -% -% \begin{macro}{\PE@edefbabel} -% Help macro that adds support for \xpackage{babel}'s shorthand -% characters. -% \begin{macrocode} - \long\def\PE@edefbabel#1#2#3{% - \begingroup - \csname @save@activestrue\endcsname - \edef#1{#2{#3}}% - \expandafter\endgroup - \expandafter\def\expandafter#1\expandafter{#1}% - }% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\EdefEscapeHex} -% \begin{macrocode} - \long\def\EdefEscapeHex#1#2{% - \PE@edefbabel#1\pdf@escapehex{#2}% - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\EdefUnescapeHex} -% \begin{macrocode} - \def\EdefUnescapeHex#1#2{% - \PE@edefbabel#1\pdf@unescapehex{#2}% - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\EdefEscapeName} -% \begin{macrocode} - \long\def\EdefEscapeName#1#2{% - \PE@edefbabel#1\pdf@escapename{#2}% - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\EdefEscapeString} -% \begin{macrocode} - \long\def\EdefEscapeString#1#2{% - \PE@edefbabel#1\pdf@escapestring{#2}% - }% -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} - \expandafter\PE@AtEnd -\fi% -% \end{macrocode} -% -% \subsection{Help macros} -% -% \subsubsection{Characters} -% -% Special characters with catcode 12 (other) are created and -% stored in macros. -% \begin{macro}{\PE@hash} -% \begin{macrocode} -\edef\PE@hash{\string#} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@backslash} -% \begin{macrocode} -\begingroup - \escapechar=-1 % -\edef\x{\endgroup - \def\noexpand\PE@backslash{\string\\}% -} -\x -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Switch for \eTeX} -% -% \begin{macrocode} -\ltx@newif\ifPE@etex -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname numexpr\endcsname\relax -\else - \PE@etextrue -\fi -% \end{macrocode} -% -% \subsection{Conversions} -% -% \subsubsection{Conversion to hex string} -% -% \begin{macro}{\PE@EscapeHex} -% \begin{macrocode} -\ifPE@etex - \def\PE@EscapeHex#1{% - \edef#1{\expandafter\PE@ToHex#1\relax}% - }% -\else - \def\PE@EscapeHex#1{% - \def\PE@result{}% - \expandafter\PE@ToHex#1\relax - \let#1\PE@result - }% -\fi -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@ToHex} -% \begin{macrocode} -\def\PE@ToHex#1{% - \ifx\relax#1% - \else - \PE@HexChar{#1}% - \expandafter\PE@ToHex - \fi -}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@HexChar} -% \begin{macrocode} -\ifPE@etex - \def\PE@HexChar#1{% - \PE@HexDigit{\numexpr\dimexpr.0625\dimexpr`#1sp\relax\relax\relax}% - \PE@HexDigit{% - \numexpr`#1-16*\dimexpr.0625\dimexpr`#1sp\relax\relax\relax - }% - }% -\else - \def\PE@HexChar#1{% - \dimen0=`#1sp% - \dimen2=.0625\dimen0 % - \advance\dimen0-16\dimen2 % - \edef\PE@result{% - \PE@result - \PE@HexDigit{\dimen2 }% - \PE@HexDigit{\dimen0 }% - }% - }% -\fi -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@HexDigit} -% \begin{macrocode} -\def\PE@HexDigit#1{% - \expandafter\string - \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 -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Character code to octal number} -% -% \begin{macro}{\PE@OctChar} -% \begin{macrocode} -\ifPE@etex - \def\PE@OctChar#1{% - \expandafter\PE@@OctChar - \the\numexpr\dimexpr.015625\dimexpr`#1sp\relax\relax - \expandafter\relax - \expandafter\relax - \the\numexpr\dimexpr.125\dimexpr`#1sp\relax\relax\relax - \relax - #1% - }% - \def\PE@@OctChar#1\relax#2\relax#3{% - \PE@backslash - #1% - \the\numexpr#2-8*#1\relax - \the\numexpr\dimexpr`#3sp\relax-8*#2\relax - }% -\else - \def\PE@OctChar#1{% - \dimen0=`#1sp% - \dimen2=.125\dimen0 % - \dimen4=.125\dimen2 % - \advance\dimen0-8\dimen2 % - \advance\dimen2-8\dimen4 % - \edef\PE@result{% - \PE@result - \PE@backslash - \number\dimen4 % - \number\dimen2 % - \number\dimen0 % - }% - }% -\fi -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Unpack hex string} -% -% \begin{macro}{\PE@UnescapeHex} -% \begin{macrocode} -\def\PE@UnescapeHex#1{% - \begingroup - \PE@InitUccodeHexDigit - \def\PE@result{}% - \expandafter\PE@DeHex#1\relax\relax - \expandafter\endgroup - \expandafter\def\expandafter#1\expandafter{\PE@result}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@DeHex} -% \begin{macrocode} -\def\PE@DeHex#1#2{% - \ifx#2\relax - \ifx#1\relax - \let\PE@next\relax - \else - \uppercase{% - \def\PE@testA{#1}% - }% - \ifcase\expandafter\PE@TestUcHexDigit\PE@testA - \def\PE@next{% - \PE@DeHex#10\relax\relax - }% - \else - \let\PE@next\relax - \fi - \fi - \else - \uppercase{% - \def\PE@testA{#1}% - \def\PE@testB{#2}% - }% - \ifcase\expandafter\PE@TestUcHexDigit\PE@testA - \ifcase\expandafter\PE@TestUcHexDigit\PE@testB - \uccode\ltx@zero="\PE@testA\PE@testB\relax - \ifnum\uccode\ltx@zero=32 % - \let\PE@temp\PE@space@space - \else - \uppercase{% - \def\PE@temp{^^@}% - }% - \fi - \edef\PE@result{\PE@result\PE@temp}% - \let\PE@next\PE@DeHex - \else - % invalid input sequence - \def\PE@next{% - \PE@DeHex#1% - }% - \fi - \else - % invalid input sequence - \def\PE@next{\PE@DeHex#2}% - \fi - \fi - \PE@next -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Conversion to PDF name} -% -% \begin{macro}{\PE@EscapeName} -% \begin{macrocode} -\ifPE@etex - \def\PE@EscapeName#1{% - \edef#1{\expandafter\PE@EscapeNameTokens#1\relax}% - }% -\else - \def\PE@EscapeName#1{% - \def\PE@result{}% - \expandafter\PE@EscapeNameTokens#1\relax - \let#1\PE@result - }% -\fi -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@EscapeNameTokens} -% \begin{macrocode} -\def\PE@EscapeNameTokens#1{% - \ifx\relax#1% - \else - \ifnum`#1<33 % - \ifcase`#1 % - % drop illegal zero - \else - \PE@EscapeNameAdd\PE@hash - \PE@HexChar#1% - \fi - \else - \ifnum`#1>126 % - \PE@EscapeNameAdd\PE@hash - \PE@HexChar#1% - \else \ifnum`#1=35 \PE@EscapeNameHashChar 23% # - \else\ifnum`#1=37 \PE@EscapeNameHashChar 25% % - \else\ifnum`#1=40 \PE@EscapeNameHashChar 28% ( - \else\ifnum`#1=41 \PE@EscapeNameHashChar 29% ) - \else\ifnum`#1=47 \PE@EscapeNameHashChar 2F% / - \else\ifnum`#1=60 \PE@EscapeNameHashChar 3C% < - \else\ifnum`#1=62 \PE@EscapeNameHashChar 3E% > - \else\ifnum`#1=91 \PE@EscapeNameHashChar 5B% [ - \else\ifnum`#1=93 \PE@EscapeNameHashChar 5D% ] - \else\ifnum`#1=123 \PE@EscapeNameHashChar 7B% { - \else\ifnum`#1=125 \PE@EscapeNameHashChar 7D% } - \else - \PE@EscapeNameAdd{#1}% - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi - \fi - \fi - \expandafter\PE@EscapeNameTokens - \fi -}% -\def\PE@EscapeNameHashChar#1#2{% - \PE@EscapeNameAdd{\PE@hash\string#1\string#2}% -}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@EscapeNameAdd} -% \begin{macrocode} -\ifPE@etex - \def\PE@EscapeNameAdd#1{#1}% -\else - \def\PE@EscapeNameAdd#1{% - \edef\PE@result{% - \PE@result - #1% - }% - }% -\fi -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Conversion to PDF string} -% -% \begin{macro}{\PE@EscapeString} -% \begin{macrocode} -\ifPE@etex - \def\PE@EscapeString#1{% - \edef#1{\expandafter\PE@EscapeStringTokens#1\relax}% - }% -\else - \def\PE@EscapeString#1{% - \begingroup - \def\PE@result{}% - \expandafter\PE@EscapeStringTokens#1\relax - \expandafter\endgroup - \expandafter\def\expandafter#1\expandafter{\PE@result}% - }% -\fi -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@EscapeStringTokens} -% \begin{macrocode} -\def\PE@EscapeStringTokens#1{% - \ifx\relax#1% - \else - \ifnum`#1<33 % - \PE@OctChar#1% - \else - \ifnum`#1>126 % - \PE@OctChar#1% - \else \ifnum`#1=40 \PE@EscapeStringAdd{\string\(}% ( - \else\ifnum`#1=41 \PE@EscapeStringAdd{\string\)}% ) - \else\ifnum`#1=92 \PE@EscapeStringAdd{\string\\}% \ - \else - \PE@EscapeStringAdd{#1}% - \fi\fi\fi - \fi - \fi - \expandafter\PE@EscapeStringTokens - \fi -}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@EscapeStringAdd} -% \begin{macrocode} -\ifPE@etex - \def\PE@EscapeStringAdd#1{#1}% -\else - \def\PE@EscapeStringAdd#1{% - \edef\PE@result{% - \PE@result - #1% - }% - }% -\fi -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\PE@AtEnd% -% \end{macrocode} -% -% \begin{macrocode} -% -% \end{macrocode} -%% \section{Installation} -% -% \subsection{Download} -% -% \paragraph{Package.} This package is available on -% CTAN\footnote{\CTANpkg{pdfescape}}: -% \begin{description} -% \item[\CTAN{macros/latex/contrib/oberdiek/pdfescape.dtx}] The source file. -% \item[\CTAN{macros/latex/contrib/oberdiek/pdfescape.pdf}] Documentation. -% \end{description} -% -% -% \paragraph{Bundle.} All the packages of the bundle `oberdiek' -% are also available in a TDS compliant ZIP archive. There -% the packages are already unpacked and the documentation files -% are generated. The files and directories obey the TDS standard. -% \begin{description} -% \item[\CTANinstall{install/macros/latex/contrib/oberdiek.tds.zip}] -% \end{description} -% \emph{TDS} refers to the standard ``A Directory Structure -% for \TeX\ Files'' (\CTANpkg{tds}). Directories -% with \xfile{texmf} in their name are usually organized this way. -% -% \subsection{Bundle installation} -% -% \paragraph{Unpacking.} Unpack the \xfile{oberdiek.tds.zip} in the -% TDS tree (also known as \xfile{texmf} tree) of your choice. -% Example (linux): -% \begin{quote} -% |unzip oberdiek.tds.zip -d ~/texmf| -% \end{quote} -% -% \subsection{Package installation} -% -% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting -% \docstrip\ archive. The files are extracted by running the -% \xfile{.dtx} through \plainTeX: -% \begin{quote} -% \verb|tex pdfescape.dtx| -% \end{quote} -% -% \paragraph{TDS.} Now the different files must be moved into -% the different directories in your installation TDS tree -% (also known as \xfile{texmf} tree): -% \begin{quote} -% \def\t{^^A -% \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} -% pdfescape.sty & tex/generic/oberdiek/pdfescape.sty\\ -% pdfescape.pdf & doc/latex/oberdiek/pdfescape.pdf\\ -% pdfescape.dtx & source/latex/oberdiek/pdfescape.dtx\\ -% \end{tabular}^^A -% }^^A -% \sbox0{\t}^^A -% \ifdim\wd0>\linewidth -% \begingroup -% \advance\linewidth by\leftmargin -% \advance\linewidth by\rightmargin -% \edef\x{\endgroup -% \def\noexpand\lw{\the\linewidth}^^A -% }\x -% \def\lwbox{^^A -% \leavevmode -% \hbox to \linewidth{^^A -% \kern-\leftmargin\relax -% \hss -% \usebox0 -% \hss -% \kern-\rightmargin\relax -% }^^A -% }^^A -% \ifdim\wd0>\lw -% \sbox0{\small\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\footnotesize\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\scriptsize\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\tiny\t}^^A -% \ifdim\wd0>\linewidth -% \lwbox -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \end{quote} -% If you have a \xfile{docstrip.cfg} that configures and enables \docstrip's -% TDS installing feature, then some files can already be in the right -% place, see the documentation of \docstrip. -% -% \subsection{Refresh file name databases} -% -% If your \TeX~distribution -% (\TeX\,Live, \mikTeX, \dots) relies on file name databases, you must refresh -% these. For example, \TeX\,Live\ users run \verb|texhash| or -% \verb|mktexlsr|. -% -% \subsection{Some details for the interested} -% -% \paragraph{Unpacking with \LaTeX.} -% The \xfile{.dtx} chooses its action depending on the format: -% \begin{description} -% \item[\plainTeX:] Run \docstrip\ and extract the files. -% \item[\LaTeX:] Generate the documentation. -% \end{description} -% If you insist on using \LaTeX\ for \docstrip\ (really, -% \docstrip\ does not need \LaTeX), then inform the autodetect routine -% about your intention: -% \begin{quote} -% \verb|latex \let\install=y\input{pdfescape.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 pdfescape.dtx -%makeindex -s gind.ist pdfescape.idx -%pdflatex pdfescape.dtx -%makeindex -s gind.ist pdfescape.idx -%pdflatex pdfescape.dtx -%\end{verbatim} -% \end{quote} -% -% \begin{History} -% \begin{Version}{2007/02/21 v1.0} -% \item -% First version. -% \end{Version} -% \begin{Version}{2007/02/25 v1.1} -% \item -% Test files added. -% \item -% \cs{EdefUnescapeHex} supports lowercase letters. -% \item -% Fix: \verb|\EdefEscapeName{^^@}| -% \item -% Fix: \verb|\EdefEscapeName{\string#}| -% \item -% Fix for \cs{EdefUnescapeHex} in case of incomplete hex string. -% \item -% Fix: \cs{EdefUnescapeHex} generates space tokens with catcode -% 10 (space) in all cases. -% \item -% Fix: \cs{EdefEscapeHex} and \cs{EdefEscapeName} now generate -% tokens with catcode 12 (other) only. -% \end{Version} -% \begin{Version}{2007/03/20 v1.2} -% \item -% Fix: Wrong year in \cs{ProvidesPackage}. -% \end{Version} -% \begin{Version}{2007/04/11 v1.3} -% \item -% Line ends sanitized. -% \end{Version} -% \begin{Version}{2007/04/21 v1.4} -% \item -% \cs{EdefUnescapeName} and \cs{EdefUnescapeString} added. -% \end{Version} -% \begin{Version}{2007/08/27 v1.5} -% \item -% \cs{EdefSanitize} added (replaces \cs{PE@sanitize}). -% \end{Version} -% \begin{Version}{2007/09/09 v1.6} -% \item -% Fix in catcode setup. -% \end{Version} -% \begin{Version}{2007/10/27 v1.7} -% \item -% More efficient \cs{EdefSanitize}. -% \end{Version} -% \begin{Version}{2007/11/11 v1.8} -% \item -% Use of package \xpackage{pdftexcmds} for \hologo{LuaTeX} support. -% \end{Version} -% \begin{Version}{2010/03/01 v1.9} -% \item -% Compatibility with \hologo{iniTeX}. -% \end{Version} -% \begin{Version}{2010/11/12 v1.10} -% \item -% Use of package \xpackage{ltxcmds}. -% \item -% Fix for compatibility with \hologo{iniTeX}. -% \end{Version} -% \begin{Version}{2011/01/30 v1.11} -% \item -% Already loaded package files are not input in \hologo{plainTeX}. -% \end{Version} -% \begin{Version}{2011/04/04 v1.12} -% \item -% Further fixes for compatibility for \hologo{iniTeX}. -% \item -% Test file for \hologo{iniTeX} added. -% \end{Version} -% \begin{Version}{2011/11/25 v1.13} -% \item -% Higher order bit of octal sequences in \cs{EdefUnescapeString} -% ignored according to the PDF specification -% (Bug found by Bruno Le Floch). -% \end{Version} -% \begin{Version}{2016/05/16 v1.14} -% \item -% Documentation updates. -% \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 deleted file mode 100644 index ba4121a603f..00000000000 --- a/Master/texmf-dist/source/latex/oberdiek/picture.dtx +++ /dev/null @@ -1,768 +0,0 @@ -% \iffalse meta-comment -% -% File: picture.dtx -% Version: 2016/05/16 v1.4 -% Info: Dimens for picture macros -% -% Copyright (C) -% 2006-2009 Heiko Oberdiek -% 2016-2019 Oberdiek Package Support Group -% https://github.com/ho-tex/oberdiek/issues -% -% This work may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either -% version 1.3c of this license or (at your option) any later -% version. This version of this license is in -% https://www.latex-project.org/lppl/lppl-1-3c.txt -% and the latest version of this license is in -% https://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". -% -% The Current Maintainers of this work are -% Heiko Oberdiek and the Oberdiek Package Support Group -% https://github.com/ho-tex/oberdiek/issues -% -% 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 - \catcode123=1 % - \catcode125=2 % - \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 -% -%<*install> -\input docstrip.tex -\Msg{************************************************************************} -\Msg{* Installation} -\Msg{* Package: picture 2016/05/16 v1.4 Dimens for picture macros (HO)} -\Msg{************************************************************************} - -\keepsilent -\askforoverwritefalse - -\let\MetaPrefix\relax -\preamble - -This is a generated file. - -Project: picture -Version: 2016/05/16 v1.4 - -Copyright (C) - 2006-2009 Heiko Oberdiek - 2016-2019 Oberdiek Package Support Group - -This work may be distributed and/or modified under the -conditions of the LaTeX Project Public License, either -version 1.3c of this license or (at your option) any later -version. This version of this license is in - https://www.latex-project.org/lppl/lppl-1-3c.txt -and the latest version of this license is in - https://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". - -The Current Maintainers of this work are -Heiko Oberdiek and the Oberdiek Package Support Group -https://github.com/ho-tex/oberdiek/issues - - -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 -\let\MetaPrefix\DoubleperCent - -\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}}% -} - -\catcode32=13\relax% active space -\let =\space% -\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 -% -%<*ignore> -\fi -% -%<*driver> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{picture.drv}% - [2016/05/16 v1.4 Dimens for picture macros (HO)]% -\documentclass{ltxdoc} -\usepackage{holtxdoc}[2011/11/22] -\begin{document} - \DocInput{picture.dtx}% -\end{document} -% -% \fi -% -% -% -% \GetFileInfo{picture.drv} -% -% \title{The \xpackage{picture} package} -% \date{2016/05/16 v1.4} -% \author{Heiko Oberdiek\thanks -% {Please report any issues at \url{https://github.com/ho-tex/oberdiek/issues}}} -% -% \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} -% -% \end{macrocode} -% -% \subsection{Supported packages} -% -% Packages \xpackage{pspicture} and \xpackage{pict2e} are supported, -% but they 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}% - [2016/05/16 v1.4 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 - \@ifpackagelater{calc}{2007/08/22}{% v4.3 - \def\Pc@calc@error#1{% - \expandafter\ifx\expandafter\unitlength\noexpand#1\relax - \def\calc@next##1!{% - \endgroup - \aftergroup\afterassignment - \aftergroup\Pc@next - }% - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {% - \calc@next{#1}% - }{% - \PcOrg@calc@error{#1}% - }% - }% - }{% - \def\Pc@calc@error#1{% - \expandafter\ifx\expandafter\unitlength\noexpand#1\relax - \def\calc@next##1!{% - \endgroup - \aftergroup\afterassignment - \aftergroup\Pc@next - }% - \expandafter\@gobble - \else - \expandafter\@firstofone - \fi - {% - \PcOrg@calc@error{#1}% - }% - }% - }% -\fi -% \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} -% -% \subsection{Check package loading order} -% -% \begin{macro}{\PC@checkpackage} -% \begin{macrocode} -\def\Pc@checkpackage#1{% - \@ifpackageloaded{#1}{% - }{% - \AtBeginDocument{% - \@ifpackageloaded{#1}{% - \PackageWarningNoLine{picture}{% - Package `#1' is loaded after `picture'.\MessageBreak - Load package `picture' afterwards to get full support% - \MessageBreak - of its additional syntax with length specifications% - }% - }{}% - }% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macrocode} -\Pc@checkpackage{pict2e} -\Pc@checkpackage{pspicture} -% \end{macrocode} -% -% \begin{macrocode} -% -% \end{macrocode} -% -% \section{Installation} -% -% \subsection{Download} -% -% \paragraph{Package.} This package is available on -% CTAN\footnote{\CTANpkg{picture}}: -% \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{Bundle.} All the packages of the bundle `oberdiek' -% are also available in a TDS compliant ZIP archive. There -% the packages are already unpacked and the documentation files -% are generated. The files and directories obey the TDS standard. -% \begin{description} -% \item[\CTANinstall{install/macros/latex/contrib/oberdiek.tds.zip}] -% \end{description} -% \emph{TDS} refers to the standard ``A Directory Structure -% for \TeX\ Files'' (\CTANpkg{tds}). Directories -% with \xfile{texmf} in their name are usually organized this way. -% -% \subsection{Bundle installation} -% -% \paragraph{Unpacking.} Unpack the \xfile{oberdiek.tds.zip} in the -% TDS tree (also known as \xfile{texmf} tree) of your choice. -% Example (linux): -% \begin{quote} -% |unzip oberdiek.tds.zip -d ~/texmf| -% \end{quote} -% -% \subsection{Package installation} -% -% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting -% \docstrip\ archive. The files are extracted by running the -% \xfile{.dtx} through \plainTeX: -% \begin{quote} -% \verb|tex 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} -% \def\t{^^A -% \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\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 -% }^^A -% \sbox0{\t}^^A -% \ifdim\wd0>\linewidth -% \begingroup -% \advance\linewidth by\leftmargin -% \advance\linewidth by\rightmargin -% \edef\x{\endgroup -% \def\noexpand\lw{\the\linewidth}^^A -% }\x -% \def\lwbox{^^A -% \leavevmode -% \hbox to \linewidth{^^A -% \kern-\leftmargin\relax -% \hss -% \usebox0 -% \hss -% \kern-\rightmargin\relax -% }^^A -% }^^A -% \ifdim\wd0>\lw -% \sbox0{\small\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\footnotesize\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\scriptsize\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\tiny\t}^^A -% \ifdim\wd0>\linewidth -% \lwbox -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \end{quote} -% If you have a \xfile{docstrip.cfg} that configures and enables \docstrip's -% TDS installing feature, then some files can already be in the right -% place, see the documentation of \docstrip. -% -% \subsection{Refresh file name databases} -% -% If your \TeX~distribution -% (\TeX\,Live, \mikTeX, \dots) relies on file name databases, you must refresh -% these. For example, \TeX\,Live\ users run \verb|texhash| or -% \verb|mktexlsr|. -% -% \subsection{Some details for the interested} -% -% \paragraph{Unpacking with \LaTeX.} -% The \xfile{.dtx} chooses its action depending on the format: -% \begin{description} -% \item[\plainTeX:] Run \docstrip\ and extract the files. -% \item[\LaTeX:] Generate the documentation. -% \end{description} -% If you insist on using \LaTeX\ for \docstrip\ (really, -% \docstrip\ does not need \LaTeX), then inform the autodetect routine -% about your intention: -% \begin{quote} -% \verb|latex \let\install=y\input{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} -% \begin{Version}{2007/04/11 v1.1} -% \item -% Line ends sanitized. -% \end{Version} -% \begin{Version}{2008/11/26 v1.2} -% \item -% Package \xpackage{pict2e} added to documentation section ``Supported -% packages''. -% \item -% Package order of supported packages is checked. -% \end{Version} -% \begin{Version}{2009/10/11 v1.3} -% \item -% Fix because of new version v4.3 of package \xpackage{calc}. -% \end{Version} -% \begin{Version}{2016/05/16 v1.4} -% \item -% Documentation updates. -% \end{Version} -% \end{History} -% -% \PrintIndex -% -% \Finale -\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/resizegather.dtx b/Master/texmf-dist/source/latex/oberdiek/resizegather.dtx index 596446de2c0..4a078649172 100644 --- a/Master/texmf-dist/source/latex/oberdiek/resizegather.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/resizegather.dtx @@ -159,7 +159,7 @@ and the derived files [2016/05/16 v1.3 Resize overly large equations (HO)]% \documentclass{ltxdoc} \usepackage{holtxdoc}[2011/11/22] -\usepackage{ifluatex} +\usepackage{iftex}[2019/11/07] \ifluatex \else \usepackage[T1]{fontenc}% diff --git a/Master/texmf-dist/source/latex/oberdiek/selinput.dtx b/Master/texmf-dist/source/latex/oberdiek/selinput.dtx deleted file mode 100644 index 97fc336c3c7..00000000000 --- a/Master/texmf-dist/source/latex/oberdiek/selinput.dtx +++ /dev/null @@ -1,853 +0,0 @@ -% \iffalse meta-comment -% -% File: selinput.dtx -% Version: 2016/05/17 v1.4 -% Info: Semi-automatic input encoding detection -% -% Copyright (C) -% 2007 Heiko Oberdiek -% 2016-2019 Oberdiek Package Support Group -% https://github.com/ho-tex/oberdiek/issues -% -% This work may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either -% version 1.3c of this license or (at your option) any later -% version. This version of this license is in -% https://www.latex-project.org/lppl/lppl-1-3c.txt -% and the latest version of this license is in -% https://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". -% -% The Current Maintainers of this work are -% Heiko Oberdiek and the Oberdiek Package Support Group -% https://github.com/ho-tex/oberdiek/issues -% -% This work consists of the main source file selinput.dtx -% and the derived files -% selinput.sty, selinput.pdf, selinput.ins, selinput.drv, -% selinput-test1.tex, selinput-test2.tex, selinput-test3.tex, -% selinput-test4.tex, selinput-test5.tex. -% -% Distribution: -% CTAN:macros/latex/contrib/oberdiek/selinput.dtx -% CTAN:macros/latex/contrib/oberdiek/selinput.pdf -% -% Unpacking: -% (a) If selinput.ins is present: -% tex selinput.ins -% (b) Without selinput.ins: -% tex selinput.dtx -% (c) If you insist on using LaTeX -% latex \let\install=y\input{selinput.dtx} -% (quote the arguments according to the demands of your shell) -% -% Documentation: -% (a) If selinput.drv is present: -% latex selinput.drv -% (b) Without selinput.drv: -% latex selinput.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 selinput.dtx -% makeindex -s gind.ist selinput.idx -% pdflatex selinput.dtx -% makeindex -s gind.ist selinput.idx -% pdflatex selinput.dtx -% -% Installation: -% TDS:tex/latex/oberdiek/selinput.sty -% TDS:doc/latex/oberdiek/selinput.pdf -% TDS:source/latex/oberdiek/selinput.dtx -% -%<*ignore> -\begingroup - \catcode123=1 % - \catcode125=2 % - \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 -% -%<*install> -\input docstrip.tex -\Msg{************************************************************************} -\Msg{* Installation} -\Msg{* Package: selinput 2016/05/17 v1.4 Semi-automatic input encoding detection (HO)} -\Msg{************************************************************************} - -\keepsilent -\askforoverwritefalse - -\let\MetaPrefix\relax -\preamble - -This is a generated file. - -Project: selinput -Version: 2016/05/17 v1.4 - -Copyright (C) - 2007 Heiko Oberdiek - 2016-2019 Oberdiek Package Support Group - -This work may be distributed and/or modified under the -conditions of the LaTeX Project Public License, either -version 1.3c of this license or (at your option) any later -version. This version of this license is in - https://www.latex-project.org/lppl/lppl-1-3c.txt -and the latest version of this license is in - https://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". - -The Current Maintainers of this work are -Heiko Oberdiek and the Oberdiek Package Support Group -https://github.com/ho-tex/oberdiek/issues - - -This work consists of the main source file selinput.dtx -and the derived files - selinput.sty, selinput.pdf, selinput.ins, selinput.drv, - selinput-test1.tex, selinput-test2.tex, selinput-test3.tex, - selinput-test4.tex, selinput-test5.tex. - -\endpreamble -\let\MetaPrefix\DoubleperCent - -\generate{% - \file{selinput.ins}{\from{selinput.dtx}{install}}% - \file{selinput.drv}{\from{selinput.dtx}{driver}}% - \usedir{tex/latex/oberdiek}% - \file{selinput.sty}{\from{selinput.dtx}{package}}% -% \usedir{doc/latex/oberdiek/test}% -% \file{selinput-test1.tex}{\from{selinput.dtx}{test,test1}}% -% \file{selinput-test2.tex}{\from{selinput.dtx}{test,test2}}% -% \file{selinput-test3.tex}{\from{selinput.dtx}{test,test3}}% -% \file{selinput-test4.tex}{\from{selinput.dtx}{test,test4}}% -% \file{selinput-test5.tex}{\from{selinput.dtx}{test,test5}}% -} - -\catcode32=13\relax% active space -\let =\space% -\Msg{************************************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* file into a directory searched by TeX:} -\Msg{*} -\Msg{* selinput.sty} -\Msg{*} -\Msg{* To produce the documentation run the file `selinput.drv'} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing!} -\Msg{*} -\Msg{************************************************************************} - -\endbatchfile -% -%<*ignore> -\fi -% -%<*driver> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{selinput.drv}% - [2016/05/17 v1.4 Semi-automatic input encoding detection (HO)]% -\documentclass{ltxdoc} -\ifx\Umathcode\undefined -\usepackage[T1]{fontenc} -\fi -\usepackage{textcomp} -\usepackage{lmodern} -\usepackage{holtxdoc}[2011/11/22] -\usepackage{color} -\begin{document} - \DocInput{selinput.dtx}% -\end{document} -% -% \fi -% -% -% -% \GetFileInfo{selinput.drv} -% -% \title{The \xpackage{selinput} package} -% \date{2016/05/17 v1.4} -% \author{Heiko Oberdiek\thanks -% {Please report any issues at \url{https://github.com/ho-tex/oberdiek/issues}}} -% -% \maketitle -% -% \begin{abstract} -% This package selects the input encoding by specifying between -% input characters and their glyph names. -% \end{abstract} -% -% \tableofcontents -% -% \newcommand*{\EM}{\textcolor{blue}} -% \newcommand*{\ExampleText}{^^A -% Umlauts:\ \EM{\"A\"O\"U\"a\"o\"u\ss}^^A -% } -% -% \section{Documentation} -% -% \subsection{Introduction} -% -% \LaTeX\ supports the direct use of 8-bit characters by means -% of package \xpackage{inputenc}. However you must know -% and specify the encoding, e.g.: -% \begin{quote} -% \ttfamily -% |\documentclass{article}|\\ -% |\usepackage[|\EM{latin1}|]{inputenc}|\\ -% |% or \usepackage[|\EM{utf8}|]{inputenc}|\\ -% |% or \usepackage[|\EM{??}|]{inputenc}|\\ -% |\begin{document}|\\ -% | |\ExampleText\\ -% |\end{document}| -% \end{quote} -% -% If the document is transferred in an environment that -% uses a different encoding, then there are programs that -% convert the input characters. Examples for conversion -% of file \xfile{test.tex} -% from encoding latin1 (ISO-8859-1) to UTF-8: -% \begin{quote} -% \ttfamily -% |recode ISO-8859-1..UTF-8 test.tex|\\ -% |recode latin1..utf8 test.tex|\\ -% |iconv --from-code ISO-8859-1|\\ -% \hphantom{iconv}| --to-code UTF-8|\\ -% \hphantom{iconv}| --output testnew.tex|\\ -% \hphantom{iconv}| test.tex|\\ -% |iconv -f latin1 -t utf8 -o testnew.tex test.tex| -% \end{quote} -% However, the encoding name for package \xpackage{inputenc} -% must be changed: -% \begin{quote} -% |\usepackage[latin1]{inputenc}| $\rightarrow$ -% |\usepackage[utf8]{inputenc}|\kern-4pt\relax -% \end{quote} -% Of course, unless you are using some clever editor -% that knows package \xpackage{inputenc}, recodes -% the file and adjusts the option at the same time. -% But most editors can perhaps recode the file, but -% they let the option untouched. -% -% Therefore package \xpackage{selinput} chooses another way for -% specifying the input encoding. The encoding name is not needed -% at all. Some 8-bit characters are identified by their glyph -% name and the package chooses an appropriate encoding, example: -% \begin{quote} -% \ttfamily -% |\documentclass{article}|\\ -% |\usepackage{selinput}|\\ -% |\SelectInputMappings{|\\ -% | adieresis={|\EM{\"a}|}|,\\ -% | germandbls={|\EM{\ss}|}|,\\ -% | Euro={|\EM{\texteuro}|}|,\\ -% |}|\\ -% |\begin{document}|\\ -% | |\ExampleText\\ -% |\end{document}| -% \end{quote} -% -% \subsection{User interface} -% -% \begin{declcs}{SelectInputEncodingList} \M{encoding list} -% \end{declcs} -% \cs{SelectInputEncodingList} expects a comma separated list of -% encoding names. Example: -% \begin{quote} -% |\SelectInputEncodingList{utf8,ansinew,mac-roman}| -% \end{quote} -% The encodings of package \xpackage{inputenx} are used as default. -% -% \begin{declcs}{SelectInputMappings} \M{mapping pairs} -% \end{declcs} -% A mapping pair consists of a glyph name and its input -% character: -% \begin{quote} -% |\SelectInputMappings{|\\ -% | adieresis={|\EM{\"a}|}|,\\ -% | germandbls={|\EM{\ss}|}|,\\ -% | Euro={|\EM{\texteuro}|}|,\\ -% |}| -% \end{quote} -% The supported glyph names can be found in file \xfile{ix-name.def} -% of project \xpackage{inputenx} \cite{inputenx}. The names are -% basically taken from Adobe's glyphlists \cite{adobe:glyphlist,adobe:aglfn}. -% As many pairs are needed as necessary to identify the encoding. -% Example with insufficient pairs: -% \begin{quote} -% \ttfamily -% |\SelectInputEncodingSet{latin1,latin9}|\\ -% |\SelectInputMappings{|\\ -% | adieresis={|\EM{\"a}|}|,\\ -% | germandbls={|\EM{\ss}|}|,\\ -% |}|\\ -% \ExampleText| and Euro: |\EM{\textcurrency} (wrong) -% \end{quote} -% The first encoding \xoption{latin1} passes the constraints given -% by the mapping pairs. However the Euro symbol is not part of -% the encoding. Thus a mapping pair with the Euro symbol -% solves the problem. In fact the symbol alone already succeeds in selecting -% between \xoption{latin1} and \xoption{latin9}: -% \begin{quote} -% \ttfamily -% |\SelectInputEncodingSet{latin1,latin9}|\\ -% |\SelectInputMappings{|\\ -% | Euro={|\EM{\texteuro}|},|\\ -% |}|\\ -% \ExampleText| and Euro: |\EM{\texteuro} -% \end{quote} -% -% \subsection{Options} -% -% \begin{description} -% \item[\xoption{warning}:] -% The selected encoding is written -% by \cs{PackageInfo} into the \xfile{.log} file only. -% Option \xoption{warning} changes it to \cs{PackageWarning}. -% Then the selected encoding is shown on the terminal as well. -% \item[\xoption{ucs}:] -% The encoding file \xfile{utf8x} of package \cs{ucs} requires -% that the package itself is loaded before. -% If the package is not loaded, then the option \xoption{ucs} -% will load package \xpackage{ucs} if the detected encoding is -% UTF-8 (limited to the preamble, packages cannot be loaded later). -% \item[\xoption{utf8=\dots}:] -% The option allows to specify other encoding files -% for UTF-8 than \LaTeX's \xfile{utf8.def}. For example, -% |utf8=utf-8| will load \xfile{utf-8.def} instead. -% \end{description} -% -% \subsection{Encodings} -% -% Package \xpackage{stringenc} \cite{stringenc} -% is used for testing the encoding. Thus the encoding -% name must be known by this package. Then the found -% encoding is loaded by \cs{inputencoding} by package -% \xpackage{inputenc} or \cs{InputEncoding} if package -% \xpackage{inputenx} is loaded. -% -% The supported encodings are present in the encoding list, -% thus usually the encoding names do not matter. -% If the list is set by \cs{SelectInputEncodingList}, -% then you can use the names that work for package -% \xpackage{inputenc} and are known by package \xpackage{stringenc}, -% for example: \xoption{latin1}, \xoption{x-iso-8859-1}. Encoding -% file names of package \xpackage{inputenx} are prefixed with \xfile{x-}. -% The prefix can be dropped, if package \xpackage{inputenx} is loaded. -% -% \StopEventually{ -% } -% -% \section{Implementation} -% -% \begin{macrocode} -%<*package> -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{selinput} - [2016/05/17 v1.4 Semi-automatic input encoding detection (HO)]% -% \end{macrocode} -% -% \begin{macrocode} -\RequirePackage{inputenc} -\RequirePackage{kvsetkeys}[2006/10/19] -\RequirePackage{stringenc}[2007/06/16] -\RequirePackage{kvoptions} -% \end{macrocode} -% \begin{macro}{\SelectInputEncodingList} -% \begin{macrocode} -\newcommand*{\SelectInputEncodingList}{% - \let\SIE@EncodingList\@empty - \kvsetkeys{SelInputEnc}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\SelectInputMappings} -% \begin{macrocode} -\newcommand*{\SelectInputMappings}[1]{% - \SIE@LoadNameDefs - \let\SIE@StringUnicode\@empty - \let\SIE@StringDest\@empty - \kvsetkeys{SelInputMap}{#1}% - \ifx\\SIE@StringUnicode\SIE@StringDest\\% - \PackageError{selinput}{% - No mappings specified% - }\@ehc - \else - \EdefUnescapeHex\SIE@StringUnicode\SIE@StringUnicode - \let\SIE@Encoding\@empty - \@for\SIE@EncodingTest:=\SIE@EncodingList\do{% - \ifx\SIE@Encoding\@empty - \StringEncodingConvertTest\SIE@temp\SIE@StringUnicode - {utf16be}\SIE@EncodingTest{% - \ifx\SIE@temp\SIE@StringDest - \let\SIE@Encoding\SIE@EncodingTest - \fi - }{}% - \fi - }% - \ifx\SIE@Encoding\@empty - \StringEncodingConvertTest\SIE@temp\SIE@StringDest - {ascii}{utf16be}{% - \def\SIE@Encoding{ascii}% - \SIE@Info{selinput}{% - Matching encoding not found, but input characters% - \MessageBreak - are 7-bit (possibly editor replacements).% - \MessageBreak - Hence using ascii encoding% - }% - }{}% - \fi - \ifx\SIE@Encoding\@empty - \PackageError{selinput}{% - Cannot find a matching encoding% - }\@ehd - \else - \ifx\SIE@Encoding\SIE@EncodingUTFviii - \SIE@LoadUnicodePackage - \ifx\SIE@UseUTFviii\@empty - \else - \let\SIE@Encoding\SIE@UseUTFviii - \fi - \fi - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname InputEncoding\endcsname\relax - \inputencoding\SIE@Encoding - \else - \InputEncoding\SIE@Encoding - \fi - \SIE@Info{selinput}{Encoding `\SIE@Encoding' selected}% - \fi - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\SIE@LoadNameDefs} -% \begin{macrocode} -\def\SIE@LoadNameDefs{% - \begingroup - \endlinechar=\m@ne - \catcode92=0 % backslash - \catcode123=1 % left curly brace/beginning of group - \catcode125=2 % right curly brace/end of group - \catcode37=14 % percent/comment character - \@makeother\[% - \@makeother\]% - \@makeother\.% - \@makeother\(% - \@makeother\)% - \@makeother\/% - \@makeother\-% - \let\InputenxName\SelectInputDefineMapping - \InputIfFileExists{ix-name.def}{}{% - \PackageError{selinput}{% - Missing `ix-name.def' (part of package `inputenx')% - }\@ehd - }% - \global\let\SIE@LoadNameDefs\relax - \endgroup -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\SelectInputDefineMapping} -% \begin{macrocode} -\newcommand*{\SelectInputDefineMapping}[1]{% - \expandafter\gdef\csname SIE@@#1\endcsname -} -% \end{macrocode} -% \end{macro} -% \begin{macrocode} -\kv@set@family@handler{SelInputMap}{% - \@onelevel@sanitize\kv@key - \ifx\kv@value\relax - \PackageError{selinput}{% - Missing input character for `\kv@key'% - }\@ehc - \else - \@onelevel@sanitize\kv@value - \ifx\kv@value\@empty - \PackageError{selinput}{% - Input character got lost?\MessageBreak - Missing input character for `\kv@key'% - }\@ehc - \else - \@ifundefined{SIE@@\kv@key}{% - \PackageWarning{selinput}{% - Missing definition for `\kv@key'% - }% - }{% - \edef\SIE@StringDest{% - \SIE@StringDest - \kv@value - }% - \edef\SIE@StringUnicode{% - \SIE@StringUnicode - \csname SIE@@\kv@key\endcsname - }% - }% - \fi - \fi -} -% \end{macrocode} -% \begin{macrocode} -\kv@set@family@handler{SelInputEnc}{% - \@onelevel@sanitize\kv@key - \ifx\kv@value\relax - \ifx\SIE@EncodingList\@empty - \let\SIE@EncodingList\kv@key - \else - \edef\SIE@EncodingList{\SIE@EncodingList,\kv@key}% - \fi - \else - \@onelevel@sanitize\kv@value - \PackageError{selinput}{% - Illegal key value pair (\kv@key=\kv@value)\MessagBreak - in encoding list% - }\@ehc - \fi -} -% \end{macrocode} -% -% \begin{macro}{\SIE@LoadUnicodePackage} -% \begin{macrocode} -\def\SIE@LoadUnicodePackage{% - \@ifpackageloaded\SIE@UnicodePackage{}{% - \RequirePackage\SIE@UnicodePackage\relax - }% - \SIE@PatchUCS - \global\let\SIE@LoadUnicodePackage\relax -} -\let\SIE@show\show -\def\SIE@PatchUCS{% - \AtBeginDocument{% - \expandafter\ifx\csname ver@ucsencs.def\endcsname\relax - \else - \let\show\SIE@show - \fi - }% -} -\SIE@PatchUCS -% \end{macrocode} -% \end{macro} -% \begin{macrocode} -\AtBeginDocument{% - \let\SIE@LoadUnicodePackage\relax -} -% \end{macrocode} -% \begin{macro}{\SIE@EncodingUTFviii} -% \begin{macrocode} -\def\SIE@EncodingUTFviii{utf8} -\@onelevel@sanitize\SIE@EncodingUTFviii -% \end{macrocode} -% \end{macro} -% \begin{macro}{\SIE@EncodingUTFviiix} -% \begin{macrocode} -\def\SIE@EncodingUTFviiix{utf8x} -\@onelevel@sanitize\SIE@EncodingUTFviiix -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\let\SIE@UnicodePackage\@empty -\let\SIE@UseUTFviii\@empty -\let\SIE@Info\PackageInfo -% \end{macrocode} -% \begin{macrocode} -\SetupKeyvalOptions{% - family=SelInput,% - prefix=SelInput@% -} -\define@key{SelInput}{utf8}{% - \def\SIE@UseUTFviii{#1}% - \@onelevel@sanitize\SIE@UseUTFviii -} -\DeclareBoolOption{ucs} -\DeclareVoidOption{warning}{% - \let\SIE@Info\PackageWarning -} -\ProcessKeyvalOptions{SelInput} -\ifSelInput@ucs - \def\SIE@UnicodePackage{ucs}% - \ifx\SIE@UseUTFviii\@empty - \let\SIE@UseUTFviii\SIE@EncodingUTFviiix - \fi -\else - \ifx\SIE@UseUTFviii\@empty - \@ifpackageloaded{ucs}{% - \let\SIE@UseUTFviii\SIE@EncodingUTFviiix - }{% - \let\SIE@UseUTFviii\SIE@EncodingUTFviii - }% - \fi -\fi -% \end{macrocode} -% -% \begin{macro}{\SIE@EncodingList} -% \begin{macrocode} -\edef\SIE@EncodingList{% - utf8,% - x-iso-8859-1,% - x-iso-8859-15,% - x-cp1252,% ansinew - x-mac-roman,% - x-iso-8859-2,% - x-iso-8859-3,% - x-iso-8859-4,% - x-iso-8859-5,% - x-iso-8859-6,% - x-iso-8859-7,% - x-iso-8859-8,% - x-iso-8859-9,% - x-iso-8859-10,% - x-iso-8859-11,% - x-iso-8859-13,% - x-iso-8859-14,% - x-iso-8859-15,% - x-mac-centeuro,% - x-mac-cyrillic,% - x-koi8-r,% - x-cp1250,% - x-cp1251,% - x-cp1257,% - x-cp437,% - x-cp850,% - x-cp852,% - x-cp855,% - x-cp858,% - x-cp865,% - x-cp866,% - x-nextstep,% - x-dec-mcs% -}% -\@onelevel@sanitize\SIE@EncodingList -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -% -% \end{macrocode} -%% \section{Installation} -% -% \subsection{Download} -% -% \paragraph{Package.} This package is available on -% CTAN\footnote{\CTANpkg{selinput}}: -% \begin{description} -% \item[\CTAN{macros/latex/contrib/oberdiek/selinput.dtx}] The source file. -% \item[\CTAN{macros/latex/contrib/oberdiek/selinput.pdf}] Documentation. -% \end{description} -% -% -% \paragraph{Bundle.} All the packages of the bundle `oberdiek' -% are also available in a TDS compliant ZIP archive. There -% the packages are already unpacked and the documentation files -% are generated. The files and directories obey the TDS standard. -% \begin{description} -% \item[\CTANinstall{install/macros/latex/contrib/oberdiek.tds.zip}] -% \end{description} -% \emph{TDS} refers to the standard ``A Directory Structure -% for \TeX\ Files'' (\CTANpkg{tds}). Directories -% with \xfile{texmf} in their name are usually organized this way. -% -% \subsection{Bundle installation} -% -% \paragraph{Unpacking.} Unpack the \xfile{oberdiek.tds.zip} in the -% TDS tree (also known as \xfile{texmf} tree) of your choice. -% Example (linux): -% \begin{quote} -% |unzip oberdiek.tds.zip -d ~/texmf| -% \end{quote} -% -% \subsection{Package installation} -% -% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting -% \docstrip\ archive. The files are extracted by running the -% \xfile{.dtx} through \plainTeX: -% \begin{quote} -% \verb|tex selinput.dtx| -% \end{quote} -% -% \paragraph{TDS.} Now the different files must be moved into -% the different directories in your installation TDS tree -% (also known as \xfile{texmf} tree): -% \begin{quote} -% \def\t{^^A -% \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} -% selinput.sty & tex/latex/oberdiek/selinput.sty\\ -% selinput.pdf & doc/latex/oberdiek/selinput.pdf\\ -% selinput.dtx & source/latex/oberdiek/selinput.dtx\\ -% \end{tabular}^^A -% }^^A -% \sbox0{\t}^^A -% \ifdim\wd0>\linewidth -% \begingroup -% \advance\linewidth by\leftmargin -% \advance\linewidth by\rightmargin -% \edef\x{\endgroup -% \def\noexpand\lw{\the\linewidth}^^A -% }\x -% \def\lwbox{^^A -% \leavevmode -% \hbox to \linewidth{^^A -% \kern-\leftmargin\relax -% \hss -% \usebox0 -% \hss -% \kern-\rightmargin\relax -% }^^A -% }^^A -% \ifdim\wd0>\lw -% \sbox0{\small\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\footnotesize\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\scriptsize\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\tiny\t}^^A -% \ifdim\wd0>\linewidth -% \lwbox -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \end{quote} -% If you have a \xfile{docstrip.cfg} that configures and enables \docstrip's -% TDS installing feature, then some files can already be in the right -% place, see the documentation of \docstrip. -% -% \subsection{Refresh file name databases} -% -% If your \TeX~distribution -% (\TeX\,Live, \mikTeX, \dots) relies on file name databases, you must refresh -% these. For example, \TeX\,Live\ users run \verb|texhash| or -% \verb|mktexlsr|. -% -% \subsection{Some details for the interested} -% -% \paragraph{Unpacking with \LaTeX.} -% The \xfile{.dtx} chooses its action depending on the format: -% \begin{description} -% \item[\plainTeX:] Run \docstrip\ and extract the files. -% \item[\LaTeX:] Generate the documentation. -% \end{description} -% If you insist on using \LaTeX\ for \docstrip\ (really, -% \docstrip\ does not need \LaTeX), then inform the autodetect routine -% about your intention: -% \begin{quote} -% \verb|latex \let\install=y\input{selinput.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 selinput.dtx -%makeindex -s gind.ist selinput.idx -%pdflatex selinput.dtx -%makeindex -s gind.ist selinput.idx -%pdflatex selinput.dtx -%\end{verbatim} -% \end{quote} -% -% \begin{thebibliography}{9} -% \bibitem{inputenx} -% Heiko Oberdiek: \textit{The \xpackage{inputenx} package}; -% 2007-04-11 v1.1; -% \CTANpkg{inputenx}. -% -% \bibitem{adobe:glyphlist} -% Adobe: \textit{Adobe Glyph List}; -% 2002-09-20 v2.0; -% \url{https://github.com/adobe-type-tools/agl-aglfn/blob/master/glyphlist.txt}. -% -% \bibitem{adobe:aglfn} -% Adobe: \textit{Adobe Glyph List For New Fonts}; -% 2005-11-18 v1.5; -% \url{https://github.com/adobe-type-tools/agl-aglfn/blob/master/aglfn.txt}. -% -% \bibitem{stringenc} -% Heiko Oberdiek: \textit{The \xpackage{stringenc} package}; -% 2007-06-16 v1.1; -% \CTANpkg{stringenc}. -% -% \end{thebibliography} -% -% \begin{History} -% \begin{Version}{2007/06/16 v1.0} -% \item -% First version. -% \end{Version} -% \begin{Version}{2007/06/20 v1.1} -% \item -% Requested date for package \xpackage{stringenc} fixed. -% \end{Version} -% \begin{Version}{2007/09/09 v1.2} -% \item -% Line end fixed. -% \end{Version} -% \begin{Version}{2016/05/16 v1.3} -% \item -% Documentation updates. -% \end{Version} -% \begin{Version}{2016/05/17 v1.4} -% \item -% Documentation updates: Avoid T1 encoding with Unicode \TeX. -% \end{Version} -% \end{History} -% -% \PrintIndex -% -% \Finale -\endinput -- cgit v1.2.3