diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/ltxtools/ltxtools-environ.sty |
Initial commit
Diffstat (limited to 'macros/latex/contrib/ltxtools/ltxtools-environ.sty')
-rw-r--r-- | macros/latex/contrib/ltxtools/ltxtools-environ.sty | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/macros/latex/contrib/ltxtools/ltxtools-environ.sty b/macros/latex/contrib/ltxtools/ltxtools-environ.sty new file mode 100644 index 0000000000..978b8143a3 --- /dev/null +++ b/macros/latex/contrib/ltxtools/ltxtools-environ.sty @@ -0,0 +1,137 @@ +%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++% +% % +% This is file 'ltxtools-environ.sty', version 0.0.1, December 2011. % +% % +% This package and accompanying files may be distributed and/or % +% modified under the conditions of the LaTeX Project Public License, % +% either version 1.3 of this license or any later version. The latest % +% version of this license is in http://www.latex-project.org/lppl.txt % +% and version 1.3 or later is part of all distributions of LaTeX % +% version 2005/12/01 or later. % +% % +% The LPPL maintenance status of this software is 'author-maintained'. % +% % +% This software is provided 'as it 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. % +% % +% Copyright (c) 2011 Ahmed Musa (amusa22@gmail.com). % +% % +%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++% + +\@ifpackageloaded{catoptions}{}{\RequirePackage{catoptions}[2011/12/12]} +\@ifpackageloaded{ltxtools}{}{\RequirePackage{ltxtools}[2011/12/12]} +\UseNormalCatcodes +\StyleFilePurpose{Collect and execute environment body (AM)} +\StyleFileRCSInfo +$Id: ltxtools-environ.sty,v 0.0.1 2011/12/12 09:00:00 Ahmed Musa Exp $ +\ProvidesPackage{ltxtools-environ}[\StyleFileInfo] +\NeedsTeXFormat{LaTeX2e}[2011/06/27] + +% \newenviron, \renewenviron {<name>}{<start>}<body>{<end>}. +% Collect environment body in \envbody: +\new@def*\AlwaysTrimEnvEntries{\global\LTS@alwaystrimtrue} +\new@def*\trimenvspaces{% + \ifboolTF{LTS@alwaystrim}\cpttrimspaces\unexpanded +} +\new@def*\everyeoenv#1{\ltsfiltermergetsv\LTS@everyeoenv{#1}\nofilter} +\everyeoenv{\@ignoretrue} +\robust@def*\newenviron{\cpt@starorlong\LTS@newenviron} +\robust@def*\LTS@newenviron#1{% + \edef\LTS@tempa{\trimenvspaces{#1}}% + \cptexpandarg\cpt@testopt + {\LTS@n@wenviron{\expandcsonce\LTS@tempa}}0% +} +\robust@def*\LTS@n@wenviron#1[#2]{% + \cpt@ifbrack + {\LTS@n@wenv@ron#1[#2]} + {\LTS@n@wenv@r@n{#1}{[#2]}}% +} +\robust@def*\LTS@n@wenv@ron#1[#2][#3]{\LTS@n@wenv@r@n{#1}{[#2][{#3}]}} +\robust@def*\renewenviron{\cpt@starorlong\LTS@renewenviron} +\robust@def*\LTS@renewenviron#1{% + \edef\LTS@tempa{\trimenvspaces{#1}}% + \ifcsndefTF\LTS@tempa{} + {\@latex@error{Environment #1 is undefined}\@ehc}% + \letcsntocs\LTS@tempa\relax + \letcsntocs{end\LTS@tempa}\relax + \expandafter\LTS@newenviron\expandafter{\LTS@tempa}% +} +\robust@def\LTS@n@wenv@r@n#1#2#3#4{% + \ifcsndefTF{#1}{}{\letcsntocsn{#1}{end#1}}% + \aftercsname\new@command{#1}#2{% + \edef\LTS@beforebody{\trimenvspaces{#3}}% + \LTS@collectbody + }% + \l@ngrel@x\csn@edef{end#1}{% + \begingroup + \defpass\noexpand\x{\endgroup\trimenvspaces{#4}}% + }% +} +\robust@def*\LTS@collectbody{% + \begingroup + \toks@{}% + \everyeof{\end{EOF}\relax}% + \LTS@coll@ctbody +} +\robust@def\LTS@coll@ctbody#1\end#2{% + \toks1{% + \cptexpanded{% + \toks@{\the\toks@\trimenvspaces{#1}% + \noexpand\end{\expandcsonce\LTS@tempa}}% + }% + \LTS@coll@ctbody + }% + \edef\LTS@tempa{\trimenvspaces{#2}}% + \ifxTF\LTS@tempa\@currenvir{% + \edef\LTS@tempb{\LTS@pushbegin#1\begin\end\cpt@relax}% + \if@csemptyTF\LTS@tempb{% + \cptexpandsecond\endgroup{% + \edef\noexpand\envbody{\noexpand\unexpanded{% + \the\toks@\ifblankTF{#1}{}{\trimenvspaces{#1}}% + }}% + \unexpanded{% + \LTS@beforebody\relax\LTS@everyeoenv + \ifboolTF{LTS@alwaystrim}\@ignoretrue\relax + }% + \noexpand\end{\LTS@tempa}% + }% + }{% + \the\toks1 + }% + }{% + \oifstrcmpTF{\LTS@tempa}{document}{% + \expandafter\endgroup\expandafter + \@checkend\expandafter{\LTS@tempa}% + }{% + \oifstrcmpTF{\LTS@tempa}{EOF}{% + \expandafter\endgroup\expandafter + \@checkend\expandafter{\LTS@tempa}% + }{% + \the\toks1 + }% + }% + }% +} +\new@def\LTS@pushbegin#1\begin#2{% + \expandafter\ifxTF\cpt@car#2x\car@nil\end{% + \@gobble + }{% + \expandafter\swapbracefirst\expandafter + {\romannumeral-`\q\cptoxdetok\LTS@tempa} + {\expandafter\ifstrcmpTF\expandafter + {\detokenize\expandafter{\romannumeral-`\q + \trimenvspaces{#2}}}}{% + x\cptgobbletorelax + }{% + \LTS@pushbegin + }% + }% +} +\XDeclareBooleanOption{alwaystrim}[true](LTS@){}{} +\XDeclareOption*{\LTS@warn{Unknown option '\CurrentOption' ignored}} +\XExecuteOptions{alwaystrim} +\XProcessOptions*\relax + +\endinput |