From ceb5cab24f76ddccfaca698332238bb0fca4d2fc Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 22 Nov 2013 23:05:26 +0000 Subject: cnltx (22nov13) git-svn-id: svn://tug.org/texlive/trunk@32212 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/cnltx/cnltx-base.sty | 120 +++++-- .../texmf-dist/tex/latex/cnltx/cnltx-example.sty | 365 ++++++++++++++++++--- .../texmf-dist/tex/latex/cnltx/cnltx-listings.sty | 51 ++- Master/texmf-dist/tex/latex/cnltx/cnltx-tools.sty | 2 + Master/texmf-dist/tex/latex/cnltx/cnltx.bbx | 25 +- Master/texmf-dist/tex/latex/cnltx/cnltx.cbx | 25 +- Master/texmf-dist/tex/latex/cnltx/cnltx.dbx | 24 +- Master/texmf-dist/tex/latex/cnltx/cnltx.sty | 46 +++ 8 files changed, 537 insertions(+), 121 deletions(-) create mode 100644 Master/texmf-dist/tex/latex/cnltx/cnltx.sty (limited to 'Master/texmf-dist/tex/latex/cnltx') diff --git a/Master/texmf-dist/tex/latex/cnltx/cnltx-base.sty b/Master/texmf-dist/tex/latex/cnltx/cnltx-base.sty index 441a155d42d..41d910c4bcc 100644 --- a/Master/texmf-dist/tex/latex/cnltx/cnltx-base.sty +++ b/Master/texmf-dist/tex/latex/cnltx/cnltx-base.sty @@ -25,11 +25,11 @@ % If you have any ideas, questions, suggestions or bugs to report, please % feel free to contact me. % -------------------------------------------------------------------------- -\def\cnltx@@date{2013/10/24} -\def\cnltx@@version{v0.8} +\def\cnltx@@date{2013/11/22} +\def\cnltx@@version{v0.9} \def\cnltx@@info{LaTeX tools and documenting facilities (CN)} \ProvidesPackage{cnltx-base}[\cnltx@@date\space \cnltx@@version\space \cnltx@@info] -\RequirePackage{pgfopts,etoolbox,ltxcmds} +\RequirePackage{pgfopts,etoolbox,ltxcmds,pdftexcmds} % -------------------------------------------------------------------------- % error messaging @@ -119,6 +119,29 @@ \newrobustcmd\setcnltx[1]{\pgfqkeys{/cnltx}{#1}} \def\cnltx@par{\par} +% -------------------------------------------------------------------------- +% scratch variables +\newcounter{cnltx@tmpa} +\newcounter{cnltx@tmpb} +\newcounter{cnltx@tmpc} + +\newlength\cnltx@tmpa@length +\newlength\cnltx@tmpb@length +\newlength\cnltx@tmpc@length + +\newcommand*\cnltx@tmpa{} +\newcommand*\cnltx@tmpb{} +\newcommand*\cnltx@tmpc{} + +% -------------------------------------------------------------------------- +% who knows what they might be good for -- well, for indexing: +\newrobustcmd*\cnltxat{@} +\let\cnltxletterat\cnltxat +\makeatother +\newrobustcmd*\cnltxotherat{@} +\makeatletter +\newrobustcmd*\cnltxbang{!} +\newrobustcmd*\cnltxequal{=} % -------------------------------------------------------------------------- % generic conditionals @@ -144,11 +167,29 @@ \newcommand*\cnltx@ifdash{\cnltx@ifsym{-}} \newcommand*\cnltx@ifbang{\cnltx@ifsym{!}} -% an idea by Herbert Voß (http://tex.stackexchange.com/a/7183/5049): -\newcommand*\cnltx@ifisnum[1]{% - \iftest{\if!\ifnum9<1#1!\else_\fi}% +% test if shellescape is enabled: +\newcommand*\cnltx@ifshellescape{% + \iftest{\ifnum\pdf@shellescape=1 }% } +% an idea by Herbert Voß (http://tex.stackexchange.com/a/7183/5049): +% make the test character an (hopefully extremely) unlikely % with +% catcode!=14; let's make & a temporary comment char +% save both catcodes just in case someone changed the defaults: +\edef\cnltx@tmpa{\catcode`\%=\the\catcode`\% \catcode`\&=\the\catcode`\&} +\catcode`\%=3 +\catcode`\&=14 +& the test: +\newcommand*\cnltx@ifisnum[1]{& + \iftest{\if%\ifnum9<1#1%\else_\fi}& +} +\cnltx@tmpa + +% an idea by Enrico Gregorio (http://tex.stackexchange.com/a/34449/5049): +\newcommand*\cnltx@truncdiv[2]{((#1-(#2-1)/2)/#2)} +\newcommand*\cnltx@modulo@op[2]{(#1-\cnltx@truncdiv{#1}{#2}*#2)} +\newcommand*\cnltx@modulo[2]{\number\numexpr\cnltx@modulo@op{#1}{#2}\relax} + % ``\@ifnextchars'' % list parser with no separator: \DeclareListParser*\cnltx@add@tokens{} @@ -181,6 +222,11 @@ #3% } +% -------------------------------------------------------------------------- + +% \newcount\pdflastximagepages +% \def\pdfximage#1{\pdflastximagepages=\XeTeXpdfpagecount"#1"\relax} + % -------------------------------------------------------------------------- % expansion helper % \cnltx@expandargs() @@ -250,6 +296,7 @@ % tokenlist manipulation \newcommand*\cnltx@stripbs{\expandafter\@gobble\string} +% again we borrow an idea from expl3: % \cnltx@if@in{tokenlist}{search}{true}{false} \newrobustcmd\cnltx@if@in[2]{% \def\cnltx@ifin@tmp##1#2{}% @@ -259,42 +306,44 @@ } % \cnltx@replace@once{macro}{search}{replace} -\newrobustcmd\cnltx@long@replace@once{\cnltx@replace@once@longorshort\long} -\newrobustcmd*\cnltx@replace@once{\cnltx@replace@once@longorshort\@empty} +% \cnltx@replace@all{macro}{search}{replace} +\newrobustcmd*\cnltx@replace@once {\@@cnltx@replace\@@cnltx@replace@once\edef} +\newrobustcmd*\cnltx@greplace@once{\@@cnltx@replace\@@cnltx@replace@once\xdef} +\newrobustcmd*\cnltx@replace@all {\@@cnltx@replace\@@cnltx@replace@all \edef} +\newrobustcmd*\cnltx@greplace@all {\@@cnltx@replace\@@cnltx@replace@all \xdef} + +\long\def\cnltx@remove@to@q@stop#1\q@stop{} -\newrobustcmd\cnltx@replace@once@longorshort[4]{% - \expandafter\cnltx@if@in\expandafter{#2}{#3} +\newrobustcmd\@@cnltx@replace[5]{% + \ifstrempty{#4} + {} {% - #1\def\cnltx@ro@tmp##1#3##2\q@stop{% - #1\def#2{##1#4##2}% + \ifnum\iffalse{\fi`}=\z@\fi + \edef\cnltx@tmpa##1##2#4{% + ##2% + \noexpand\q@mark + \noexpand\cnltx@remove@to@q@stop + \unexpanded{\unexpanded{#5}}% + ##1% }% - \expandafter\cnltx@ro@tmp#2\q@stop - } - {}% + \ifnum`{=\z@}\fi + #2#3{\expandafter#1#3\q@mark#4\q@stop}% + }% } - -% \cnltx@replace@all{macro}{search}{replace} -\newrobustcmd\cnltx@replace@all[3]{% - \cnltx@replace@once#1{#2}{#3}% - \expandafter\cnltx@if@in\expandafter{#1}{#2} - {\cnltx@replace@all#1{#2}{#3}} - {}% +\long\def\@@cnltx@replace@aux#1\q@mark#2{\expandonce{#1}} +\newcommand*\@@cnltx@replace@all{% + \expandafter\@@cnltx@replace@aux\cnltx@tmpa\@@cnltx@replace@all\@empty } - -\newrobustcmd\cnltx@long@replace@all[3]{% - \cnltx@long@replace@once#1{#2}{#3}% - \expandafter\cnltx@if@in\expandafter{#1}{#2} - {\cnltx@long@replace@all#1{#2}{#3}} - {}% +\def\@@cnltx@replace@once{% + \expandafter\@@cnltx@replace@aux\cnltx@tmpa + {\@@cnltx@replace@once@end\@empty}\@empty } +\long\def\@@cnltx@replace@once@end#1\q@mark#2\q@stop{\expandonce{#1}} % \cnltx@remove@once{macro}{search} -\newrobustcmd\cnltx@remove@once[2]{\cnltx@replace@once#1{#2}{}} -\newrobustcmd\cnltx@long@remove@once[2]{\cnltx@long@replace@once#1{#2}{}} - % \cnltx@remove@all{macro}{search} +\newrobustcmd\cnltx@remove@once[2]{\cnltx@replace@once#1{#2}{}} \newrobustcmd\cnltx@remove@all[2]{\cnltx@replace@all#1{#2}{}} -\newrobustcmd\cnltx@long@remove@all[2]{\cnltx@long@replace@all#1{#2}{}} % -------------------------------------------------------------------------- % an equivalent of \newcommand that where the macro with the optional argument @@ -744,3 +793,10 @@ HISTORY: \exp_arg:N idea) - \iftest and \nottest 2013/10/21 v0.8 - \cnltx@ifnextchars +2013/11/22 v0.9 - \cnltx@modulo + - scratch variables + - \cnltx@ifshellescape + - \cnltx@greplace@once, \cnltx@greplace@all, + \cnltx@gremove@once, \cnltx@gremove@all + - \cnltx@ifisnum now also returns if the test + argument is `!' diff --git a/Master/texmf-dist/tex/latex/cnltx/cnltx-example.sty b/Master/texmf-dist/tex/latex/cnltx/cnltx-example.sty index c30173150f1..cdc72321c06 100644 --- a/Master/texmf-dist/tex/latex/cnltx/cnltx-example.sty +++ b/Master/texmf-dist/tex/latex/cnltx/cnltx-example.sty @@ -39,16 +39,8 @@ \PassOptionsToPackage{framemethod=tikz}{mdframed} \RequirePackage{mdframed} \RequirePackage{idxcmds} - -% -------------------------------------------------------------------------- -% who knows what they might be good for -- well, for indexing: -\newrobustcmd*\cnltxat{@} -\let\cnltxletterat\cnltxat -\makeatother -\newrobustcmd*\cnltxotherat{@} -\makeatletter -\newrobustcmd*\cnltxbang{!} -\newrobustcmd*\cnltxequal{=} +\RequirePackage{adjustbox} +\RequirePackage{ifxetex} % -------------------------------------------------------------------------- % \code @@ -82,44 +74,49 @@ \newidxcmd\option{\code{\textcolor{option}{#1}}} \newidxcmd\module{\code{\textcolor{module}{#1}}} -\newcommand*\key{\@ifstar{\cnltx@key@star}{\cnltx@key@nostar}} +\newrobustcmd*\key{\@ifstar{\cnltx@key@star}{\cnltx@key@nostar}} -\def\cnltx@key@star{% +\newrobustcmd*\cnltx@key@star{% \cnltx@ifdash {\cnltx@key@aux*\meta} {\cnltx@key@aux*\marg}% } -\def\cnltx@key@nostar{% +\newrobustcmd*\cnltx@key@nostar{% \cnltx@ifdash {\cnltx@key@aux{}\meta} {\cnltx@key@aux{}\marg}% } -\def\cnltx@key@aux#1#2#3#4{% +\newcommand*\cnltx@key@aux[4]{% \code{\option#1{#3}\cnltx@isvalue#2{#4}}% } -\newcommand*\keyis{% +\newrobustcmd*\keyis{% \@ifstar - {\cnltx@key@aux*\@firstofone} - {\cnltx@key@aux{}\@firstofone}% + {\cnltx@keyis*} + {\cnltx@keyis{}}% +} +\newrobustcmd*\cnltx@keyis[1]{% + \cnltx@ifdash + {\cnltx@key@aux{#1}\@firstofone} + {\cnltx@key@aux{#1}\Marg}% } % \DeclareListParser*\cnltx@choices{|} -\newcommand*\choices[1]{% +\newrobustcmd*\choices[1]{% \def\cnltx@choice@sep{\def\cnltx@choice@sep{|\hskip\z@}}% \forcsvlist{\cnltx@choice@sep\code}{#1}% } \RequirePackage[normalem]{ulem} -\newcommand*\default[1]{\uline{#1}} +\newrobustcmd*\default[1]{\uline{#1}} \pgfkeys{ cnltx/.cd, default-value/.code = \def\default##1{#1{##1}} } -\newcommand*\choicekey{% +\newrobustcmd*\choicekey{% \@ifstar {\cnltx@choicekey@star} {\cnltx@choicekey@nostar}% @@ -434,26 +431,48 @@ {\expandonce\cnltx@mdframed@options,\unexpanded{#1}}% } -\newbool{cnltx@sidebyside} -\newbool{cnltx@codeleft} +\newbool {cnltx@sidebyside} +\newbool {cnltx@codeleft} \booltrue{cnltx@codeleft} -\newbool{cnltx@codeonly} +\newbool {cnltx@codeonly} +\newbool {cnltx@compile} +\newbool {cnltx@float} +\newbool {cnltx@pagelist} \newsavebox\cnltx@example@box \newcommand*\cnltx@examplesep{\hrulefill} - \newcommand*\cnltx@pre@source@hook{} \newcommand*\cnltx@after@source@hook{} \newcommand*\cnltx@pre@example@hook{} \newcommand*\cnltx@after@example@hook{} - +\newcommand*\cnltx@image@max@height{.5\textheight} +\newcommand*\cnltx@image@options{} +\newcommand*\cnltx@example@fileext{pdf} +\newcommand*\cnltx@float@type{figure} +\newcommand*\cnltx@float@pos{} + \edef\cnltx@float@pos{[\csuse{fps@\cnltx@float@type}]} +\newcommand*\cnltx@float@caption{} +\newcommand*\cnltx@float@start{} +\newcommand*\cnltx@init@float{% + \edef\cnltx@float@start{% + \noexpand\begin{\expandonce\cnltx@float@type}\expandonce\cnltx@float@pos}% +} +\cnltx@init@float + +\newcounter{cnltx@filenumber} +\newcounter{cnltx@runs} +\setcounter{cnltx@runs}{2} +\newcounter{cnltx@pdfpages} +\newcounter{cnltx@maxpages} +\setcounter{cnltx@maxpages}{4} \pgfkeys{ cnltx/.cd, side-by-side/.is if = cnltx@sidebyside , code-only/.is if = cnltx@codeonly , code-left/.is if = cnltx@codeleft , + compile/.is if = cnltx@compile , code-sep/.code = \def\cnltx@examplesep{#1} , pre-code/.code = \def\cnltx@pre@source@hook{#1} , after-code/.code = \def\cnltx@after@source@hook{#1} , @@ -462,23 +481,117 @@ add-frame-options/.code = \cnltx@addmdframedoptions{#1} , frame-options/.code = \mdfdefinestyle{cnltx}{#1} , gobble/.code = \def\cnltx@gobble{#1} , + max-pages/.code = \setcounter{cnltx@maxpages}{#1} , + max-height/.code = \def\cnltx@image@max@height{#1} , + pages/.code = + \cnltx@get@page@list{#1} + \booltrue{cnltx@pagelist} , + runs/.code = \setcounter{cnltx@runs}{#1} , + program/.code = \def\cnltx@compilation@method{#1} , + file-ext/.code = \def\cnltx@example@fileext{#1} , + exe-with/.code = \def\cnltx@compilation@options{#1} , + graphics/.code = \def\cnltx@image@options{#1} , + float/.code = + \ifstrequal{#1}{true} + {% + \booltrue{cnltx@float}% + \edef\cnltx@float@pos{[\csuse{fps@\cnltx@float@type}]}% + }{% + \ifstrequal{#1}{false} + {\boolfalse{cnltx@float}} + {% + \booltrue{cnltx@float}% + \def\cnltx@float@pos{[#1]}% + }% + } + \cnltx@init@float , + float/.default = true , + caption/.code = + \booltrue{cnltx@float}% + \renewcommand\cnltx@float@caption{#1} , + float-pos/.code = \def\cnltx@float@pos{[#1]}\cnltx@init@float +} + +\newcommand*\cnltx@get@page@list[1]{% + \forcsvlist{\cnltx@read@page@list@item}{#1}% +} +\newcommand*\cnltx@read@page@list@item[1]{% + \cnltx@if@in{#1}{-} + {\cnltx@addrangeto@page@list#1\q@stop} + {\cnltx@addto@page@list{#1}}% +} +\newcommand*\cnltx@pagelist{} +\newcommand*\cnltx@addto@page@list[1]{\listadd\cnltx@pagelist{#1}} +\newcommand*\cnltx@addrangeto@page@list{} +\def\cnltx@addrangeto@page@list#1-#2\q@stop{% + \setcounter{cnltx@tmpa}{#1}% + \setcounter{cnltx@tmpb}{#2}% + \whileboolexpr + { test {\ifnumgreater{\value{cnltx@tmpb}+1}{\value{cnltx@tmpa}}} } + {% + \listeadd\cnltx@pagelist{\arabic{cnltx@tmpa}}% + \stepcounter{cnltx@tmpa}% + }% } \newcommand*\cnltx@example@input[1]{% - \trivlist\item\relax - % don't know why this is necessary but it is: - \catcode`\^^M=5\relax - \makeatother - \MakePercentComment - % want special formatting for the input example: - \exampleformat - % we're in a list so the first paragraph is not indented; let's make the - % input example be the second paragraph: - \if@minipage\else - \par\mbox{}\par\vskip-\baselineskip\relax - \fi - \input{#1}% - \endtrivlist + \begingroup + \trivlist\item\relax + % what about those: + % \leftskip\@totalleftmargin + % \rightskip\z@skip + % \@topsep\z@ + % \parskip\z@ + % \partopsep\z@ + % don't know why this is necessary but it is: + \catcode`\^^M=5\relax + \makeatother + \MakePercentComment + % want special formatting for the input example: + \exampleformat + % we're in a list so the first paragraph is not indented; + % let's make the input example be the second paragraph: + \if@minipage\else + \par\mbox{}\par\vskip-\baselineskip\relax + \fi + \input{#1}% + \endtrivlist + \endgroup +} + +\newcommand*\cnltx@exe{\immediate\write18} +\newcommand*\cnltx@program@pdflatex{pdflatex} +\newcommand*\cnltx@program@lualatex{lualatex} +\newcommand*\cnltx@program@xelatex {xelatex} +\newcommand*\cnltx@program@arara {arara} +\newcommand*\cnltx@compile[3]{% + \ifcsdef{cnltx@program@#1} + {% + \setcounter{cnltx@tmpa}{\value{cnltx@runs}}% + \whileboolexpr + { test {\ifnumgreater{\value{cnltx@tmpa}}{0}} } + { + \cnltx@exe{\csuse{cnltx@program@#1}\ifblank{#2}{}{ #2} #3}% + \addtocounter{cnltx@tmpa}{-1}% + }% + } + {\cnltx@example@error{Unknown compilation method `#1'}}% +} +\newcommand*\cnltx@compilation@method{pdflatex} +\newcommand*\cnltx@compilation@options{} + +\newrobustcmd*\cnltx@get@pdfpages[1]{% + \begingroup + \ifxetex + \edef\cnltx@tmpa{\the\XeTeXpdfpagecount #1 }% + \setcounter{cnltx@pdfpages}{\cnltx@tmpa}% + \else + \sbox0{% + \includegraphics{#1}% + \setcounter{cnltx@pdfpages}{\pdflastximagepages}% + }% + \fi + \endgroup } \newcommand*\cnltx@source@input@start[1]{% @@ -493,8 +606,6 @@ {\egroup}{\cnltx@after@source@hook}% } -% - \newcommand*\cnltx@example@start[1]{% \pgfqkeys{/cnltx}{#1}% \cnltx@expandargs(x)\lstset{ @@ -506,15 +617,74 @@ {\mdframed[style=cnltx,nobreak=false]}% } +% #1: filename +% #2: number of pages +% #3: current page +\newcommand*\cnltx@print@documentpage[3]{% + \cnltx@expandargs(x)\setlength\cnltx@tmpa@length{% + \strip@pt\dimexpr1pt/% + \ifnumgreater{#2}{\value{cnltx@maxpages}} + {\value{cnltx@maxpages}} + {#2}% + \relax \noexpand\linewidth + }% + \ifblank{#3}{}{% + \adjustbox{ + frame, + max width = \cnltx@tmpa@length , + max height = \cnltx@image@max@height + }{% + \ifnumgreater{#3}{\value{cnltx@pdfpages}} + {% + \cnltx@example@warning + { + The file `#1.\cnltx@example@fileext' has less than #3 pages, + namely \arabic{cnltx@pdfpages}% + }% + \parbox[b]{\cnltx@tmpa@length}{% + \raggedright + Page number #3 does not exist. \code{#1} only has + \arabic{cnltx@pdfpages} pages.% + }% + } + {% + \expandafter\includegraphics + \expandafter[\cnltx@image@options,page=#3] + {\jobname-cnltx-\arabic{cnltx@filenumber}.\cnltx@example@fileext}% + }% + }% + \ifboolexpr + { + test + {\ifnumgreater{#2}{\value{cnltx@maxpages}}} + and test + { + \ifnumequal + {\cnltx@modulo{#3}{\value{cnltx@maxpages}}} + {0} + } + } + {\newline}{}% + }% +} + +\newcommand*\cnltx@stepcounter@ifnotempty[2]{% + \ifblank{#2}{}{\stepcounter{#1}}% +} + \newcommand*\cnltx@example@end[1]{% \ifblank{#1}{\booltrue{cnltx@codeonly}}{} - \ifbool{cnltx@codeonly} + \ifboolexpr + { + bool {cnltx@codeonly} or + bool {cnltx@compile} + } {} - {% + {% direct input of code example \ifbool{cnltx@sidebyside} - {% + {% side-by-side \ifbool{cnltx@codeleft} - {% + {% code on the left \minipage[c]{% \dimexpr .49\linewidth @@ -532,11 +702,11 @@ \relax }% \cnltx@pre@example@hook - \cnltx@example@input{#1}% + \cnltx@example@input{#1.code}% \cnltx@after@example@hook \endminipage } - {% + {% code on the right \minipage[c]{% \dimexpr .49\linewidth @@ -544,7 +714,7 @@ \relax }% \cnltx@pre@example@hook - \cnltx@example@input{#1}% + \cnltx@example@input{#1.code}% \cnltx@after@example@hook \endminipage\hfill \minipage[c]{% @@ -559,14 +729,86 @@ \endminipage }% } - {% + {% example below \par\noindent\cnltx@examplesep \cnltx@pre@example@hook - \cnltx@example@input{#1}% + \cnltx@example@input{#1.code}% \cnltx@after@example@hook }% }% - \endmdframed + \ifbool{cnltx@compile} + {% compile file and include document + \cnltx@ifshellescape + {% + \cnltx@example@info + {% + Compiling example `#1.tex' \arabic{cnltx@runs} + time\ifnum\value{cnltx@runs}>1s\fi\space with + \cnltx@compilation@method + }% + \cnltx@expandargs(oo)\cnltx@compile + {\cnltx@compilation@method} + {\cnltx@compilation@options} + {#1.tex}% + } + {% + \cnltx@example@warning + {`shellescape' or `write18' nor enabled -- I'm not compiling}% + }% + \IfFileExists{#1.\cnltx@example@fileext} + {% + \cnltx@get@pdfpages{#1.\cnltx@example@fileext}% + \setcounter{cnltx@tmpa}{1}% + \setcounter{cnltx@tmpb}{\value{cnltx@pdfpages}}% + \ifbool{cnltx@float} + {% + \endmdframed + \cnltx@float@start + } + {\par\noindent\cnltx@examplesep\par}% + \cnltx@pre@example@hook + \ifbool{cnltx@pagelist} + {% + \setcounter{cnltx@tmpa}{0}% + \forlistloop + {\cnltx@stepcounter@ifnotempty{cnltx@tmpa}} + \cnltx@pagelist + \ifnumgreater{\value{cnltx@tmpa}}{1} + {\noindent} + {\centering}% + \forlistloop + {\cnltx@print@documentpage{#1.\cnltx@example@fileext}{\value{cnltx@tmpa}}} + \cnltx@pagelist + } + {% + \ifnumequal{\value{cnltx@pdfpages}}{1} + {\centering} + {\noindent}% + \whileboolexpr + { test {\ifnumgreater{\value{cnltx@tmpb}}{0}} } + {% + \cnltx@print@documentpage + {#1.\cnltx@example@fileext} + {\value{cnltx@pdfpages}} + {\value{cnltx@tmpa}}% + \stepcounter{cnltx@tmpa}% + \setcounter{cnltx@tmpb}{\numexpr\value{cnltx@tmpb}-1\relax}% + } + }% + \ifbool{cnltx@float} + {% + \cnltx@after@example@hook + \ifdefvoid\cnltx@float@caption{}{\caption{\cnltx@float@caption}}% + \expandafter\end\expandafter{\cnltx@float@type}% + } + {% + \cnltx@after@example@hook + \endmdframed + }% + } + {\endmdframed}% + }% + {\endmdframed}% \ignorespacesafterend } @@ -574,11 +816,16 @@ \lstnewenvironment{#2}[1][] {% \cnltx@example@start{##1,#1}% - \cnltx@source@input@start{\jobname.cnltx.code}% + \ifbool{cnltx@compile}{% + \stepcounter{cnltx@filenumber}% + \cnltx@source@input@start{\jobname-cnltx-\arabic{cnltx@filenumber}.tex}% + }{\cnltx@source@input@start{\jobname-cnltx.code}}% } {% \cnltx@source@input@end - \cnltx@example@end{\jobname.cnltx.code}% + \ifbool{cnltx@compile} + {\cnltx@example@end{\jobname-cnltx-\arabic{cnltx@filenumber}}} + {\cnltx@example@end{\jobname-cnltx}}% % see http://tex.stackexchange.com/a/136264/5049 % for the reasoning behind this: \if@nobreak @@ -695,4 +942,16 @@ HISTORY: 2013/10/04 v0.7a - new command \cnltx@treat@lst@index - changed \envidx in listings into \indexenv - added \bnd for package bundles +2013/11/22 v0.9 - new option `compile' that allows to compile source code + examples (which need to be complete, of course) with + pdflatex and include the documents afterwards + - new options `max-pages' that determines the maximum number + of pages before a line break if documents are included with + `compile' + - new option `graphics' + - new option `runs' that specifies the number of compilation + runs of the included example + - new options `program' and `exe-with' + - new option `float', `float-pos' and `caption' + diff --git a/Master/texmf-dist/tex/latex/cnltx/cnltx-listings.sty b/Master/texmf-dist/tex/latex/cnltx/cnltx-listings.sty index 5c7a552ecf3..2ae39f065b8 100644 --- a/Master/texmf-dist/tex/latex/cnltx/cnltx-listings.sty +++ b/Master/texmf-dist/tex/latex/cnltx/cnltx-listings.sty @@ -285,7 +285,7 @@ -,@, % csnames beginning with @: @alph,@Alph,@arabic, - @ctrerr, + @car,@cdr,@ctrerr, @empty, @firstofone,@firstoftwo, @gobble, @@ -294,6 +294,7 @@ @ifpackageloaded, @ifstar, @makefnmark, + @nil, @roman,@Roman, @secondoftwo, @slowromancap, @@ -337,6 +338,7 @@ angle, approx, appto, + apptocmd, arabic, arccos, arcsin, @@ -501,10 +503,19 @@ cr, crcr, cref, - csdef, + csappto,cseappto,csgappto,csxappto, csc, + csdef,csedef,csgdef,csxdef, + csdimdef,csdimgdef, + csexpandonce, + csgluedef,csgluegdef, cslet,csletcs, + csmudef,csmugdef, csname, + csnumdef,csnumgdef, + cspreto,csepreto,csgpreto,csxpreto, + csshow, + csundef, csuse, cup, CurrentOption, @@ -575,8 +586,10 @@ defaultscriptratio, defaultscriptscriptratio, defaultskewchar, + defcounter, deffootnote,deffootnotemark, definecolor, + deflength, deg, delcode, delimiter, @@ -592,6 +605,7 @@ diamond, diamondsuit, dim, + dimdef,dimgdef, dimen, dimendef, dimexpr, @@ -622,6 +636,7 @@ downbracefill, dp, % E + eappto, edef, egroup, eject, @@ -655,6 +670,7 @@ enskip, enspace, ensuremath, + epreto, epsilon, eqalign, eqalignno, @@ -738,6 +754,7 @@ % G gamma, Gamma, + gappto, gcd, ge, GenericError, @@ -752,7 +769,9 @@ global, globaldefs, glossary, + gluedef,gluegdef, goodbreak, + gpreto, grave, % H H, @@ -820,9 +839,11 @@ ifmmode, ifnum, ifodd, + ifpatchable, ifstr, ifstrempty, ifstrequal, + iftoggle, iftrue, ifvbox, ifvmode, @@ -937,7 +958,7 @@ leq, leqalignno, leqno, - let, + let,letcs, lfloor, limits, linepenalty, @@ -1077,6 +1098,7 @@ mscount, mskip, mu, + mudef,mugdef, multicolumn, multiply, multiput, @@ -1119,6 +1141,7 @@ newsavebox, newskip, newtheorem, + newtoggle, newtoks, NewTranslation, newwrite, @@ -1155,6 +1178,8 @@ normallineskiplimit, normalsize, notblank, + notbool, + nottoggle, nopagebreak, not, notin, @@ -1164,6 +1189,7 @@ nullfont, number, numberline, + numdef,numgdef, numexpr, nwarrow, % O @@ -1277,6 +1303,7 @@ predisplaysize, preloaded, preto, + pretocmd, pretolerance, prevdepth, prevgraf, @@ -1292,13 +1319,21 @@ propto, protect, protected, + protected@eappto,protected@xappto, + protected@edef.protected@xdef, + protected@epreto,protected@xpreto, + protected@cseappto,protected@csxappto, + protected@csedef,protected@csxdef, + protected@csepreto,protected@csxpreto, protecting, + providebool, providecommand,providerobustcmd, ProvidesClass, ProvideDictionaryFor, ProvidesFile, ProvidesPackage, ProvideTextCommand, + providetoggle, psi, Psi, pushtabs, @@ -1392,6 +1427,7 @@ sectionmark, selectfont, selectlanguage, + setbool, setbox, setcapindent, setcounter, @@ -1414,6 +1450,7 @@ SetSymbolFont, settabs, settodepth, + settoggle, settoheight, settowidth, SetTracking, @@ -1624,6 +1661,7 @@ title, to, today + togglefalse,toggletrue, toks, toksdef, tolerance,, @@ -1647,6 +1685,7 @@ tracingoutput, tracingpages, tracingparagraphs, + tracingpatches, tracingrestores, tracingstats, triangle, @@ -1666,6 +1705,7 @@ uccode, uchyph, unboldmath, + undef, underbar, underbrace, underline, @@ -1747,6 +1787,7 @@ wr, write, % X + xappto, xdef, xdefinecolor, XeLaTeX, @@ -1754,6 +1795,7 @@ xi, Xi, xleaders, + xpreto, xspaceskip, % Y year, @@ -1928,5 +1970,6 @@ HISTORY: list if they're equal both in entry type and cite key - added drivers `@class' and `@bundle' 2013/10/21 v0.8 - added missing comma in list of commands +2013/10/21 v0.9 - added internal LaTeX commands and a number of `etoolbox' + macros -TODO: diff --git a/Master/texmf-dist/tex/latex/cnltx/cnltx-tools.sty b/Master/texmf-dist/tex/latex/cnltx/cnltx-tools.sty index 67765297dfd..8fa35c97df4 100644 --- a/Master/texmf-dist/tex/latex/cnltx/cnltx-tools.sty +++ b/Master/texmf-dist/tex/latex/cnltx/cnltx-tools.sty @@ -199,6 +199,7 @@ \newabbr\usw{usw} \newabbr\usf{usf} \newabbr\uswusf{usw.\@\space usf} +\newabbr\bzw{bzw} \newabbr\dsh{d.\,h} \newabbr\Dsh{D.\,h} \newabbr\vgl{vgl} @@ -217,4 +218,5 @@ HISTORY: 2013/09/10 v0.2 - first published version 2013/09/30 v0.7 - added abbreviations +2013/11/22 v0.9 - \bzw diff --git a/Master/texmf-dist/tex/latex/cnltx/cnltx.bbx b/Master/texmf-dist/tex/latex/cnltx/cnltx.bbx index 16b887ab95c..de65f393e8c 100644 --- a/Master/texmf-dist/tex/latex/cnltx/cnltx.bbx +++ b/Master/texmf-dist/tex/latex/cnltx/cnltx.bbx @@ -1,13 +1,14 @@ -\@ifclassloaded{cnltx-doc}{}{% - \GenericError - {(cnltx.bbx)\@spaces\@spaces\@spaces\@spaces} - {cnltx bibliography style error: invalid class} - {See the cnltx bundle documentation for explanation.} - {% - The `cnltx' bibliography style can only be used with the `cnltx-doc' - document class% - }% -} +% \@ifclassloaded{cnltx-doc}{}{% +% \GenericError +% {(cnltx.bbx)\@spaces\@spaces\@spaces\@spaces} +% {cnltx bibliography style error: invalid class} +% {See the cnltx bundle documentation for explanation.} +% {% +% The `cnltx' bibliography style can only be used with the `cnltx-doc' +% document class% +% }% +% } +\RequirePackage{cnltx-example} \ProvidesFile{cnltx.bbx}[\cnltx@@date\space \cnltx@@version\space \cnltx@@info] \RequireBibliographyStyle{alphabetic} @@ -125,6 +126,8 @@ \endinput HISTORY: - +2013/09/14 v0.4 - first version added to the bundle 2013/10/04 v0.7a - added drivers `@class' and `@bundle' +2013/11/22 v0.9 - made independent from the `cnltx-doc' class + diff --git a/Master/texmf-dist/tex/latex/cnltx/cnltx.cbx b/Master/texmf-dist/tex/latex/cnltx/cnltx.cbx index 142467d2af2..3d7493b3cf7 100644 --- a/Master/texmf-dist/tex/latex/cnltx/cnltx.cbx +++ b/Master/texmf-dist/tex/latex/cnltx/cnltx.cbx @@ -1,13 +1,14 @@ -\@ifclassloaded{cnltx-doc}{}{% - \GenericError - {(cnltx.cbx)\@spaces\@spaces\@spaces\@spaces} - {cnltx citation style error: invalid class} - {See the cnltx bundle documentation for explanation.} - {% - The `cnltx' citation style can only be used with the `cnltx-doc' - document class% - }% -} +% \@ifclassloaded{cnltx-doc}{}{% +% \GenericError +% {(cnltx.cbx)\@spaces\@spaces\@spaces\@spaces} +% {cnltx citation style error: invalid class} +% {See the cnltx bundle documentation for explanation.} +% {% +% The `cnltx' citation style can only be used with the `cnltx-doc' +% document class% +% }% +% } +\RequirePackage{cnltx-example} \ProvidesFile{cnltx.cbx}[\cnltx@@date\space \cnltx@@version\space \cnltx@@info] \RequireCitationStyle{alphabetic} @@ -24,3 +25,7 @@ \endinput + +HISTORY +2013/01/14 v0.4 - first version added to the bundle +2013/11/22 v0.9 - made independent from the `cnltx-doc' class diff --git a/Master/texmf-dist/tex/latex/cnltx/cnltx.dbx b/Master/texmf-dist/tex/latex/cnltx/cnltx.dbx index b757744ffe2..94fd0e2c721 100644 --- a/Master/texmf-dist/tex/latex/cnltx/cnltx.dbx +++ b/Master/texmf-dist/tex/latex/cnltx/cnltx.dbx @@ -1,13 +1,14 @@ -\@ifclassloaded{cnltx-doc}{}{% - \GenericError - {(cnltx.dbx)\@spaces\@spaces\@spaces\@spaces} - {cnltx datamodel error: invalid class} - {See the cnltx bundle documentation for explanation.} - {% - The `cnltx' biblatex datamodel can only be used with the `cnltx-doc' - document class% - }% -} +% \@ifclassloaded{cnltx-doc}{}{% +% \GenericError +% {(cnltx.dbx)\@spaces\@spaces\@spaces\@spaces} +% {cnltx datamodel error: invalid class} +% {See the cnltx bundle documentation for explanation.} +% {% +% The `cnltx' biblatex datamodel can only be used with the `cnltx-doc' +% document class% +% }% +% } +\RequirePackage{cnltx-example} \DeclareDatamodelFields[type=list, datatype=name]{maintainer} \DeclareDatamodelEntryfields[package,class,bundle]{ author, @@ -33,5 +34,6 @@ \endinput HISTORY: - +2013/09/14 v0.4 - first version added to the bundle 2013/10/04 v0.7a - added drivers `@class' and `@bundle' +2013/11/22 v0.9 - made independent from the `cnltx-doc' class diff --git a/Master/texmf-dist/tex/latex/cnltx/cnltx.sty b/Master/texmf-dist/tex/latex/cnltx/cnltx.sty new file mode 100644 index 00000000000..6be04404bff --- /dev/null +++ b/Master/texmf-dist/tex/latex/cnltx/cnltx.sty @@ -0,0 +1,46 @@ +% -------------------------------------------------------------------------- +% the CNLTX bundle +% +% LaTeX source code and output +% +% -------------------------------------------------------------------------- +% Clemens Niederberger +% Web: https://github.com/cgnieder/cnltx/ +% E-Mail: contact@mychemistry.eu +% -------------------------------------------------------------------------- +% Copyright 2013 Clemens Niederberger +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) 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. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Clemens Niederberger. +% -------------------------------------------------------------------------- +% If you have any ideas, questions, suggestions or bugs to report, please +% feel free to contact me. +% -------------------------------------------------------------------------- +\RequirePackage{cnltx-base} +\ProvidesPackage{cnltx}[\cnltx@@date\space \cnltx@@version\space \cnltx@@info] + +\newcommand*\cnltx@register@module[1]{% + \DeclareOption{#1}{\AtEndOfPackage{\RequirePackage{cnltx-#1}}}% +} + +\cnltx@register@module{listings} +\cnltx@register@module{example} +\cnltx@register@module{tools} + +\ProcessOptions* + +\endinput + +HISTORY: +2013/11/22 v0.9 - first added to the bundle + + -- cgit v1.2.3