You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
287 lines
7.4 KiB
287 lines
7.4 KiB
%%
|
|
%% This is file `enparen.sty',
|
|
%% generated with the docstrip utility.
|
|
%%
|
|
%% The original source files were:
|
|
%%
|
|
%% enparen.dtx (with options: `package')
|
|
%%
|
|
%% This is a generated file.
|
|
%%
|
|
%% Project: enparen
|
|
%% Version: 2016/05/16 v1.1
|
|
%%
|
|
%% Copyright (C)
|
|
%% 2012 Heiko Oberdiek
|
|
%% 2016-2019 Oberdiek Package Support Group
|
|
%%
|
|
%% This work may be distributed and/or modified under the
|
|
%% conditions of the LaTeX Project Public License, either
|
|
%% version 1.3c of this license or (at your option) any later
|
|
%% version. This version of this license is in
|
|
%% https://www.latex-project.org/lppl/lppl-1-3c.txt
|
|
%% and the latest version of this license is in
|
|
%% https://www.latex-project.org/lppl.txt
|
|
%% and version 1.3 or later is part of all distributions of
|
|
%% LaTeX version 2005/12/01 or later.
|
|
%%
|
|
%% This work has the LPPL maintenance status "maintained".
|
|
%%
|
|
%% The Current Maintainers of this work are
|
|
%% Heiko Oberdiek and the Oberdiek Package Support Group
|
|
%% https://github.com/ho-tex/oberdiek/issues
|
|
%%
|
|
%%
|
|
%% This work consists of the main source file enparen.dtx
|
|
%% and the derived files
|
|
%% enparen.sty, enparen.pdf, enparen.ins, enparen.drv.
|
|
%%
|
|
\NeedsTeXFormat{LaTeX2e}
|
|
\ProvidesPackage{enparen}
|
|
[2016/05/16 v1.1 Parentheses nesting (HO)]%
|
|
\RequirePackage{ltxcmds}[2011/11/09]
|
|
\ltx@IfUndefined{numexpr}{%
|
|
\PackageError{enparen}{%
|
|
Missing e-TeX's \ltx@backslashchar numexpr.\MessageBreak
|
|
The package will continue with emergency definitions%
|
|
}\@ehc
|
|
\def\enparenLeft{(}%
|
|
\def\enparenRight{)}%
|
|
\long\def\enparen#1{\enparenLeft#1\enparenRight}%
|
|
\let\enparenSetup\ltx@gobble
|
|
\let\enparenSetSymbols\ltx@gobblethree
|
|
\let\enparenUnsetSymbols\ltx@gobble
|
|
\endinput
|
|
}{}
|
|
\RequirePackage{protecteddef}[2011/01/31]
|
|
\RequirePackage{atveryend}[2011/06/30]
|
|
\RequirePackage{uniquecounter}[2011/01/30]
|
|
\RequirePackage{zref-base}[2011/03/18]
|
|
\RequirePackage{kvoptions}[2011/06/30]
|
|
\RequirePackage{kvsetkeys}[2011/10/18]
|
|
\providecommand{\zref@wrapper@mainaux}[1]{%
|
|
\ifx\@auxout\@mainaux
|
|
#1%
|
|
\else
|
|
\begingroup
|
|
\let\@auxout\@mainaux
|
|
#1%
|
|
\endgroup
|
|
\fi
|
|
}
|
|
\UniqueCounterNew{enparen}
|
|
\zref@newprop{enparen}[0]{}
|
|
\def\enparenContextDefault{main}
|
|
\let\enparen@ctx\ltx@empty
|
|
\let\enparen@stack\ltx@empty
|
|
\global\let\enparen@CtxStack\ltx@empty
|
|
\def\enparen@CtxStackPush#1{%
|
|
\xdef\enparen@CtxStack{%
|
|
{\enparen@ctx}{\enparen@stack}%
|
|
\enparen@CtxStack
|
|
}%
|
|
\xdef\enparen@ctx{#1}%
|
|
\global\let\enparen@stack\ltx@empty
|
|
}
|
|
\def\enparen@CtxStackPop{%
|
|
\ifx\enparen@CtxStack\ltx@empty
|
|
\PackageWarning{enparen}{%
|
|
Pop request for empty context stack%
|
|
}%
|
|
\global\let\enparen@ctx\enparenContextDefault
|
|
\global\let\enparen@stack\ltx@empty
|
|
\else
|
|
\xdef\enparen@ctx{%
|
|
\expandafter\ltx@car\enparen@CtxStack\@nil
|
|
}%
|
|
\xdef\enparen@stack{%
|
|
\expandafter\ltx@carsecond\enparen@CtxStack\@nil
|
|
}%
|
|
\xdef\enparen@CtxStack{%
|
|
\expandafter\ltx@cdrtwo\enparen@CtxStack\@nil
|
|
}%
|
|
\fi
|
|
}
|
|
\ProtectedDef*{\enparenBeginContext}[1]{%
|
|
\enparen@CtxStackPush{#1}%
|
|
}
|
|
\ProtectedDef*{\enparenEndContext}[1]{%
|
|
\edef\enparen@temp{#1}%
|
|
\ifx\enparen@temp\enparen@ctx
|
|
\else
|
|
\PackageWarning{enparen}{%
|
|
Context mismatch in end request.\MessageBreak
|
|
`#1' should be ended, but current context\MessageBreak
|
|
is `\enparen@ctx'%
|
|
}%
|
|
\fi
|
|
\enparenCheckEmptyStack
|
|
\enparen@CtxStackPop
|
|
}
|
|
\ProtectedDef*{\enparenCheckEmptyStack}[0]{%
|
|
\ifx\enparen@stack\ltx@empty
|
|
\else
|
|
\PackageWarning{enparen}{%
|
|
Ending non-empty stack `\enparen@ctx':\MessageBreak
|
|
\enparen@PrintStack\MessageBreak
|
|
}%
|
|
\fi
|
|
}
|
|
\def\enparen@PrintStack{%
|
|
\expandafter\enparen@PrintStackAux
|
|
\enparen@stack\ltx@empty\ltx@empty
|
|
}
|
|
\def\enparen@PrintStackAux#1#2{%
|
|
\ifx\ltx@empty#1%
|
|
\else
|
|
{#1:#2}%
|
|
\expandafter\enparen@PrintStackAux
|
|
\fi
|
|
}
|
|
\ProtectedDef*{\enparenSetSymbols}[3]{%
|
|
\expandafter
|
|
\def\csname enparen@symbol\the\numexpr#1L\endcsname{#2}%
|
|
\expandafter
|
|
\def\csname enparen@symbol\the\numexpr#1R\endcsname{#3}%
|
|
}
|
|
\ProtectedDef*{\enparenUnsetSymbols}[1]{%
|
|
\expandafter
|
|
\let\csname enparen@symbol\the\numexpr#1L\endcsname\ltx@undefined
|
|
\expandafter
|
|
\let\csname enparen@symbol\the\numexpr#1R\endcsname\ltx@undefined
|
|
}
|
|
\enparenSetSymbols{0}{(}{)}
|
|
\enparenSetSymbols{1}{(}{)}
|
|
\enparenSetSymbols{2}{[}{]}
|
|
\enparenSetSymbols{3}{\{}{\}}
|
|
\enparenSetSymbols{4}{\ensuremath{\langle}}{\ensuremath{\rangle}}
|
|
\ProtectedDef{\enparen}[1]{%
|
|
\enparenLeft#1\enparenRight
|
|
}
|
|
\ProtectedDef*{\enparenLeft}[0]{%
|
|
\UniqueCounterCall{enparen}\enparen@Left
|
|
}
|
|
\def\enparen@Left#1{%
|
|
\xdef\enparen@stack{%
|
|
{#1}{1}%
|
|
\expandafter\enparen@Inc\expandafter2\expandafter!%
|
|
\enparen@stack\ltx@empty\ltx@empty
|
|
}%
|
|
\edef\enparen@tmp{\zref@extract{enparen#1}{enparen}}%
|
|
\ltx@IfUndefined{enparen@symbol\enparen@tmp L}{%
|
|
\PackageWarning{enparen}{%
|
|
Undefined symbols for level \enparen@tmp
|
|
}%
|
|
\csname enparen@symbol0L\endcsname
|
|
}{%
|
|
\csname enparen@symbol\enparen@tmp L\endcsname
|
|
}%
|
|
}
|
|
\def\enparen@Inc#1!#2#3{%
|
|
\ifx\ltx@empty#2%
|
|
\else
|
|
\ifnum#3<#1 %
|
|
{#2}{#1}%
|
|
\expandafter\enparen@Inc
|
|
\the\numexpr#1+1\expandafter\expandafter\expandafter!%
|
|
\else
|
|
{#2}{#3}%
|
|
\fi
|
|
\fi
|
|
}
|
|
\ProtectedDef*{\enparenRight}[0]{%
|
|
\ifx\enparen@stack\ltx@empty
|
|
\PackageWarning{enparen}{%
|
|
Missing left symbol for right symbol%
|
|
}%
|
|
\csname enparen@symbol0R\endcsname
|
|
\else
|
|
\expandafter\enparen@Right\enparen@stack\@nil
|
|
\fi
|
|
}
|
|
\def\enparen@Right#1#2#3\@nil{%
|
|
\ltx@IfUndefined{%
|
|
enparen@symbol%
|
|
\zref@extract{enparen#1}{enparen}%
|
|
R%
|
|
}{%
|
|
\csname enparen@symbol0R\endcsname
|
|
}{%
|
|
\csname
|
|
enparen@symbol%
|
|
\zref@extract{enparen#1}{enparen}%
|
|
R%
|
|
\endcsname
|
|
}%
|
|
\zref@wrapper@mainaux{%
|
|
\zref@setcurrent{enparen}{#2}%
|
|
\zref@labelbyprops{enparen#1}{enparen}%
|
|
}%
|
|
\xdef\enparen@stack{#3}%
|
|
}
|
|
\SetupKeyvalOptions{%
|
|
family=enparen,%
|
|
prefix=enparen@,%
|
|
}
|
|
\ProtectedDef*{\enparenSetup}[0]{%
|
|
\kvsetkeys{enparen}%
|
|
}
|
|
\DeclareBoolOption[true]{footnote}
|
|
\DeclareBoolOption[true]{caption}
|
|
\ProcessKeyvalOptions*
|
|
\def\enparen@AtBegin{%
|
|
\ifenparen@footnote
|
|
\let\enparen@org@makefntext\@makefntext
|
|
\long\def\@makefntext##1{%
|
|
\enparen@org@makefntext{%
|
|
\enparenBeginContext{footnote}%
|
|
##1%
|
|
\enparenEndContext{footnote}%
|
|
}%
|
|
}%
|
|
\fi
|
|
\enparen@Disable{footnote}%
|
|
\ifenparen@caption
|
|
\let\enparen@org@makecaption\@makecaption
|
|
\long\def\@makecaption##1##2{%
|
|
\enparen@org@makecaption{##1}{%
|
|
\enparenBeginContext{caption}%
|
|
##2%
|
|
\enparenEndContext{caption}%
|
|
}%
|
|
}%
|
|
\fi
|
|
\enparen@Disable{caption}%
|
|
}
|
|
\def\enparen@Disable#1{%
|
|
\DisableKeyvalOption[%
|
|
action=warning,%
|
|
package=enparen,%
|
|
]{enparen}{#1}%
|
|
}
|
|
\AtBeginDocument{\enparen@AtBegin}
|
|
\def\enparen@AtEnd{%
|
|
\enparenCheckEmptyStack
|
|
\ifx\enparen@CtxStack\ltx@empty
|
|
\else
|
|
\PackageWarningNoLine{enparen}{%
|
|
Context stack is not empty at end of document.\MessageBreak
|
|
Current stack and contents of context stack:\MessageBreak
|
|
[\enparen@ctx]:[\enparen@PrintStack]%
|
|
\expandafter
|
|
\enparen@PrintContextStack\enparen@CtxStack\relax\relax
|
|
}%
|
|
\fi
|
|
}
|
|
\def\enparen@PrintContextStack#1#2{%
|
|
\ifx\relax#1\ltx@empty
|
|
\else
|
|
\MessageBreak
|
|
[#1]:[\enparen@PrintStackAux#2\ltx@empty\ltx@empty]% hash-ok
|
|
\expandafter\enparen@PrintContextStack
|
|
\fi
|
|
}
|
|
\AtVeryEndDocument{\enparen@AtEnd}
|
|
\endinput
|
|
%%
|
|
%% End of file `enparen.sty'.
|
|
|