Current File : //usr/share/texlive/texmf-dist/tex/latex/oberdiek/enparen.sty |
%%
%% 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'.