From 419461acb937fb1227a63bfe001995a93f9ea9c9 Mon Sep 17 00:00:00 2001 From: Joseph Timothy Foley Date: Wed, 14 Sep 2022 15:00:32 +0000 Subject: [PATCH] Old Etoolbox causing problems, removed --- .gitignore | 3 +- etoolbox.sty | 1708 ----------------------------------------- etoolbox/README | 84 -- etoolbox/etoolbox.def | 73 -- etoolbox/etoolbox.pdf | Bin 188352 -> 0 bytes etoolbox/etoolbox.sty | 1708 ----------------------------------------- etoolbox/etoolbox.tex | 1482 ----------------------------------- 7 files changed, 2 insertions(+), 5056 deletions(-) delete mode 100644 etoolbox.sty delete mode 100644 etoolbox/README delete mode 100644 etoolbox/etoolbox.def delete mode 100644 etoolbox/etoolbox.pdf delete mode 100644 etoolbox/etoolbox.sty delete mode 100644 etoolbox/etoolbox.tex diff --git a/.gitignore b/.gitignore index 195fcee..3b7d98b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,10 @@ ~* *~ auto/* +*.aux *.bcf *.blg *.log *.out +*.synctex.gz *.run.xml -*.aux \ No newline at end of file diff --git a/etoolbox.sty b/etoolbox.sty deleted file mode 100644 index d50e739..0000000 --- a/etoolbox.sty +++ /dev/null @@ -1,1708 +0,0 @@ -% $Id$ - -% Copyright (c) 2007-2011 Philipp Lehman. -% -% Permission is granted to copy, distribute and/or modify this -% software under the terms of the LaTeX Project Public License -% (LPPL), version 1.3. -% -% The LPPL maintenance status of this software is -% 'author-maintained'. -% -% This software is provided 'as is', without warranty of any kind, -% either expressed or implied, including, but not limited to, the -% implied warranties of merchantability and fitness for a -% particular purpose. - -\def\etb@rcsid$#1: #2 #3 #4 #5${#4 v#3} - -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{etoolbox} -[\etb@rcsid $Id: etoolbox.sty,v 2.1 2011/01/03 19:14:10 lehman stable $ - e-TeX tools for LaTeX] - -\begingroup -\@ifundefined{eTeXversion} - {\PackageError{etoolbox} - {Not running under e-TeX} - {This package requires e-TeX. Try compiling the document - with\MessageBreak 'elatex' instead of 'latex'. When using - pdfTeX, try 'pdfelatex'\MessageBreak instead of 'pdflatex'. - This is a fatal error. I'm aborting now.}% - \aftergroup\endinput} - {} -\endgroup - -\RequirePackage{etex} - -\def\etb@catcodes{\do\&\do\|\do\:\do\-\do\=\do\<\do\>} -\def\do#1{\catcode\number`#1=\the\catcode`#1\relax} -\edef\etb@catcodes{\etb@catcodes} -\let\do\noexpand -\AtEndOfPackage{\etb@catcodes\undef\etb@catcodes} - -\catcode`\&=3 -\catcode`\|=3 -\@makeother\: -\@makeother\- -\@makeother\= -\@makeother\< -\@makeother\> - -\protected\def\etb@error{\PackageError{etoolbox}} -\protected\def\etb@warning{\PackageWarning{etoolbox}} -\protected\def\etb@info{\PackageInfo{etoolbox}} -\newcount\etb@tempcnta - -% {}[][]{} - -\newcommand*{\newrobustcmd}{} -\protected\def\newrobustcmd{\@star@or@long\etb@new@command} - -\def\etb@new@command#1{\@testopt{\etb@newcommand#1}0} - -\def\etb@newcommand#1[#2]{% - \@ifnextchar[%] - {\etb@xargdef#1[#2]} - {\ifx\l@ngrel@x\relax - \let\l@ngrel@x\protected - \else - \protected\def\l@ngrel@x{\protected\long}% - \fi - \@argdef#1[#2]}} - -\long\def\etb@xargdef#1[#2][#3]#4{% - \@ifdefinable#1{% - \expandafter\protected - \expandafter\def - \expandafter#1% - \expandafter{% - \expandafter\@testopt - \csname\string#1\endcsname{#3}}% - \expandafter\@yargdef\csname\string#1\endcsname\tw@{#2}{#4}}} - -% {}[][]{} - -\newrobustcmd*{\renewrobustcmd}{\@star@or@long\etb@renew@command} - -\def\etb@renew@command#1{% - \ifundef{#1} - {\etb@error{\string#1 undefined}\@ehc} - {}% - \let\@ifdefinable\@rc@ifdefinable - \etb@new@command#1} - -% {}[][]{} - -\newrobustcmd*{\providerobustcmd}{\@star@or@long\etb@provide@command} - -\def\etb@provide@command#1{% - \ifundef{#1} - {\def\reserved@a{\etb@new@command#1}} - {\def\reserved@a{\etb@renew@command\reserved@a}}% - \reserved@a} - -% {} - -\newrobustcmd*{\csshow}[1]{% - \begingroup\expandafter\endgroup - \expandafter\show\csname#1\endcsname} - -% {}{}{} - -\newcommand{\ifdef}[1]{% - \ifdefined#1% - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {}{}{} - -\newcommand{\ifundef}[1]{% - \ifdefined#1% - \ifx#1\relax - \expandafter\expandafter - \expandafter\@firstoftwo - \else - \expandafter\expandafter - \expandafter\@secondoftwo - \fi - \else - \expandafter\@firstoftwo - \fi} - -% {}{}{} - -\newcommand*{\ifcsdef}[1]{% - \ifcsname#1\endcsname - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {}{}{} - -\newcommand*{\ifcsundef}[1]{% - \ifcsname#1\endcsname - \expandafter\ifx\csname#1\endcsname\relax - \expandafter\expandafter - \expandafter\@firstoftwo - \else - \expandafter\expandafter - \expandafter\@secondoftwo - \fi - \else - \expandafter\@firstoftwo - \fi} - -% {}{} - -\newcommand{\ifdefmacro}{} -\long\edef\ifdefmacro#1{% - \noexpand\expandafter\noexpand\etb@ifdefmacro - \noexpand\meaning#1\detokenize{macro}:&} -\edef\etb@ifdefmacro{% - \def\noexpand\etb@ifdefmacro##1\detokenize{macro}:##2&} -\etb@ifdefmacro{\notblank{#2}} - -% {}{}{} - -\newcommand*{\ifcsmacro}[1]{% - \ifcsdef{#1} - {\expandafter\ifdefmacro\csname#1\endcsname} - {\@secondoftwo}} - -% {}{} - -\newcommand{\ifdefprefix}[1]{% - \ifdefmacro{#1} - {\etb@ifdefprefix{#1}} - {\@secondoftwo}} -\long\edef\etb@ifdefprefix#1{% - \noexpand\expandafter\noexpand\etb@ifdefprefix@i - \noexpand\meaning#1\detokenize{macro}:&} -\edef\etb@ifdefprefix@i{% - \def\noexpand\etb@ifdefprefix@i##1\detokenize{macro}:##2&} -\etb@ifdefprefix@i{\notblank{#1}} - -% {}{}{} - -\newcommand*{\ifcsprefix}[1]{% - \ifcsdef{#1} - {\expandafter\ifdefprefix\csname#1\endcsname} - {\@secondoftwo}} - -% {}{} - -\newcommand{\ifdefparam}{} -\long\edef\ifdefparam#1{% - \noexpand\expandafter\noexpand\etb@ifdefparam - \noexpand\meaning#1\detokenize{macro}:->&} -\edef\etb@ifdefparam{% - \def\noexpand\etb@ifdefparam##1\detokenize{macro}:##2->##3&} -\etb@ifdefparam{\notblank{#2}} - -% {}{}{} - -\newcommand*{\ifcsparam}[1]{% - \ifcsdef{#1} - {\expandafter\ifdefparam\csname#1\endcsname} - {\@secondoftwo}} - -% {}{} - -\newcommand{\ifdefprotected}{} -\long\edef\ifdefprotected#1{% - \noexpand\expandafter\noexpand\etb@ifdefprotected - \noexpand\meaning#1\string\protected&} -\edef\etb@ifdefprotected{% - \def\noexpand\etb@ifdefprotected##1\string\protected##2&} -\etb@ifdefprotected{\notblank{#2}} - -% {}{}{} - -\newcommand*{\ifcsprotected}[1]{% - \ifcsdef{#1} - {\expandafter\ifdefprotected\csname#1\endcsname} - {\@secondoftwo}} - -% {}{} - -\newrobustcmd{\ifdefltxprotect}[1]{% - \begingroup - \edef\etb@resrvda{% - \noexpand\protect\expandafter\noexpand - \csname\expandafter\@gobble\string#1 \endcsname}% - \expandafter\endgroup\ifx#1\etb@resrvda - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {}{}{} - -\newrobustcmd*{\ifcsltxprotect}[1]{% - \ifcsdef{#1} - {\expandafter\ifdefltxprotect\csname#1\endcsname} - {\@secondoftwo}} - -% {}{}{} - -\newcommand{\ifdefempty}[1]{% - \ifundef{#1} - {\@secondoftwo} - {\ifdefmacro{#1} - {\ifdefparam{#1} - {\@secondoftwo} - {\etb@ifdefempty{#1}}} - {\@secondoftwo}}} - -\def\etb@ifdefempty#1{% - \expandafter\expandafter - \expandafter\ifblank - \expandafter\expandafter - \expandafter{% - \expandafter\strip@prefix\meaning#1}} - -% {}{}{} - -\newcommand*{\ifcsempty}[1]{% - \ifcsundef{#1} - {\@secondoftwo} - {\expandafter\ifdefparam\csname#1\endcsname - {\@secondoftwo} - {\expandafter\etb@ifdefempty\csname#1\endcsname}}} - -% {}{}{} - -\newcommand{\ifdefvoid}[1]{% - \ifundef{#1} - {\@firstoftwo} - {\ifdefmacro{#1} - {\ifdefparam{#1} - {\@secondoftwo} - {\etb@ifdefempty{#1}}} - {\@secondoftwo}}} - -% {}{}{} - -\newcommand*{\ifcsvoid}[1]{% - \ifcsundef{#1} - {\@firstoftwo} - {\expandafter\ifdefparam\csname#1\endcsname - {\@secondoftwo} - {\expandafter\etb@ifdefempty\csname#1\endcsname}}} - -% {}{}{}{} - -\newcommand{\ifdefequal}[2]{% - \ifundef{#1} - {\@secondoftwo} - {\ifundef{#2} - {\@secondoftwo} - {\ifx#1#2% - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi}}} - -% {}{}{}{} - -\newcommand*{\ifcsequal}[2]{% - \ifcsundef{#1} - {\@secondoftwo} - {\ifcsundef{#2} - {\@secondoftwo} - {\expandafter\ifx - \csname#1\expandafter\endcsname - \csname#2\endcsname - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi}}} - -% {}{}{}{} - -\newrobustcmd{\ifdefstrequal}[2]{% - \ifdefmacro{#1} - {\ifdefmacro{#2} - {\begingroup - \edef\etb@tempa{\expandafter\strip@prefix\meaning#1}% - \edef\etb@tempb{\expandafter\strip@prefix\meaning#2}% - \ifx\etb@tempa\etb@tempb - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \endgroup} - {\@secondoftwo}} - {\@secondoftwo}} - -% {}{}{}{} - -\newcommand*{\ifcsstrequal}[2]{% - \ifcsundef{#1} - {\@secondoftwo} - {\ifcsundef{#2} - {\@secondoftwo} - {\expandafter\ifdefstrequal - \csname#1\expandafter\endcsname - \csname#2\endcsname}}} - -% {}{}{}{} - -\newrobustcmd{\ifdefstring}[2]{% - \ifdefmacro{#1} - {\begingroup - \edef\etb@tempa{\expandafter\strip@prefix\meaning#1}% - \edef\etb@tempb{\detokenize{#2}}% - \ifx\etb@tempa\etb@tempb - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \endgroup} - {\@secondoftwo}} - -% {}{}{}{} - -\newrobustcmd{\ifcsstring}[2]{% - \ifcsundef{#1} - {\@secondoftwo} - {\expandafter\ifdefstring\csname#1\endcsname{#2}}} - -% {}{} - -\newcommand{\ifdefcounter}[1]{\etb@ifcounter#1&} -\long\def\etb@ifcounter#1#2&{% - \ifx\count#1% - \expandafter\@secondoftwo - \else - \expandafter\etb@ifcounter@i\meaning#1:% - \fi} -\edef\etb@ifcounter@i#1:#2\fi{\noexpand\fi - \noexpand\etb@ifcounter@ii#1\string\count&} -\edef\etb@ifcounter@ii{% - \def\noexpand\etb@ifcounter@ii##1\string\count##2&} -\etb@ifcounter@ii{\ifblank{#1}} - -% {}{}{} - -\newcommand*{\ifcscounter}[1]{% - \ifcsdef{#1} - {\expandafter\ifdefcounter\csname#1\endcsname} - {\@secondoftwo}} - -% {}{}{} - -\newcommand*{\ifltxcounter}[1]{% - \ifcsdef{c@#1} - {\expandafter\ifdefcounter\csname c@#1\endcsname} - {\@secondoftwo}} - -% {}{} - -\newcommand{\ifdeflength}[1]{\etb@iflength#1&} -\long\def\etb@iflength#1#2&{% - \ifx\skip#1% - \expandafter\@secondoftwo - \else - \expandafter\etb@iflength@i\meaning#1:% - \fi} -\edef\etb@iflength@i#1:#2\fi{\noexpand\fi - \noexpand\etb@iflength@ii#1\string\skip&} -\edef\etb@iflength@ii{% - \def\noexpand\etb@iflength@ii##1\string\skip##2&} -\etb@iflength@ii{\ifblank{#1}} - -% {}{}{} - -\newcommand*{\ifcslength}[1]{% - \ifcsdef{#1} - {\expandafter\ifdeflength\csname#1\endcsname} - {\@secondoftwo}} - -% {}{} - -\newcommand{\ifdefdimen}[1]{\etb@ifdimen#1&} -\long\def\etb@ifdimen#1#2&{% - \ifx\dimen#1% - \expandafter\@secondoftwo - \else - \expandafter\etb@ifdimen@i\meaning#1:% - \fi} -\edef\etb@ifdimen@i#1:#2\fi{\noexpand\fi - \noexpand\etb@ifdimen@ii#1\string\dimen&} -\edef\etb@ifdimen@ii{% - \def\noexpand\etb@ifdimen@ii##1\string\dimen##2&} -\etb@ifdimen@ii{\ifblank{#1}} - -% {}{}{} - -\newcommand*{\ifcsdimen}[1]{% - \ifcsdef{#1} - {\expandafter\ifdefdimen\csname#1\endcsname} - {\@secondoftwo}} - -% {}{}{}{} - -\newrobustcmd{\ifstrequal}[2]{% - \begingroup - \edef\etb@tempa{\detokenize{#1}}% - \edef\etb@tempb{\detokenize{#2}}% - \ifx\etb@tempa\etb@tempb - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \endgroup} - -% {}{}{} - -\newcommand{\ifstrempty}[1]{% - \expandafter\ifx\expandafter&\detokenize{#1}&% - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {}{}{} - -\newcommand{\ifblank}[1]{% from url.sty - \etb@ifblank@i#1&&\@secondoftwo\@firstoftwo:} -\long\def\etb@ifblank@i#1#2#4#5:{#4} - -\newcommand{\notblank}[1]{% - \etb@ifblank@i#1&&\@firstoftwo\@secondoftwo:} - -% {}{}{}{}{} - -\newcommand*{\ifnumcomp}[3]{% - \ifnum\numexpr#1\relax#2\numexpr#3\relax - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {}{}{}{} - -\newcommand*{\ifnumequal}[1]{% - \ifnumcomp{#1}=} - -\newcommand*{\ifnumgreater}[1]{% - \ifnumcomp{#1}>} - -\newcommand*{\ifnumless}[1]{% - \ifnumcomp{#1}<} - -% {}{}{} - -\newcommand*{\ifnumodd}[1]{% - \ifodd\numexpr#1\relax - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {}{}{}{}{} - -\newcommand*{\ifdimcomp}[3]{% - \ifdim\dimexpr#1\relax#2\dimexpr#3\relax - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {}{}{}{} - -\newcommand*{\ifdimequal}[1]{% - \ifdimcomp{#1}=} - -\newcommand*{\ifdimgreater}[1]{% - \ifdimcomp{#1}>} - -\newcommand*{\ifdimless}[1]{% - \ifdimcomp{#1}<} - -% {}{}{} - -\newcommand{\ifboolexpe}[1]{% - \etb@be@beg\etb@be@bgroup#1(&\etb@be@end} - -\let\etb@be@true\@empty -\def\etb@be@false{-\@ne} - -\def\etb@be@beg{% - \ifnum\numexpr\z@\ifnum\numexpr\z@} - -\def\etb@be@end{% - <\z@ - \expandafter\etb@be@false - \fi - <\z@ - \expandafter\@secondoftwo - \else - \expandafter\@firstoftwo - \fi} - -\long\def\etb@be@bgroup#1(#2&{% - \etb@be@egroup#1)&% - \ifblank{#2} - {} - {\etb@be@beg - \etb@be@bgroup#2&}} - -\long\def\etb@be@egroup#1)#2&{% - \etb@be@and#1and&% - \ifblank{#2} - {} - {\etb@be@end\etb@be@true\etb@be@false - \etb@be@egroup#2&}} - -\long\def\etb@be@and#1and#2&{% - \etb@be@or#1or&% - \ifblank{#2} - {} - {<\z@ - \expandafter\@firstofone - \else - \expandafter\@gobble - \fi - {=\z@\fi\ifnum\numexpr\m@ne}% - \ifnum\numexpr\z@ - \etb@be@and#2&}} - -\long\def\etb@be@or#1or#2&{% - \etb@be@not#1not&% - \ifblank{#2} - {} - {<\z@ - \expandafter\@secondoftwo - \else - \expandafter\@firstoftwo - \fi - {=\z@\fi\ifnum\numexpr\z@ - \ifnum\numexpr\@ne} - {=\z@\fi\ifnum\numexpr\z@ - \ifnum\numexpr\z@}% - \etb@be@or#2&}} - -\long\def\etb@be@not#1not#2&{% - \etb@be@togl#1togl&% - \ifblank{#2} - {} - {>\z@ - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {\unless\ifnum\numexpr\m@ne} - {\unless\ifnum\numexpr\z@}% - \etb@be@not#2&}} - -\long\def\etb@be@togl#1togl#2&{% - \etb@be@bool#1bool&% - \ifblank{#2} - {} - {\etb@be@togl@i#2&}} - -\long\def\etb@be@togl@i#1#2&{% - \ifcsdef{etb@tgl@#1} - {\csname etb@tgl@#1\endcsname\etb@be@true\etb@be@false} - {\etb@be@err{Toggle '#1' undefined}{}}% - \etb@be@togl#2&} - -\long\def\etb@be@bool#1bool#2&{% - \etb@be@test#1test&% - \ifblank{#2} - {} - {\etb@be@bool@i#2&}} - -\long\def\etb@be@bool@i#1#2&{% - \ifcsundef{if#1} - {\etb@be@err{Boolean '#1' undefined}{}} - {\csname if#1\endcsname - \else - \etb@be@false - \fi}% - \etb@be@bool#2&} - -\long\def\etb@be@test#1test#2&{% - \ifblank{#1} - {} - {\etb@be@err{The invalid part is: '\detokenize{#1}'}{}}% - \ifblank{#2} - {} - {\etb@be@test@i#2&}} - -\long\def\etb@be@test@i#1#2&{% - #1\etb@be@true\etb@be@false - \etb@be@test#2&} - -\long\def\etb@be@err#1#2{% - \expandafter\ifnum\the\numexpr - \expandafter\ifnum\the\currentiftype=-3 - \expandafter\thr@@ - \else - \expandafter\currentiftype - \fi - =\thr@@ - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {=\z@\fi - \etb@be@err{#1}{#2\ifnum\numexpr\m@ne}} - {\etb@err@expr{#1}#2}} - -% {}{}{} - -\newrobustcmd{\ifboolexpr}[1]{\etb@boolexpr{#1}} - -\long\def\etb@boolexpr#1{% - \begingroup - \let\etb@br@neg\@firstoftwo - \etb@tempcnta\z@ - \etb@br@beg - \etb@br@bgroup#1(&% - \etb@br@end - \etb@br@eval} - -\def\etb@br@beg{% - \begingroup - \let\etb@br@neg\@firstoftwo - \etb@tempcnta\z@} - -\def\etb@br@end{% - \etb@br@eval\etb@br@true\etb@br@false} - -\def\etb@br@eval{% - \ifnum\etb@tempcnta<\z@ - \aftergroup\@secondoftwo - \else - \aftergroup\@firstoftwo - \fi - \endgroup} - -\def\etb@br@true{% - \advance\etb@tempcnta\etb@br@neg\z@\m@ne - \let\etb@br@neg\@firstoftwo} - -\def\etb@br@false{% - \advance\etb@tempcnta\etb@br@neg\m@ne\z@ - \let\etb@br@neg\@firstoftwo} - -\long\def\etb@br@bgroup#1(#2&{% - \etb@br@egroup#1)&% - \ifblank{#2} - {} - {\etb@br@beg - \etb@br@bgroup#2&}} - -\long\def\etb@br@egroup#1)#2&{% - \etb@br@and#1and&% - \ifblank{#2} - {} - {\etb@br@end - \etb@br@egroup#2&}} - -\long\def\etb@br@and#1and#2&{% - \etb@br@or#1or&% - \ifblank{#2} - {} - {\ifnum\etb@tempcnta<\z@ - \etb@tempcnta\m@ne - \else - \etb@tempcnta\z@ - \fi - \etb@br@and#2&}} - -\long\def\etb@br@or#1or#2&{% - \etb@br@not#1not&% - \ifblank{#2} - {} - {\ifnum\etb@tempcnta<\z@ - \etb@tempcnta\z@ - \else - \etb@tempcnta\@ne - \fi - \etb@br@or#2&}} - -\long\def\etb@br@not#1not#2&{% - \etb@br@togl#1togl&% - \ifblank{#2} - {} - {\let\etb@br@neg\@secondoftwo - \etb@br@not#2&}} - -\long\def\etb@br@togl#1togl#2&{% - \etb@br@bool#1bool&% - \ifblank{#2} - {} - {\etb@br@togl@i#2&}} - -\long\def\etb@br@togl@i#1#2&{% - \ifcsdef{etb@tgl@#1} - {\csname etb@tgl@#1\endcsname\etb@br@true\etb@br@false} - {\etb@err@expr{Toggle '#1' undefined}\etb@br@false}% - \etb@br@togl#2&} - -\long\def\etb@br@bool#1bool#2&{% - \etb@br@test#1test&% - \ifblank{#2} - {} - {\etb@br@bool@i#2&}} - -\long\def\etb@br@bool@i#1#2&{% - \ifcsundef{if#1} - {\etb@err@expr{Boolean '#1' undefined}\etb@br@false} - {\csname if#1\endcsname - \etb@br@true - \else - \etb@br@false - \fi}% - \etb@br@bool#2&} - -\long\def\etb@br@test#1test#2&{% - \ifblank{#1} - {} - {\etb@err@expr{The invalid part is: '\detokenize{#1}'}}% - \ifblank{#2} - {} - {\etb@br@test@i#2&}} - -\long\def\etb@br@test@i#1#2&{% - \ignorespaces#1\etb@br@true\etb@br@false - \etb@br@test#2&} - -\long\def\etb@err@expr#1{% - \etb@error - {Invalid boolean expression} - {#1.}} - -% {}{} - -\newrobustcmd{\whileboolexpr}[2]{% - \etb@boolexpr{#1}{#2\whileboolexpr{#1}{#2}}{}} - -% {}{} - -\newrobustcmd{\unlessboolexpr}[2]{% - \etb@boolexpr{#1}{}{#2\unlessboolexpr{#1}{#2}}} - -% {} - -\newcommand{\expandonce}[1]{% - \unexpanded\expandafter{#1}} - -% {} - -\newcommand*{\csexpandonce}[1]{% - \expandafter\expandonce\csname#1\endcsname} - -% {} - -\newcommand*{\protecting}{} -\def\protecting#{% - \ifx\protect\@typeset@protect - \etb@protecting\@firstofone - \fi - \ifx\protect\@unexpandable@protect - \etb@protecting\etb@unexpandable - \fi - \ifx\protect\noexpand - \etb@protecting\unexpanded - \fi - \ifx\protect\string - \etb@protecting\detokenize - \fi - \relax\@firstofone} - -\def\etb@protecting#1#2\relax\@firstofone{\fi#1} -\long\def\etb@unexpandable#1{\unexpanded{\protecting{#1}}} - -% {} - -\newrobustcmd*{\csdef}[1]{\expandafter\def\csname#1\endcsname} -\newrobustcmd*{\csedef}[1]{\expandafter\edef\csname#1\endcsname} -\newrobustcmd*{\csgdef}[1]{\expandafter\gdef\csname#1\endcsname} -\newrobustcmd*{\csxdef}[1]{\expandafter\xdef\csname#1\endcsname} -\newrobustcmd*{\protected@csedef}{\etb@protected\csedef} -\newrobustcmd*{\protected@csxdef}{\etb@protected\csxdef} - -\def\etb@protected{% - \let\@@protect\protect - \let\protect\@unexpandable@protect - \afterassignment\restore@protect} - -% {}{} - -\newrobustcmd{\cslet}[2]{% - \expandafter\let\csname#1\endcsname#2} - -% {}{} - -\newrobustcmd{\letcs}[2]{% - \ifcsdef{#2} - {\expandafter\let\expandafter#1\csname#2\endcsname} - {\undef#1}} - -% {}{} - -\newrobustcmd*{\csletcs}[2]{% - \ifcsdef{#2} - {\expandafter\let - \csname#1\expandafter\endcsname - \csname#2\endcsname} - {\csundef{#1}}} - -% {} - -\newcommand*{\csuse}[1]{% - \ifcsname#1\endcsname - \csname#1\expandafter\endcsname - \fi} - -% {} - -\newrobustcmd{\undef}[1]{\let#1\etb@undefined} - -% {} - -\newrobustcmd*{\csundef}[1]{\cslet{#1}\etb@undefined} - -% {}{} - -\newrobustcmd{\appto}[2]{% - \ifundef{#1} - {\edef#1{\unexpanded{#2}}} - {\edef#1{\expandonce#1\unexpanded{#2}}}} -\newrobustcmd{\eappto}[2]{% - \ifundef{#1} - {\edef#1{#2}} - {\edef#1{\expandonce#1#2}}} -\newrobustcmd{\gappto}[2]{% - \ifundef{#1} - {\xdef#1{\unexpanded{#2}}} - {\xdef#1{\expandonce#1\unexpanded{#2}}}} -\newrobustcmd{\xappto}[2]{% - \ifundef{#1} - {\xdef#1{#2}} - {\xdef#1{\expandonce#1#2}}} - -\newrobustcmd*{\protected@eappto}{\etb@protected\eappto} -\newrobustcmd*{\protected@xappto}{\etb@protected\xappto} - -% {}{} - -\newrobustcmd{\preto}[2]{% - \ifundef{#1} - {\edef#1{\unexpanded{#2}}} - {\edef#1{\unexpanded{#2}\expandonce#1}}} -\newrobustcmd{\epreto}[2]{% - \ifundef{#1} - {\edef#1{#2}} - {\edef#1{#2\expandonce#1}}} -\newrobustcmd{\gpreto}[2]{% - \ifundef{#1} - {\xdef#1{\unexpanded{#2}}} - {\xdef#1{\unexpanded{#2}\expandonce#1}}} -\newrobustcmd{\xpreto}[2]{% - \ifundef{#1} - {\xdef#1{#2}} - {\xdef#1{#2\expandonce#1}}} - -\newrobustcmd*{\protected@epreto}{\etb@protected\epreto} -\newrobustcmd*{\protected@xpreto}{\etb@protected\xpreto} - -% {}{} - -\newrobustcmd*{\csappto}[1]{\expandafter\appto\csname#1\endcsname} -\newrobustcmd*{\cseappto}[1]{\expandafter\eappto\csname#1\endcsname} -\newrobustcmd*{\csgappto}[1]{\expandafter\gappto\csname#1\endcsname} -\newrobustcmd*{\csxappto}[1]{\expandafter\xappto\csname#1\endcsname} -\newrobustcmd*{\protected@cseappto}{\etb@protected\cseappto} -\newrobustcmd*{\protected@csxappto}{\etb@protected\csxappto} - -% {}{} - -\newrobustcmd*{\cspreto}[1]{\expandafter\preto\csname#1\endcsname} -\newrobustcmd*{\csepreto}[1]{\expandafter\epreto\csname#1\endcsname} -\newrobustcmd*{\csgpreto}[1]{\expandafter\gpreto\csname#1\endcsname} -\newrobustcmd*{\csxpreto}[1]{\expandafter\xpreto\csname#1\endcsname} -\newrobustcmd*{\protected@csepreto}{\etb@protected\csepreto} -\newrobustcmd*{\protected@csxpreto}{\etb@protected\csxpreto} - -% {}{} - -\newrobustcmd*{\numdef}[2]{% - \ifundef#1{\let#1\z@}{}% - \edef#1{\the\numexpr#2}} -\newrobustcmd*{\numgdef}[2]{% - \ifundef#1{\let#1\z@}{}% - \xdef#1{\the\numexpr#2}} - -% {}{} - -\newrobustcmd*{\csnumdef}[1]{% - \expandafter\numdef\csname#1\endcsname} -\newrobustcmd*{\csnumgdef}[1]{% - \expandafter\numgdef\csname#1\endcsname} - -% {}{} - -\newrobustcmd*{\dimdef}[2]{% - \ifundef#1{\let#1\z@}{}% - \edef#1{\the\dimexpr#2}} -\newrobustcmd*{\dimgdef}[2]{% - \ifundef#1{\let#1\z@}{}% - \xdef#1{\the\dimexpr#2}} - -% {}{} - -\newrobustcmd*{\csdimdef}[1]{% - \expandafter\dimdef\csname#1\endcsname} -\newrobustcmd*{\csdimgdef}[1]{% - \expandafter\dimgdef\csname#1\endcsname} - -% {}{} - -\newrobustcmd*{\gluedef}[2]{% - \ifundef#1{\let#1\z@skip}{}% - \edef#1{\the\glueexpr#2}} -\newrobustcmd*{\gluegdef}[2]{% - \ifundef#1{\let#1\z@skip}{}% - \xdef#1{\the\glueexpr#2}} - -% {}{} - -\newrobustcmd*{\csgluedef}[1]{% - \expandafter\gluedef\csname#1\endcsname} -\newrobustcmd*{\csgluegdef}[1]{% - \expandafter\gluegdef\csname#1\endcsname} - -% {}{} - -\newrobustcmd*{\mudef}[2]{% - \ifundef#1{\def#1{0mu}}{}% - \edef#1{\the\muexpr#2}} -\newrobustcmd*{\mugdef}[2]{% - \ifundef#1{\let#1\z@}{}% - \xdef#1{\the\muexpr#2}} - -% {}{} - -\newrobustcmd*{\csmudef}[1]{% - \expandafter\mudef\csname#1\endcsname} -\newrobustcmd*{\csmugdef}[1]{% - \expandafter\mugdef\csname#1\endcsname} - -% {}{} - -\newrobustcmd*{\defcounter}[2]{% - \ifcsundef{c@#1} - {\etb@noglobal\@nocounterr{#1}}% - {\csname c@#1\endcsname\numexpr#2\relax}} - -% {}{} - -\newrobustcmd*{\deflength}[2]{% - \ifundef{#1} - {\etb@noglobal\etb@err@nolen{#1}}% - {#1\glueexpr#2\relax}} - -\protected\def\etb@err@nolen#1{% - \etb@error{Length '\string#1' undefined}\@eha} - -% {} - -\newrobustcmd*{\newbool}[1]{% - \expandafter\@ifdefinable\csname if#1\endcsname{% - \expandafter\newif\csname if#1\endcsname}} - -% {} - -\newrobustcmd*{\providebool}[1]{% - \ifcsundef{if#1} - {\expandafter\newif\csname if#1\endcsname} - {\begingroup - \edef\@tempa{\expandafter\meaning\csname if#1\endcsname}% - \ifx\@tempa\etb@isfalse - \else - \ifx\@tempa\etb@istrue - \else - \etb@error{\@backslashchar if#1 not a boolean}\@eha - \fi - \fi - \endgroup}} - -% {}{|} - -\newrobustcmd*{\setbool}[2]{% - \ifcsundef{if#1} - {\etb@noglobal\etb@err@nobool{#1}} - {\ifcsundef{#1#2} - {\etb@noglobal\etb@err@boolval{#2}} - {\csname#1#2\endcsname}}} - -% {} - -\newrobustcmd*{\booltrue}[1]{% - \ifcsundef{if#1} - {\etb@noglobal\etb@err@nobool{#1}} - {\csname#1true\endcsname}} - -% {} - -\newrobustcmd*{\boolfalse}[1]{% - \ifcsundef{if#1} - {\etb@noglobal\etb@err@nobool{#1}} - {\csname#1false\endcsname}} - -\edef\etb@istrue{\meaning\iftrue} -\edef\etb@isfalse{\meaning\iffalse} -\protected\def\etb@noglobal{\let\relax\relax} - -% {}{} - -\newcommand*{\ifbool}[1]{% - \ifcsundef{if#1} - {\etb@err@nobool{#1}\@gobbletwo} - {\csname if#1\endcsname - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi}} - -% {}{} - -\newcommand*{\notbool}[1]{% - \ifcsundef{if#1} - {\etb@err@nobool{#1}\@gobbletwo} - {\csname if#1\endcsname - \expandafter\@secondoftwo - \else - \expandafter\@firstoftwo - \fi}} - -\protected\def\etb@err@nobool#1{% - \etb@error{Boolean '\@backslashchar if#1' undefined}\@eha} - -\def\etb@err@boolval#1{% - \etb@error - {Invalid boolean value '#1'} - {Valid boolean values are 'true' and 'false'.}} - -% {} - -\newrobustcmd*{\newtoggle}[1]{% - \ifcsdef{etb@tgl@#1} - {\etb@error{Toggle '#1' already defined}\@eha} - {\cslet{etb@tgl@#1}\@secondoftwo}} - -% {} - -\newrobustcmd*{\providetoggle}[1]{% - \ifcsdef{etb@tgl@#1} - {} - {\cslet{etb@tgl@#1}\@secondoftwo}} - -% {}{|} - -\newrobustcmd*{\settoggle}[2]{% - \ifcsdef{etb@tgl@#1} - {\ifcsdef{etb@toggle#2} - {\csletcs{etb@tgl@#1}{etb@toggle#2}} - {\etb@noglobal\etb@err@boolval{#2}}} - {\etb@noglobal\etb@err@notoggle{#1}}} - -% {} - -\newrobustcmd*{\toggletrue}[1]{% - \ifcsdef{etb@tgl@#1} - {\cslet{etb@tgl@#1}\etb@toggletrue} - {\etb@noglobal\etb@err@notoggle{#1}}} - -% {} - -\newrobustcmd*{\togglefalse}[1]{% - \ifcsdef{etb@tgl@#1} - {\cslet{etb@tgl@#1}\etb@togglefalse} - {\etb@noglobal\etb@err@notoggle{#1}}} - -\let\etb@toggletrue\@firstoftwo -\let\etb@togglefalse\@secondoftwo - -% {}{} - -\newcommand*{\iftoggle}[1]{% - \ifcsdef{etb@tgl@#1} - {\csname etb@tgl@#1\endcsname} - {\etb@err@notoggle{#1}\@gobbletwo}} - -% {}{} - -\newcommand*{\nottoggle}[1]{% - \ifcsdef{etb@tgl@#1} - {\csname etb@tgl@#1\endcsname\@secondoftwo\@firstoftwo} - {\etb@err@notoggle{#1}\@gobbletwo}} - -\protected\def\etb@err@notoggle#1{% - \etb@error{Toggle '#1' undefined}\@eha} - -% {}{} - -\protected\def\etb@ifscanable#1{% - \begingroup - \edef\etb@resrvda{% - \def\noexpand\etb@resrvda####1\detokenize{macro}:####2->####3&{% - ####1\def\string\etb@resrvda####2{####3}}% - \edef\noexpand\etb@resrvda{\noexpand\etb@resrvda\meaning#1&}}% - \etb@resrvda - \makeatletter - \scantokens\expandafter{\etb@resrvda}% - \expandafter\endgroup\ifx#1\etb@resrvda - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {}{}{} - -\protected\long\def\etb@ifpattern#1#2{% - \begingroup - \edef\etb@resrvda{% - \def\noexpand\etb@resrvda####1\detokenize{#2}####2&{% - \endgroup\noexpand\noexpand\noexpand\ifblank{####2}}% - \edef\noexpand\etb@resrvda{\noexpand\etb@resrvda - \expandafter\strip@prefix\meaning#1\detokenize{#2}&}% - \noexpand\etb@resrvda} - \etb@resrvda\@secondoftwo\@firstoftwo} - -% {}{} - -\protected\long\def\etb@ifhashcheck#1{% - \begingroup - \edef\etb@resrvda{\detokenize{#1}}% - \expandafter\endgroup - \expandafter\etb@ifhashcheck@i\meaning\etb@resrvda&} - -\edef\etb@ifhashcheck@i#1&{% - \noexpand\expandafter - \noexpand\etb@ifhashcheck@ii - \noexpand\strip@prefix#1\string#\string#&} - -\edef\etb@ifhashcheck@ii{% - \def\noexpand\etb@ifhashcheck@ii##1\string#\string###2&} -\etb@ifhashcheck@ii{\ifblank{#2}} - -% {} - -\newrobustcmd*{\robustify}[1]{% - \ifundef{#1} - {\etb@error{\string#1 undefined}\@eha} - {\ifdefmacro{#1} - {\ifdefltxprotect{#1} - {\letcs\etb@resrvda{\expandafter\@gobble\string#1 }% - \@tempswatrue} - {\let\etb@resrvda#1% - \@tempswafalse}% - \ifdefparam\etb@resrvda - {\etb@ifscanable\etb@resrvda - {\etb@robustify\etb@resrvda - \let#1\etb@resrvda} - {\etb@error{Failed to robustify \string#1} - {The command is special and cannot be - handled by \string\robustify.}% - \@tempswafalse}} - {\protected\edef#1{\expandonce\etb@resrvda}} - \if@tempswa - \ifcsdef{\string#1 } - {} - {\csundef{\expandafter\@gobble\string#1 }}% - \fi - \undef\etb@resrvda} - {\etb@error{\string#1 not a macro}\@eha}}} - -\def\etb@robustify#1{% - \begingroup - \edef\etb@resrvdb{% - \def\noexpand\etb@resrvdb####1\detokenize{macro}:####2->####3&{% - \protected####1\def\string#1\space####2{####3}}% - \edef\noexpand\etb@resrvdb{% - \noexpand\etb@resrvdb\meaning#1&}}% - \etb@resrvdb - \etb@patchcmd@scantoks\etb@resrvdb} - -% {}{}{} -% *{}{} - -\newrobustcmd{\ifpatchable}{% - \etb@dbg@trce\ifpatchable - \begingroup - \@makeother\#% - \@ifstar\etb@ifpatchable@i\etb@ifpatchable} - -\long\def\etb@ifpatchable#1#2{% - \endgroup - \etb@dbg@init#1% - \ifundef{#1} - {\etb@dbg@fail{def}\@secondoftwo} - {\etb@dbg@info{def}% - \ifdefmacro{#1} - {\etb@dbg@info{mac}% - \etb@ifscanable{#1} - {\etb@ifhashcheck{#2} - {\etb@dbg@info{tok}% - \etb@ifpattern#1{#2} - {\etb@dbg@info{pat}% - \etb@dbg@info{pos}\@firstoftwo} - {\etb@dbg@fail{pat}\@secondoftwo}} - {\etb@dbg@fail{hsh}\@secondoftwo}} - {\etb@dbg@fail{tok}\@secondoftwo}} - {\etb@dbg@fail{mac}\@secondoftwo}}} - -\long\def\etb@ifpatchable@i#1{% - \endgroup - \etb@dbg@init#1% - \ifundef{#1} - {\etb@dbg@fail{def}\@secondoftwo} - {\etb@dbg@info{def}% - \ifdefmacro{#1} - {\etb@dbg@info{mac}% - \ifdefparam{#1} - {\etb@dbg@info{prm}% - \etb@ifscanable{#1} - {\etb@dbg@info{tok}% - \etb@dbg@info{pos}\@firstoftwo} - {\etb@dbg@fail{tok}\@secondoftwo}} - {\etb@dbg@info{prl}% - \ifdefprotected{#1} - {\etb@dbg@info{pro}} - {}% - \etb@dbg@info{pos}\@firstoftwo}} - {\etb@dbg@fail{mac}\@secondoftwo}}} - -% []{}{}{}{}{} - -\newrobustcmd*{\patchcmd}{% - \etb@dbg@trce\patchcmd - \begingroup - \@makeother\#% - \etb@patchcmd} - -\newcommand{\etb@patchcmd}[4][########1]{% - \etb@ifpatchable#2{#3} - {\etb@dbg@succ{ret}% - \begingroup - \edef\etb@resrvda{% - \def\noexpand\etb@resrvda####1\detokenize{macro:}####2->####3&{% - #1\def\string\etb@resrvda\space####2{\noexpand\etb@resrvdb####3&}}% - \def\noexpand\etb@resrvdb####1\detokenize{#3}####2&{% - ####1\detokenize{#4}####2}% - \edef\noexpand\etb@resrvda{% - \noexpand\etb@resrvda\meaning#2&}}% - \etb@resrvda - \etb@patchcmd@scantoks\etb@resrvda - \let#2\etb@resrvda - \undef\etb@resrvda - \@firstoftwo} - {\@secondoftwo}} - -\def\etb@patchcmd@scantoks#1{% - \edef\etb@resrvda{\endgroup - \unexpanded{\makeatletter\scantokens}{#1}% - \catcode\number`\@=\the\catcode`\@\relax}% - \etb@resrvda} - -% {}{}{}{} - -\newrobustcmd*{\apptocmd}{% - \etb@dbg@trce\apptocmd - \begingroup - \@makeother\#% - \etb@hooktocmd\etb@append} - -\newrobustcmd*{\pretocmd}{% - \etb@dbg@trce\pretocmd - \begingroup - \@makeother\#% - \etb@hooktocmd\etb@prepend} - -\long\def\etb@hooktocmd#1#2#3{% - \endgroup - \etb@dbg@init#2% - \ifundef{#2} - {\etb@dbg@fail{def}\@secondoftwo} - {\etb@dbg@info{def}% - \ifdefmacro{#2} - {\etb@dbg@info{mac}% - \ifdefparam{#2} - {\etb@dbg@info{prm}% - \etb@ifscanable{#2} - {\etb@ifhashcheck{#3} - {\etb@dbg@info{tok}% - \etb@dbg@succ{ret}% - \etb@hooktocmd@i#1#2{#3}% - \@firstoftwo} - {\etb@dbg@fail{hsh}\@secondoftwo}} - {\etb@dbg@fail{tok}\@secondoftwo}} - {\etb@dbg@info{prl}% - \ifdefprotected{#2} - {\etb@dbg@info{pro}% - \etb@dbg@succ{red}% - \protected} - {\etb@dbg@succ{red}}% - \edef#2{#1{\expandonce#2}{\unexpanded{#3}}}% - \@firstoftwo}} - {\etb@dbg@fail{mac}\@secondoftwo}}} - -\long\def\etb@hooktocmd@i#1#2#3{% - \begingroup - \edef\etb@resrvda{% - \def\noexpand\etb@resrvda####1\detokenize{macro}:####2->####3&{% - ####1\def\string\etb@resrvda\space####2{#1{####3}{\detokenize{#3}}}}% - \edef\noexpand\etb@resrvda{% - \noexpand\etb@resrvda\meaning#2&}}% - \etb@resrvda - \etb@patchcmd@scantoks\etb@resrvda - \let#2\etb@resrvda - \undef\etb@resrvda} - -\long\def\etb@append#1#2{#1#2} -\long\def\etb@prepend#1#2{#2#1} - -\newrobustcmd*{\tracingpatches}{% - \etb@info{Enabling tracing}% - \input{etoolbox.def}% - \global\let\tracingpatches\relax} -\@onlypreamble\tracingpatches - -\let\etb@dbg@trce\@gobble -\let\etb@dbg@init\@gobble -\let\etb@dbg@info\@gobble -\let\etb@dbg@succ\@gobble -\let\etb@dbg@fail\@gobble - -% {} - -\newcommand{\rmntonum}[1]{% - \ifblank{#1} - {} - {\expandafter\etb@rti@end\number\numexpr - \expandafter\etb@rti@prs\detokenize{#1}&\relax}} - -\def\etb@rti@prs#1#2{% - \ifx% - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {#1#2} - {\ifx% - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {\etb@rti@chk#1+\etb@rti@num#1#2} - {\etb@rti@chk#1\etb@rti@chk#2% - \ifnum\etb@rti@num#1<\etb@rti@num#2 % - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {+\etb@rti@num#2-\etb@rti@num#1\etb@rti@prs} - {+\etb@rti@num#1\etb@rti@prs#2}}}} - -\def\etb@rti@chk#1{% - \ifcsname etb@rmn@#1\endcsname - \else - \expandafter\etb@rti@brk - \fi} - -\def\etb@rti@brk#1&{+\z@&-1} -\def\etb@rti@end#1\relax{\ifblank{#2}{#1}{#2}} -\def\etb@rti@num#1{\csname etb@rmn@#1\endcsname} - -\chardef\etb@rmn@i=1 -\chardef\etb@rmn@I=1 -\chardef\etb@rmn@v=5 -\chardef\etb@rmn@V=5 -\chardef\etb@rmn@x=10 -\chardef\etb@rmn@X=10 -\chardef\etb@rmn@l=50 -\chardef\etb@rmn@L=50 -\chardef\etb@rmn@c=100 -\chardef\etb@rmn@C=100 -\mathchardef\etb@rmn@d=500 -\mathchardef\etb@rmn@D=500 -\mathchardef\etb@rmn@m=1000 -\mathchardef\etb@rmn@M=1000 - -% {}{}{} - -\newcommand{\ifrmnum}[1]{% - \ifblank{#1} - {\@secondoftwo} - {\expandafter\etb@ifr@prs\detokenize{#1}\relax}} - -\def\etb@ifr@prs#1{% - \ifx\relax#1% - \expandafter\@firstoftwo - \else - \ifcsname etb@rmn@#1\endcsname - \expandafter\expandafter - \expandafter\etb@ifr@prs - \else - \expandafter\expandafter - \expandafter\etb@ifr@brk - \fi - \fi} - -\def\etb@ifr@brk#1\relax{\@secondoftwo} - -% <*>{}{} - -\newrobustcmd*{\DeclareListParser}{% - \@ifstar - {\etb@defparser\etb@defparser@arg} - {\etb@defparser\etb@defparser@do}} - -\def\etb@defparser#1#2#3{% - \@ifdefinable#2{#1{#2}{#3}}} - -\def\etb@defparser@do#1#2{% - \begingroup - \edef\@tempa{\endgroup - \long\def\noexpand#1####1{% - \expandafter\noexpand - \csname etb@lst@\expandafter\@gobble\string#1\endcsname - \space####1\noexpand#2&}% - \long\csdef{etb@lst@\expandafter\@gobble\string#1}####1\noexpand#2####2&{% - \noexpand\etb@listitem\noexpand\do{####1}% - \noexpand\ifblank{####2} - {\noexpand\listbreak} - {\expandafter\noexpand - \csname etb@lst@\expandafter\@gobble\string#1\endcsname - \space####2}&}}% - \@tempa} - -\def\etb@defparser@arg#1#2{% - \begingroup - \edef\@tempa{\endgroup - \long\def\noexpand#1####1####2{% - \expandafter\noexpand - \csname etb@lst@\expandafter\@gobble\string#1\endcsname - {####1}\space####2\noexpand#2&}% - \long\csdef{etb@lst@\expandafter\@gobble\string#1}####1####2\noexpand#2####3&{% - \noexpand\etb@listitem{####1}{####2}% - \noexpand\ifblank{####3} - {\noexpand\listbreak} - {\expandafter\noexpand - \csname etb@lst@\expandafter\@gobble\string#1\endcsname - {####1}\space####3}&}}% - \@tempa} - -\long\def\etb@listitem#1#2{% - \ifblank{#2} - {} - {\expandafter\etb@listitem@i - \expandafter{\@firstofone#2}{#1}}} -\long\def\etb@listitem@i#1#2{#2{#1}} - -\newcommand*{\listbreak}{} -\long\def\listbreak#1&{} - -% {,,...} => \do{}\do{}... - -\DeclareListParser{\docsvlist}{,} - -% {}{,,...} => {}{}... - -\DeclareListParser*{\forcsvlist}{,} - -% {}{} - -\newrobustcmd{\listadd}[2]{% - \ifblank{#2}{}{\appto#1{#2|}}} -\newrobustcmd{\listeadd}[2]{% - \begingroup - \edef\etb@tempa{\endgroup\noexpand\ifblank{#2}}% - \etb@tempa{}{\eappto#1{#2|}}} -\newrobustcmd{\listgadd}[2]{% - \ifblank{#2}{}{\gappto#1{#2|}}} -\newrobustcmd{\listxadd}[2]{% - \begingroup - \edef\etb@tempa{\endgroup\noexpand\ifblank{#2}}% - \etb@tempa{}{\xappto#1{#2|}}} - -% {}{} - -\newrobustcmd{\listcsadd}[1]{% - \expandafter\listadd\csname#1\endcsname} -\newrobustcmd{\listcseadd}[1]{% - \expandafter\listeadd\csname#1\endcsname} -\newrobustcmd{\listcsgadd}[1]{% - \expandafter\listgadd\csname#1\endcsname} -\newrobustcmd{\listcsxadd}[1]{% - \expandafter\listxadd\csname#1\endcsname} - -% {}{}{}{} - -\newrobustcmd{\ifinlist}[2]{% - \begingroup - \def\etb@tempa##1|#1|##2&{\endgroup - \ifblank{##2}\@secondoftwo\@firstoftwo}% - \expandafter\etb@tempa\expandafter|#2|#1|&} - -\newrobustcmd{\xifinlist}[1]{% - \begingroup - \edef\etb@tempa{\endgroup\ifinlist{#1}}% - \etb@tempa} - -% {}{}{}{} - -\newrobustcmd{\ifinlistcs}[2]{% - \expandafter\etb@ifinlistcs@i\csname #2\endcsname{#1}} -\long\def\etb@ifinlistcs@i#1#2{\ifinlist{#2}{#1}} - -\newrobustcmd{\xifinlistcs}[1]{% - \begingroup - \edef\etb@tempa{\endgroup\ifinlistcs{#1}}% - \etb@tempa} - -% {}{} => {}{}... - -\newcommand*{\forlistloop}[2]{% - \expandafter\etb@forlistloop\expandafter{#2}{#1}} - -\long\def\etb@forlistloop#1#2{\etb@forlistloop@i{#2}#1|&} - -\long\def\etb@forlistloop@i#1#2|#3&{% - \ifblank{#2} - {} - {#1{#2}}% - \ifblank{#3} - {\listbreak} - {\etb@forlistloop@i{#1}#3}% - &} - -% {}{} => {}{}... - -\newcommand*{\forlistcsloop}[2]{% - \expandafter\expandafter\expandafter\etb@forlistloop - \expandafter\expandafter\expandafter{\csname#2\endcsname}{#1}} - -% {} => \do{}\do{}... - -\newcommand*{\dolistloop}{\forlistloop\do} - -% {} => \do{}\do{}... - -\newcommand*{\dolistcsloop}{\forlistcsloop\do} - -% {} - -\newrobustcmd*{\AtEndPreamble}{\gappto\@endpreamblehook} -\newcommand*{\@endpreamblehook}{} - -\preto\document{% - \endgroup - \let\AtEndPreamble\@firstofone - \@endpreamblehook - \protected\def\AtEndPreamble{\@notprerr\@gobble}% - \undef\@endpreamblehook - \begingroup} - -% {} - -\newrobustcmd*{\AfterPreamble}{\AtBeginDocument} -\AtEndPreamble{\let\AfterPreamble\@firstofone} - -% {} - -\newrobustcmd*{\AfterEndPreamble}{\gappto\@afterendpreamblehook} -\newcommand*{\@afterendpreamblehook}{} - -\appto\document{% - \let\AfterEndPreamble\@firstofone - \@afterendpreamblehook - \protected\def\AfterEndPreamble{\@notprerr\@gobble}% - \undef\@afterendpreamblehook - \ignorespaces} - -\AtEndDocument{\let\AfterEndPreamble\@gobble} - -% {} - -\newrobustcmd*{\AfterEndDocument}{\gappto\@afterenddocumenthook} -\newcommand*{\@afterenddocumenthook}{} - -\patchcmd\enddocument - {\deadcycles} - {\let\AfterEndDocument\@firstofone - \@afterenddocumenthook - \deadcycles} - {} - {\let\etb@@end\@@end - \def\@@end{% - \let\AfterEndDocument\@firstofone - \@afterenddocumenthook - \etb@@end}} - -% {}{} - -\newrobustcmd{\AtBeginEnvironment}[1]{% - \csgappto{@begin@#1@hook}} - -\patchcmd\begin - {\csname #1\endcsname} - {\csuse{@begin@#1@hook}% - \csname #1\endcsname} - {} - {\etb@warning{% - Patching '\string\begin' failed!\MessageBreak - '\string\AtBeginEnvironment' will not work\@gobble}} - -% {}{} - -\newrobustcmd{\AtEndEnvironment}[1]{% - \csgappto{@end@#1@hook}} - -\patchcmd\end - {\csname end#1\endcsname} - {\csuse{@end@#1@hook}% - \csname end#1\endcsname} - {} - {\etb@warning{% - Patching '\string\end' failed!\MessageBreak - '\string\AtEndEnvironment' will not work\@gobble}} - -% {}{} - -\newrobustcmd{\BeforeBeginEnvironment}[1]{% - \csgappto{@beforebegin@#1@hook}} - -\pretocmd\begin - {\csuse{@beforebegin@#1@hook}} - {} - {\etb@warning{% - Patching '\string\begin' failed!\MessageBreak - '\string\BeforeBeginEnvironment' will not work\@gobble}} - -% {}{} - -\newrobustcmd{\AfterEndEnvironment}[1]{% - \csgappto{@afterend@#1@hook}} - -\patchcmd\end - {\if@ignore} - {\csuse{@afterend@#1@hook}% - \if@ignore} - {} - {\etb@warning{% - Patching '\string\end' failed!\MessageBreak - '\string\AfterEndEnvironment' will not work\@gobble}} - -\endinput diff --git a/etoolbox/README b/etoolbox/README deleted file mode 100644 index db96fdf..0000000 --- a/etoolbox/README +++ /dev/null @@ -1,84 +0,0 @@ -$Id: README,v 2.1 2011/01/03 19:14:10 lehman stable $ - -ABOUT - -The etoolbox package is a toolbox of programming facilities geared -primarily towards LaTeX class and package authors. It provides LaTeX -frontends to some of the new primitives provided by e-TeX as well as -some generic tools which are not related to e-TeX but match the -profile of this package. The package is work in progress. Note that -previous versions of this package were released under the name -elatex. - -LICENSE - -Copyright (c) 2007-2010 Philipp Lehman. This package is author- -maintained. Permission is granted to copy, distribute and/or modify -this software under the terms of the LaTeX Project Public License -(LPPL), version 1.3. This software is provided 'as is', without -warranty of any kind, either expressed or implied, including, but -not limited to, the implied warranties of merchantability and -fitness for a particular purpose. - -REQUIREMENTS - -- e-TeX -- etex.sty - -AUTOMATIC INSTALLATION - -TeX Live: The etoolbox package is included in TeX Live. - Use the TeX Live package manager to install it. - -MiKTeX: The etoolbox package is included in MiKTeX. - Use the MiKTeX package manager to install it. - -SEMI-AUTOMATIC INSTALLATION - -1. Download the file - - http://www.ctan.org/tex-archive/install/macros/latex/contrib/etoolbox.tds.zip - -2. Unpack the archive in the root directory of the local TeX - installation tree, for example - - /usr/local/share/texmf/ - or - /usr/share/texmf-local/ - or - C:\Local TeX Files\ - -3. Update the file hash tables (also known as the file name - database). - - On teTeX and TeX Live systems, run texhash as root ('sudo - texhash'). On MiKTeX, run 'initexmf --update-fndb' in a command - window or use the 'Refresh FNDB' button of the MiKTeX Options - window. - -MANUAL INSTALLATION - -1. Copy the files 'etoolbox.sty' and 'etoolbox.def' to - - /tex/latex/etoolbox/ - - where denotes the root of the local TeX installation - tree, for example - - /usr/local/share/texmf/ - or - /usr/share/texmf-local/ - or - C:\Local TeX Files\ - -2. The file 'etoolbox.pdf' goes to - - /doc/latex/etoolbox/ - -3. Update the file hash tables (also known as the file name - database). - - On teTeX and TeX Live systems, run texhash as root ('sudo - texhash'). On MiKTeX, run 'initexmf --update-fndb' in a command - window or use the 'Refresh FNDB' button of the MiKTeX Options - window. diff --git a/etoolbox/etoolbox.def b/etoolbox/etoolbox.def deleted file mode 100644 index 0102a51..0000000 --- a/etoolbox/etoolbox.def +++ /dev/null @@ -1,73 +0,0 @@ -% $Id: etoolbox.def,v 2.1 2011/01/03 19:14:10 lehman stable $ - -\ProvidesFile{etoolbox.def} -[\csname etb@rcsid\endcsname $Id: etoolbox.def,v 2.1 2011/01/03 19:14:10 lehman stable $ - etoolbox debug messages] - -\begingroup -\makeatletter -\@makeother\+ -\@makeother\- -\@makeother\= -\@makeother\> - -\long\gdef\etb@dbg@trce#1{\typeout{% - [debug] tracing \string#1\on@line}}% -\long\gdef\etb@dbg@init#1{\typeout{% - [debug] analyzing '\detokenize\expandafter{\string#1}'}}% -\gdef\etb@dbg@info#1{\typeout{% - [debug] ++ \csuse{etb@msg@i@#1}}}% -\gdef\etb@dbg@succ#1{\typeout{% - [debug] == \csuse{etb@msg@s@#1}}}% -\gdef\etb@dbg@fail#1{\typeout{% - [debug] -- \csuse{etb@msg@f@#1}}}% - -\gdef\etb@msg@ex{^^J[debug] -> }% -\gdef\etb@msg@br{^^J[debug]\@spaces} - -\gdef\etb@msg@i@def{% - control sequence is defined} -\gdef\etb@msg@i@mac{% - control sequence is a macro} -\gdef\etb@msg@i@prm{% - control sequence is a macro with parameters} -\gdef\etb@msg@i@prl{% - control sequence is a macro without parameters} -\xdef\etb@msg@i@pro{% - control sequence is a \string\protected\space macro} -\gdef\etb@msg@i@tok{% - macro can be retokenized cleanly} -\gdef\etb@msg@i@pat{% - search pattern found in replacement text} -\gdef\etb@msg@i@pos{% - patching possible} -\gdef\etb@msg@s@red{% - redefining macro now} -\gdef\etb@msg@s@ret{% - retokenizing macro now} -\xdef\etb@msg@f@def{% - control sequence is undefined or \string\relax} -\gdef\etb@msg@f@mac{% - control sequence is not a macro} -\xdef\etb@msg@f@tok{% - macro cannot be retokenized cleanly\noexpand\etb@msg@ex - the macro may have been defined under a category\noexpand\etb@msg@br - code regime different from the current one\noexpand\etb@msg@ex - the replacement text may contain special control\noexpand\etb@msg@br - sequence tokens formed with - \string\csname...\string\endcsname;\noexpand\etb@msg@ex - the replacement text may contain carriage return,\noexpand\etb@msg@br - newline, or similar characters} -\xdef\etb@msg@f@hsh{% - nested patching command and parameters in patch\noexpand\etb@msg@ex - the patching command seems to be nested in the\noexpand\etb@msg@br - argument to some other command\noexpand\etb@msg@ex - the patch text seems to contain \string# characters\noexpand\etb@msg@ex - either avoid nesting or use \string# characters with\noexpand\etb@msg@br - category code 12 in the patch text\noexpand\etb@msg@ex - simply doubling the \string# characters will not work} -\gdef\etb@msg@f@pat{% - search pattern not found in replacement text} - -\endgroup -\endinput diff --git a/etoolbox/etoolbox.pdf b/etoolbox/etoolbox.pdf deleted file mode 100644 index 78f8d15be9d96ca72bdfad7507bd21ab4ec8460a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 188352 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
n{fnOZM9a7?mM+DBrfOi8~#QXgDa^q0MY_Py(x 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 z
S4&H>{^_-;@W^qvQvRz@D3$^0V3CyOO0Lo?;xdL{}ig|min$IHELmV-a9RlZLtda-`qZars^^PMe=cBaZQHiN^a#vh|}Z#HAP5T0qIyYs7G zm7Zu~Qc^IrOn%FUHoOe5_nZ9}T&mLQC{odHg#K%}p!~j}l>8K3y7`H!$8J|f<>1Ot zus_FrXKXmFs`_+Llip>9-N=;_GSH~wO97Ljah%#zX*$|1A9y%8lHdm$iNO^v>5+6D zZFFvi&PRwja$wIkcx{?dI*3Mp9wOEt=TSMNg2ywlib`uA{^vb~)X|s|EE2SMhT5c? z*fs0Upp>YEP`TVtcUDAKmp0=L?8`dv3R-!1Nmz|rD)q5Sjz*idfjWiI!c)sQrqt~# zRckD$eR)~ zk9&pL2HpuLyPJp6sge-~6VHo<-39A+%^czQli6`6))6dOK1kXQqPwTkm?jc6UklPV zjy^1LxLTLE;s%k*CJq$ZnDYm0n>7hpYA_zDn&L5Z?PK&sCnO#rtVv()r>l7AQ*oM6%0}{i=1=bR z-C%WHHwGN^k|R;+6yEs|4dt`Ica0Z!Adh%*O4Z91?1Gk5kny>ovikgX+vG&gG9qvtp`jy9ajd0V@tI7d{5&|2U)o~ZQD{*T z2qz74629RC7&;Q+b%8H+q@^*#fAlsFcf`?(ir~*|7VEQEc(#Z911&ttog9wvHp(w8 zBKXpv6Xxg5xz#tIXwNc2prf_&EJTlh;O4unDsV;wH#A^Nu*gu-IM7qNZPvHl;_U|? z1g+V_EsKi_8jVf&=fQz!Pl@YhKS!f`<>%D)+j_Ngeg4sZpD&_p^UDvRyt9<4iJ?r|=Fc${$W@zL?$6A`x75b`;F z5>4`6F@y{fp={1C?yN{lu3>y;Kou^Zly;49!4!EUekz!d9CjuqZ`MPw0hd1Z^ zAJZ7DzZPp$6Vph+{CX#dJT# z(m75f*NBtLH3{Iu%GR@OG>8jM!D_+cepUoW38+H~rf1f?AW@IW`Wmosc`+xdh3v`v zCOFZ@Yc74}2rEhzcui*1uVj-G)p!4X0gb&k%^aoT7_{RO}DiO|fiT)l#3W@elJuCArm$1eY=ZRxt3tj{T@C`!m~ z{oQ#HAOeX?`b{?$h~8#_pB#XSuTyT74pT0qg~4x_AKji|U9s?$%?ZkW47d8t%wjaZ z9u8Xu&aA2*4_ibra@07$dU$7q(CjU+p)lxn3=ae^EV|Plcq0$S!pYP+=3tY(@v-4J zWGl$9yl$V8Mfe!?nj8iJAXT#vETUcCRxRUQ4j&LW0?m>6_1gy$8j|hz_VuVR(ZdWU zuOq@}s=LAj_RbzM!b4A>IB=5Xb#XN5769m>r35A`)#7w!1(>9ybE})eb3w_;IfKMbmH!3>>_F>?&7i!gVZ5o8zI{Lfdb!8VoC4|;|?&XJ0F$Q zWS|!rjKdgAf(eH_Y7c?)K%$XFJEWjl_AHj&OpH9L@ zP>XViLgPhRqQBOl4LSj+vWJlZYH46nw0;aGi;)p<0l`gf^ zK(;7JB*=jvad1-tsBe^k#GzCHM+65Tan{Wk0Zr&2 z9uTE?y1{W=5_()lV);YL`iGsUOSAAH?BcWC}mAtxf z=xiX(IC=P+3JM}nUw}j@7>G)@zX?5$I57Aa!FWKRGPL3}%~Al8u~>DO=rgHI zspx4>f@MD-4w5HA00}r6xMJgJUum%;;zem8j(a6q*&`5~ctm`rIVcP-Mpfz(ICVth zEj+*X>+6gkoct6${&zj!H;I&hRoeH{L9FBb&DI8Em6zl9L-z+ARDy5Y$O;v%j|M*b zR>zL77Jn7o)?ZzGwi|wL-&MB_BjQLHu`FpH?~q%tX1+$k5u47bk*P^Ua)vuka{eG)zjqdc3*6?Z*GsWf+jJ8p>&bOQXhfj_mVo zF~k@Q4)ILh{FaH{E{i;{J01mBIMFRMYD-Tg_We z`R>MbU7@wZj!v-u1k|y1pYk==bj4L$K-s3p=FQ4T4gHowSG&$oT~wM>_(pekr7Qi; zahk9>xXekz@vMBz3>!TmH|uH9Lj|p}ErJ3^!i6WR z;9YP>6ocsN!kZw}bdTe7TNLf3(qU{3geuE9O`oEh-j`Eq9AM5lVZIt*McFwYT`L_) zVz2L~1Dv~qBZjtDkC_tZQ_Kd@r{%1?pFDcBBy`YYHKwaPsx6(mfa~m9r>tj-t4)`? zjj!E=i==}!R6qIQwz}UuKCYh9ASG17nn$hUM(FW7mcWQj0$TSONV8B&2`vjT{mLg* zrCvte{g1$0Qq1w(Dh6I)L*(R@bxsM>4y_`Dx<6_+OHN)%6`vVG?;AJhjp~foy(7Kv zeIdiDn?4L5Gd{}Z8QH(ED>R{!-6t0I@OqOK98Atm6+8c?j9_ep$`FrnX;b50O)!kX zHcTEFSjr9dZEqsSGp5(6UNwwC2jW>OK7aDutp6!0*#;S-PLh&$u30r+3_I{36mJ0- z6dlZ~)=(06K}0b6L$D?aR)M;zA@Oi(cZgjAv>+?2LjuMcaM zz(FK|my%CYid?x_rRw5oU8iv^?3}BcAFYvtK0s578tUs1L5)!&nYOu`LZ;t7!~lIh zB({R3XEv5>Xw|T)nd7IS$Qa9w*|B!jJ=GUyTjonmNRLX-Kxb960DN?#LldZhi?(YX zBJv@BFo;B6voS5Ro0T;QXt36bh{x6voFYATz$}MBCnI&>gy+dBK#Jh8rKzRHlze|t z|Cx{hq=}aQwBYGwQdMn^VpLU>@o!Oo97}q@42>MziNFq8Li%tyBV#a?NLnMP3~jHa znBuE-$si^eA^Dy1Z%-gcgE8hm4$R~w0|)J6izKVU>Kv)(_%=EEOY%U6Z2j8o{rrd0 zYFlO5%(6JGR`2!Yo2co`GI_L{o#jxKmbG6d^{tEiw}8ydflXTA{Xr;)^&ackj;o7_ z*SEh@7T#9YT_NaMO)xKP^oaKZsrX|r?~uf1ItSnNPwk#hb2Hz3UthvH1Y?J+GpU2E znS3_2RR&7`hAuV)c#_S1g}N@EQ%Bx3v+*4sJ2v;}#wf$1ES}ua zbrG@J&QzY*5*yNj6s-&@J5#c9rEhq!H0YA5rgdE(=Gc-!){3;LVI&Lm!^Pc@LXhB1*&e6Y{e%I-_(KqaaP z=t$90ypY^VmVl6Q2R?ow+XrLh#1Jfva{75F_%s0Cq^o=klbZjRj zv1LS&kizvhF?9u)?ov_WYrYx(5Z#q;?hkhkMJva@1`N^=|9~$9FyQ@nIG&y1|0#&g!Sug0DG8Wan3(?yj<3?RveRNm`l5a@3Lrq) zVWx@Df3RNvSH&Ld+TqX75fg`Tq3&PVxc0Z_M81)DtiU;0#xHF#d%|PJKBRN4y$^2f zy$>D6Ksa3X*azS=m7$$hU>7=UJjDadbbjgTwGHjL5mQ5YpgAeBQb4;Dko zCk5A@qLd30q_ut_-?)E#R~uk@7C9z5&736XF~H}NN*btlq#bSl$k;p zfPO_qxaD%E#!F;!CnvzY-0jj=u@8g?0S(h_gEhD<3)lzP7l2sngg^)&uQ_M%2a9k- zRgov3^*OnY%r8iQ8JkaGAVG8Rz)Vn*uE$Ow55Ht2oWTTx zQYL#$GbEreN`UOY2N5-;U{Rq2nXrh1=?~vDpL4`VGumTDJ zOnN^gS@1rP6N#XEs~87X5e`ed-l;e;k5X?UlQ9ThwKO&myqZ`-??7@4*{yx?90+uy zB;;Ds-#l7r3W7AHV#~cfC_V;2(_l3yhzdoVRq4q4Y#tP7CFraU4#m(=^bnY&XvngG zrATs@Px_q2y>rqyE@x$+GGH&rBDh@o_(ekgMQLO}ClVKqzu`roI;laM#P*Q^y%-q2 z!FS|g0Yd*k$mpTQfpR3rmihx5n!AhA+LWWGFh4c*A%_qs8ZvScpuhi~0@)@ds#Tlf{Vz2^GbO_i$U$O{IGk z#RJd8p)44R_MFm|%qfZpQK2p5t1Kk~)t3@N`u&%Xm}$Z=8PP@j9J&4X^yO_Snjuzz zn3V^c#xb*(9kFZEeXTi_+SwQm@VmC0#A<}x4Zw6L?<1Wa0YGslPwyaDC-vc6iuR!I z;>GL-)mpIHNnWtf<7!6P5dztdY!8S64nA(kV{J9CX}^6=q*=b74~Gsz*Cy7wyii{= zI{a~SMl+t-WI++(tp-Ijrbf7a(Q_)bL4IV9q*;IsNQJ0 zt&D86kpCfnI2!`eXsWgyRONv5;t(`twy$!L9j7AS%Sdb;mMF~{)iJx##O(|38H42E z@HPO|%9SX$s^sVym+UqbT~@z~Ms-9MtKDy|1H#s8AcDJpYn+zUG%41u+rPx3zK%$C zUWuKH*cy?fu#BU{qLw;;zl*W^xOJ}PiOHCXGJNCt`Km}3eEs1;>o zg4NlV;vCpp!cNTsR|0go+0i96ybLD_%T~dw{CPEylniwlBm<8cu7K9bhN)cWWAX+( zByJCpa?GbbAVi63SIc~jGJs!Mnbbg8v>zX4IW}|B9y;DvUu0f;QqRq-Stdqd1s`uu z5ibt|rRwZ5gu+G($!)jxhZIk8$ZQ~Bs3c&QK!wpu8^e_+DGZv-G-AITnjBxI(H1_L zCjn~Rv(WmAvA#M&FxrgcI`X9s4H7bDv>RPkB~z{TW^FVk?1f=HxTZ{BM7K zJ}UMj>=ih?2&sb9u$gu`bBR;WZkGAmk5HHK2JQnRfF~~0C*tg$EjJ-YuS?H)Z4-OJY z`?BAkofY_@I}2#6KHcltPLRh8L{Z1GKYn9DaXlKOkH?3OT%13zcbhbPH?)E|dDi=W ze6eQ6O_fg*4Ygb+|FSiEkW;}eCrnv9n0^{Lyx6mMd>FX@a(j3?aCv#T-o-N!PX{t=gcTG>8a~a+R!gQrBZVxQTxl|_4culdt<+3$n|qIgk1aR z9TMPzB9|Fa&yA8iA)fO6w6Re5hksLk(Y@L^yF!_*HNsUz$$~_S|I7LDacnO6ADjV& zT^ijPneY*`utQ~r@7L4N7eC&P2b+#xHoj@(i&@Duem1S_4t`N(YhR}IEn5Ey#l_nU z{I~bx`SgIE?&sNM3Pc08@&lL(%O$n(m3nrmI$ z=?y(Oe{NS-r=Px4zYcIAfmT${v-pI{W;ICpJdOg1HKD*3IS#8y`<^tC>>ne zCsp{dTrIht){p4QR z0heG_Gu4e@i_T(XSft^$I^uN08FWL|y!pPT%=ylO{HG(S8!E~&T5Sc`6Iu8Y0CY@S z5`47KYex%{dEVE~B#f+M7SMABdlC+zBXV_Ga$8X9vJxiZQMn)PC)|t5QscXG7;hZz zs|E=9`C}gVE{@mPPmx}nyVp88vMX63dSP2~xh{W%nx0OCOJF3kcUv-2hSp70Oa=M( z%|!&GWgEdohUO>sucqD+Rd7>3JiZ)DVy@bCl)lT+2=W#iKcC43a?{Pm{!w|60?;O4Bc`An-fg1+u#!=fu;Ug zX0j*ot&75gB>o)cdV7D~%Ug);{(AYmWtp^ifj?cOPSP&Ca z2i7!e1c&-p6a#fGY97y5ODy&Xc^u)hn_5H7?nk5MnW05*!sdUA0E%`)=zO0IWO?F*qSG`oL z`JvC_#<)KUDv}gCsA%;oveKPX%qLJqbS?%I&=8ec>X48nb&J;(YpSzQNNS)wS+<)C zSv81KXJ~0l&u-5fB3{wbtIlqZBUR)*lA1Ke8c4+KD5O;GBD;(sdKb{P`N>5|LGA)y z0^y-{N`mF8r|ct=c0_#F$^i9%;2q`~J3wBgV_P)44|h<~UGJvO6ZsoSV*-oRP=nD@ z>4zJH0redFNdhj=M5+U*J!0Gh*sv*cY~v{G`OQ&=<2Zl~j1rnj>l~)}Q&ajmft`p{ z0!`bzf@W>J0utK*F|^H_0?-!M@`J)ae<=0V*7B!elwHaJ3e$;J>5s-ZT`I2SLWStg zl^bdRmz0qy_ZBX9mV!JYKvxDN8v-X!rsASLkJNRKfA5A;eH^G893`|mjP-#()C`L{ z*t1nf1U5KmFbrX}(ZNkiyn$pf8&3dppig!h0Z6_%j>dES8w#XFtJTCKVC^p!rk7zL z1JB7{C{3G%q^xew6Zy-~oE9EaHxwZ16h-T3g0oqu#zrp%HGS+N(T^wO zl~5O|-hjeL7W!R8;$0vQv4^as2UT}?&B&6VWOJ&2v_?=M81eZ+J#yeM> zq*_D^yMY5T%%Buf_lc)j;y&o?&+-8cZ%FqTmvN=Ty^_@}`P6bPG9ZlInQY#hs9d1G56@WLn^bk1+Y^jLVicCd| z8EdJ?W~i0a#7Zvv-|{QnPQ<2eYh0<~s)9Y-ow`+j6ajoutW=+Q<+s@=^uP=|q)^x0FYUJhaZZ6(%47>3&E zh98DED=wm_>Lv3@`1!BOf^e0IjK^Ya5$l9sip^A^LPQB_in$1gaV;R@5o(CHNTt>0 zn(xbAXvfc&r_a;WhTBiu`}6xqhgx3M@D=peKT5iKESjL@PQ#1e>3!7n;1xAJy`Al^ z>*oRZ&(ILNogS?LODm117d5@Ep0~62V-<5dytr=iN&fB6kN5MT4>z}!n`>KxVatn^ z-0d!}ziuB9-LSshV*Iu{e_P+~-qAwXo7unbj=^a4`8Q^Kv>A3jS|!7&mG7Q3h@@Ar z9B~nSg7@LW)U~EO1O{;gEx`r>CK)Ut1%t4%$jKhjs)s!cD^V|)dV>&yZeumetNVOJ zqV&1b_$r!1(!>TE$HS_?#6`x8h_q|+Df&Simoj+%q?uv#B-5d}R-vZcGS*YXrVJ@x zj}fu$#v0d|dy1ne`3j)Pg=1PN%QijmDdcA#@gOdvSzm;ytF{IJ8;Vzq0Gc{$)k(pH z)i(8s(Hg1mX+(#$8#3b~$f#N)02jPM>FEmuX&UhJ%PlG|Cp?6mT1|iZ!6XGXan|wM zyU8wRDfFFXpnK_0$%SJr_#i(pBEoI?nS*_3{UU=H(!!MAGkZ(1p99{9}mql>@ufL0D5Nt_xoSqpOXh`mp9qw@)Gb<$AAtDnI(hPvp-6tZ)v3# z0!p?~#04UkEx?-c))Byl1#`Sh0ZIj^mAPwS5Oo|X)m|bT;F=}^(yJ*hi}SU?sR~lG zap^4EKhW%+U_G;5mp?4x&ic5qk=YGx9eqozxvVWl2$f6+QMe!+M?_F+M@s4->N;=v)?muKQ; zm%s;`3%Dy2eFPp?#cl&Ao|L(_aQyY;TLsxILe5U13{i4Ag$qXjk3BAJgEP&y3aD|(=kj0CX;uHwv*W#E4 zP=*hf;+WSk{ZF`%A-s!Bz~PAMRDVcbX~)iCNTjS_pTa=o1}o$QBq2iL08%_6EpP!(m znk$ZFfotF!f+kaa-Jgni-vbPRMyuQdoT|Ue2MnQ7fYGWQ%Oehy@=;Fo{^Y7pYOtNg zUEh1OLZ?fbM~&~7MJehw$cPi9>VSjuc!49ma+1-VOoxx|NrPTOwVxfUwl?R{2!g3)wiK(dRN~$zG>*&(tH2T-e#npDQF%9 z)BdmLz%RN^1OUd^lj0i@iX04sYeA&g?E-$gxJJ-aZgDCrAJZ^Am1~6fKT<2()A zrf|qSxY2CD7Vt0JNZQwzN^uC+4`fp@Ah}wGS^kR&4|icAB^wJcBtajYRxQL9+QM1! zQnq8oDIaIzkL^B^D7w}voZ&AXS-UP^irkWwzn||5>pM(Q7+I%y3t`__OFCv0958+l zNjhMo83R{BeO3TUtwbs^iTfMp6ocoazB@dLQ3rV01|$lRIP{w)N@aQz<2K@55>T;ouGr?Ivd$g_uo zLyunl&`{k-buq|-@e%TBi4wfAp_duQ|Qc)G>8yZC`N zTdybYp!k70Tkq^s@mty~h0uFDd#iC&fbYmz`?(n>Vy=CRRQ>GOUflD(%{H7*L@Zu{HwmnlsFS(-ggck?S$vrQ%FH z{tqD+a5$KtEZkRei-60#!YA4&(ij!J{Iq4TrRtwH+=%B zcn8f-C&q|Cvr(@vzuUIfhR#l_8B>zFD48+Sqy64X7|2{?IddFbi*KxWC#a$|*!NW^Ybmdlyw`HxGfmLTOQ#v(|86|lGa0X{ zuHU*dJ7lLV?;9-(T|`lKvgIwEU*bX?|4g03R{Y4zTF(ShY=Qf<*MUh+`LiuuGA z=;0+_tl)7iys!3tSGoiKO8Py&v2R5DeQ{IpPedo&yGY&-@GUYc*njI;GX4M04Kn^F z1pmL2fm9pfToqAke&sjwh8O;)j$R!qDOdfGZ zCK@H}tqEBiA1ihMBrDO{stIK?3ppZepm6|vejt#Nx>*u@2FTMze)w3}jzky4XmHrBhJLWH>~-@-19DkH5r)V$aRu@rWJpm*V96Amd;NLRm(;Yb3VF&J zk+k~ek@u*btSLpkS{L?}rpST=X~(nmi%9y^uBKR(Xf(eEwvlDzf*dGBvHc3fBZAR1 zinm0-Sk{Fjcm3k$UEHGIDNx6&83q~DcxXDAwkctC!rVcBD z&yw*@3z!cW6Gq{jlqO*4)w2MB$CBoqL-DO+3tk*dVx_LnC#Oz4T!Pmtri2NTG@m5(G~` zme8{}@Ipo*hk8K5O6(=KZqq0jNc2Srq%rX8U&XVjR|A;>Sq5@I;gND^C$uj2zRj}0 zsqF59+G7xEcj=SD4IEM18wew>*o7g`>hFa^tp^nV^dg}NCBoK*1T$ce!&N9iP@7|z zBeV1|uJ{2wGKIR(ko;pZ4`2%y6GU#55L|#jYl;hd#s4Xtww;d6t-d&av-~i7YS+ct zp|mn(ppHUd282p-V+M?2OqdDs(ewF%OCDa^1kp9K(FfP>pr{ zi1hr4QJDGr{a`CPIYo0pvF~aM+5;}bP;812D~71VY&+yb;piRWL~b#kGZhv0l0Vjp zS$t76wvJh}`!QRzBrRNS!Gg)Tu&>KP$@V~I9`IJ4oJ(mcOAVx=S1P`m9*~rdBEjpl zz8y+LX9o8?T?CPmVtmbq!ia%Z!a>zvTzn%O?`UdD=t6m8Rtwr|$J_ASz~ZxK?dQxh z&>&MdCa8<_&BtOf3(z542)UfnhAuunX+L9wVlgU}uoFr~X_kXVn`yyeMmefac(_v))JI>fMXEiOl&DvH2y5xis<*uK(s5O{jR)_3{ycl&@?_t! zg$sYP%R+w3i-#&>xw>dywr3<@B&btc}41y4VkJnRZ2yDQwgPSW;slr?_I4c!;ezG)_fA)d5@3^{k ziT(sQj;FX4;bx5d`UJKUkmu$ureaSr;tBpN$f4E?2o84)wcHqj3^z|Z8#YpU^D)NF zb8a3)0E zQ?{t8+KR!=tMVAz9QSx5^1LQ&-qvNy3NJ;tAiSD&9jS+PJmNy5xk3w`j%?wJ8)E)#HlMN zE_%n4E%f0ORpav0p8V3^t;v-oN4*)rtHDxB-%32y*z%i-k)_0Qiznfy%J;f=NXdWa z9!~}D#hw~n85{~-)zjtdOEpUy=PlPoBj69z2-clG`jbl+IG3aAv+od+ZHSnIYr$OOUKcn9akpdn77 zp;D;#)W!cDJ&}ilEUhUTL=P=cT5tzHv7-!L z^dHj*J_-e>qXYZ{g#vOy;LLNZj#8>X2_!-+m<|#uGzGvDmp|toF6&oJm7Vzp`4!|w zY5(K#)zdY5v93RFYp>gevA z+_;_$_Jy^8b{bD8vzh*n;YvRuV9`__%(^Sh5ylucvRQChzIMe(A#ydFF$wS%3Fc|n zF0c%iITZc?#tpeMj)CSi=#weqU#~ffay~+N5(mXmQa#JInji5Uno1z?>|G3%JbJGn z)`GsDb6O3f4CQz z!p&K(QeF)HU?DK5ydhr~pUtbYtHM7W8*cEo{dfNMTuCI;2fG65kKT2$f`7+CV^MoCKCRhaoVS@sA4yOkvAo%lVXTbFo_d*{+RD>c?h!T)h zqm-<@NrWc5opi{C-n1a{?d+%9#_;+6lCl?$?M2|jV6#!YRuqlB*s~Vj{#zq4W?9~2 z{zz0)DVKE!Gud>PsPt@F$)z#OMc-aS2_^nPs1D=2WLKh`jD97*QKV&9u~Dl+!2#29 z?!r-K!@Y<0o6CeDgapkp`;Z?TiD{ryV%F!S9;&J3`^79K&fV{EogSi}&+t ztYzkcc=dhY+Pz8B{?5`xTN^bn+Xk7eN;4BY(`QO-Zy8$YNoaYKCw9FDG2Kei&iYchQhF za>?bYhzvWc9*>4a#yrSZfBM@SX81pYEN{1e$$^{d$jq{y$gCu1XW$9hdJdK2mU})nqjpfvE}EZLjYqfBy1>1g=Cj@N-=3jW_d& zCjq7!mc-D&x4w5iqyW}js4u&h-E6-5Myxe-C4chTctz42xv(``t5M%r7}P&9FEgmk zHDXF*t&J(k{r%d5iK&x&VINtl-!_w4zq76nGnF{eRXO;OZ{_-{pjUZ(DoIt;nFATA zXTHaLvJ>j%QaHfdUAH%n#}8ey!=-(}oof3%u=Vxf-a*%4mYT{w!uonH&l`G#Z#R9X z`WODDUG1JL%A3bF!5?A@hWu5w`EHp3w*bsZcho#_^di;q+>`1$5y0ngnBeD z^T7p{w{gbHd98ki4^E6drwdqEJgAMnKklH=vu*wP4}jYKOLn&wP6~kgKTlr_d^7Ex zEF)X!nbt?BQ&gaO>3UbI1Nl^LvC} zHwQuJ1mKB%(?=K#W8;-6cB4IENS3fn!K5GF)crLa%NPPt*lxp;DJM`VYvz;l5U8r& zr`v(nXZ?nH>c(O*el-}O-N8~Cibi>F#IoU@3K*6r-3t3$GaTad0BP+2qI=@(N@Qoz zYAK+T6Edf&X%@?91|YO_IE{sqDi#{wJ}%(eYuW#(>^y^-P`W-&XpsN`6-0VRkQzdd zp%+1E0g)1F0@A?{q&Ml!(0d8JBLooyM4A+VfPx6pJ6xnHiWGhD-shcpXWske{j{@Z z_WWmOXLfdH&VPQVNa|G5m%Z?N;ul}zW4A9SYC8!N5#7h8iQ)HLsJpU&D6 zTI3Khkaz{hk-M2Dps%mR*fpEPii5lf`i?LgQH!Z8pz6TnbME7FQ>=0bemoF=_R^Ml z3f25wXA$*cN@oJ~0xOSaN?=(2^@QA69Bny?~UE^g)RAV@~O} zOZhm=-|}rk>N&u}N+(O)#}=!IcZxsAj>`&0wauLMR>yqWkGY7w3q9X=xnaD+ha5Xs z9`NM3J9!4-!Md6}k(GOx&hqf5Xr5K}AF_kj7Jir}=BFgG@l>+1ji8ixVwDy4G7Q#f zl)f8Ai)lE@a3xeot)as%B0xIy7?-F8*4o2V*MtYx&TMERQ2Dc#~dwY2b&Q7v^z zZYcP$xe1@1JzLv1cu3f$j{fOC3#5fGtH9YxKdY85zjdKO9|4-Y(w`C!zCgloLBb;-8F=3^}(0)w~j0$)S!!n-a2)uLj&z;M>hPG^@QFjS*cv?wNa*7RES z?6^$7$dg=`wdQqO_ev0j9l&8i+N$bDqiR*S&tGblkt**_kwI)VbK|Z_xg+kv9T}gp z=1ty-HkCBhr9%VK8+~}93fkjeJQb}^9XPgwFMb+(7`9W&{sG5?;)FNM+9+b)OHD?955oL987+mXL$ zocm3Li2qKx{j%RBYe=j}(uAOMkdRLPa@~9J=Fyic;%!gJtEt~k1d|C%PO6!9Htfq? zH0m%d;w#);xK~InTH{4hJ#U%Opqc9_jrEKb@t{&kS-ehhMoadjmP#SfVi7pLYoGH} z*ihP_ne($-j5DS2J!5&iLNNirm^e;cux;Vm4{VBB2fpt~rOJgbiO9mSllA+Wcw+1b z5dE$G*@L6i`IYXO$DK-gx^hY2kGgKPao?kXHtQAkqoRGuIp3lxrWotIjCSIuepVgx?{oob??wxrqzrf69+=dY z=YN{F(qz)3rP&L3fRJ369Fxh8i;1SLnq}_|DPe7)pHEVnkS$ zEA-Msdt6cct9-d_D=W$LktbAk4(ZguY1s1J?C!@XPyF+VGHrftP@9w=pSnusMn!~R zR{j73OlstPHzjkKtEGvQxrIJI*(t-<2(K36L5)?mJWpy{ymxGPuovq) zJ>hRXPBs*4Z^a--Z3zGpRR`{eft`{sH3>YhNHTCp5Sv~3u$hb6 zEVoKzyxXcCgdHC~reed$)%2UlAJc?jirbHhS9pG4?LS6!i9%E-{FY zA9itru%Q)_Khxr~U$aIgG;4nirim<_OZ{mgDQUvA<>>k{gTF2)eYi-vyvZ~Pu2(qN zil9Z=YGN3Vu?iO9DH}OM#}i0su`)1F^TrlEO$i8_<+9Pok~x!igj&XHr|(aHNU^L} z)@lz713y`Zy(%4Y@|u&9->ouR2TtfTLfE9L>V&rd0d?Zz-3#XtDnJ@TuHM>FC}Z|& z-YeEfJ2i$tfjGg+is3OPkdJw0p*RCCL#J}|NNORBp^ioT@`!fy(a6ZNM>sA`BJbqH z`sP&)SluTIh0nQln8=!$P1wsG_K8ii2%4jj#Y9x=dNLQ+8|7Lf_L$f&aqE_k^SWu{RbjZMPaHI@-jVMc@a78#h^{^)I z))(1uvLe7J|5;<dC4G+8;mTI>sw2lf^1Bpx$+0e5zW zA<&5X4y|F#zJ`qA3%vmy%-ioG6VR}OLz&wqam%kG?@z3^SBVEJ@p=ZmP@@|?Fj{03 zuIR_+anGbd-y8D&OyjuunVx}W>)?2jLCN@5d3NxGqD(BE2*d~l%MtC^9rTuAv2 z&RUS=8%xdtY|kMGH7bE0uA1am2qw2K-f>De3k8P>4;GO05aZrdBCN8YO5et)n;!tO!Pp_A^LI262o&OLX9 z>0%7dx!zNoSa76EBj=fJ%mj37>gKoHeU{Vre9ehp{7+}6`M96gYeP2K*E z$}$y5-=OtgB09;&+P9r^|Dsqd*`^f8gGsiDSu;=ma&?1xf5VvWp??pLzP{<&HdXu` zxNUO9EfI{6Vnv%fZq-oBpMzI_47IlHmv9G;ORm_2V7B)Z^q7c(+S-yZcxQ6Ofb7w? z6U_pS#ld*%LlI749U;-``(wdt+cP*MKf`UmrW4y0Q%ctSAO+hGRH=Gd*q+i7f*}#g%_-x8y0|$VT=mWmpgDayUWG`nJkpEi0_yb1%hhF@* zGtLxY@9=M2+=mtrE+`koQXJvoaY@Gg2e^z7*H*U>L`up^p!tzdNr;>&5(!IO$+t6zfy24~WYg8!6N2&_DeMkP^k!rIZUjA8^hPsQn2~Qfb_h63lSh+q9v?}!m&LgcK=E(Cnv_6>_Y5!ovZ2To>`E> zxDO(+Nz*v5^IaqG)ZF!5k;tL-%9>KwzAE zko^mK5fqXed&t>@XGwC)3ZWiUR5D~A{B9X|eQ<%T2J$)gruM7Ys$g^07)#n5U6eT~ z&nw~XHEa4IFH-d*cG6TsF2oTD83`n=&*T5zA}_2h2J4HlcK|`;WToUGAbx%geNE7R E06f3PDgXcg diff --git a/etoolbox/etoolbox.sty b/etoolbox/etoolbox.sty deleted file mode 100644 index ae37d94..0000000 --- a/etoolbox/etoolbox.sty +++ /dev/null @@ -1,1708 +0,0 @@ -% $Id: etoolbox.sty,v 2.1 2011/01/03 19:14:10 lehman stable $ - -% Copyright (c) 2007-2011 Philipp Lehman. -% -% Permission is granted to copy, distribute and/or modify this -% software under the terms of the LaTeX Project Public License -% (LPPL), version 1.3. -% -% The LPPL maintenance status of this software is -% 'author-maintained'. -% -% This software is provided 'as is', without warranty of any kind, -% either expressed or implied, including, but not limited to, the -% implied warranties of merchantability and fitness for a -% particular purpose. - -\def\etb@rcsid$#1: #2 #3 #4 #5${#4 v#3} - -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{etoolbox} -[\etb@rcsid $Id: etoolbox.sty,v 2.1 2011/01/03 19:14:10 lehman stable $ - e-TeX tools for LaTeX] - -\begingroup -\@ifundefined{eTeXversion} - {\PackageError{etoolbox} - {Not running under e-TeX} - {This package requires e-TeX. Try compiling the document - with\MessageBreak 'elatex' instead of 'latex'. When using - pdfTeX, try 'pdfelatex'\MessageBreak instead of 'pdflatex'. - This is a fatal error. I'm aborting now.}% - \aftergroup\endinput} - {} -\endgroup - -\RequirePackage{etex} - -\def\etb@catcodes{\do\&\do\|\do\:\do\-\do\=\do\<\do\>} -\def\do#1{\catcode\number`#1=\the\catcode`#1\relax} -\edef\etb@catcodes{\etb@catcodes} -\let\do\noexpand -\AtEndOfPackage{\etb@catcodes\undef\etb@catcodes} - -\catcode`\&=3 -\catcode`\|=3 -\@makeother\: -\@makeother\- -\@makeother\= -\@makeother\< -\@makeother\> - -\protected\def\etb@error{\PackageError{etoolbox}} -\protected\def\etb@warning{\PackageWarning{etoolbox}} -\protected\def\etb@info{\PackageInfo{etoolbox}} -\newcount\etb@tempcnta - -% {}[][]{} - -\newcommand*{\newrobustcmd}{} -\protected\def\newrobustcmd{\@star@or@long\etb@new@command} - -\def\etb@new@command#1{\@testopt{\etb@newcommand#1}0} - -\def\etb@newcommand#1[#2]{% - \@ifnextchar[%] - {\etb@xargdef#1[#2]} - {\ifx\l@ngrel@x\relax - \let\l@ngrel@x\protected - \else - \protected\def\l@ngrel@x{\protected\long}% - \fi - \@argdef#1[#2]}} - -\long\def\etb@xargdef#1[#2][#3]#4{% - \@ifdefinable#1{% - \expandafter\protected - \expandafter\def - \expandafter#1% - \expandafter{% - \expandafter\@testopt - \csname\string#1\endcsname{#3}}% - \expandafter\@yargdef\csname\string#1\endcsname\tw@{#2}{#4}}} - -% {}[][]{} - -\newrobustcmd*{\renewrobustcmd}{\@star@or@long\etb@renew@command} - -\def\etb@renew@command#1{% - \ifundef{#1} - {\etb@error{\string#1 undefined}\@ehc} - {}% - \let\@ifdefinable\@rc@ifdefinable - \etb@new@command#1} - -% {}[][]{} - -\newrobustcmd*{\providerobustcmd}{\@star@or@long\etb@provide@command} - -\def\etb@provide@command#1{% - \ifundef{#1} - {\def\reserved@a{\etb@new@command#1}} - {\def\reserved@a{\etb@renew@command\reserved@a}}% - \reserved@a} - -% {} - -\newrobustcmd*{\csshow}[1]{% - \begingroup\expandafter\endgroup - \expandafter\show\csname#1\endcsname} - -% {}{}{} - -\newcommand{\ifdef}[1]{% - \ifdefined#1% - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {}{}{} - -\newcommand{\ifundef}[1]{% - \ifdefined#1% - \ifx#1\relax - \expandafter\expandafter - \expandafter\@firstoftwo - \else - \expandafter\expandafter - \expandafter\@secondoftwo - \fi - \else - \expandafter\@firstoftwo - \fi} - -% {}{}{} - -\newcommand*{\ifcsdef}[1]{% - \ifcsname#1\endcsname - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {}{}{} - -\newcommand*{\ifcsundef}[1]{% - \ifcsname#1\endcsname - \expandafter\ifx\csname#1\endcsname\relax - \expandafter\expandafter - \expandafter\@firstoftwo - \else - \expandafter\expandafter - \expandafter\@secondoftwo - \fi - \else - \expandafter\@firstoftwo - \fi} - -% {}{} - -\newcommand{\ifdefmacro}{} -\long\edef\ifdefmacro#1{% - \noexpand\expandafter\noexpand\etb@ifdefmacro - \noexpand\meaning#1\detokenize{macro}:&} -\edef\etb@ifdefmacro{% - \def\noexpand\etb@ifdefmacro##1\detokenize{macro}:##2&} -\etb@ifdefmacro{\notblank{#2}} - -% {}{}{} - -\newcommand*{\ifcsmacro}[1]{% - \ifcsdef{#1} - {\expandafter\ifdefmacro\csname#1\endcsname} - {\@secondoftwo}} - -% {}{} - -\newcommand{\ifdefprefix}[1]{% - \ifdefmacro{#1} - {\etb@ifdefprefix{#1}} - {\@secondoftwo}} -\long\edef\etb@ifdefprefix#1{% - \noexpand\expandafter\noexpand\etb@ifdefprefix@i - \noexpand\meaning#1\detokenize{macro}:&} -\edef\etb@ifdefprefix@i{% - \def\noexpand\etb@ifdefprefix@i##1\detokenize{macro}:##2&} -\etb@ifdefprefix@i{\notblank{#1}} - -% {}{}{} - -\newcommand*{\ifcsprefix}[1]{% - \ifcsdef{#1} - {\expandafter\ifdefprefix\csname#1\endcsname} - {\@secondoftwo}} - -% {}{} - -\newcommand{\ifdefparam}{} -\long\edef\ifdefparam#1{% - \noexpand\expandafter\noexpand\etb@ifdefparam - \noexpand\meaning#1\detokenize{macro}:->&} -\edef\etb@ifdefparam{% - \def\noexpand\etb@ifdefparam##1\detokenize{macro}:##2->##3&} -\etb@ifdefparam{\notblank{#2}} - -% {}{}{} - -\newcommand*{\ifcsparam}[1]{% - \ifcsdef{#1} - {\expandafter\ifdefparam\csname#1\endcsname} - {\@secondoftwo}} - -% {}{} - -\newcommand{\ifdefprotected}{} -\long\edef\ifdefprotected#1{% - \noexpand\expandafter\noexpand\etb@ifdefprotected - \noexpand\meaning#1\string\protected&} -\edef\etb@ifdefprotected{% - \def\noexpand\etb@ifdefprotected##1\string\protected##2&} -\etb@ifdefprotected{\notblank{#2}} - -% {}{}{} - -\newcommand*{\ifcsprotected}[1]{% - \ifcsdef{#1} - {\expandafter\ifdefprotected\csname#1\endcsname} - {\@secondoftwo}} - -% {}{} - -\newrobustcmd{\ifdefltxprotect}[1]{% - \begingroup - \edef\etb@resrvda{% - \noexpand\protect\expandafter\noexpand - \csname\expandafter\@gobble\string#1 \endcsname}% - \expandafter\endgroup\ifx#1\etb@resrvda - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {}{}{} - -\newrobustcmd*{\ifcsltxprotect}[1]{% - \ifcsdef{#1} - {\expandafter\ifdefltxprotect\csname#1\endcsname} - {\@secondoftwo}} - -% {}{}{} - -\newcommand{\ifdefempty}[1]{% - \ifundef{#1} - {\@secondoftwo} - {\ifdefmacro{#1} - {\ifdefparam{#1} - {\@secondoftwo} - {\etb@ifdefempty{#1}}} - {\@secondoftwo}}} - -\def\etb@ifdefempty#1{% - \expandafter\expandafter - \expandafter\ifblank - \expandafter\expandafter - \expandafter{% - \expandafter\strip@prefix\meaning#1}} - -% {}{}{} - -\newcommand*{\ifcsempty}[1]{% - \ifcsundef{#1} - {\@secondoftwo} - {\expandafter\ifdefparam\csname#1\endcsname - {\@secondoftwo} - {\expandafter\etb@ifdefempty\csname#1\endcsname}}} - -% {}{}{} - -\newcommand{\ifdefvoid}[1]{% - \ifundef{#1} - {\@firstoftwo} - {\ifdefmacro{#1} - {\ifdefparam{#1} - {\@secondoftwo} - {\etb@ifdefempty{#1}}} - {\@secondoftwo}}} - -% {}{}{} - -\newcommand*{\ifcsvoid}[1]{% - \ifcsundef{#1} - {\@firstoftwo} - {\expandafter\ifdefparam\csname#1\endcsname - {\@secondoftwo} - {\expandafter\etb@ifdefempty\csname#1\endcsname}}} - -% {}{}{}{} - -\newcommand{\ifdefequal}[2]{% - \ifundef{#1} - {\@secondoftwo} - {\ifundef{#2} - {\@secondoftwo} - {\ifx#1#2% - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi}}} - -% {}{}{}{} - -\newcommand*{\ifcsequal}[2]{% - \ifcsundef{#1} - {\@secondoftwo} - {\ifcsundef{#2} - {\@secondoftwo} - {\expandafter\ifx - \csname#1\expandafter\endcsname - \csname#2\endcsname - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi}}} - -% {}{}{}{} - -\newrobustcmd{\ifdefstrequal}[2]{% - \ifdefmacro{#1} - {\ifdefmacro{#2} - {\begingroup - \edef\etb@tempa{\expandafter\strip@prefix\meaning#1}% - \edef\etb@tempb{\expandafter\strip@prefix\meaning#2}% - \ifx\etb@tempa\etb@tempb - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \endgroup} - {\@secondoftwo}} - {\@secondoftwo}} - -% {}{}{}{} - -\newcommand*{\ifcsstrequal}[2]{% - \ifcsundef{#1} - {\@secondoftwo} - {\ifcsundef{#2} - {\@secondoftwo} - {\expandafter\ifdefstrequal - \csname#1\expandafter\endcsname - \csname#2\endcsname}}} - -% {}{}{}{} - -\newrobustcmd{\ifdefstring}[2]{% - \ifdefmacro{#1} - {\begingroup - \edef\etb@tempa{\expandafter\strip@prefix\meaning#1}% - \edef\etb@tempb{\detokenize{#2}}% - \ifx\etb@tempa\etb@tempb - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \endgroup} - {\@secondoftwo}} - -% {}{}{}{} - -\newrobustcmd{\ifcsstring}[2]{% - \ifcsundef{#1} - {\@secondoftwo} - {\expandafter\ifdefstring\csname#1\endcsname{#2}}} - -% {}{} - -\newcommand{\ifdefcounter}[1]{\etb@ifcounter#1&} -\long\def\etb@ifcounter#1#2&{% - \ifx\count#1% - \expandafter\@secondoftwo - \else - \expandafter\etb@ifcounter@i\meaning#1:% - \fi} -\edef\etb@ifcounter@i#1:#2\fi{\noexpand\fi - \noexpand\etb@ifcounter@ii#1\string\count&} -\edef\etb@ifcounter@ii{% - \def\noexpand\etb@ifcounter@ii##1\string\count##2&} -\etb@ifcounter@ii{\ifblank{#1}} - -% {}{}{} - -\newcommand*{\ifcscounter}[1]{% - \ifcsdef{#1} - {\expandafter\ifdefcounter\csname#1\endcsname} - {\@secondoftwo}} - -% {}{}{} - -\newcommand*{\ifltxcounter}[1]{% - \ifcsdef{c@#1} - {\expandafter\ifdefcounter\csname c@#1\endcsname} - {\@secondoftwo}} - -% {}{} - -\newcommand{\ifdeflength}[1]{\etb@iflength#1&} -\long\def\etb@iflength#1#2&{% - \ifx\skip#1% - \expandafter\@secondoftwo - \else - \expandafter\etb@iflength@i\meaning#1:% - \fi} -\edef\etb@iflength@i#1:#2\fi{\noexpand\fi - \noexpand\etb@iflength@ii#1\string\skip&} -\edef\etb@iflength@ii{% - \def\noexpand\etb@iflength@ii##1\string\skip##2&} -\etb@iflength@ii{\ifblank{#1}} - -% {}{}{} - -\newcommand*{\ifcslength}[1]{% - \ifcsdef{#1} - {\expandafter\ifdeflength\csname#1\endcsname} - {\@secondoftwo}} - -% {}{} - -\newcommand{\ifdefdimen}[1]{\etb@ifdimen#1&} -\long\def\etb@ifdimen#1#2&{% - \ifx\dimen#1% - \expandafter\@secondoftwo - \else - \expandafter\etb@ifdimen@i\meaning#1:% - \fi} -\edef\etb@ifdimen@i#1:#2\fi{\noexpand\fi - \noexpand\etb@ifdimen@ii#1\string\dimen&} -\edef\etb@ifdimen@ii{% - \def\noexpand\etb@ifdimen@ii##1\string\dimen##2&} -\etb@ifdimen@ii{\ifblank{#1}} - -% {}{}{} - -\newcommand*{\ifcsdimen}[1]{% - \ifcsdef{#1} - {\expandafter\ifdefdimen\csname#1\endcsname} - {\@secondoftwo}} - -% {}{}{}{} - -\newrobustcmd{\ifstrequal}[2]{% - \begingroup - \edef\etb@tempa{\detokenize{#1}}% - \edef\etb@tempb{\detokenize{#2}}% - \ifx\etb@tempa\etb@tempb - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \endgroup} - -% {}{}{} - -\newcommand{\ifstrempty}[1]{% - \expandafter\ifx\expandafter&\detokenize{#1}&% - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {}{}{} - -\newcommand{\ifblank}[1]{% from url.sty - \etb@ifblank@i#1&&\@secondoftwo\@firstoftwo:} -\long\def\etb@ifblank@i#1#2#4#5:{#4} - -\newcommand{\notblank}[1]{% - \etb@ifblank@i#1&&\@firstoftwo\@secondoftwo:} - -% {}{}{}{}{} - -\newcommand*{\ifnumcomp}[3]{% - \ifnum\numexpr#1\relax#2\numexpr#3\relax - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {}{}{}{} - -\newcommand*{\ifnumequal}[1]{% - \ifnumcomp{#1}=} - -\newcommand*{\ifnumgreater}[1]{% - \ifnumcomp{#1}>} - -\newcommand*{\ifnumless}[1]{% - \ifnumcomp{#1}<} - -% {}{}{} - -\newcommand*{\ifnumodd}[1]{% - \ifodd\numexpr#1\relax - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {}{}{}{}{} - -\newcommand*{\ifdimcomp}[3]{% - \ifdim\dimexpr#1\relax#2\dimexpr#3\relax - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {}{}{}{} - -\newcommand*{\ifdimequal}[1]{% - \ifdimcomp{#1}=} - -\newcommand*{\ifdimgreater}[1]{% - \ifdimcomp{#1}>} - -\newcommand*{\ifdimless}[1]{% - \ifdimcomp{#1}<} - -% {}{}{} - -\newcommand{\ifboolexpe}[1]{% - \etb@be@beg\etb@be@bgroup#1(&\etb@be@end} - -\let\etb@be@true\@empty -\def\etb@be@false{-\@ne} - -\def\etb@be@beg{% - \ifnum\numexpr\z@\ifnum\numexpr\z@} - -\def\etb@be@end{% - <\z@ - \expandafter\etb@be@false - \fi - <\z@ - \expandafter\@secondoftwo - \else - \expandafter\@firstoftwo - \fi} - -\long\def\etb@be@bgroup#1(#2&{% - \etb@be@egroup#1)&% - \ifblank{#2} - {} - {\etb@be@beg - \etb@be@bgroup#2&}} - -\long\def\etb@be@egroup#1)#2&{% - \etb@be@and#1and&% - \ifblank{#2} - {} - {\etb@be@end\etb@be@true\etb@be@false - \etb@be@egroup#2&}} - -\long\def\etb@be@and#1and#2&{% - \etb@be@or#1or&% - \ifblank{#2} - {} - {<\z@ - \expandafter\@firstofone - \else - \expandafter\@gobble - \fi - {=\z@\fi\ifnum\numexpr\m@ne}% - \ifnum\numexpr\z@ - \etb@be@and#2&}} - -\long\def\etb@be@or#1or#2&{% - \etb@be@not#1not&% - \ifblank{#2} - {} - {<\z@ - \expandafter\@secondoftwo - \else - \expandafter\@firstoftwo - \fi - {=\z@\fi\ifnum\numexpr\z@ - \ifnum\numexpr\@ne} - {=\z@\fi\ifnum\numexpr\z@ - \ifnum\numexpr\z@}% - \etb@be@or#2&}} - -\long\def\etb@be@not#1not#2&{% - \etb@be@togl#1togl&% - \ifblank{#2} - {} - {>\z@ - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {\unless\ifnum\numexpr\m@ne} - {\unless\ifnum\numexpr\z@}% - \etb@be@not#2&}} - -\long\def\etb@be@togl#1togl#2&{% - \etb@be@bool#1bool&% - \ifblank{#2} - {} - {\etb@be@togl@i#2&}} - -\long\def\etb@be@togl@i#1#2&{% - \ifcsdef{etb@tgl@#1} - {\csname etb@tgl@#1\endcsname\etb@be@true\etb@be@false} - {\etb@be@err{Toggle '#1' undefined}{}}% - \etb@be@togl#2&} - -\long\def\etb@be@bool#1bool#2&{% - \etb@be@test#1test&% - \ifblank{#2} - {} - {\etb@be@bool@i#2&}} - -\long\def\etb@be@bool@i#1#2&{% - \ifcsundef{if#1} - {\etb@be@err{Boolean '#1' undefined}{}} - {\csname if#1\endcsname - \else - \etb@be@false - \fi}% - \etb@be@bool#2&} - -\long\def\etb@be@test#1test#2&{% - \ifblank{#1} - {} - {\etb@be@err{The invalid part is: '\detokenize{#1}'}{}}% - \ifblank{#2} - {} - {\etb@be@test@i#2&}} - -\long\def\etb@be@test@i#1#2&{% - #1\etb@be@true\etb@be@false - \etb@be@test#2&} - -\long\def\etb@be@err#1#2{% - \expandafter\ifnum\the\numexpr - \expandafter\ifnum\the\currentiftype=-3 - \expandafter\thr@@ - \else - \expandafter\currentiftype - \fi - =\thr@@ - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {=\z@\fi - \etb@be@err{#1}{#2\ifnum\numexpr\m@ne}} - {\etb@err@expr{#1}#2}} - -% {}{}{} - -\newrobustcmd{\ifboolexpr}[1]{\etb@boolexpr{#1}} - -\long\def\etb@boolexpr#1{% - \begingroup - \let\etb@br@neg\@firstoftwo - \etb@tempcnta\z@ - \etb@br@beg - \etb@br@bgroup#1(&% - \etb@br@end - \etb@br@eval} - -\def\etb@br@beg{% - \begingroup - \let\etb@br@neg\@firstoftwo - \etb@tempcnta\z@} - -\def\etb@br@end{% - \etb@br@eval\etb@br@true\etb@br@false} - -\def\etb@br@eval{% - \ifnum\etb@tempcnta<\z@ - \aftergroup\@secondoftwo - \else - \aftergroup\@firstoftwo - \fi - \endgroup} - -\def\etb@br@true{% - \advance\etb@tempcnta\etb@br@neg\z@\m@ne - \let\etb@br@neg\@firstoftwo} - -\def\etb@br@false{% - \advance\etb@tempcnta\etb@br@neg\m@ne\z@ - \let\etb@br@neg\@firstoftwo} - -\long\def\etb@br@bgroup#1(#2&{% - \etb@br@egroup#1)&% - \ifblank{#2} - {} - {\etb@br@beg - \etb@br@bgroup#2&}} - -\long\def\etb@br@egroup#1)#2&{% - \etb@br@and#1and&% - \ifblank{#2} - {} - {\etb@br@end - \etb@br@egroup#2&}} - -\long\def\etb@br@and#1and#2&{% - \etb@br@or#1or&% - \ifblank{#2} - {} - {\ifnum\etb@tempcnta<\z@ - \etb@tempcnta\m@ne - \else - \etb@tempcnta\z@ - \fi - \etb@br@and#2&}} - -\long\def\etb@br@or#1or#2&{% - \etb@br@not#1not&% - \ifblank{#2} - {} - {\ifnum\etb@tempcnta<\z@ - \etb@tempcnta\z@ - \else - \etb@tempcnta\@ne - \fi - \etb@br@or#2&}} - -\long\def\etb@br@not#1not#2&{% - \etb@br@togl#1togl&% - \ifblank{#2} - {} - {\let\etb@br@neg\@secondoftwo - \etb@br@not#2&}} - -\long\def\etb@br@togl#1togl#2&{% - \etb@br@bool#1bool&% - \ifblank{#2} - {} - {\etb@br@togl@i#2&}} - -\long\def\etb@br@togl@i#1#2&{% - \ifcsdef{etb@tgl@#1} - {\csname etb@tgl@#1\endcsname\etb@br@true\etb@br@false} - {\etb@err@expr{Toggle '#1' undefined}\etb@br@false}% - \etb@br@togl#2&} - -\long\def\etb@br@bool#1bool#2&{% - \etb@br@test#1test&% - \ifblank{#2} - {} - {\etb@br@bool@i#2&}} - -\long\def\etb@br@bool@i#1#2&{% - \ifcsundef{if#1} - {\etb@err@expr{Boolean '#1' undefined}\etb@br@false} - {\csname if#1\endcsname - \etb@br@true - \else - \etb@br@false - \fi}% - \etb@br@bool#2&} - -\long\def\etb@br@test#1test#2&{% - \ifblank{#1} - {} - {\etb@err@expr{The invalid part is: '\detokenize{#1}'}}% - \ifblank{#2} - {} - {\etb@br@test@i#2&}} - -\long\def\etb@br@test@i#1#2&{% - \ignorespaces#1\etb@br@true\etb@br@false - \etb@br@test#2&} - -\long\def\etb@err@expr#1{% - \etb@error - {Invalid boolean expression} - {#1.}} - -% {}{} - -\newrobustcmd{\whileboolexpr}[2]{% - \etb@boolexpr{#1}{#2\whileboolexpr{#1}{#2}}{}} - -% {}{} - -\newrobustcmd{\unlessboolexpr}[2]{% - \etb@boolexpr{#1}{}{#2\unlessboolexpr{#1}{#2}}} - -% {} - -\newcommand{\expandonce}[1]{% - \unexpanded\expandafter{#1}} - -% {} - -\newcommand*{\csexpandonce}[1]{% - \expandafter\expandonce\csname#1\endcsname} - -% {} - -\newcommand*{\protecting}{} -\def\protecting#{% - \ifx\protect\@typeset@protect - \etb@protecting\@firstofone - \fi - \ifx\protect\@unexpandable@protect - \etb@protecting\etb@unexpandable - \fi - \ifx\protect\noexpand - \etb@protecting\unexpanded - \fi - \ifx\protect\string - \etb@protecting\detokenize - \fi - \relax\@firstofone} - -\def\etb@protecting#1#2\relax\@firstofone{\fi#1} -\long\def\etb@unexpandable#1{\unexpanded{\protecting{#1}}} - -% {} - -\newrobustcmd*{\csdef}[1]{\expandafter\def\csname#1\endcsname} -\newrobustcmd*{\csedef}[1]{\expandafter\edef\csname#1\endcsname} -\newrobustcmd*{\csgdef}[1]{\expandafter\gdef\csname#1\endcsname} -\newrobustcmd*{\csxdef}[1]{\expandafter\xdef\csname#1\endcsname} -\newrobustcmd*{\protected@csedef}{\etb@protected\csedef} -\newrobustcmd*{\protected@csxdef}{\etb@protected\csxdef} - -\def\etb@protected{% - \let\@@protect\protect - \let\protect\@unexpandable@protect - \afterassignment\restore@protect} - -% {}{} - -\newrobustcmd{\cslet}[2]{% - \expandafter\let\csname#1\endcsname#2} - -% {}{} - -\newrobustcmd{\letcs}[2]{% - \ifcsdef{#2} - {\expandafter\let\expandafter#1\csname#2\endcsname} - {\undef#1}} - -% {}{} - -\newrobustcmd*{\csletcs}[2]{% - \ifcsdef{#2} - {\expandafter\let - \csname#1\expandafter\endcsname - \csname#2\endcsname} - {\csundef{#1}}} - -% {} - -\newcommand*{\csuse}[1]{% - \ifcsname#1\endcsname - \csname#1\expandafter\endcsname - \fi} - -% {} - -\newrobustcmd{\undef}[1]{\let#1\etb@undefined} - -% {} - -\newrobustcmd*{\csundef}[1]{\cslet{#1}\etb@undefined} - -% {}{} - -\newrobustcmd{\appto}[2]{% - \ifundef{#1} - {\edef#1{\unexpanded{#2}}} - {\edef#1{\expandonce#1\unexpanded{#2}}}} -\newrobustcmd{\eappto}[2]{% - \ifundef{#1} - {\edef#1{#2}} - {\edef#1{\expandonce#1#2}}} -\newrobustcmd{\gappto}[2]{% - \ifundef{#1} - {\xdef#1{\unexpanded{#2}}} - {\xdef#1{\expandonce#1\unexpanded{#2}}}} -\newrobustcmd{\xappto}[2]{% - \ifundef{#1} - {\xdef#1{#2}} - {\xdef#1{\expandonce#1#2}}} - -\newrobustcmd*{\protected@eappto}{\etb@protected\eappto} -\newrobustcmd*{\protected@xappto}{\etb@protected\xappto} - -% {}{} - -\newrobustcmd{\preto}[2]{% - \ifundef{#1} - {\edef#1{\unexpanded{#2}}} - {\edef#1{\unexpanded{#2}\expandonce#1}}} -\newrobustcmd{\epreto}[2]{% - \ifundef{#1} - {\edef#1{#2}} - {\edef#1{#2\expandonce#1}}} -\newrobustcmd{\gpreto}[2]{% - \ifundef{#1} - {\xdef#1{\unexpanded{#2}}} - {\xdef#1{\unexpanded{#2}\expandonce#1}}} -\newrobustcmd{\xpreto}[2]{% - \ifundef{#1} - {\xdef#1{#2}} - {\xdef#1{#2\expandonce#1}}} - -\newrobustcmd*{\protected@epreto}{\etb@protected\epreto} -\newrobustcmd*{\protected@xpreto}{\etb@protected\xpreto} - -% {}{} - -\newrobustcmd*{\csappto}[1]{\expandafter\appto\csname#1\endcsname} -\newrobustcmd*{\cseappto}[1]{\expandafter\eappto\csname#1\endcsname} -\newrobustcmd*{\csgappto}[1]{\expandafter\gappto\csname#1\endcsname} -\newrobustcmd*{\csxappto}[1]{\expandafter\xappto\csname#1\endcsname} -\newrobustcmd*{\protected@cseappto}{\etb@protected\cseappto} -\newrobustcmd*{\protected@csxappto}{\etb@protected\csxappto} - -% {}{} - -\newrobustcmd*{\cspreto}[1]{\expandafter\preto\csname#1\endcsname} -\newrobustcmd*{\csepreto}[1]{\expandafter\epreto\csname#1\endcsname} -\newrobustcmd*{\csgpreto}[1]{\expandafter\gpreto\csname#1\endcsname} -\newrobustcmd*{\csxpreto}[1]{\expandafter\xpreto\csname#1\endcsname} -\newrobustcmd*{\protected@csepreto}{\etb@protected\csepreto} -\newrobustcmd*{\protected@csxpreto}{\etb@protected\csxpreto} - -% {}{} - -\newrobustcmd*{\numdef}[2]{% - \ifundef#1{\let#1\z@}{}% - \edef#1{\the\numexpr#2}} -\newrobustcmd*{\numgdef}[2]{% - \ifundef#1{\let#1\z@}{}% - \xdef#1{\the\numexpr#2}} - -% {}{} - -\newrobustcmd*{\csnumdef}[1]{% - \expandafter\numdef\csname#1\endcsname} -\newrobustcmd*{\csnumgdef}[1]{% - \expandafter\numgdef\csname#1\endcsname} - -% {}{} - -\newrobustcmd*{\dimdef}[2]{% - \ifundef#1{\let#1\z@}{}% - \edef#1{\the\dimexpr#2}} -\newrobustcmd*{\dimgdef}[2]{% - \ifundef#1{\let#1\z@}{}% - \xdef#1{\the\dimexpr#2}} - -% {}{} - -\newrobustcmd*{\csdimdef}[1]{% - \expandafter\dimdef\csname#1\endcsname} -\newrobustcmd*{\csdimgdef}[1]{% - \expandafter\dimgdef\csname#1\endcsname} - -% {}{} - -\newrobustcmd*{\gluedef}[2]{% - \ifundef#1{\let#1\z@skip}{}% - \edef#1{\the\glueexpr#2}} -\newrobustcmd*{\gluegdef}[2]{% - \ifundef#1{\let#1\z@skip}{}% - \xdef#1{\the\glueexpr#2}} - -% {}{} - -\newrobustcmd*{\csgluedef}[1]{% - \expandafter\gluedef\csname#1\endcsname} -\newrobustcmd*{\csgluegdef}[1]{% - \expandafter\gluegdef\csname#1\endcsname} - -% {}{} - -\newrobustcmd*{\mudef}[2]{% - \ifundef#1{\def#1{0mu}}{}% - \edef#1{\the\muexpr#2}} -\newrobustcmd*{\mugdef}[2]{% - \ifundef#1{\let#1\z@}{}% - \xdef#1{\the\muexpr#2}} - -% {}{} - -\newrobustcmd*{\csmudef}[1]{% - \expandafter\mudef\csname#1\endcsname} -\newrobustcmd*{\csmugdef}[1]{% - \expandafter\mugdef\csname#1\endcsname} - -% {}{} - -\newrobustcmd*{\defcounter}[2]{% - \ifcsundef{c@#1} - {\etb@noglobal\@nocounterr{#1}}% - {\csname c@#1\endcsname\numexpr#2\relax}} - -% {}{} - -\newrobustcmd*{\deflength}[2]{% - \ifundef{#1} - {\etb@noglobal\etb@err@nolen{#1}}% - {#1\glueexpr#2\relax}} - -\protected\def\etb@err@nolen#1{% - \etb@error{Length '\string#1' undefined}\@eha} - -% {} - -\newrobustcmd*{\newbool}[1]{% - \expandafter\@ifdefinable\csname if#1\endcsname{% - \expandafter\newif\csname if#1\endcsname}} - -% {} - -\newrobustcmd*{\providebool}[1]{% - \ifcsundef{if#1} - {\expandafter\newif\csname if#1\endcsname} - {\begingroup - \edef\@tempa{\expandafter\meaning\csname if#1\endcsname}% - \ifx\@tempa\etb@isfalse - \else - \ifx\@tempa\etb@istrue - \else - \etb@error{\@backslashchar if#1 not a boolean}\@eha - \fi - \fi - \endgroup}} - -% {}{|} - -\newrobustcmd*{\setbool}[2]{% - \ifcsundef{if#1} - {\etb@noglobal\etb@err@nobool{#1}} - {\ifcsundef{#1#2} - {\etb@noglobal\etb@err@boolval{#2}} - {\csname#1#2\endcsname}}} - -% {} - -\newrobustcmd*{\booltrue}[1]{% - \ifcsundef{if#1} - {\etb@noglobal\etb@err@nobool{#1}} - {\csname#1true\endcsname}} - -% {} - -\newrobustcmd*{\boolfalse}[1]{% - \ifcsundef{if#1} - {\etb@noglobal\etb@err@nobool{#1}} - {\csname#1false\endcsname}} - -\edef\etb@istrue{\meaning\iftrue} -\edef\etb@isfalse{\meaning\iffalse} -\protected\def\etb@noglobal{\let\relax\relax} - -% {}{} - -\newcommand*{\ifbool}[1]{% - \ifcsundef{if#1} - {\etb@err@nobool{#1}\@gobbletwo} - {\csname if#1\endcsname - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi}} - -% {}{} - -\newcommand*{\notbool}[1]{% - \ifcsundef{if#1} - {\etb@err@nobool{#1}\@gobbletwo} - {\csname if#1\endcsname - \expandafter\@secondoftwo - \else - \expandafter\@firstoftwo - \fi}} - -\protected\def\etb@err@nobool#1{% - \etb@error{Boolean '\@backslashchar if#1' undefined}\@eha} - -\def\etb@err@boolval#1{% - \etb@error - {Invalid boolean value '#1'} - {Valid boolean values are 'true' and 'false'.}} - -% {} - -\newrobustcmd*{\newtoggle}[1]{% - \ifcsdef{etb@tgl@#1} - {\etb@error{Toggle '#1' already defined}\@eha} - {\cslet{etb@tgl@#1}\@secondoftwo}} - -% {} - -\newrobustcmd*{\providetoggle}[1]{% - \ifcsdef{etb@tgl@#1} - {} - {\cslet{etb@tgl@#1}\@secondoftwo}} - -% {}{|} - -\newrobustcmd*{\settoggle}[2]{% - \ifcsdef{etb@tgl@#1} - {\ifcsdef{etb@toggle#2} - {\csletcs{etb@tgl@#1}{etb@toggle#2}} - {\etb@noglobal\etb@err@boolval{#2}}} - {\etb@noglobal\etb@err@notoggle{#1}}} - -% {} - -\newrobustcmd*{\toggletrue}[1]{% - \ifcsdef{etb@tgl@#1} - {\cslet{etb@tgl@#1}\etb@toggletrue} - {\etb@noglobal\etb@err@notoggle{#1}}} - -% {} - -\newrobustcmd*{\togglefalse}[1]{% - \ifcsdef{etb@tgl@#1} - {\cslet{etb@tgl@#1}\etb@togglefalse} - {\etb@noglobal\etb@err@notoggle{#1}}} - -\let\etb@toggletrue\@firstoftwo -\let\etb@togglefalse\@secondoftwo - -% {}{} - -\newcommand*{\iftoggle}[1]{% - \ifcsdef{etb@tgl@#1} - {\csname etb@tgl@#1\endcsname} - {\etb@err@notoggle{#1}\@gobbletwo}} - -% {}{} - -\newcommand*{\nottoggle}[1]{% - \ifcsdef{etb@tgl@#1} - {\csname etb@tgl@#1\endcsname\@secondoftwo\@firstoftwo} - {\etb@err@notoggle{#1}\@gobbletwo}} - -\protected\def\etb@err@notoggle#1{% - \etb@error{Toggle '#1' undefined}\@eha} - -% {}{} - -\protected\def\etb@ifscanable#1{% - \begingroup - \edef\etb@resrvda{% - \def\noexpand\etb@resrvda####1\detokenize{macro}:####2->####3&{% - ####1\def\string\etb@resrvda####2{####3}}% - \edef\noexpand\etb@resrvda{\noexpand\etb@resrvda\meaning#1&}}% - \etb@resrvda - \makeatletter - \scantokens\expandafter{\etb@resrvda}% - \expandafter\endgroup\ifx#1\etb@resrvda - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {}{}{} - -\protected\long\def\etb@ifpattern#1#2{% - \begingroup - \edef\etb@resrvda{% - \def\noexpand\etb@resrvda####1\detokenize{#2}####2&{% - \endgroup\noexpand\noexpand\noexpand\ifblank{####2}}% - \edef\noexpand\etb@resrvda{\noexpand\etb@resrvda - \expandafter\strip@prefix\meaning#1\detokenize{#2}&}% - \noexpand\etb@resrvda} - \etb@resrvda\@secondoftwo\@firstoftwo} - -% {}{} - -\protected\long\def\etb@ifhashcheck#1{% - \begingroup - \edef\etb@resrvda{\detokenize{#1}}% - \expandafter\endgroup - \expandafter\etb@ifhashcheck@i\meaning\etb@resrvda&} - -\edef\etb@ifhashcheck@i#1&{% - \noexpand\expandafter - \noexpand\etb@ifhashcheck@ii - \noexpand\strip@prefix#1\string#\string#&} - -\edef\etb@ifhashcheck@ii{% - \def\noexpand\etb@ifhashcheck@ii##1\string#\string###2&} -\etb@ifhashcheck@ii{\ifblank{#2}} - -% {} - -\newrobustcmd*{\robustify}[1]{% - \ifundef{#1} - {\etb@error{\string#1 undefined}\@eha} - {\ifdefmacro{#1} - {\ifdefltxprotect{#1} - {\letcs\etb@resrvda{\expandafter\@gobble\string#1 }% - \@tempswatrue} - {\let\etb@resrvda#1% - \@tempswafalse}% - \ifdefparam\etb@resrvda - {\etb@ifscanable\etb@resrvda - {\etb@robustify\etb@resrvda - \let#1\etb@resrvda} - {\etb@error{Failed to robustify \string#1} - {The command is special and cannot be - handled by \string\robustify.}% - \@tempswafalse}} - {\protected\edef#1{\expandonce\etb@resrvda}} - \if@tempswa - \ifcsdef{\string#1 } - {} - {\csundef{\expandafter\@gobble\string#1 }}% - \fi - \undef\etb@resrvda} - {\etb@error{\string#1 not a macro}\@eha}}} - -\def\etb@robustify#1{% - \begingroup - \edef\etb@resrvdb{% - \def\noexpand\etb@resrvdb####1\detokenize{macro}:####2->####3&{% - \protected####1\def\string#1\space####2{####3}}% - \edef\noexpand\etb@resrvdb{% - \noexpand\etb@resrvdb\meaning#1&}}% - \etb@resrvdb - \etb@patchcmd@scantoks\etb@resrvdb} - -% {}{}{} -% *{}{} - -\newrobustcmd{\ifpatchable}{% - \etb@dbg@trce\ifpatchable - \begingroup - \@makeother\#% - \@ifstar\etb@ifpatchable@i\etb@ifpatchable} - -\long\def\etb@ifpatchable#1#2{% - \endgroup - \etb@dbg@init#1% - \ifundef{#1} - {\etb@dbg@fail{def}\@secondoftwo} - {\etb@dbg@info{def}% - \ifdefmacro{#1} - {\etb@dbg@info{mac}% - \etb@ifscanable{#1} - {\etb@ifhashcheck{#2} - {\etb@dbg@info{tok}% - \etb@ifpattern#1{#2} - {\etb@dbg@info{pat}% - \etb@dbg@info{pos}\@firstoftwo} - {\etb@dbg@fail{pat}\@secondoftwo}} - {\etb@dbg@fail{hsh}\@secondoftwo}} - {\etb@dbg@fail{tok}\@secondoftwo}} - {\etb@dbg@fail{mac}\@secondoftwo}}} - -\long\def\etb@ifpatchable@i#1{% - \endgroup - \etb@dbg@init#1% - \ifundef{#1} - {\etb@dbg@fail{def}\@secondoftwo} - {\etb@dbg@info{def}% - \ifdefmacro{#1} - {\etb@dbg@info{mac}% - \ifdefparam{#1} - {\etb@dbg@info{prm}% - \etb@ifscanable{#1} - {\etb@dbg@info{tok}% - \etb@dbg@info{pos}\@firstoftwo} - {\etb@dbg@fail{tok}\@secondoftwo}} - {\etb@dbg@info{prl}% - \ifdefprotected{#1} - {\etb@dbg@info{pro}} - {}% - \etb@dbg@info{pos}\@firstoftwo}} - {\etb@dbg@fail{mac}\@secondoftwo}}} - -% []{}{}{}{}{} - -\newrobustcmd*{\patchcmd}{% - \etb@dbg@trce\patchcmd - \begingroup - \@makeother\#% - \etb@patchcmd} - -\newcommand{\etb@patchcmd}[4][########1]{% - \etb@ifpatchable#2{#3} - {\etb@dbg@succ{ret}% - \begingroup - \edef\etb@resrvda{% - \def\noexpand\etb@resrvda####1\detokenize{macro:}####2->####3&{% - #1\def\string\etb@resrvda\space####2{\noexpand\etb@resrvdb####3&}}% - \def\noexpand\etb@resrvdb####1\detokenize{#3}####2&{% - ####1\detokenize{#4}####2}% - \edef\noexpand\etb@resrvda{% - \noexpand\etb@resrvda\meaning#2&}}% - \etb@resrvda - \etb@patchcmd@scantoks\etb@resrvda - \let#2\etb@resrvda - \undef\etb@resrvda - \@firstoftwo} - {\@secondoftwo}} - -\def\etb@patchcmd@scantoks#1{% - \edef\etb@resrvda{\endgroup - \unexpanded{\makeatletter\scantokens}{#1}% - \catcode\number`\@=\the\catcode`\@\relax}% - \etb@resrvda} - -% {}{}{}{} - -\newrobustcmd*{\apptocmd}{% - \etb@dbg@trce\apptocmd - \begingroup - \@makeother\#% - \etb@hooktocmd\etb@append} - -\newrobustcmd*{\pretocmd}{% - \etb@dbg@trce\pretocmd - \begingroup - \@makeother\#% - \etb@hooktocmd\etb@prepend} - -\long\def\etb@hooktocmd#1#2#3{% - \endgroup - \etb@dbg@init#2% - \ifundef{#2} - {\etb@dbg@fail{def}\@secondoftwo} - {\etb@dbg@info{def}% - \ifdefmacro{#2} - {\etb@dbg@info{mac}% - \ifdefparam{#2} - {\etb@dbg@info{prm}% - \etb@ifscanable{#2} - {\etb@ifhashcheck{#3} - {\etb@dbg@info{tok}% - \etb@dbg@succ{ret}% - \etb@hooktocmd@i#1#2{#3}% - \@firstoftwo} - {\etb@dbg@fail{hsh}\@secondoftwo}} - {\etb@dbg@fail{tok}\@secondoftwo}} - {\etb@dbg@info{prl}% - \ifdefprotected{#2} - {\etb@dbg@info{pro}% - \etb@dbg@succ{red}% - \protected} - {\etb@dbg@succ{red}}% - \edef#2{#1{\expandonce#2}{\unexpanded{#3}}}% - \@firstoftwo}} - {\etb@dbg@fail{mac}\@secondoftwo}}} - -\long\def\etb@hooktocmd@i#1#2#3{% - \begingroup - \edef\etb@resrvda{% - \def\noexpand\etb@resrvda####1\detokenize{macro}:####2->####3&{% - ####1\def\string\etb@resrvda\space####2{#1{####3}{\detokenize{#3}}}}% - \edef\noexpand\etb@resrvda{% - \noexpand\etb@resrvda\meaning#2&}}% - \etb@resrvda - \etb@patchcmd@scantoks\etb@resrvda - \let#2\etb@resrvda - \undef\etb@resrvda} - -\long\def\etb@append#1#2{#1#2} -\long\def\etb@prepend#1#2{#2#1} - -\newrobustcmd*{\tracingpatches}{% - \etb@info{Enabling tracing}% - \input{etoolbox.def}% - \global\let\tracingpatches\relax} -\@onlypreamble\tracingpatches - -\let\etb@dbg@trce\@gobble -\let\etb@dbg@init\@gobble -\let\etb@dbg@info\@gobble -\let\etb@dbg@succ\@gobble -\let\etb@dbg@fail\@gobble - -% {} - -\newcommand{\rmntonum}[1]{% - \ifblank{#1} - {} - {\expandafter\etb@rti@end\number\numexpr - \expandafter\etb@rti@prs\detokenize{#1}&\relax}} - -\def\etb@rti@prs#1#2{% - \ifx% - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {#1#2} - {\ifx% - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {\etb@rti@chk#1+\etb@rti@num#1#2} - {\etb@rti@chk#1\etb@rti@chk#2% - \ifnum\etb@rti@num#1<\etb@rti@num#2 % - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {+\etb@rti@num#2-\etb@rti@num#1\etb@rti@prs} - {+\etb@rti@num#1\etb@rti@prs#2}}}} - -\def\etb@rti@chk#1{% - \ifcsname etb@rmn@#1\endcsname - \else - \expandafter\etb@rti@brk - \fi} - -\def\etb@rti@brk#1&{+\z@&-1} -\def\etb@rti@end#1\relax{\ifblank{#2}{#1}{#2}} -\def\etb@rti@num#1{\csname etb@rmn@#1\endcsname} - -\chardef\etb@rmn@i=1 -\chardef\etb@rmn@I=1 -\chardef\etb@rmn@v=5 -\chardef\etb@rmn@V=5 -\chardef\etb@rmn@x=10 -\chardef\etb@rmn@X=10 -\chardef\etb@rmn@l=50 -\chardef\etb@rmn@L=50 -\chardef\etb@rmn@c=100 -\chardef\etb@rmn@C=100 -\mathchardef\etb@rmn@d=500 -\mathchardef\etb@rmn@D=500 -\mathchardef\etb@rmn@m=1000 -\mathchardef\etb@rmn@M=1000 - -% {}{}{} - -\newcommand{\ifrmnum}[1]{% - \ifblank{#1} - {\@secondoftwo} - {\expandafter\etb@ifr@prs\detokenize{#1}\relax}} - -\def\etb@ifr@prs#1{% - \ifx\relax#1% - \expandafter\@firstoftwo - \else - \ifcsname etb@rmn@#1\endcsname - \expandafter\expandafter - \expandafter\etb@ifr@prs - \else - \expandafter\expandafter - \expandafter\etb@ifr@brk - \fi - \fi} - -\def\etb@ifr@brk#1\relax{\@secondoftwo} - -% <*>{}{} - -\newrobustcmd*{\DeclareListParser}{% - \@ifstar - {\etb@defparser\etb@defparser@arg} - {\etb@defparser\etb@defparser@do}} - -\def\etb@defparser#1#2#3{% - \@ifdefinable#2{#1{#2}{#3}}} - -\def\etb@defparser@do#1#2{% - \begingroup - \edef\@tempa{\endgroup - \long\def\noexpand#1####1{% - \expandafter\noexpand - \csname etb@lst@\expandafter\@gobble\string#1\endcsname - \space####1\noexpand#2&}% - \long\csdef{etb@lst@\expandafter\@gobble\string#1}####1\noexpand#2####2&{% - \noexpand\etb@listitem\noexpand\do{####1}% - \noexpand\ifblank{####2} - {\noexpand\listbreak} - {\expandafter\noexpand - \csname etb@lst@\expandafter\@gobble\string#1\endcsname - \space####2}&}}% - \@tempa} - -\def\etb@defparser@arg#1#2{% - \begingroup - \edef\@tempa{\endgroup - \long\def\noexpand#1####1####2{% - \expandafter\noexpand - \csname etb@lst@\expandafter\@gobble\string#1\endcsname - {####1}\space####2\noexpand#2&}% - \long\csdef{etb@lst@\expandafter\@gobble\string#1}####1####2\noexpand#2####3&{% - \noexpand\etb@listitem{####1}{####2}% - \noexpand\ifblank{####3} - {\noexpand\listbreak} - {\expandafter\noexpand - \csname etb@lst@\expandafter\@gobble\string#1\endcsname - {####1}\space####3}&}}% - \@tempa} - -\long\def\etb@listitem#1#2{% - \ifblank{#2} - {} - {\expandafter\etb@listitem@i - \expandafter{\@firstofone#2}{#1}}} -\long\def\etb@listitem@i#1#2{#2{#1}} - -\newcommand*{\listbreak}{} -\long\def\listbreak#1&{} - -% {,,...} => \do{}\do{}... - -\DeclareListParser{\docsvlist}{,} - -% {}{,,...} => {}{}... - -\DeclareListParser*{\forcsvlist}{,} - -% {}{} - -\newrobustcmd{\listadd}[2]{% - \ifblank{#2}{}{\appto#1{#2|}}} -\newrobustcmd{\listeadd}[2]{% - \begingroup - \edef\etb@tempa{\endgroup\noexpand\ifblank{#2}}% - \etb@tempa{}{\eappto#1{#2|}}} -\newrobustcmd{\listgadd}[2]{% - \ifblank{#2}{}{\gappto#1{#2|}}} -\newrobustcmd{\listxadd}[2]{% - \begingroup - \edef\etb@tempa{\endgroup\noexpand\ifblank{#2}}% - \etb@tempa{}{\xappto#1{#2|}}} - -% {}{} - -\newrobustcmd{\listcsadd}[1]{% - \expandafter\listadd\csname#1\endcsname} -\newrobustcmd{\listcseadd}[1]{% - \expandafter\listeadd\csname#1\endcsname} -\newrobustcmd{\listcsgadd}[1]{% - \expandafter\listgadd\csname#1\endcsname} -\newrobustcmd{\listcsxadd}[1]{% - \expandafter\listxadd\csname#1\endcsname} - -% {}{}{}{} - -\newrobustcmd{\ifinlist}[2]{% - \begingroup - \def\etb@tempa##1|#1|##2&{\endgroup - \ifblank{##2}\@secondoftwo\@firstoftwo}% - \expandafter\etb@tempa\expandafter|#2|#1|&} - -\newrobustcmd{\xifinlist}[1]{% - \begingroup - \edef\etb@tempa{\endgroup\ifinlist{#1}}% - \etb@tempa} - -% {}{}{}{} - -\newrobustcmd{\ifinlistcs}[2]{% - \expandafter\etb@ifinlistcs@i\csname #2\endcsname{#1}} -\long\def\etb@ifinlistcs@i#1#2{\ifinlist{#2}{#1}} - -\newrobustcmd{\xifinlistcs}[1]{% - \begingroup - \edef\etb@tempa{\endgroup\ifinlistcs{#1}}% - \etb@tempa} - -% {}{} => {}{}... - -\newcommand*{\forlistloop}[2]{% - \expandafter\etb@forlistloop\expandafter{#2}{#1}} - -\long\def\etb@forlistloop#1#2{\etb@forlistloop@i{#2}#1|&} - -\long\def\etb@forlistloop@i#1#2|#3&{% - \ifblank{#2} - {} - {#1{#2}}% - \ifblank{#3} - {\listbreak} - {\etb@forlistloop@i{#1}#3}% - &} - -% {}{} => {}{}... - -\newcommand*{\forlistcsloop}[2]{% - \expandafter\expandafter\expandafter\etb@forlistloop - \expandafter\expandafter\expandafter{\csname#2\endcsname}{#1}} - -% {} => \do{}\do{}... - -\newcommand*{\dolistloop}{\forlistloop\do} - -% {} => \do{}\do{}... - -\newcommand*{\dolistcsloop}{\forlistcsloop\do} - -% {} - -\newrobustcmd*{\AtEndPreamble}{\gappto\@endpreamblehook} -\newcommand*{\@endpreamblehook}{} - -\preto\document{% - \endgroup - \let\AtEndPreamble\@firstofone - \@endpreamblehook - \protected\def\AtEndPreamble{\@notprerr\@gobble}% - \undef\@endpreamblehook - \begingroup} - -% {} - -\newrobustcmd*{\AfterPreamble}{\AtBeginDocument} -\AtEndPreamble{\let\AfterPreamble\@firstofone} - -% {} - -\newrobustcmd*{\AfterEndPreamble}{\gappto\@afterendpreamblehook} -\newcommand*{\@afterendpreamblehook}{} - -\appto\document{% - \let\AfterEndPreamble\@firstofone - \@afterendpreamblehook - \protected\def\AfterEndPreamble{\@notprerr\@gobble}% - \undef\@afterendpreamblehook - \ignorespaces} - -\AtEndDocument{\let\AfterEndPreamble\@gobble} - -% {} - -\newrobustcmd*{\AfterEndDocument}{\gappto\@afterenddocumenthook} -\newcommand*{\@afterenddocumenthook}{} - -\patchcmd\enddocument - {\deadcycles} - {\let\AfterEndDocument\@firstofone - \@afterenddocumenthook - \deadcycles} - {} - {\let\etb@@end\@@end - \def\@@end{% - \let\AfterEndDocument\@firstofone - \@afterenddocumenthook - \etb@@end}} - -% {}{} - -\newrobustcmd{\AtBeginEnvironment}[1]{% - \csgappto{@begin@#1@hook}} - -\patchcmd\begin - {\csname #1\endcsname} - {\csuse{@begin@#1@hook}% - \csname #1\endcsname} - {} - {\etb@warning{% - Patching '\string\begin' failed!\MessageBreak - '\string\AtBeginEnvironment' will not work\@gobble}} - -% {}{} - -\newrobustcmd{\AtEndEnvironment}[1]{% - \csgappto{@end@#1@hook}} - -\patchcmd\end - {\csname end#1\endcsname} - {\csuse{@end@#1@hook}% - \csname end#1\endcsname} - {} - {\etb@warning{% - Patching '\string\end' failed!\MessageBreak - '\string\AtEndEnvironment' will not work\@gobble}} - -% {}{} - -\newrobustcmd{\BeforeBeginEnvironment}[1]{% - \csgappto{@beforebegin@#1@hook}} - -\pretocmd\begin - {\csuse{@beforebegin@#1@hook}} - {} - {\etb@warning{% - Patching '\string\begin' failed!\MessageBreak - '\string\BeforeBeginEnvironment' will not work\@gobble}} - -% {}{} - -\newrobustcmd{\AfterEndEnvironment}[1]{% - \csgappto{@afterend@#1@hook}} - -\patchcmd\end - {\if@ignore} - {\csuse{@afterend@#1@hook}% - \if@ignore} - {} - {\etb@warning{% - Patching '\string\end' failed!\MessageBreak - '\string\AfterEndEnvironment' will not work\@gobble}} - -\endinput diff --git a/etoolbox/etoolbox.tex b/etoolbox/etoolbox.tex deleted file mode 100644 index 9cd5375..0000000 --- a/etoolbox/etoolbox.tex +++ /dev/null @@ -1,1482 +0,0 @@ -% $Id: etoolbox.tex fea70947ae80 2013/05/29 01:53:47 foley $ -\documentclass{ltxdockit}[2010/09/26] -\usepackage[latin9]{inputenc} -\usepackage[american]{babel} -\usepackage[strict]{csquotes} -\usepackage{shortvrb} -\MakeAutoQuote{«}{»} -\MakeAutoQuote*{<}{>} -\MakeShortVerb{\|} - -\rcsid{$Id: etoolbox.tex fea70947ae80 2013/05/29 01:53:47 foley $} - -\titlepage{% - title={The \sty{etoolbox} Package}, - subtitle={An \etex Toolbox for Class and Package Authors}, - url={http://www.ctan.org/tex-archive/macros/latex/contrib/etoolbox/}, - author={Philipp Lehman}, - email={plehman@gmx.net}, - revision={\rcsrevision}, - date={\rcstoday}} - -\hypersetup{% - pdftitle={The etoolbox Package}, - pdfsubject={An e-TeX Toolbox for Class and Package Authors}, - pdfauthor={Philipp Lehman}, - pdfkeywords={tex, e-tex, latex, class, package, programming}} - -\begin{document} - -\printtitlepage -\tableofcontents - -\section{Introduction} -\label{int} - -\subsection[About]{About \sty{etoolbox}} - -The \sty{etoolbox} package is a toolbox of programming tools geared primarily towards \latex class and package authors. It provides \latex frontends to some of the new primitives provided by \etex as well as some generic tools which are not related to \etex but match the profile of this package. - -\subsection{License} - -Copyright \textcopyright\ 2007--2011 Philipp Lehman. Permission is granted to copy, distribute and\slash or modify this software under the terms of the \lppl, version 1.3.\fnurl{http://www.ctan.org/tex-archive/macros/latex/base/lppl.txt} This package is author"=maintained. - -\section{User Commands} -\label{use} - -The tools in this section are geared towards regular users as well as class and package authors. - -\subsection{Definitions} -\label{use:def} - -\begin{ltxsyntax} - -\cmditem{newrobustcmd}{command}[arguments][optarg default]{replacement text} -\cmditem*{newrobustcmd*}{command}[arguments][optarg default]{replacement text} - -The syntax and behavior of this command is similar to \cmd{newcommand} except that the newly defined \prm{command} will be robust. The behavior of this command differs from the \cmd{DeclareRobustCommand} command from the \latex kernel in that it issues an error rather than just an informational message if the \prm{command} is already defined. Since it uses \etex's low-level protection mechanism rather than the corresponding higher-level \latex facilities, it does not require an additional macro to implement the . - -\cmditem{renewrobustcmd}{command}[arguments][optarg default]{replacement text} -\cmditem*{renewrobustcmd*}{command}[arguments][optarg default]{replacement text} - -The syntax and behavior of this command is similar to \cmd{renewcommand} except that the redefined \prm{command} will be robust. - -\cmditem{providerobustcmd}{command}[arguments][optarg default]{replacement text} -\cmditem*{providerobustcmd*}{command}[arguments][optarg default]{replacement text} - -The syntax and behavior of this command is similar to \cmd{providecommand} except that the newly defined \prm{command} will be robust. Note that this command will provide a robust definition of the \prm{command} only if it is undefined. It will not make an already defined \prm{command} robust. - -\end{ltxsyntax} - -\subsection{Patching} -\label{use:pat} - -\begin{ltxsyntax} - -\cmditem{robustify}{command} - -Redefines a \prm{command} defined with \cmd{newcommand} such that it is robust, without altering its parameters, its prefixes, or its replacement text. If the \prm{command} has been defined with \cmd{DeclareRobustCommand}, this will be detected automatically and \latex's high-level protection mechanism will be replaced by the corresponding low-level \etex feature. - -\end{ltxsyntax} - -\subsection{Protection} -\label{use:pro} - -\begin{ltxsyntax} - -\cmditem{protecting}{code} - -This command applies \latex's protection mechanism, which normally requires prefixing each fragile command with \cmd{protect}, to an entire chunk of arbitrary \prm{code}. Its behavior depends on the current state of \cmd{protect}. Note that the braces around the \prm{code} are mandatory even if it is a single token. - -\end{ltxsyntax} - -\subsection[Lengths and Counters]{Length and Counter Assignments} -\label{use:cal} - -The tools in this section are replacements for \cmd{setcounter} and \cmd{setlength} which support arithmetic expressions. - -\begin{ltxsyntax} - -\cmditem{defcounter}{counter}{integer expression} - -Assigns a value to a \latex \prm{counter} previously initialized with \cmd{newcounter}. This command is similar in concept and syntax to \cmd{setcounter} except for two major differences. 1) The second argument may be an \prm{integer expression} which will be processed with \cmd{numexpr}. The \prm{integer expression} may be any arbitrary code which is valid in this context. The value assigned to the \prm{counter} will be the result of that calculation. 2) In contrast to \cmd{setcounter}, the assignment is local by default but \cmd{defcounter} may be prefixed with \cs{global}. The functional equivalent of \cmd{setcounter} would be \cs{global}\cmd{defcounter}. - -\cmditem{deflength}{length}{glue expression} - -Assigns a value to a \prm{length} register previously initialized with \cmd{newlength}. This command is similar in concept and syntax to \cmd{setlength} except that the second argument may be a \prm{glue expression} which will be processed with \cmd{glueexpr}. The \prm{glue expression} may be any arbitrary code which is valid in this context. The value assigned to the \prm{length} register will be the result of that calculation. The assignment is local by default but \cmd{deflength} may be prefixed with \cs{global}. This command may be used as a drop-in replacement for \cmd{setlength}. - -\end{ltxsyntax} - -\subsection[Document Hooks]{Additional Document Hooks} -\label{use:pre} - -\latex provides two hooks which defer the execution of code either to the beginning or to the end of the document body. Any \cmd{AtBeginDocument} code is executed towards the beginning of the document body, after the main \file{aux} file has been read for the first time. Any \cmd{AtEndDocument} code is executed at the end of the document body, before the main \file{aux} file is read for the second time. The hooks introduced here are similar in concept but defer the execution of their \prm{code} argument to slightly different locations. The \prm{code} may be arbitrary \tex code. Parameter characters in the \prm{code} argument are permissible and need not be doubled. - -\begin{ltxsyntax} - -\cmditem{AfterPreamble}{code} - -This hook is a variant of \cmd{AtBeginDocument} which may be used in both the preamble and the document body. When used in the preamble, it behaves exactely like \cmd{AtBeginDocument}. When used in the document body, it immediately executes its \prm{code} argument. \cmd{AtBeginDocument} would issue an error in this case. This hook is useful to defer code which needs to write to the main \file{aux} file. - -\cmditem{AtEndPreamble}{code} - -This hook differs from \cmd{AtBeginDocument} in that the \prm{code} is executed right at the end of the preamble, before the main \file{aux} file (as written on the previous \latex pass) is read and prior to any \cmd{AtBeginDocument} code. Note that it is not possible to write to the \file{aux} file at this point. - -\cmditem{AfterEndPreamble}{code} - -This hook differs from \cmd{AtBeginDocument} in that the \prm{code} is executed at the very end of |\begin{document}|, after any \cmd{AtBeginDocument} code. Note that commands whose scope has been restricted to the preamble with \cmd{@onlypreamble} are no longer available when this hook is executed. - -\cmditem{AfterEndDocument}{code} - -This hook differs from \cmd{AtEndDocument} in that the \prm{code} is executed at the very end of the document, after the main \file{aux} file (as written on the current \latex pass) has been read and after any \cmd{AtEndDocument} code. - -\end{ltxsyntax} - -In a way, \cmd{AtBeginDocument} code is part neither of the preamble nor the document body but located in-between them since it gets executed in the middle of the initialization sequence performed prior to typesetting. It is sometimes desirable to move code to the end of the preamble because all requested packages have been loaded at this point. \cmd{AtBeginDocument} code, however, is executed too late if it is required in the \file{aux} file. In contrast to that, \cmd{AtEndPreamble} code is part of the preamble; \cmd{AfterEndPreamble} code is part of the document body and may contain printable text to be typeset at the very beginning of the document. To sum that up, \latex will perform the following tasks |\begin{document}|: - -\begin{itemize} -\setlength{\itemsep}{0pt} -\item Execute any \cmd{AtEndPreamble} code -\item Start initialization for document body (page layout, default fonts, etc.) -\item Load the main \file{aux} file written on the previous \latex pass -\item Open the main \file{aux} file for writing on the current pass -\item Continue initialization for document body -\item Execute any \cmd{AtBeginDocument} code -\item Complete initialization for document body -\item Disable all \cmd{@onlypreamble} commands -\item Execute any \cmd{AfterEndPreamble} code -\end{itemize} -% -Inside |\end{document}|, \latex will perform the following tasks: - -\begin{itemize} -\setlength{\itemsep}{0pt} -\item Execute any \cmd{AtEndDocument} code -\item Perform a final \cmd{clearpage} operation -\item Close the main \file{aux} file for writing -\item Load the main \file{aux} file written on the current \latex pass -\item Perform final tests and issue warnings, if applicable -\item Execute any \cmd{AfterEndDocument} code -\end{itemize} -% -Any \cmd{AtEndDocument} code may be considered as being part of the document body insofar as it is still possible to perform typesetting tasks and write to the main \file{aux} file when it gets executed. \cmd{AfterEndDocument} code is not part of the document body. This hook is useful to evaluate the data in the \file{aux} file at the very end of a \latex pass. - -\subsection[Environment Hooks]{Environment Hooks} -\label{use:env} - -The tools in this section provide hooks for arbitrary environments. Note that they will not modify the definition of the \prm{environment}. They hook into the \cmd{begin} and \cmd{end} commands instead. Redefining the \prm{environment} will not clear the corresponding hooks. The \prm{code} may be arbitrary \tex code. Parameter characters in the \prm{code} argument are permissible and need not be doubled. - -\begin{ltxsyntax} - -\cmditem{AtBeginEnvironment}{environment}{code} - -Appends arbitrary \prm{code} to a hook executed by the \cmd{begin} command at the beginning of a given \prm{environment}, immediately before \cmd{\prm{environment}}, inside the group opened by \cmd{begin}. - -\cmditem{AtEndEnvironment}{environment}{code} - -Appends arbitrary \prm{code} to a hook executed by the \cmd{end} command at the end of a given \prm{environment}, immediately before \cmd{end\prm{environment}}, inside the group opened by \cmd{begin}. - -\cmditem{BeforeBeginEnvironment}{environment}{code} - -Appends arbitrary \prm{code} to a hook executed at a very early point by the \cmd{begin} command, before the group holding the environment is opened. - -\cmditem{AfterEndEnvironment}{environment}{code} - -Appends arbitrary \prm{code} to a hook executed at a very late point by the \cmd{end} command, after the group holding the environment has been closed. - -\end{ltxsyntax} - -\section{Author Commands} - -The tools in this section are geared towards class and package authors. - -\subsection{Definitions} - -\subsubsection{Macro Definitions} -\label{aut:def:def} - -The tools in this section are simple but frequently required shorthands which extend the scope of the \cmd{@namedef} and \cmd{@nameuse} macros from the \latex kernel. - -\begin{ltxsyntax} - -\cmditem{csdef}{csname}{replacement text} - -Similar to the \tex primitive \cmd{def} except that it takes a control sequence name as its first argument. This command is robust and corresponds to \cmd{@namedef}. - -\cmditem{csgdef}{csname}{replacement text} - -Similar to the \tex primitive \cmd{gdef} except that it takes a control sequence name as its first argument. This command is robust. - -\cmditem{csedef}{csname}{replacement text} - -Similar to the \tex primitive \cmd{edef} except that it takes a control sequence name as its first argument. This command is robust. - -\cmditem{csxdef}{csname}{replacement text} - -Similar to the \tex primitive \cmd{xdef} except that it takes a control sequence name as its first argument. This command is robust. - -\cmditem{protected@csedef}{csname}{replacement text} - -Similar to \cmd{csedef} except that \latex's protection mechanism is temporarily enabled. To put it in other words: this command is similar to the \latex kernel command \cmd{protected@edef} except that it takes a control sequence name as its first argument. This command is robust. - -\cmditem{protected@csxdef}{csname}{replacement text} - -Similar to \cmd{csxdef} except that \latex's protection mechanism is temporarily enabled. To put it in other words: this command is similar to the \latex kernel command \cmd{protected@xdef} except that it takes a control sequence name as its first argument. This command is robust. - -\cmditem{cslet}{csname}{command} - -Similar to the \tex primitive \cmd{let} except that the first argument is a control sequence name. If \prm{command} is undefined, \prm{csname} will be undefined as well after the assignment. This command is robust and may be prefixed with \cs{global}. - -\cmditem{letcs}{command}{csname} - -Similar to the \tex primitive \cmd{let} except that the second argument is a control sequence name. If \prm{csname} is undefined, the \prm{command} will be undefined as well after the assignment. This command is robust and may be prefixed with \cs{global}. - -\cmditem{csletcs}{csname}{csname} - -Similar to the \tex primitive \cmd{let} except that both arguments are control sequence names. If the second \prm{csname} is undefined, the first \prm{csname} will be undefined as well after the assignment. This command is robust and may be prefixed with \cs{global}. - -\cmditem{csuse}{csname} - -Takes a control sequence name as its argument and forms a control sequence token. This command differs from the \cmd{@nameuse} macro in the \latex kernel in that it expands to an empty string if the control sequence is undefined. - -\cmditem{undef} - -Clears a \prm{command} such that \etex's \cmd{ifdefined} and \cmd{ifcsname} tests will consider it as undefined. This command is robust and may be prefixed with \cs{global}. - -\cmditem{csundef}{csname} - -Similar to \cmd{undef} except that it takes a control sequence name as its argument. This command is robust and may be prefixed with \cs{global}. - -\cmditem{csshow}{csname} - -Similar to the \tex primitive \cmd{show} but takes a control sequence name as its argument. If the control sequence is undefined, this command will not implicitly assign a meaning of \cmd{relax} to it. This command is robust. - -\end{ltxsyntax} - -\subsubsection{Arithmetic Definitions} -\label{aut:def:cal} - -The tools in this section permit calculations using macros rather than length registers and counters. - -\begin{ltxsyntax} - -\cmditem{numdef}{integer expression} - -Similar to \cmd{edef} except that the \prm{integer expression} is processed with \cmd{numexpr}. The \prm{integer expression} may be any arbitrary code which is valid in this context. The replacement text assigned to the \prm{command} will be the result of that calculation. If the \prm{command} is undefined, it will be initialized to \texttt{0} before the \prm{integer expression} is processed. - -\cmditem{numgdef}{integer expression} - -Similar to \cmd{numdef} except that the assignment is global. - -\cmditem{csnumdef}{csname}{integer expression} - -Similar to \cmd{numdef} except that it takes a control sequence name as its first argument. - -\cmditem{csnumgdef}{csname}{integer expression} - -Similar to \cmd{numgdef} except that it takes a control sequence name as its first argument. - -\cmditem{dimdef}{dimen expression} - -Similar to \cmd{edef} except that the \prm{dimen expression} is processed with \cmd{dimexpr}. The \prm{dimen expression} may be any arbitrary code which is valid in this context. The replacement text assigned to the \prm{command} will be the result of that calculation. If the \prm{command} is undefined, it will be initialized to \texttt{0pt} before the \prm{dimen expression} is processed. - -\cmditem{dimgdef}{dimen expression} - -Similar to \cmd{dimdef} except that the assignment is global. - -\cmditem{csdimdef}{csname}{dimen expression} - -Similar to \cmd{dimdef} except that it takes a control sequence name as its first argument. - -\cmditem{csdimgdef}{csname}{dimen expression} - -Similar to \cmd{dimgdef} except that it takes a control sequence name as its first argument. - -\cmditem{gluedef}{glue expression} - -Similar to \cmd{edef} except that the \prm{glue expression} is processed with \cmd{glueexpr}. The \prm{glue expression} may be any arbitrary code which is valid in this context. The replacement text assigned to the \prm{command} will be the result of that calculation. If the \prm{command} is undefined, it will be initialized to \texttt{0pt plus 0pt minus 0pt} before the \prm{glue expression} is processed. - -\cmditem{gluegdef}{glue expression} - -Similar to \cmd{gluedef} except that the assignment is global. - -\cmditem{csgluedef}{csname}{glue expression} - -Similar to \cmd{gluedef} except that it takes a control sequence name as its first argument. - -\cmditem{csgluegdef}{csname}{glue expression} - -Similar to \cmd{gluegdef} except that it takes a control sequence name as its first argument. - -\cmditem{mudef}{muglue expression} - -Similar to \cmd{edef} except that the \prm{muglue expression} is processed with \cmd{muexpr}. The \prm{muglue expression} may be any arbitrary code which is valid in this context. The replacement text assigned to the \prm{command} will be the result of that calculation. If the \prm{command} is undefined, it will be initialized to \texttt{0mu} before the \prm{muglue expression} is processed. - -\cmditem{mugdef}{muglue expression} - -Similar to \cmd{mudef} except that the assignment is global. - -\cmditem{csmudef}{csname}{muglue expression} - -Similar to \cmd{mudef} except that it takes a control sequence name as its first argument. - -\cmditem{csmugdef}{csname}{muglue expression} - -Similar to \cmd{mugdef} except that it takes a control sequence name as its first argument. - -\end{ltxsyntax} - -\subsection{Expansion Control} -\label{aut:exp} - -The tools in this section are useful to control expansion in an \cmd{edef} or a similar context. - -\begin{ltxsyntax} - -\cmditem{expandonce} - -This command expands a \prm{command} once and prevents further expansion of the replacement text. This command is expandable. - -\cmditem{csexpandonce}{csname} - -Similar to \cmd{expandonce} except that it takes a control sequence name as its argument. - -\end{ltxsyntax} - -\subsection{Hook Management} -\label{aut:hok} - -The tools in this section are intended for hook management. A \prm{hook} in this context is a plain macro without any parameters and prefixes which is used to collect code to be executed later. These tools may also be useful to patch simple macros by appending code to their replacement text. For more complex patching operations, see section \ref{aut:pat}. All commands in this section will initialize the \prm{hook} if it is undefined. - -\subsubsection{Appending to a Hook} -\label{aut:hok:app} - -The tools in this section append arbitrary code to a hook. - -\begin{ltxsyntax} - -\cmditem{appto}{code} - -This command appends arbitrary \prm{code} to a \prm{hook}. If the \prm{code} contains any parameter characters, they need not be doubled. This command is robust. - -\cmditem{gappto}{code} - -Similar to \cmd{appto} except that the assignment is global. This command may be used as a drop-in replacement for the \cmd{g@addto@macro} command in the \latex kernel. - -\cmditem{eappto}{code} - -This command appends arbitrary \prm{code} to a \prm{hook}. The \prm{code} is expanded at definition"=time. Only the new \prm{code} is expanded, the current replacement text of the \prm{hook} is not. This command is robust. - -\cmditem{xappto}{code} - -Similar to \cmd{eappto} except that the assignment is global. - -\cmditem{protected@eappto}{code} - -Similar to \cmd{eappto} except that \latex's protection mechanism is temporarily enabled. - -\cmditem{protected@xappto}{code} - -Similar to \cmd{xappto} except that \latex's protection mechanism is temporarily enabled. - -\cmditem{csappto}{csname}{code} - -Similar to \cmd{appto} except that it takes a control sequence name as its first argument. - -\cmditem{csgappto}{csname}{code} - -Similar to \cmd{gappto} except that it takes a control sequence name as its first argument. - -\cmditem{cseappto}{csname}{code} - -Similar to \cmd{eappto} except that it takes a control sequence name as its first argument. - -\cmditem{csxappto}{csname}{code} - -Similar to \cmd{xappto} except that it takes a control sequence name as its first argument. - -\cmditem{protected@cseappto}{code} - -Similar to \cmd{protected@eappto} except that it takes a control sequence name as its first argument. - -\cmditem{protected@csxappto}{code} - -Similar to \cmd{protected@xappto} except that it takes a control sequence name as its first argument. - -\end{ltxsyntax} - -\subsubsection{Prepending to a Hook} -\label{aut:hok:pre} - -The tools in this section arbitrary code to a hook, \ie the code is inserted at the beginning of the hook rather than being added at the end. - -\begin{ltxsyntax} - -\cmditem{preto}{code} - -Similar to \cmd{appto} except that the \prm{code} is prepended. - -\cmditem{gpreto}{code} - -Similar to \cmd{preto} except that the assignment is global. - -\cmditem{epreto}{code} - -Similar to \cmd{eappto} except that the \prm{code} is prepended. - -\cmditem{xpreto}{code} - -Similar to \cmd{epreto} except that the assignment is global. - -\cmditem{protected@epreto}{code} - -Similar to \cmd{epreto} except that \latex's protection mechanism is temporarily enabled. - -\cmditem{protected@xpreto}{code} - -Similar to \cmd{xpreto} except that \latex's protection mechanism is temporarily enabled. - -\cmditem{cspreto}{csname}{code} - -Similar to \cmd{preto} except that it takes a control sequence name as its first argument. - -\cmditem{csgpreto}{csname}{code} - -Similar to \cmd{gpreto} except that it takes a control sequence name as its first argument. - -\cmditem{csepreto}{csname}{code} - -Similar to \cmd{epreto} except that it takes a control sequence name as its first argument. - -\cmditem{csxpreto}{csname}{code} - -Similar to \cmd{xpreto} except that it takes a control sequence name as its first argument. - -\cmditem{protected@csepreto}{code} - -Similar to \cmd{protected@epreto} except that it takes a control sequence name as its first argument. - -\cmditem{protected@csxpreto}{code} - -Similar to \cmd{protected@xpreto} except that it takes a control sequence name as its first argument. - -\end{ltxsyntax} - -\subsection{Patching} -\label{aut:pat} - -The tools in this section are useful to hook into or modify existing code. All commands presented here preserve the parameters and the prefixes of the patched \prm{command}. Note that \cs{outer} commands may not be patched. Also note that the commands in this section will not automatically issue any error messages if patching fails. Instead, they take a \prm{failure} argument which should provide suitable fallback code or an error message. Issuing \cmd{tracingpatches} in the preamble will cause the commands to write debugging information to the transcript file. - -\begin{ltxsyntax} - -\cmditem{patchcmd}[prefix]{command}{search}{replace}{success}{failure} - -This command extracts the replacement text of a \prm{command}, replaces \prm{search} with \prm{replace}, and reassembles the \prm{command}. The pattern match is category code agnostic and matches the first occurence of the \prm{search} pattern in the replacement text of the \prm{command} to be patched. Note that the patching process involves detokenizing the replacement text of the \prm{command} and retokenizing it under the current category code regime after patching. The category code of the @ sign is temporarily set to 11. If the replacement text of the \prm{command} includes any tokens with non"=standard category codes, the respective category codes must be adjusted prior to patching. If the code to be replaced or inserted refers to the parameters of the \prm{command} to be patched, the parameter characters need not be doubled. If an optional \prm{prefix} is specified, it replaces the prefixes of the \prm{command}. An empty \prm{prefix} argument strips all prefixes from the \prm{command}. The assignment is local. This command implicitly performs the equivalent of an \cmd{ifpatchable} test prior to patching. If this test succeeds, the command applies the patch and executes \prm{success}. If the test fails, it executes \prm{failure} without modifying the original \prm{command}. This command is robust. - -\cmditem{ifpatchable}{command}{search}{true}{false} - -This command executes \prm{true} if the \prm{command} may be patched with \cmd{patchcmd} and if the \prm{search} pattern is found in its replacement text, and \prm{false} otherwise. This command is robust. - -\cmditem*{ifpatchable*}{command}{true}{false} - -Similar to \cmd{ifpatchable} except that the starred variant does not require a search pattern. Use this version to check if a command may be patched with \cmd{apptocmd} and \cmd{pretocmd}. - -\cmditem{apptocmd}{command}{code}{success}{failure} - -This command appends \prm{code} to the replacement text of a \prm{command}. If the \prm{command} is a parameterless macro, it behaves like \cmd{appto} from section \ref{aut:hok:app}. In contrast to \cmd{appto}, \cmd{apptocmd} may also be used to patch commands with parameters. In this case, it will detokenize the replacement text of the \prm{command}, apply the patch, and retokenize it under the current category code regime. The category code of the @ sign is temporarily set to 11. The \prm{code} may refer to the parameters of the \prm{command}. The assignment is local. If patching succeeds, this command executes \prm{success}. If patching fails, it executes \prm{failure} without modifying the original \prm{command}. This command is robust. - -\cmditem{pretocmd}{command}{code}{success}{failure} - -This command is similar to \cmd{apptocmd} except that the \prm{code} is inserted at the beginning of the replacement text of the \prm{command}. If the \prm{command} is a parameterless macro, it behaves like \cmd{preto} from section \ref{aut:hok:app}. In contrast to \cmd{preto}, \cmd{pretocmd} may also be used to patch commands with parameters. In this case, it will detokenize the replacement text of the \prm{command}, apply the patch, and retokenize it under the current category code regime. The category code of the @ sign is temporarily set to 11. The \prm{code} may refer to the parameters of the \prm{command}. The assignment is local. If patching succeeds, this command executes \prm{success}. If patching fails, it executes \prm{failure} without modifying the original \prm{command}. This command is robust. - -\csitem{tracingpatches} - -Enables tracing for all patching commands, including \cmd{ifpatchable}. The debugging information will be written to the transcript file. This is useful if the reason why a patch is not applied or \cmd{ifpatchable} yields \prm{false} is not obvious. This command must be issued in the preamble. - -\end{ltxsyntax} - -\subsection{Boolean Flags} -\label{aut:bol} - -This package provides two interfaces to boolean flags which are completely independent of each other. The tools in section \ref{aut:bo1:bol} are a \latex frontend to \cmd{newif}. Those in section \ref{aut:bo1:tgl} use a different mechanism. - -\subsubsection{\tex Flags} -\label{aut:bo1:bol} - -Since the tools in this section are based on \cmd{newif} internally, they may be used to test and alter the state of flags previously defined with \cmd{newif}. They are also compatible with the boolean tests of the \sty{ifthen} package and may serve as a \latex interface for querying \tex primitives such as \cmd{ifmmode}. The \cmd{newif} approach requires a total of three macros per flag. - -\begin{ltxsyntax} - -\cmditem{newbool}{name} - -Defines a new boolean flag called \prm{name}. If the flag has already been defined, this command issues an error. The initial state of newly defined flags is \texttt{false}. This command is robust. - -\cmditem{providebool}{name} - -Defines a new boolean flag called \prm{name} unless it has already been defined. This command is robust. - -\cmditem{booltrue}{name} - -Sets the boolean flag \prm{name} to \texttt{true}. This command is robust and may be prefixed with \cs{global}. It will issue an error if the flag is undefined. - -\cmditem{boolfalse}{name} - -Sets the boolean flag \prm{name} to \texttt{false}. This command is robust and may be prefixed with \cs{global}. It will issue an error if the flag is undefined. - -\cmditem{setbool}{name}{value} - -Sets the boolean flag \prm{name} to \prm{value} which may be either \texttt{true} or \texttt{false}. This command is robust and may be prefixed with \cs{global}. It will issue an error if the flag is undefined. - -\cmditem{ifbool}{name}{true}{false} - -Expands to \prm{true} if the state of the boolean flag \prm{name} is \texttt{true}, and to \prm{false} otherwise. If the flag is undefined, this command issues an error. This command may be used to perform any boolean test based on plain \tex syntax, \ie any test normally employed like this: - -\begin{ltxcode} -<<\iftest>> true<<\else>> false<<\fi>> -\end{ltxcode} - -This includes all flags defined with \cmd{newif} as well as \tex primitives such as \cmd{ifmmode}. The \cmd{if} prefix is omitted when using the flag or the primitive in the expression. For example: - -\begin{ltxcode} -<<\ifmytest>> true\else false\fi -<<\ifmmode>> true\else false\fi -\end{ltxcode} -% -becomes - -\begin{ltxcode} -\ifbool{<>}{true}{false} -\ifbool{<>}{true}{false} -\end{ltxcode} - -\cmditem{notbool}{name}{not true}{not false} - -Similar to \cmd{ifbool} but negates the test. - -\end{ltxsyntax} - -\subsubsection{\latex Flags} -\label{aut:bo1:tgl} - -In contrast to the flags from section \ref{aut:bo1:bol}, the tools in this section require only one macro per flag. They also use a separate namespace to avoid name clashes with regular macros. - -\begin{ltxsyntax} - -\cmditem{newtoggle}{name} - -Defines a new boolean flag called \prm{name}. If the flag has already been defined, this command issues an error. The initial state of newly defined flags is \texttt{false}. This command is robust. - -\cmditem{providetoggle}{name} - -Defines a new boolean flag called \prm{name} unless it has already been defined. This command is robust. - -\cmditem{toggletrue}{name} - -Sets the boolean flag \prm{name} to \texttt{true}. This command is robust and may be prefixed with \cs{global}. It will issue an error if the flag is undefined. - -\cmditem{togglefalse}{name} - -Sets the boolean flag \prm{name} to \texttt{false}. This command is robust and may be prefixed with \cs{global}. It will issue an error if the flag is undefined. - -\cmditem{settoggle}{name}{value} - -Sets the boolean flag \prm{name} to \prm{value} which may be either \texttt{true} or \texttt{false}. This command is robust and may be prefixed with \cs{global}. It will issue an error if the flag is undefined. - -\cmditem{iftoggle}{name}{true}{false} - -Expands to \prm{true} if the state of the boolean flag \prm{name} is \texttt{true}, and to \prm{false} otherwise. If the flag is undefined, this command issues an error. - -\cmditem{nottoggle}{name}{not true}{not false} - -Similar to \cmd{iftoggle} but negates the test. - -\end{ltxsyntax} - -\subsection{Generic Tests} -\label{aut:tst} - -\subsubsection{Macro Tests} -\label{aut:tst:def} - -\begin{ltxsyntax} - -\cmditem{ifdef}{control sequence}{true}{false} - -Expands to \prm{true} if the \prm{control sequence} is defined, and to \prm{false} otherwise. Note that control sequences will be considered as defined even if their meaning is \cmd{relax}. This command is a \latex wrapper for the \etex primitive \cmd{ifdefined}. - -\cmditem{ifcsdef}{csname}{true}{false} - -Similar to \cmd{ifdef} except that it takes a control sequence name as its first argument. This command is a \latex wrapper for the \etex primitive \cmd{ifcsname}. - -\cmditem{ifundef}{control sequence}{true}{false} - -Expands to \prm{true} if the \prm{control sequence} is undefined, and to \prm{false} otherwise. Apart from reversing the logic of the test, this command also differs from \cmd{ifdef} in that commands will be considered as undefined if their meaning is \cmd{relax}. - -\cmditem{ifcsundef}{csname}{true}{false} - -Similar to \cmd{ifundef} except that it takes a control sequence name as its first argument. This command may be used as a drop-in replacement for the \cmd{@ifundefined} test in the \latex kernel. - -\cmditem{ifdefmacro}{control sequence}{true}{false} - -Expands to \prm{true} if the \prm{control sequence} is defined and is a macro, and to \prm{false} otherwise. - -\cmditem{ifcsmacro}{csname}{true}{false} - -Similar to \cmd{ifdefmacro} except that it takes a control sequence name as its first argument. - -\cmditem{ifdefparam}{control sequence}{true}{false} - -Expands to \prm{true} if the \prm{control sequence} is defined and is a macro with one or more parameters, and to \prm{false} otherwise. - -\cmditem{ifcsparam}{csname}{true}{false} - -Similar to \cmd{ifdefparam} except that it takes a control sequence name as its first argument. - -\cmditem{ifdefprefix}{control sequence}{true}{false} - -Expands to \prm{true} if the \prm{control sequence} is defined and is a macro prefixed with \cs{long} and\slash or \cs{protected}, and to \prm{false} otherwise. Note that \cs{outer} macros may not be tested. - -\cmditem{ifcsprefix}{csname}{true}{false} - -Similar to \cmd{ifdefprefix} except that it takes a control sequence name as its first argument. - -\cmditem{ifdefprotected}{control sequence}{true}{false} - -Expands to \prm{true} if the \prm{control sequence} is defined and is a macro prefixed with \cs{protected}, and to \prm{false} otherwise. - -\cmditem{ifcsprotected}{csname}{true}{false} - -Similar to \cmd{ifdefprotected} except that it takes a control sequence name as its first argument. - -\cmditem{ifdefltxprotect}{control sequence}{true}{false} - -Executes \prm{true} if the \prm{control sequence} is defined and is a \latex protection shell, and \prm{false} otherwise. This command is robust. It will detect commands which have been defined with \cmd{DeclareRobustCommand} or by way of a similar technique. - -\cmditem{ifcsltxprotect}{csname}{true}{false} - -Similar to \cmd{ifdefltxprotect} except that it takes a control sequence name as its first argument. - -\cmditem{ifdefempty}{control sequence}{true}{false} - -Expands to \prm{true} if the \prm{control sequence} is defined and is a parameterless macro whose replacement text is empty, and to \prm{false} otherwise. In contrast to \cmd{ifx}, this test ignores the prefixes of the \prm{command}. - -\cmditem{ifcsempty}{csname}{true}{false} - -Similar to \cmd{ifdefempty} except that it takes a control sequence name as its first argument. - -\cmditem{ifdefvoid}{control sequence}{true}{false} - -Expands to \prm{true} if the \prm{control sequence} is undefined, if is a macro whose meaning is \cmd{relax}, or a parameterless macro whose replacement text is empty, and to \prm{false} otherwise. - -\cmditem{ifcsvoid}{csname}{true}{false} - -Similar to \cmd{ifdefvoid} except that it takes a control sequence name as its first argument. - -\cmditem{ifdefequal}{control sequence}{control sequence}{true}{false} - -Compares two control sequences and expands to \prm{true} if they are equal in the sense of \cmd{ifx}, and to \prm{false} otherwise. In contrast to \cmd{ifx}, this test will also yield \prm{false} if both control sequences are undefined or have a meaning of \cmd{relax}. - -\cmditem{ifcsequal}{csname}{csname}{true}{false} - -Similar to \cmd{ifdefequal} except that it takes control sequence names as arguments. - -\cmditem{ifdefstring}{command}{string}{true}{false} - -Compares the replacement text of a \prm{command} to a \prm{string} and executes \prm{true} if they are equal, and \prm{false} otherwise. Neither the \prm{command} nor the \prm{string} is expanded in the test and the comparison is category code agnostic. Control sequence tokens in the \prm{string} argument will be detokenized and treated as strings. This command is robust. Note that it will only consider the replacement text of the \prm{command}. For example, this test - -\begin{ltxcode} -\long\edef\mymacro#1#2{\string&} -\ifdefstring{\mymacro}{&}{true}{false} -\end{ltxcode} -% -would yield \prm{true}. The prefix and the parameters of \cmd{mymacro} as well as the category codes in the replacement text are ignored. - -\cmditem{ifcsstring}{csname}{string}{true}{false} - -Similar to \cmd{ifdefstring} except that it takes a control sequence name as its first argument. - -\cmditem{ifdefstrequal}{command}{command}{true}{false} - -Performs a category code agnostic string comparison of the replacement text of two commands. This command is similar to \cmd{ifdefstring} except that both arguments to be compared are macros. This command is robust. - -\cmditem{ifcsstrequal}{csname}{csname}{true}{false} - -Similar to \cmd{ifdefstrequal} except that it takes control sequence names as arguments. - -\end{ltxsyntax} - -\subsubsection{Counter and Length Tests} -\label{aut:tst:cnt} - -\begin{ltxsyntax} - -\cmditem{ifdefcounter}{control sequence}{true}{false} - -Expands to \prm{true} if the \prm{control sequence} is a \tex \cmd{count} register allocated with \cmd{newcount}, and to \prm{false} otherwise. - -\cmditem{ifcscounter}{csname}{true}{false} - -Similar to \cmd{ifdefcounter} except that it takes a control sequence name as its first argument. - -\cmditem{ifltxcounter}{name}{true}{false} - -Expands to \prm{true} if \prm{name} is a \latex counter allocated with \cmd{newcounter}, and to \prm{false} otherwise. - -\cmditem{ifdeflength}{control sequence}{true}{false} - -Expands to \prm{true} if the \prm{control sequence} is a \tex \cmd{skip} register allocated with \cmd{newskip} or \cmd{newlength}, and to \prm{false} otherwise. - -\cmditem{ifcslength}{csname}{true}{false} - -Similar to \cmd{ifdeflength} except that it takes a control sequence name as its first argument. - -\cmditem{ifdefdimen}{control sequence}{true}{false} - -Expands to \prm{true} if the \prm{control sequence} is a \tex \cmd{dimen} register allocated with \cmd{newdimen}, and to \prm{false} otherwise. - -\cmditem{ifcsdimen}{csname}{true}{false} - -Similar to \cmd{ifdefdimen} except that it takes a control sequence name as its first argument. - -\end{ltxsyntax} - -\subsubsection{String Tests} -\label{aut:tst:str} - -\begin{ltxsyntax} - -\cmditem{ifstrequal}{string}{string}{true}{false} - -Compares two strings and executes \prm{true} if they are equal, and \prm{false} otherwise. The strings are not expanded in the test and the comparison is category code agnostic. Control sequence tokens in any of the \prm{string} arguments will be detokenized and treated as strings. This command is robust. - -\cmditem{ifstrempty}{string}{true}{false} - -Expands to \prm{true} if the \prm{string} is empty, and to \prm{false} otherwise. The \prm{string} is not expanded in the test. - -\cmditem{ifblank}{string}{true}{false} - -Expands to \prm{true} if the \prm{string} is blank (empty or spaces), and to \prm{false} otherwise. The \prm{string} is not expanded in the test.\footnote{This macro is based on code by Donald Arseneau.} - -\cmditem{notblank}{string}{not true}{not false} - -Similar to \cmd{ifblank} but negates the test. - -\end{ltxsyntax} - -\subsubsection{Arithmetic Tests} -\label{aut:tst:num} - -\begin{ltxsyntax} - -\cmditem{ifnumcomp}{integer expression}{relation}{integer expression}{true}{false} - -Compares two integer expressions according to \prm{relation} and expands to \prm{true} or \prm{false} depending on the result. The \prm{relation} may be |<|, |>|, or |=|. Both integer expressions will be processed with \cmd{numexpr}. An \prm{integer expression} may be any arbitrary code which is valid in this context. All arithmetic expressions may contain spaces. Here are some examples: - -\begin{ltxcode} -\ifnumcomp{<<3>>}{<<>>>}{<<6>>}{true}{<>} -\ifnumcomp{<<(7 + 5) / 2>>}{<<=>>}{<<6>>}{<>}{false} -\ifnumcomp{<<(7+5) / 4>>}{<<>>>}{<<3*(12-10)>>}{true}{<>} -\newcounter{countA} -\setcounter{countA}{<<6>>} -\newcounter{countB} -\setcounter{countB}{<<5>>} -\ifnumcomp{<<\value{countA} * \value{countB}/2}>>{<<=>>}{<<15>>}{<>}{false} -\ifnumcomp{<<6/2>>}{<<=>>}{<<5/2>>}{<>}{false} -\end{ltxcode} -% -Technically, this command is a \latex wrapper for the \tex primitive \cmd{ifnum}, incorporating \cmd{numexpr}. Note that \cmd{numexpr} will round the result of all integer expressions, \ie both expressions will be processed and rounded prior to being compared. In the last line of the above examples, the result of the second expression is 2.5, which is rounded to 3, hence \cmd{ifnumcomp} will expand to \prm{true}. - -\cmditem{ifnumequal}{integer expression}{integer expression}{true}{false} - -Alternative syntax for |\ifnumcomp{...}{=}{...}{...}{...}|. - -\cmditem{ifnumgreater}{integer expression}{integer expression}{true}{false} - -Alternative syntax for |\ifnumcomp{...}{>}{...}{...}{...}|. - -\cmditem{ifnumless}{integer expression}{integer expression}{true}{false} - -Alternative syntax for |\ifnumcomp{...}{<}{...}{...}{...}|. - -\cmditem{ifnumodd}{integer expression}{true}{false} - -Evaluates an integer expression and expands to \prm{true} if the result is an odd number, and to \prm{false} otherwise. Technically, this command is a \latex wrapper for the \tex primitive \cmd{ifodd}, incorporating \cmd{numexpr}. - -\cmditem{ifdimcomp}{dimen expression}{relation}{dimen expression}{true}{false} - -Compares two dimen expressions according to \prm{relation} and expands to \prm{true} or \prm{false} depending on the result. The \prm{relation} may be |<|, |>|, or |=|. Both dimen expressions will be processed with \cmd{dimexpr}. A \prm{dimen expression} may be any arbitrary code which is valid in this context. All arithmetic expressions may contain spaces. Here are some examples: - -\begin{ltxcode} -\ifdimcomp{<<1cm>>}{<<=>>}{<<28.45274pt>>}{<>}{false} -\ifdimcomp{<<(7pt + 5pt) / 2>>}{<<<>>}{2pt}{true}{<>} -\ifdimcomp{<<(3.725pt + 0.025pt) * 2>>}{<<<>>}{<<7pt>>}{true}{<>} -\newlength{\lengthA} -\setlength{\lengthA}{<<7.25pt>>} -\newlength{\lengthB} -\setlength{\lengthB}{<<4.75pt>>} -\ifdimcomp{<<(\lengthA + \lengthB) / 2>>}{<<>>>}{<<2.75pt * 2>>}{<>}{false} -\ifdimcomp{<<(\lengthA + \lengthB) / 2>>}{<<>>>}{<<25pt / 6>>}{<>}{false} -\end{ltxcode} -% -Technically, this command is a \latex wrapper for the \tex primitive \cmd{ifdim}, incorporating \cmd{dimexpr}. Since both \cmd{ifdimcomp} and \cmd{ifnumcomp} are expandable, they may also be nested: - -\begin{ltxcode} -<<\ifnumcomp>>{<<\ifdimcomp>>{<<5pt+5pt>>}{<<=>>}{<<10pt>>}{<<1>>}{<<0>>}}{<<>>>}{<<0>>}{<>}{false} -\end{ltxcode} - -\cmditem{ifdimequal}{dimen expression}{dimen expression}{true}{false} - -Alternative syntax for |\ifdimcomp{...}{=}{...}{...}{...}|. - -\cmditem{ifdimgreater}{dimen expression}{dimen expression}{true}{false} - -Alternative syntax for |\ifdimcomp{...}{>}{...}{...}{...}|. - -\cmditem{ifdimless}{dimen expression}{dimen expression}{true}{false} - -Alternative syntax for |\ifdimcomp{...}{<}{...}{...}{...}|. - -\end{ltxsyntax} - -\subsubsection{Boolean Expressions} -\label{aut:tst:bol} - -The commands in this section are replacements for the \cmd{ifthenelse} command provided by the \sty{ifthen} package. They serve the same purpose but differ in syntax, concept, and implementation. In contrast to \cmd{ifthenelse}, they do not provide any tests of their own but serve as a frontend to other tests. Any test which satisfies certain syntactical requirements may be used in a boolean expression. - -\begin{ltxsyntax} - -\cmditem{ifboolexpr}{expression}{true}{false} - -Evaluates the \prm{expression} and executes \prm{true} if it is true, and \prm{false} otherwise. The \prm{expression} is evaluated sequentially from left to right. The following elements, discussed in more detail below, are available in the \prm{expression}: the test operators \texttt{togl}, \texttt{bool}, \texttt{test}; the logical operators \texttt{not}, \texttt{and}, \texttt{or}; and the subexpression delimiter \texttt{(...)}. Spaces, tabs, and line endings may be used freely to arrange the \prm{expression} visually. Blank lines are not permissible in the \prm{expression}. This command is robust. - -\cmditem{ifboolexpe}{expression}{true}{false} - -An expandable version of \cmd{ifboolexpr} which may be processed in an expansion-only context, \eg in an \cmd{edef} or in a \cmd{write} operation. Note that all tests used in the \prm{expression} must be expandable, even if \cmd{ifboolexpe} is not located in an expansion-only context. - -\cmditem{whileboolexpr}{expression}{code} - -Evaluates the \prm{expression} like \cmd{ifboolexpr} and repeatedly executes the \prm{code} while the expression is true. The \prm{code} may be any valid \tex or \latex code. This command is robust. - -\cmditem{unlessboolexpr}{expression}{code} - -Similar to \cmd{whileboolexpr} but negates the \prm{expression}, \ie it keeps executing the \prm{code} repeatedly unless the expression is true. This command is robust. - -\end{ltxsyntax} -% -The following test operators are available in the \prm{expression}: - -\begin{marglist} -\appto\marglistfont{\verbatimfont} - -\item[togl] - -Use the \texttt{togl} operator to test the state of a flag defined with \cmd{newtoggle}. For example: - -\begin{ltxcode} -<<\iftoggle{mytoggle}>>{true}{false} -\end{ltxcode} -% -becomes - -\begin{ltxcode} -\ifboolexpr{ <> {<>} }{true}{false} -\end{ltxcode} -% -The \texttt{togl} operator may be used with both \cmd{ifboolexpr} and \cmd{ifboolexpe}. - -\item[bool] - -Use the \texttt{bool} operator to perform a boolean test based on plain \tex syntax, \ie any test normally employed like this: - -\begin{ltxcode} -<<\iftest>> true<<\else>> false<<\fi>> -\end{ltxcode} -% -This includes all flags defined with \cmd{newif} as well as \tex primitives such as \cmd{ifmmode}. The \cmd{if} prefix is omitted when using the flag or the primitive in the expression. For example: - -\begin{ltxcode} -<<\ifmmode>> true\else false\fi -<<\ifmytest>> true\else false\fi -\end{ltxcode} -% -becomes - -\begin{ltxcode} -\ifboolexpr{ <> {<>} }{true}{false} -\ifboolexpr{ <> {<>} }{true}{false} -\end{ltxcode} -% -This also works with flags defined with \cmd{newbool} (see \secref{aut:bo1:bol}). In this case - -\begin{ltxcode} -<<\ifbool{mybool}>>{true}{false} -\end{ltxcode} -% -becomes - -\begin{ltxcode} -\ifboolexpr{ <> {<>} }{true}{false} -\end{ltxcode} -% -The \texttt{bool} operator may be used with both \cmd{ifboolexpr} and \cmd{ifboolexpe}. - -\item[test] - -Use the \texttt{test} operator to perform a test based on \latex syntax, \ie any test normally employed like this: - -\begin{ltxcode} -<<\iftest>>{<>}{<>} -\end{ltxcode} -% -This applies to all macros based on \latex syntax, \ie the macro must take a \prm{true} and a \prm{false} argument and these must be the final arguments. For example: - -\begin{ltxcode} -<<\ifdef>>{\somemacro}<<{true}{false}>> -<<\ifdimless>>{\textwidth}{365pt}<<{true}{false}>> -<<\ifnumcomp>>{\value{somecounter}}{>}{3}<<{true}{false}>> -\end{ltxcode} - -When using such tests in the \prm{expression}, their \prm{true} and \prm{false} arguments are omitted. For example: - -\begin{ltxcode} -<<\ifcsdef{mymacro}>>{true}{false} -\end{ltxcode} -% -becomes - -\begin{ltxcode} -\ifboolexpr{ <> {<<\ifcsdef{mymacro}>>} }{true}{false} -\end{ltxcode} -% -and - -\begin{ltxcode} -<<\ifnumcomp{\value{mycounter}}{>}{3}>>{true}{false} -\end{ltxcode} -% -becomes - -\begin{ltxcode} -\ifboolexpr{ - <> {<<\ifnumcomp{\value{mycounter}}{>}{3}>>} -} -{true} -{false} -\end{ltxcode} -% -The \texttt{test} operator may be used with \cmd{ifboolexpr} without any restrictions. It may also be used with \cmd{ifboolexpe}, provided that the test is expandable. Some of the generic tests in \secref{aut:tst} are robust and may not be used with \cmd{ifboolexpe}, even if \cmd{ifboolexpe} is not located in an expansion-only context. Use \cmd{ifboolexpr} instead if the test is not expandable. - -\end{marglist} - -Since \cmd{ifboolexpr} and \cmd{ifboolexpe} imply processing overhead, there is generally no benefit in employing them for a single test. The stand-alone tests in \secref{aut:tst} are more efficient than \texttt{test}, \cmd{ifbool} from \secref{aut:bo1:bol} is more efficient than \texttt{bool}, and \cmd{iftoggle} from \secref{aut:bo1:tgl} is more efficient than \texttt{togl}. The point of \cmd{ifboolexpr} and \cmd{ifboolexpe} is that they support logical operators and subexpressions. The following logical operators are available in the \prm{expression}: - -\begin{marglist} -\appto\marglistfont{\verbatimfont} - -\item[not] - -The \texttt{not} operator negates the truth value of the immediately following element. You may prefix \texttt{togl}, \texttt{bool}, \texttt{test}, and subexpressions with \texttt{not}. For example: - -\begin{ltxcode} -\ifboolexpr{ - <> bool {mybool} -} -{true} -{false} -\end{ltxcode} -% -will yield \prm{true} if \texttt{mybool} is false and \prm{false} if \texttt{mybool} is true, and - -\begin{ltxcode} -\ifboolexpr{ - <> bool {boolA} or bool {boolB} <<)>> -} -{true} -{false} -\end{ltxcode} -% -will yield \prm{true} if both \texttt{boolA} and \texttt{boolB} are false. - -\item[and] - -The \texttt{and} operator expresses a conjunction (both \emph{a} and \emph{b}). The \prm{expression} is true if all elements joined with \texttt{and} are true. For example: - -\begin{ltxcode} -\ifboolexpr{ - bool {boolA} <> bool {boolB} -} -{true} -{false} -\end{ltxcode} -% -will yield \prm{true} if both \texttt{bool} tests are true. The \texttt{nand} operator (negated \texttt{and}, \ie not both) is not provided as such but may be expressed by using \texttt{and} in a negated subexpression. For example: - -\begin{ltxcode} -bool {boolA} <> bool {boolB} -\end{ltxcode} -% -may be written as - -\begin{ltxcode} -<> <<(>> bool {boolA} <> bool {boolB} <<)>> -\end{ltxcode} - -\item[or] - -The \texttt{or} operator expresses a non-exclusive disjunction (either \emph{a} or \emph{b} or both). The \prm{expression} is true if at least one of the elements joined with \texttt{or} is true. For example: - -\begin{ltxcode} -\ifboolexpr{ - togl {toglA} <> togl {toglB} -} -{true} -{false} -\end{ltxcode} -% -will yield \prm{true} if either \texttt{togl} test or both tests are true. The \texttt{nor} operator (negated non-exclusive disjunction, \ie neither \emph{a} nor \emph{b} nor both) is not provided as such but may be expressed by using \texttt{or} in a negated subexpression. For example: - -\begin{ltxcode} -bool {boolA} <> bool {boolB} -\end{ltxcode} -% -may be written as - -\begin{ltxcode} -<> <<(>> bool {boolA} <> bool {boolB} <<)>> -\end{ltxcode} - -\item[(...)] - -The parentheses delimit a subexpression in the \prm{expression}. The subexpression is evaluated and the result of this evaluation is treated as a single truth value in the enclosing expression. Subexpressions may be nested. For example, the expression: - -\begin{ltxcode} - <<(>> bool {boolA} or bool {boolB} <<)>> - and - <<(>> bool {boolC} or bool {boolD} <<)>> -\end{ltxcode} -% -is true if both subexpressions are true, \ie if at least one of \texttt{boolA}/\texttt{boolB} and at least one of \texttt{boolC}/\texttt{boolD} is true. Subexpressions are generally not required if all elements are joined with \texttt{and} or with \texttt{or}. For example, the expressions - -\begin{ltxcode} -bool {boolA} <> bool {boolB} <> {boolC} <> bool {boolD} -bool {boolA} <> bool {boolB} <> {boolC} <> bool {boolD} -\end{ltxcode} -% -will yield the expected results: the first one is true if all elements are true; the second one is true if at least one element is true. However, when combining \texttt{and} and \texttt{or}, it is advisable to always group the elements in subexpressions in order to avoid potential misconceptions which may arise from differences between the semantics of formal boolean expressions and the semantics of natural languages. For example, the following expression - -\begin{ltxcode} -bool {<>} <> bool {<>} <> bool {<>} -\end{ltxcode} -% -is always true if \texttt{sugar} is true since the \texttt{or} operator will take the result of the \texttt{and} evaluation as input. In contrast to the meaning of this expression when pronounced in English, it is not processed like this - -\begin{ltxcode} -bool {<>} <> <<(>> bool {<>} <> bool {<>} <<)>> -\end{ltxcode} -% -but evaluated strictly from left to right: - -\begin{ltxcode} -<<(>> bool {<>} <> bool {<>} <<)>> <> bool {<>} -\end{ltxcode} -% -which is probably not what you meant to order. - -\end{marglist} - -\subsection{List Processing} -\label{aut:lst} - -\subsubsection{User Input} -\label{aut:lst:inp} - -The tools in this section are primarily designed to handle user input. When building lists for internal use by a package, using the tools in section \ref{aut:lst:int} may be preferable as they allow testing if an element is in a list. - -\begin{ltxsyntax} - -\cmditem{DeclareListParser}{command}{separator} - -This command defines a list parser similar to the \cmd{docsvlist} command below, which is defined like this: - -\begin{ltxcode} -\DeclareListParser{\docsvlist}{,} -\end{ltxcode} -% -Note that the list parsers are sensitive to the category code of the \prm{separator}. - -\cmditem*{DeclareListParser*}{command}{separator} - -The starred variant of \cmd{DeclareListParser} defines a list parser similar to the \cmd{forcsvlist} command below, which is defined like this: - -\begin{ltxcode} -\DeclareListParser*{\forcsvlist}{,} -\end{ltxcode} - -\cmditem{docsvlist}{item, item, ...} - -This command loops over a comma"=separated list of items and executes the auxiliary command \cmd{do} for every item in the list, passing the item as an argument. In contrast to the \cmd{@for} loop in the \latex kernel, \cmd{docsvlist} is expandable. With a suitable definition of \cmd{do}, lists may be processed in an \cmd{edef} or a comparable context. You may use \cmd{listbreak} at the end of the replacement text of \cmd{do} to stop processing and discard the remaining items in the list. Whitespace after list separators is ignored. If an item contains a comma or starts with a space, it must be wrapped in curly braces. The braces will be removed as the list is processed. Here is a usage example which prints a comma"=separated list as an \env{itemize} environment: - -\begin{ltxcode} -\begin{itemize} -\renewcommand*{\do}[1]{\item #1} -\docsvlist{item1, item2, {item3a, item3b}, item4} -\end{itemize} -\end{ltxcode} -% -Here is another example: - -\begin{ltxcode} -\renewcommand*{\do}[1]{* #1\MessageBreak} -\PackageInfo{mypackage}{% - Example list:\MessageBreak - \docsvlist{item1, item2, {item3a, item3b}, item4}} -\end{ltxcode} -% -In this example, the list is written to the log file as part of an informational message. The list processing takes place during the \cmd{write} operation. - -\cmditem{forcsvlist}{handler}{item, item, ...} - -This command is similar to \cmd{docsvlist} except that \cmd{do} is replaced by a \prm{handler} specified at invocation time. The \prm{handler} may also be a sequence of commands, provided that the command given last takes the item as trailing argument. For example, the following code will convert a comma"=separated list of items into an internal list called \cmd{mylist}: - -\begin{ltxcode} -\forcsvlist{\listadd\mylist}{item1, item2, item3} -\end{ltxcode} - -\end{ltxsyntax} - -\subsubsection{Internal Lists} -\label{aut:lst:int} - -The tools in this section handle internal lists of data. An in this context is a plain macro without any parameters and prefixes which is employed to collect data. These lists use a special character as internal list separator.\footnote{The character \texttt{\string|} with category code 3. Note that you may not typeset a list by saying \cmd{listname}. Use \cmd{show} instead to inspect the list.} When processing user input in list format, see the tools in section \ref{aut:lst:inp}. - -\begin{ltxsyntax} - -\cmditem{listadd}{listmacro}{item} - -This command appends an \prm{item} to a \prm{listmacro}. A blank \prm{item} is not added to the list. - -\cmditem{listgadd}{listmacro}{item} - -Similar to \cmd{listadd} except that the assignment is global. - -\cmditem{listeadd}{listmacro}{item} - -Similar to \cmd{listadd} except that the \prm{item} is expanded at definition"=time. Only the new \prm{item} is expanded, the \prm{listmacro} is not. If the expanded \prm{item} is blank, it is not added to the list. - -\cmditem{listxadd}{listmacro}{item} - -Similar to \cmd{listeadd} except that the assignment is global. - -\cmditem{listcsadd}{listcsname}{item} - -Similar to \cmd{listadd} except that it takes a control sequence name as its first argument. - -\cmditem{listcsgadd}{listcsname}{item} - -Similar to \cmd{listcsadd} except that the assignment is global. - -\cmditem{listcseadd}{listcsname}{item} - -Similar to \cmd{listeadd} except that it takes a control sequence name as its first argument. - -\cmditem{listcsxadd}{listcsname}{item} - -Similar to \cmd{listcseadd} except that the assignment is global. - -\cmditem{dolistloop}{listmacro} - -This command loops over all items in a \prm{listmacro} and executes the auxiliary command \cmd{do} for every item in the list, passing the item as an argument. The list loop itself is expandable. You may use \cmd{listbreak} at the end of the replacement text of \cmd{do} to stop processing and discard the remaining items in the list. Here is a usage example which prints an internal list called \cmd{mylist} as an \env{itemize} environment: - -\begin{ltxcode} -\begin{itemize} -\renewcommand*{\do}[1]{\item #1} -\dolistloop{\mylist} -\end{itemize} -\end{ltxcode} - -\cmditem{dolistcsloop}{listcsname} - -Similar to \cmd{dolistloop} except that it takes a control sequence name as its argument. - -\cmditem{forlistloop}{handler}{listmacro} - -This command is similar to \cmd{dolistloop} except that \cmd{do} is replaced by a \prm{handler} specified at invocation time. The \prm{handler} may also be a sequence of commands, provided that the command given last takes the item as trailing argument. For example, the following code will prefix all items in the internal list \cmd{mylist} with \cmd{item}, count the items as the list is processed, and append the item count at the end: - -\begin{ltxcode} -\newcounter{itemcount} -\begin{itemize} -\forlistloop{\stepcounter{itemcount}\item}{\mylist} -\item Total: \number\value{itemcount} items -\end{itemize} -\end{ltxcode} - -\cmditem{forlistcsloop}{handler}{listcsname} - -Similar to \cmd{forlistloop} except that it takes a control sequence name as its second argument. - -\cmditem{ifinlist}{item}{listmacro}{true}{false} - -This command executes \prm{true} if the \prm{item} is included in a \prm{listmacro}, and \prm{false} otherwise. Note that this test uses pattern matching based on \tex's argument scanner to check if the search string is included in the list. This means that it is usually faster than looping over all items in the list, but it also implies that the items must not include curly braces which would effectively hide them from the scanner. In other words, this macro is most useful when dealing with lists of plain strings rather than printable data. When dealing with printable text, it is safer to use \cmd{dolistloop} to check if an item is in the list as follows: - -\begin{ltxcode} -\renewcommand*{\do}[1]{% - \ifstrequal{#1}{<>} - {item found!\listbreak} - {}} -\dolistloop{\mylist} -\end{ltxcode} - -\cmditem{xifinlist}{item}{listmacro}{true}{false} - -Similar to \cmd{ifinlist} except that the \prm{item} is expanded prior to the test. - -\cmditem{ifinlistcs}{item}{listcsname}{true}{false} - -Similar to \cmd{ifinlist} except that it takes a control sequence name as its second argument. - -\cmditem{xifinlistcs}{item}{listcsname}{true}{false} - -Similar to \cmd{xifinlist} except that it takes a control sequence name as its second argument. - -\end{ltxsyntax} - -\subsection{Miscellaneous Tools} -\label{aut:msc} - -\begin{ltxsyntax} - -\cmditem{rmntonum}{numeral} - -The \tex primitive \cmd{romannumeral} converts an integer to a Roman numeral but \tex or \latex provide no command which goes the opposite way. \cmd{rmntonum} fills this gap. It takes a Roman numeral as its argument and converts it to the corresponding integer. Since it is expandable, it may also be used in counter assignments or arithmetic tests: - -\begin{ltxcode} -<<\rmntonum>>{<>} -\setcounter{counter}{<<\rmntonum>>{<>}} -\ifnumless{<<\rmntonum>>{<>}}{2000}{true}{false} -\end{ltxcode} -% -The \prm{numeral} argument must be a literal string. It will be detokenized prior to parsing. The parsing of the numeral is case"=insensitive and whitespace in the argument is ignored. If there is an invalid token in the argument, \cmd{rmntonum} will expand to~\texttt{-1}; an empty argument will yield an empty string. Note that \cmd{rmntonum} will not check the numeral for formal validity. For example, both \texttt{V} and \texttt{VX} would yield \texttt{5}, \texttt{IC} would yield \texttt{99}, etc. - -\cmditem{ifrmnum}{string}{true}{false} - -Expands to \prm{true} if \prm{string} is a Roman numeral, and to \prm{false} otherwise. The \prm{string} will be detokenized prior to performing the test. The test is case"=insensitive and ignores whitespace in the \prm{string}. Note that \cmd{ifrmnum} will not check the numeral for formal validity. For example, both \texttt{V} and \texttt{VXV} will yield \prm{true}. Strictly speaking, what \cmd{ifrmnum} does is parse the \prm{string} in order to find out if it consists of characters which may form a valid Roman numeral, but it will not check if they really are a valid Roman numeral. - -\end{ltxsyntax} - -\section{Revision History} - -This revision history is a list of changes relevant to users of this package. Changes of a more technical nature which do not affect the user interface or the behavior of the package are not included in the list. If an entry in the revision history states that a feature has been \emph{improved} or \emph{extended}, this indicates a syntactically backwards compatible modification, such as the addition of an optional argument to an existing command. Entries stating that a feature has been \emph{modified} demand attention. They indicate a modification which may require changes to existing documents in some, hopefully rare, cases. The numbers on the right indicate the relevant section of this manual. - -\begin{changelog} - -\begin{release}{2.1}{2011-01-03} -\item Added \cmd{AtBeginEnvironment}\see{use:env} -\item Added \cmd{AtEndEnvironment}\see{use:env} -\item Added \cmd{BeforeBeginEnvironment}\see{use:env} -\item Added \cmd{AfterEndEnvironment}\see{use:env} -\item Added \cmd{ifdefstrequal}\see{aut:tst:def} -\item Added \cmd{ifcsstrequal}\see{aut:tst:def} -\item Added \cmd{ifdefcounter}\see{aut:tst:cnt} -\item Added \cmd{ifcscounter}\see{aut:tst:cnt} -\item Added \cmd{ifltxcounter}\see{aut:tst:cnt} -\item Added \cmd{ifdeflength}\see{aut:tst:cnt} -\item Added \cmd{ifcslength}\see{aut:tst:cnt} -\item Added \cmd{ifdefdimen}\see{aut:tst:cnt} -\item Added \cmd{ifcsdimen}\see{aut:tst:cnt} -\end{release} - -\begin{release}{2.0a}{2010-09-12} -\item Fixed bug in \cmd{patchcmd}, \cmd{apptocmd}, \cmd{pretocmd}\see{aut:pat} -\end{release} - -\begin{release}{2.0}{2010-08-21} - -\item Added \cmd{csshow}\see{aut:def:def} -\item Added \cmd{DeclareListParser*}\see{aut:lst:inp} -\item Added \cmd{forcsvlist}\see{aut:lst:inp} -\item Added \cmd{forlistloop}\see{aut:lst:int} -\item Added \cmd{forlistcsloop}\see{aut:lst:int} -\item Allow testing \cmd{par} in macro tests\see{aut:tst:def} -\item Fixed some bugs - -\end{release} - -\begin{release}{1.9}{2010-04-10} - -\item Improved \cmd{letcs}\see{aut:def:def} -\item Improved \cmd{csletcs}\see{aut:def:def} -\item Improved \cmd{listeadd}\see{aut:lst:int} -\item Improved \cmd{listxadd}\see{aut:lst:int} -\item Added \cmd{notblank}\see{aut:tst:str} -\item Added \cmd{ifnumodd}\see{aut:tst:num} -\item Added \cmd{ifboolexpr}\see{aut:tst:bol} -\item Added \cmd{ifboolexpe}\see{aut:tst:bol} -\item Added \cmd{whileboolexpr}\see{aut:tst:bol} -\item Added \cmd{unlessboolexpr}\see{aut:tst:bol} - -\end{release} - -\begin{release}{1.8}{2009-08-06} - -\item Improved \cmd{deflength}\see{use:cal} -\item Added \cmd{ifnumcomp}\see{aut:tst:num} -\item Added \cmd{ifnumequal}\see{aut:tst:num} -\item Added \cmd{ifnumgreater}\see{aut:tst:num} -\item Added \cmd{ifnumless}\see{aut:tst:num} -\item Added \cmd{ifdimcomp}\see{aut:tst:num} -\item Added \cmd{ifdimequal}\see{aut:tst:num} -\item Added \cmd{ifdimgreater}\see{aut:tst:num} -\item Added \cmd{ifdimless}\see{aut:tst:num} - -\end{release} - -\begin{release}{1.7}{2008-06-28} - -\item Renamed \cmd{AfterBeginDocument} to \cmd{AfterEndPreamble} (name clash)\see{use:pre} -\item Resolved conflict with \sty{hyperref} -\item Rearranged manual slightly - -\end{release} - -\begin{release}{1.6}{2008-06-22} - -\item Improved \cmd{robustify}\see{use:pat} -\item Improved \cmd{patchcmd} and \cmd{ifpatchable}\see{aut:pat} -\item Modified and improved \cmd{apptocmd}\see{aut:pat} -\item Modified and improved \cmd{pretocmd}\see{aut:pat} -\item Added \cmd{ifpatchable*}\see{aut:pat} -\item Added \cmd{tracingpatches}\see{aut:pat} -\item Added \cmd{AfterBeginDocument}\see{use:pre} -\item Added \cmd{ifdefmacro}\see{aut:tst:def} -\item Added \cmd{ifcsmacro}\see{aut:tst:def} -\item Added \cmd{ifdefprefix}\see{aut:tst:def} -\item Added \cmd{ifcsprefix}\see{aut:tst:def} -\item Added \cmd{ifdefparam}\see{aut:tst:def} -\item Added \cmd{ifcsparam}\see{aut:tst:def} -\item Added \cmd{ifdefprotected}\see{aut:tst:def} -\item Added \cmd{ifcsprotected}\see{aut:tst:def} -\item Added \cmd{ifdefltxprotect}\see{aut:tst:def} -\item Added \cmd{ifcsltxprotect}\see{aut:tst:def} -\item Added \cmd{ifdefempty}\see{aut:tst:def} -\item Added \cmd{ifcsempty}\see{aut:tst:def} -\item Improved \cmd{ifdefvoid}\see{aut:tst:def} -\item Improved \cmd{ifcsvoid}\see{aut:tst:def} -\item Added \cmd{ifstrempty}\see{aut:tst:str} -\item Added \cmd{setbool}\see{aut:bo1:bol} -\item Added \cmd{settoggle}\see{aut:bo1:tgl} - -\end{release} - -\begin{release}{1.5}{2008-04-26} - -\item Added \cmd{defcounter}\see{use:cal} -\item Added \cmd{deflength}\see{use:cal} -\item Added \cmd{ifdefstring}\see{aut:tst:def} -\item Added \cmd{ifcsstring}\see{aut:tst:def} -\item Improved \cmd{rmntonum}\see{aut:msc} -\item Added \cmd{ifrmnum}\see{aut:msc} -\item Added extended \pdf bookmarks to this manual -\item Rearranged manual slightly - -\end{release} - -\begin{release}{1.4}{2008-01-24} - -\item Resolved conflict with \sty{tex4ht} - -\end{release} - -\begin{release}{1.3}{2007-10-08} - -\item Renamed package from \sty{elatex} to \sty{etoolbox}\see{int} -\item Renamed \cmd{newswitch} to \cmd{newtoggle} (name clash)\see{aut:bo1:tgl} -\item Renamed \cmd{provideswitch} to \cmd{providetoggle} (consistency)\see{aut:bo1:tgl} -\item Renamed \cmd{switchtrue} to \cmd{toggletrue} (consistency)\see{aut:bo1:tgl} -\item Renamed \cmd{switchfalse} to \cmd{togglefalse} (consistency)\see{aut:bo1:tgl} -\item Renamed \cmd{ifswitch} to \cmd{iftoggle} (consistency)\see{aut:bo1:tgl} -\item Renamed \cmd{notswitch} to \cmd{nottoggle} (consistency)\see{aut:bo1:tgl} -\item Added \cmd{AtEndPreamble}\see{use:pre} -\item Added \cmd{AfterEndDocument}\see{use:pre} -\item Added \cmd{AfterPreamble}\see{use:pre} -\item Added \cmd{undef}\see{aut:def:def} -\item Added \cmd{csundef}\see{aut:def:def} -\item Added \cmd{ifdefvoid}\see{aut:tst:def} -\item Added \cmd{ifcsvoid}\see{aut:tst:def} -\item Added \cmd{ifdefequal}\see{aut:tst:def} -\item Added \cmd{ifcsequal}\see{aut:tst:def} -\item Added \cmd{ifstrequal}\see{aut:tst:str} -\item Added \cmd{listadd}\see{aut:lst:int} -\item Added \cmd{listeadd}\see{aut:lst:int} -\item Added \cmd{listgadd}\see{aut:lst:int} -\item Added \cmd{listxadd}\see{aut:lst:int} -\item Added \cmd{listcsadd}\see{aut:lst:int} -\item Added \cmd{listcseadd}\see{aut:lst:int} -\item Added \cmd{listcsgadd}\see{aut:lst:int} -\item Added \cmd{listcsxadd}\see{aut:lst:int} -\item Added \cmd{ifinlist}\see{aut:lst:int} -\item Added \cmd{xifinlist}\see{aut:lst:int} -\item Added \cmd{ifinlistcs}\see{aut:lst:int} -\item Added \cmd{xifinlistcs}\see{aut:lst:int} -\item Added \cmd{dolistloop}\see{aut:lst:int} -\item Added \cmd{dolistcsloop}\see{aut:lst:int} - -\end{release} - -\begin{release}{1.2}{2007-07-13} - -\item Renamed \cmd{patchcommand} to \cmd{patchcmd} (name clash)\see{aut:pat} -\item Renamed \cmd{apptocommand} to \cmd{apptocmd} (consistency)\see{aut:pat} -\item Renamed \cmd{pretocommand} to \cmd{pretocmd} (consistency)\see{aut:pat} -\item Added \cmd{newbool}\see{aut:bo1:bol} -\item Added \cmd{providebool}\see{aut:bo1:bol} -\item Added \cmd{booltrue}\see{aut:bo1:bol} -\item Added \cmd{boolfalse}\see{aut:bo1:bol} -\item Added \cmd{ifbool}\see{aut:bo1:bol} -\item Added \cmd{notbool}\see{aut:bo1:bol} -\item Added \cmd{newswitch}\see{aut:bo1:tgl} -\item Added \cmd{provideswitch}\see{aut:bo1:tgl} -\item Added \cmd{switchtrue}\see{aut:bo1:tgl} -\item Added \cmd{switchfalse}\see{aut:bo1:tgl} -\item Added \cmd{ifswitch}\see{aut:bo1:tgl} -\item Added \cmd{notswitch}\see{aut:bo1:tgl} -\item Added \cmd{DeclareListParser}\see{aut:lst:inp} -\item Added \cmd{docsvlist}\see{aut:lst:inp} -\item Added \cmd{rmntonum}\see{aut:msc} - -\end{release} - -\begin{release}{1.1}{2007-05-28} - -\item Added \cmd{protected@csedef}\see{aut:def:def} -\item Added \cmd{protected@csxdef}\see{aut:def:def} -\item Added \cmd{gluedef}\see{aut:def:cal} -\item Added \cmd{gluegdef}\see{aut:def:cal} -\item Added \cmd{csgluedef}\see{aut:def:cal} -\item Added \cmd{csgluegdef}\see{aut:def:cal} -\item Added \cmd{mudef}\see{aut:def:cal} -\item Added \cmd{mugdef}\see{aut:def:cal} -\item Added \cmd{csmudef}\see{aut:def:cal} -\item Added \cmd{csmugdef}\see{aut:def:cal} -\item Added \cmd{protected@eappto}\see{aut:hok:app} -\item Added \cmd{protected@xappto}\see{aut:hok:app} -\item Added \cmd{protected@cseappto}\see{aut:hok:app} -\item Added \cmd{protected@csxappto}\see{aut:hok:app} -\item Added \cmd{protected@epreto}\see{aut:hok:pre} -\item Added \cmd{protected@xpreto}\see{aut:hok:pre} -\item Added \cmd{protected@csepreto}\see{aut:hok:pre} -\item Added \cmd{protected@csxpreto}\see{aut:hok:pre} -\item Fixed bug in \cmd{newrobustcmd}\see{use:def} -\item Fixed bug in \cmd{renewrobustcmd}\see{use:def} -\item Fixed bug in \cmd{providerobustcmd}\see{use:def} - -\end{release} - -\begin{release}{1.0}{2007-05-07} - -\item Initial public release - -\end{release} - -\end{changelog} - -\end{document}