From 63e73c3808dd65036101306e76f07367375c2cbf Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 3 Feb 2013 23:19:06 +0000 Subject: styles for doc in doc/ git-svn-id: svn://tug.org/texlive/trunk@29020 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/concepts/dry.sty | 56 ++++ .../texmf-dist/doc/latex/concepts/packagedoc.cls | 353 +++++++++++++++++++++ Master/texmf-dist/doc/latex/concepts/with.sty | 309 ++++++++++++++++++ Master/texmf-dist/tex/latex/concepts/dry.sty | 56 ---- .../texmf-dist/tex/latex/concepts/packagedoc.cls | 353 --------------------- Master/texmf-dist/tex/latex/concepts/with.sty | 309 ------------------ Master/tlpkg/libexec/ctan2tds | 1 + 7 files changed, 719 insertions(+), 718 deletions(-) create mode 100644 Master/texmf-dist/doc/latex/concepts/dry.sty create mode 100644 Master/texmf-dist/doc/latex/concepts/packagedoc.cls create mode 100644 Master/texmf-dist/doc/latex/concepts/with.sty delete mode 100644 Master/texmf-dist/tex/latex/concepts/dry.sty delete mode 100644 Master/texmf-dist/tex/latex/concepts/packagedoc.cls delete mode 100644 Master/texmf-dist/tex/latex/concepts/with.sty diff --git a/Master/texmf-dist/doc/latex/concepts/dry.sty b/Master/texmf-dist/doc/latex/concepts/dry.sty new file mode 100644 index 00000000000..fd639991cee --- /dev/null +++ b/Master/texmf-dist/doc/latex/concepts/dry.sty @@ -0,0 +1,56 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \iffalse %%%% +% % +% Copyright (c) 2012 - Michiel Helvensteijn (www.mhelvens.net) % +% % +% http://latex-with.googlecode.com % +% % +% 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 `author-maintained'. % +% % +% The Current Maintainer of this work is Michiel Helvensteijn. % +% % +% This work consists of the file dry.sty. % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \fi %%%% + +% I will 'officially' release this package at some point in the future. For +% now I'm just using it to document a couple of packages. Still, it's +% released under LPPL, so use it as you will. +% +% -- Michiel Helvensteijn + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{dry} + [2012/12/19 convenience macros for reusing LaTeX code] + +\RequirePackage{filecontents} +\RequirePackage{xparse} +\RequirePackage{etoolbox} +\RequirePackage{with} + +\newcommand\minput[1]{% + \input{#1}\unskip% +} + +\NewDocumentCommand{\NewDRYer}{m +m}{% + \with{un} [#1] [#2] {% + \newenvironment{#1}{% + \begingroup% + \@tempswafalse\filec@ntents{##1.tmp}% + }{% + \endfilecontents% + \endgroup% + }% + \AfterEndEnvironment{#1}{% + \with{xn} [##1.tmp] [\minput{##1.tmp}] {% + ##2% + }% + }% + }% +} diff --git a/Master/texmf-dist/doc/latex/concepts/packagedoc.cls b/Master/texmf-dist/doc/latex/concepts/packagedoc.cls new file mode 100644 index 00000000000..1c261b98362 --- /dev/null +++ b/Master/texmf-dist/doc/latex/concepts/packagedoc.cls @@ -0,0 +1,353 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Copyright (C) 2012 by Michiel Helvensteijn - www.mhelvens.net % +% % +% 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 `author-maintained'. % +% % +% The Current Maintainer of this work is Michiel Helvensteijn. % +% % +% This work consists of the file packagedoc.cls. % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\let\packagename\jobname + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Document Class % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\LoadClassWithOptions{ltxdoc} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Importing The Relevant Package % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\RequirePackage{\packagename} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Importing Other Packages % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\RequirePackage{etoolbox} +\RequirePackage[xcolor]{mdframed} +\RequirePackage{marginnote} +\RequirePackage{listings} +\RequirePackage{textcomp} +\RequirePackage[pdftex,colorlinks=true]{hyperref} +\RequirePackage{dry} +\RequirePackage{needspace} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Documentation Options % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\EnableCrossrefs +\CodelineIndex +\RecordChanges + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% File Info % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\GetFileInfo{\packagename.sty} + +\title{The \textsf{\packagename} package\thanks{% + This document corresponds to \textsf{\packagename}~\fileversion, + dated \filedate.% +}} + +\author{ + Michiel Helvensteijn\\ + \href{mailto:mhelvens+latex@gmail.com}{mhelvens+latex@gmail.com} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Development Info % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newmdenv[ + leftline = false, + rightline = false +]{bannerframe} + +\apptocmd{\maketitle}{ + \begin{bannerframe} + \small + \begin{center} + Development of this package is organized at + \href{http://latex-\packagename.googlecode.com} + {latex-\packagename.googlecode.com}.\\ + I am happy to receive feedback there! + \end{center} + \end{bannerframe} +}{}{} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Skipping Paragraph Indentation After Specific Stuff % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\let\packagedoc@old@par\par + +\newcommand*{\noindentnext}{% + \def\par{% + \packagedoc@old@par% + \noindent% + \let\par\packagedoc@old@par% + }% +} + +\newcommand*{\noindentafterenv}[1]{ + \AfterEndEnvironment{#1}{\noindentnext} +} + +\newcommand*{\noindentaftercmd}[1]{ + \apptocmd{#1}{\noindentnext}{}{ + \ClassError{packagedoc} + {Could not patch \protect#1\space command.} + {Oops! I tried to auto-skip any indentation after the + \protect#1\space command, but I failed somehow.} + } +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Example Environment Setup % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%% Extra keywords for LaTeX +% +\newcommand{\moretexcs}[1]{ + \lstdefinelanguage{latex}{ + language=[LaTeX]tex, + moretexcs={ExplSyntaxOn,ExplSyntaxOff,lstinputlisting,detokenize,#1} + } +} + +%%% Code formatting +% +\lstdefinestyle{examplecode}{% + language=latex,% + basicstyle=\ttfamily\small,% + texcsstyle=*\bfseries,% + upquote=true% +} + + + +%%% Setting up example code block +% +\definecolor{examplecodelinecolor}{rgb}{0,0,0} +\definecolor{examplecodebackgroundcolor}{rgb}{.9,.9,.9} +\newmdenv[ + linecolor = examplecodelinecolor, + backgroundcolor = examplecodebackgroundcolor, + skipabove = 0px, + skipbelow = 0px, + innertopmargin = -3px, + innerrightmargin = 4px, + innerbottommargin = -3px, + innerleftmargin = 4px +]{examplecodeframe} + +%%% Defining example output block +% +\definecolor{exampleoutputbackgroundcolor}{rgb}{1,1,1} +\newmdenv[ + linecolor = examplecodelinecolor, + backgroundcolor = exampleoutputbackgroundcolor, + skipabove = 0px, + skipbelow = 0px, + innertopmargin = 4px, + innerrightmargin = 4px, + innerbottommargin = 4px, + innerleftmargin = 4px +]{exampleoutputframe} + +%%% Macros for counting lines in file, adapted from +%%% http://andreas.scherbaum.la/blog/archives/ +%%% 670-Read-number-lines-in-a-file-in-LaTeX.html +% +\RequirePackage{ifthen} +\newboolean{packagedoc@restfile} +\newcommand*{\packagedoc@fileline}{} +\newread\packagedoc@file +\newcommand*{\packagedoc@readnextline}[1]{% + \ifthenelse{\boolean{packagedoc@restfile}}{% + \read#1 to \packagedoc@fileline% + \ifeof#1\setboolean{packagedoc@restfile}{false}% + \else\fi% + }{}% +} +\newcommand*{\countlinesinfile}[2]{% + \setboolean{packagedoc@restfile}{true}% + \setcounter{packagedoc@linecount}{0}% + \openin\packagedoc@file=#1% + \whiledo{\boolean{packagedoc@restfile}}{% + \packagedoc@readnextline{\packagedoc@file}% + \ifthenelse{\boolean{packagedoc@restfile}}{% + \stepcounter{packagedoc@linecount}% + }{}% + }% + \closein\packagedoc@file% + \edef#2{\thepackagedoc@linecount}% +} + +\newcounter{packagedoc@linecount} +\newlength{\packagedoc@spacetoreserve} + +%%% DRYer without output +% +\NewDRYer{latex-example}{% + \addvspace{4px}% + {% + \ttfamily\small% + \countlinesinfile{#1}{\countedlines}% + \setlength{\packagedoc@spacetoreserve}{\countedlines\baselineskip}% + \addtolength{\packagedoc@spacetoreserve}{-4px}% + \needspace{\packagedoc@spacetoreserve}% + }% + \begin{examplecodeframe}% + \renewcommand{\ttdefault}{pcr}% + \lstinputlisting[style=examplecode]{#1}% + \end{examplecodeframe}% + #2% + \noindentnext% + \addvspace{4px}% +} + +%%% DRYer WITH output but WITHOUT side-effects +% +\NewDRYer{latex-example-show}{% + \addvspace{4px}% + {% + \ttfamily\small% + \countlinesinfile{#1}{\countedlines}% + \setlength{\packagedoc@spacetoreserve}{\countedlines\baselineskip}% + \addtolength{\packagedoc@spacetoreserve}{\baselineskip}% + \needspace{\packagedoc@spacetoreserve}% + }% + \begin{examplecodeframe}% + \renewcommand{\ttdefault}{pcr}% + \lstinputlisting[style=examplecode]{#1}% + \end{examplecodeframe}\vspace{-4px}% + \begin{exampleoutputframe}% + #2% + \end{exampleoutputframe}% + \noindentnext% + \addvspace{4px}% +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Implementation Code Box Setup % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%% Saving old implementation code block font +% +\AtBeginDocument{\let\old@macro@font\macro@font} + +%%% Setup for 'interesting' implementation code blocks +% +\definecolor{interestingcodebackgroundcolor}{rgb}{.9,.9,.9} +\definecolor{interestingcodelinecolor}{rgb}{0,0,0} +\mdfdefinestyle{interestingcode}{ + linecolor = interestingcodelinecolor, + backgroundcolor = interestingcodebackgroundcolor +} +\newcommand*{\interesting}{% + \def\codestyle{interestingcode}% + \def\codeskipabove{5px}% + \let\macro@font\old@macro@font% +} + +%%% Setup for 'UNinteresting' implementation code blocks +% +\definecolor{uninterestingcodebackgroundcolor}{rgb}{.97,.97,.97} +\definecolor{uninterestingcodelinecolor}{rgb}{.5,.5,.5} +\definecolor{uninterestingcodecolor}{rgb}{.4,.4,.4} +\mdfdefinestyle{uninterestingcode}{ + linecolor = uninterestingcodelinecolor, + backgroundcolor = uninterestingcodebackgroundcolor, +} +\newcommand*{\uninteresting}{% + \def\codestyle{uninterestingcode}% + \def\codeskipabove{-5px}% + \def\macro@font{\color{uninterestingcodecolor}\old@macro@font}% +} + +%%% Actually surround 'macrocode' with the frame +% +\surroundwithmdframed[ + style = \codestyle, + skipabove = \codeskipabove, + skipbelow = 5px, + splittopskip = 10px, + splitbottomskip = 4px, + innertopmargin = 4px, + innerrightmargin = 4px, + innerbottommargin = 4px, + innerleftmargin = 4px +]{macrocode} + +\noindentafterenv{macrocode} + +%%% Start out with 'interesting' code status and +%%% always go back to it after one code block +% +\interesting +\AfterEndEnvironment{macrocode}{\interesting} + +%%% No indentation after macrocode block +% +\noindentafterenv{macrocode} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Argument Specifiers and such % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newcommand*{\movarg}[1]{[ \texttt{#1} ]} +\newcommand*{\momarg}[1]{[ \meta{#1} ]} + +\newcommand{\describemacro}[2]{% + \needspace{3\baselineskip}% + \noindent\\\DescribeMacro{#1} #2\\\noindentnext% +} + +\newcommand{\describemetamacro}[2]{% + \needspace{3\baselineskip}% + \noindent\\\marginnote{\meta{#1}} #2\\\noindentnext% +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Other Stuff % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\noindentafterenv{description} +\noindentafterenv{itemize} +\noindentafterenv{enumerate} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Automatic Implementation Docs % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\AtEndDocument{ + \pagebreak + + \section{Implementation} + + \StopEventually {\PrintChanges} + + We now show and explain the entire implementation from \texttt{\packagename.sty}. + + \DocInput{\packagename.sty} + + \Finale + + \PrintIndex +} diff --git a/Master/texmf-dist/doc/latex/concepts/with.sty b/Master/texmf-dist/doc/latex/concepts/with.sty new file mode 100644 index 00000000000..49e16dac493 --- /dev/null +++ b/Master/texmf-dist/doc/latex/concepts/with.sty @@ -0,0 +1,309 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \iffalse %%%% +% % +% Copyright (c) 2012 - Michiel Helvensteijn (www.mhelvens.net) % +% % +% http://latex-with.googlecode.com % +% % +% 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 `author-maintained'. % +% % +% The Current Maintainer of this work is Michiel Helvensteijn. % +% % +% This work consists of the file with.sty and with.tex. % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \fi %%%% + +% \CheckSum{0} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \subsection{Package Info} % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\RequirePackage{expl3} +\ProvidesExplPackage{with}{2012/12/23}{0.0.1} + {an inline construct for passing token lists as parameters} +% \end{macrocode} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \subsection{Required Packages} % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +% \begin{macrocode} +\RequirePackage{xparse} +\RequirePackage{l3regex} +% \end{macrocode} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \subsection{Package Code} % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +% \begin{macrocode} +\cs_generate_variant:Nn \cs_generate_variant:Nn {cn} +% \end{macrocode} + + + +% \begin{macrocode} +\cs_new:Nn \gen_use:nn { + \cs_generate_variant:cn + { #1 : \prg_replicate:nn{\tl_count:n{#2}}{n} } + { #2 } + \use:c{ #1 : #2 } +} +% \end{macrocode} + + + +% \begin{macrocode} +\cs_new_protected:Nn \with:n {#1} +\cs_new_protected:Nn \with:nn { + \cs_set:Npn \__with:n ##1 {#2} + \__with:n {#1} } +\cs_new_protected:Nn \with:nnn { + \cs_set:Npn \__with:nn ##1##2 {#3} + \__with:nn {#1}{#2} } +\cs_new_protected:Nn \with:nnnn { + \cs_set:Npn \__with:nnn ##1##2##3 {#4} + \__with:nnn {#1}{#2}{#3} } +\cs_new_protected:Nn \with:nnnnn { + \cs_set:Npn \__with:nnnn ##1##2##3##4 {#5} + \__with:nnnn {#1}{#2}{#3}{#4} } +\cs_new_protected:Nn \with:nnnnnn { + \cs_set:Npn \__with:nnnnn ##1##2##3##4##5 {#6} + \__with:nnnnn {#1}{#2}{#3}{#4}{#5} } +\cs_new_protected:Nn \with:nnnnnnn { + \cs_set:Npn \__with:nnnnnn ##1##2##3##4##5##6 {#7} + \__with:nnnnnn {#1}{#2}{#3}{#4}{#5}{#6} } +\cs_new_protected:Nn \with:nnnnnnnn { + \cs_set:Npn \__with:nnnnnnn ##1##2##3##4##5##6##7 {#8} + \__with:nnnnnnn {#1}{#2}{#3}{#4}{#5}{#6}{#7} } +\cs_new_protected:Nn \with:nnnnnnnnn { + \cs_set:Npn \__with:nnnnnnnn ##1##2##3##4##5##6##7##8 {#9} + \__with:nnnnnnnn {#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8} } +% \end{macrocode} + + + +% \begin{macrocode} +\msg_new:nnnn{with}{invalid-parameter-specs}{ + The~argument~specification~'#1'~is~not~valid. +}{ + The~argument~specification~should~consist~of~between~ + one~and~seven~of~the~letters~'n',~'o',~'f',~'x',~'u'~or~'U'. +} +% \end{macrocode} + + + +% \begin{macrocode} +\msg_new:nnnn{with}{invalid-parameter-number}{ + You~specified~#1~arguments~but~provided~#2. +}{ + Your~argument~specification~is~'#3',~which~means~you~should~ + provide~#1~optional~arguments.~However,~you~provided~only~#2. +} +% \end{macrocode} + + + +% \begin{macrocode} +\tl_new:N \l__with_argspec_tl +\tl_new:c {l__with_p_1_tl} \tl_new:c {l__with_p_2_tl} +\tl_new:c {l__with_p_3_tl} \tl_new:c {l__with_p_4_tl} +\tl_new:c {l__with_p_5_tl} \tl_new:c {l__with_p_6_tl} +\tl_new:c {l__with_p_7_tl} +\tl_new:N \l__with_code_tl +% \end{macrocode} + + + +% \begin{macrocode} +\int_new:N \l__with_arg_int +\cs_new:Nn \__with_param_name: { + l__with_p_ + \int_use:N\l__with_arg_int + _tl +} +% \end{macrocode} + + + +% \begin{macrocode} +\tl_new:N \l__with_unique_counter_tl +\tl_new:N \l__with_param_tl +% \end{macrocode} + + + +% \begin{macrocode} +\cs_generate_variant:Nn \with:nn {xn} +\cs_generate_variant:Nn \with:nnnnnnnnn {oooooooon} +% \end{macrocode} + + + +% \begin{macrocode} +\NewDocumentCommand \with {m +o +o +o +o +o +o +o +m} { +% \end{macrocode} + + + +% \begin{macrocode} + \regex_match:nnF {^[noxfuU]{1,7}$} {#1} + { \msg_critical:nnn{with}{invalid-parameter-specs}{#1} } +% \end{macrocode} + + + +% \begin{macrocode} + \tl_set:Nn \l__with_argspec_tl {#1} + \int_zero:N \l__with_arg_int + \IfValueT{#2} { + \tl_set:cn {l__with_p_1_tl} {#2} \int_incr:N \l__with_arg_int + \IfValueT{#3} { + \tl_set:cn {l__with_p_2_tl} {#3} \int_incr:N \l__with_arg_int + \IfValueT{#4} { + \tl_set:cn {l__with_p_3_tl} {#4} \int_incr:N \l__with_arg_int + \IfValueT{#5} { + \tl_set:cn {l__with_p_4_tl} {#5} \int_incr:N \l__with_arg_int + \IfValueT{#6} { + \tl_set:cn {l__with_p_5_tl} {#6} \int_incr:N \l__with_arg_int + \IfValueT{#7} { + \tl_set:cn {l__with_p_6_tl} {#7} \int_incr:N \l__with_arg_int + \IfValueT{#8} { + \tl_set:cn {l__with_p_7_tl} {#8} \int_incr:N \l__with_arg_int + }}}}}}} + \tl_set:Nn \l__with_code_tl {#9} +% \end{macrocode} + + + +% \begin{macrocode} + \int_compare:nNnF {\tl_count:n{#1}} = {\l__with_arg_int} { + \msg_error:nnxxx{with}{invalid-parameter-number} + { \tl_count:n{#1} } + { \int_use:N \l__with_arg_int } + { #1 } + } +% \end{macrocode} + + + +% \begin{macrocode} + \tl_replace_all:Nnn \l__with_argspec_tl {u} {x} + \tl_replace_all:Nnn \l__with_argspec_tl {U} {c} +% \end{macrocode} + + + +% \begin{macrocode} + \int_zero:N \l__with_arg_int + \tl_map_inline:nn {#1} { + \int_incr:N \l__with_arg_int +% \end{macrocode} + + + +% \begin{macrocode} + \tl_if_in:nnT {uU} {##1} { + \tl_set:Nx \l__with_unique_counter_tl + { g__with_unique_ \use:c{\__with_param_name:} _count_int } + + \int_if_exist:cF {\l__with_unique_counter_tl} + { \int_new:c {\l__with_unique_counter_tl} } + + \int_incr:c {\l__with_unique_counter_tl} + + \tl_put_left:cx {\__with_param_name:} + { g_with_unique_ } + + \tl_put_right:cx {\__with_param_name:} + { _ \int_use:c{\l__with_unique_counter_tl} } + } +% \end{macrocode} + + + +% \uninteresting\begin{macrocode} + } +% \end{macrocode} + + + +% \begin{macrocode} + \with:oooooooon {\l__with_argspec_tl} + {\cs:w l__with_p_1_tl \cs_end:} + {\cs:w l__with_p_2_tl \cs_end:} + {\cs:w l__with_p_3_tl \cs_end:} + {\cs:w l__with_p_4_tl \cs_end:} + {\cs:w l__with_p_5_tl \cs_end:} + {\cs:w l__with_p_6_tl \cs_end:} + {\cs:w l__with_p_7_tl \cs_end:} { + \with:oooooooon {##1o}{##2}{##3}{##4} + {##5}{##6}{##7}{##8} { + \int_case:nnn {\l__with_arg_int} { + {1} { \gen_use:nn{with}{####1} + {####2} {\l__with_code_tl} } + {2} { \gen_use:nn{with}{####1} + {####2}{####3} {\l__with_code_tl} } + {3} { \gen_use:nn{with}{####1} + {####2}{####3}{####4} {\l__with_code_tl} } + {4} { \gen_use:nn{with}{####1} + {####2}{####3}{####4} + {####5} {\l__with_code_tl} } + {5} { \gen_use:nn{with}{####1} + {####2}{####3}{####4} + {####5}{####6} {\l__with_code_tl} } + {6} { \gen_use:nn{with}{####1} + {####2}{####3}{####4} + {####5}{####6}{####7} {\l__with_code_tl} } + {7} { \gen_use:nn{with}{####1} + {####2}{####3}{####4} + {####5}{####6}{####7} + {####8} {\l__with_code_tl} } + }{} + } + } +% \end{macrocode} + + + +% \uninteresting\begin{macrocode} +} +% \end{macrocode} + + diff --git a/Master/texmf-dist/tex/latex/concepts/dry.sty b/Master/texmf-dist/tex/latex/concepts/dry.sty deleted file mode 100644 index fd639991cee..00000000000 --- a/Master/texmf-dist/tex/latex/concepts/dry.sty +++ /dev/null @@ -1,56 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \iffalse %%%% -% % -% Copyright (c) 2012 - Michiel Helvensteijn (www.mhelvens.net) % -% % -% http://latex-with.googlecode.com % -% % -% 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 `author-maintained'. % -% % -% The Current Maintainer of this work is Michiel Helvensteijn. % -% % -% This work consists of the file dry.sty. % -% % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \fi %%%% - -% I will 'officially' release this package at some point in the future. For -% now I'm just using it to document a couple of packages. Still, it's -% released under LPPL, so use it as you will. -% -% -- Michiel Helvensteijn - -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{dry} - [2012/12/19 convenience macros for reusing LaTeX code] - -\RequirePackage{filecontents} -\RequirePackage{xparse} -\RequirePackage{etoolbox} -\RequirePackage{with} - -\newcommand\minput[1]{% - \input{#1}\unskip% -} - -\NewDocumentCommand{\NewDRYer}{m +m}{% - \with{un} [#1] [#2] {% - \newenvironment{#1}{% - \begingroup% - \@tempswafalse\filec@ntents{##1.tmp}% - }{% - \endfilecontents% - \endgroup% - }% - \AfterEndEnvironment{#1}{% - \with{xn} [##1.tmp] [\minput{##1.tmp}] {% - ##2% - }% - }% - }% -} diff --git a/Master/texmf-dist/tex/latex/concepts/packagedoc.cls b/Master/texmf-dist/tex/latex/concepts/packagedoc.cls deleted file mode 100644 index 1c261b98362..00000000000 --- a/Master/texmf-dist/tex/latex/concepts/packagedoc.cls +++ /dev/null @@ -1,353 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% % -% Copyright (C) 2012 by Michiel Helvensteijn - www.mhelvens.net % -% % -% 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 `author-maintained'. % -% % -% The Current Maintainer of this work is Michiel Helvensteijn. % -% % -% This work consists of the file packagedoc.cls. % -% % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\let\packagename\jobname - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Document Class % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\LoadClassWithOptions{ltxdoc} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Importing The Relevant Package % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\RequirePackage{\packagename} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Importing Other Packages % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\RequirePackage{etoolbox} -\RequirePackage[xcolor]{mdframed} -\RequirePackage{marginnote} -\RequirePackage{listings} -\RequirePackage{textcomp} -\RequirePackage[pdftex,colorlinks=true]{hyperref} -\RequirePackage{dry} -\RequirePackage{needspace} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Documentation Options % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\EnableCrossrefs -\CodelineIndex -\RecordChanges - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% File Info % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\GetFileInfo{\packagename.sty} - -\title{The \textsf{\packagename} package\thanks{% - This document corresponds to \textsf{\packagename}~\fileversion, - dated \filedate.% -}} - -\author{ - Michiel Helvensteijn\\ - \href{mailto:mhelvens+latex@gmail.com}{mhelvens+latex@gmail.com} -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Development Info % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\newmdenv[ - leftline = false, - rightline = false -]{bannerframe} - -\apptocmd{\maketitle}{ - \begin{bannerframe} - \small - \begin{center} - Development of this package is organized at - \href{http://latex-\packagename.googlecode.com} - {latex-\packagename.googlecode.com}.\\ - I am happy to receive feedback there! - \end{center} - \end{bannerframe} -}{}{} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Skipping Paragraph Indentation After Specific Stuff % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\let\packagedoc@old@par\par - -\newcommand*{\noindentnext}{% - \def\par{% - \packagedoc@old@par% - \noindent% - \let\par\packagedoc@old@par% - }% -} - -\newcommand*{\noindentafterenv}[1]{ - \AfterEndEnvironment{#1}{\noindentnext} -} - -\newcommand*{\noindentaftercmd}[1]{ - \apptocmd{#1}{\noindentnext}{}{ - \ClassError{packagedoc} - {Could not patch \protect#1\space command.} - {Oops! I tried to auto-skip any indentation after the - \protect#1\space command, but I failed somehow.} - } -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Example Environment Setup % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%% Extra keywords for LaTeX -% -\newcommand{\moretexcs}[1]{ - \lstdefinelanguage{latex}{ - language=[LaTeX]tex, - moretexcs={ExplSyntaxOn,ExplSyntaxOff,lstinputlisting,detokenize,#1} - } -} - -%%% Code formatting -% -\lstdefinestyle{examplecode}{% - language=latex,% - basicstyle=\ttfamily\small,% - texcsstyle=*\bfseries,% - upquote=true% -} - - - -%%% Setting up example code block -% -\definecolor{examplecodelinecolor}{rgb}{0,0,0} -\definecolor{examplecodebackgroundcolor}{rgb}{.9,.9,.9} -\newmdenv[ - linecolor = examplecodelinecolor, - backgroundcolor = examplecodebackgroundcolor, - skipabove = 0px, - skipbelow = 0px, - innertopmargin = -3px, - innerrightmargin = 4px, - innerbottommargin = -3px, - innerleftmargin = 4px -]{examplecodeframe} - -%%% Defining example output block -% -\definecolor{exampleoutputbackgroundcolor}{rgb}{1,1,1} -\newmdenv[ - linecolor = examplecodelinecolor, - backgroundcolor = exampleoutputbackgroundcolor, - skipabove = 0px, - skipbelow = 0px, - innertopmargin = 4px, - innerrightmargin = 4px, - innerbottommargin = 4px, - innerleftmargin = 4px -]{exampleoutputframe} - -%%% Macros for counting lines in file, adapted from -%%% http://andreas.scherbaum.la/blog/archives/ -%%% 670-Read-number-lines-in-a-file-in-LaTeX.html -% -\RequirePackage{ifthen} -\newboolean{packagedoc@restfile} -\newcommand*{\packagedoc@fileline}{} -\newread\packagedoc@file -\newcommand*{\packagedoc@readnextline}[1]{% - \ifthenelse{\boolean{packagedoc@restfile}}{% - \read#1 to \packagedoc@fileline% - \ifeof#1\setboolean{packagedoc@restfile}{false}% - \else\fi% - }{}% -} -\newcommand*{\countlinesinfile}[2]{% - \setboolean{packagedoc@restfile}{true}% - \setcounter{packagedoc@linecount}{0}% - \openin\packagedoc@file=#1% - \whiledo{\boolean{packagedoc@restfile}}{% - \packagedoc@readnextline{\packagedoc@file}% - \ifthenelse{\boolean{packagedoc@restfile}}{% - \stepcounter{packagedoc@linecount}% - }{}% - }% - \closein\packagedoc@file% - \edef#2{\thepackagedoc@linecount}% -} - -\newcounter{packagedoc@linecount} -\newlength{\packagedoc@spacetoreserve} - -%%% DRYer without output -% -\NewDRYer{latex-example}{% - \addvspace{4px}% - {% - \ttfamily\small% - \countlinesinfile{#1}{\countedlines}% - \setlength{\packagedoc@spacetoreserve}{\countedlines\baselineskip}% - \addtolength{\packagedoc@spacetoreserve}{-4px}% - \needspace{\packagedoc@spacetoreserve}% - }% - \begin{examplecodeframe}% - \renewcommand{\ttdefault}{pcr}% - \lstinputlisting[style=examplecode]{#1}% - \end{examplecodeframe}% - #2% - \noindentnext% - \addvspace{4px}% -} - -%%% DRYer WITH output but WITHOUT side-effects -% -\NewDRYer{latex-example-show}{% - \addvspace{4px}% - {% - \ttfamily\small% - \countlinesinfile{#1}{\countedlines}% - \setlength{\packagedoc@spacetoreserve}{\countedlines\baselineskip}% - \addtolength{\packagedoc@spacetoreserve}{\baselineskip}% - \needspace{\packagedoc@spacetoreserve}% - }% - \begin{examplecodeframe}% - \renewcommand{\ttdefault}{pcr}% - \lstinputlisting[style=examplecode]{#1}% - \end{examplecodeframe}\vspace{-4px}% - \begin{exampleoutputframe}% - #2% - \end{exampleoutputframe}% - \noindentnext% - \addvspace{4px}% -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Implementation Code Box Setup % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%% Saving old implementation code block font -% -\AtBeginDocument{\let\old@macro@font\macro@font} - -%%% Setup for 'interesting' implementation code blocks -% -\definecolor{interestingcodebackgroundcolor}{rgb}{.9,.9,.9} -\definecolor{interestingcodelinecolor}{rgb}{0,0,0} -\mdfdefinestyle{interestingcode}{ - linecolor = interestingcodelinecolor, - backgroundcolor = interestingcodebackgroundcolor -} -\newcommand*{\interesting}{% - \def\codestyle{interestingcode}% - \def\codeskipabove{5px}% - \let\macro@font\old@macro@font% -} - -%%% Setup for 'UNinteresting' implementation code blocks -% -\definecolor{uninterestingcodebackgroundcolor}{rgb}{.97,.97,.97} -\definecolor{uninterestingcodelinecolor}{rgb}{.5,.5,.5} -\definecolor{uninterestingcodecolor}{rgb}{.4,.4,.4} -\mdfdefinestyle{uninterestingcode}{ - linecolor = uninterestingcodelinecolor, - backgroundcolor = uninterestingcodebackgroundcolor, -} -\newcommand*{\uninteresting}{% - \def\codestyle{uninterestingcode}% - \def\codeskipabove{-5px}% - \def\macro@font{\color{uninterestingcodecolor}\old@macro@font}% -} - -%%% Actually surround 'macrocode' with the frame -% -\surroundwithmdframed[ - style = \codestyle, - skipabove = \codeskipabove, - skipbelow = 5px, - splittopskip = 10px, - splitbottomskip = 4px, - innertopmargin = 4px, - innerrightmargin = 4px, - innerbottommargin = 4px, - innerleftmargin = 4px -]{macrocode} - -\noindentafterenv{macrocode} - -%%% Start out with 'interesting' code status and -%%% always go back to it after one code block -% -\interesting -\AfterEndEnvironment{macrocode}{\interesting} - -%%% No indentation after macrocode block -% -\noindentafterenv{macrocode} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Argument Specifiers and such % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\newcommand*{\movarg}[1]{[ \texttt{#1} ]} -\newcommand*{\momarg}[1]{[ \meta{#1} ]} - -\newcommand{\describemacro}[2]{% - \needspace{3\baselineskip}% - \noindent\\\DescribeMacro{#1} #2\\\noindentnext% -} - -\newcommand{\describemetamacro}[2]{% - \needspace{3\baselineskip}% - \noindent\\\marginnote{\meta{#1}} #2\\\noindentnext% -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Other Stuff % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\noindentafterenv{description} -\noindentafterenv{itemize} -\noindentafterenv{enumerate} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Automatic Implementation Docs % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\AtEndDocument{ - \pagebreak - - \section{Implementation} - - \StopEventually {\PrintChanges} - - We now show and explain the entire implementation from \texttt{\packagename.sty}. - - \DocInput{\packagename.sty} - - \Finale - - \PrintIndex -} diff --git a/Master/texmf-dist/tex/latex/concepts/with.sty b/Master/texmf-dist/tex/latex/concepts/with.sty deleted file mode 100644 index 49e16dac493..00000000000 --- a/Master/texmf-dist/tex/latex/concepts/with.sty +++ /dev/null @@ -1,309 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \iffalse %%%% -% % -% Copyright (c) 2012 - Michiel Helvensteijn (www.mhelvens.net) % -% % -% http://latex-with.googlecode.com % -% % -% 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 `author-maintained'. % -% % -% The Current Maintainer of this work is Michiel Helvensteijn. % -% % -% This work consists of the file with.sty and with.tex. % -% % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \fi %%%% - -% \CheckSum{0} -% -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% \subsection{Package Info} % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - - -% \begin{macrocode} -\NeedsTeXFormat{LaTeX2e} -\RequirePackage{expl3} -\ProvidesExplPackage{with}{2012/12/23}{0.0.1} - {an inline construct for passing token lists as parameters} -% \end{macrocode} - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% \subsection{Required Packages} % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - - -% \begin{macrocode} -\RequirePackage{xparse} -\RequirePackage{l3regex} -% \end{macrocode} - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% \subsection{Package Code} % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - - -% \begin{macrocode} -\cs_generate_variant:Nn \cs_generate_variant:Nn {cn} -% \end{macrocode} - - - -% \begin{macrocode} -\cs_new:Nn \gen_use:nn { - \cs_generate_variant:cn - { #1 : \prg_replicate:nn{\tl_count:n{#2}}{n} } - { #2 } - \use:c{ #1 : #2 } -} -% \end{macrocode} - - - -% \begin{macrocode} -\cs_new_protected:Nn \with:n {#1} -\cs_new_protected:Nn \with:nn { - \cs_set:Npn \__with:n ##1 {#2} - \__with:n {#1} } -\cs_new_protected:Nn \with:nnn { - \cs_set:Npn \__with:nn ##1##2 {#3} - \__with:nn {#1}{#2} } -\cs_new_protected:Nn \with:nnnn { - \cs_set:Npn \__with:nnn ##1##2##3 {#4} - \__with:nnn {#1}{#2}{#3} } -\cs_new_protected:Nn \with:nnnnn { - \cs_set:Npn \__with:nnnn ##1##2##3##4 {#5} - \__with:nnnn {#1}{#2}{#3}{#4} } -\cs_new_protected:Nn \with:nnnnnn { - \cs_set:Npn \__with:nnnnn ##1##2##3##4##5 {#6} - \__with:nnnnn {#1}{#2}{#3}{#4}{#5} } -\cs_new_protected:Nn \with:nnnnnnn { - \cs_set:Npn \__with:nnnnnn ##1##2##3##4##5##6 {#7} - \__with:nnnnnn {#1}{#2}{#3}{#4}{#5}{#6} } -\cs_new_protected:Nn \with:nnnnnnnn { - \cs_set:Npn \__with:nnnnnnn ##1##2##3##4##5##6##7 {#8} - \__with:nnnnnnn {#1}{#2}{#3}{#4}{#5}{#6}{#7} } -\cs_new_protected:Nn \with:nnnnnnnnn { - \cs_set:Npn \__with:nnnnnnnn ##1##2##3##4##5##6##7##8 {#9} - \__with:nnnnnnnn {#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8} } -% \end{macrocode} - - - -% \begin{macrocode} -\msg_new:nnnn{with}{invalid-parameter-specs}{ - The~argument~specification~'#1'~is~not~valid. -}{ - The~argument~specification~should~consist~of~between~ - one~and~seven~of~the~letters~'n',~'o',~'f',~'x',~'u'~or~'U'. -} -% \end{macrocode} - - - -% \begin{macrocode} -\msg_new:nnnn{with}{invalid-parameter-number}{ - You~specified~#1~arguments~but~provided~#2. -}{ - Your~argument~specification~is~'#3',~which~means~you~should~ - provide~#1~optional~arguments.~However,~you~provided~only~#2. -} -% \end{macrocode} - - - -% \begin{macrocode} -\tl_new:N \l__with_argspec_tl -\tl_new:c {l__with_p_1_tl} \tl_new:c {l__with_p_2_tl} -\tl_new:c {l__with_p_3_tl} \tl_new:c {l__with_p_4_tl} -\tl_new:c {l__with_p_5_tl} \tl_new:c {l__with_p_6_tl} -\tl_new:c {l__with_p_7_tl} -\tl_new:N \l__with_code_tl -% \end{macrocode} - - - -% \begin{macrocode} -\int_new:N \l__with_arg_int -\cs_new:Nn \__with_param_name: { - l__with_p_ - \int_use:N\l__with_arg_int - _tl -} -% \end{macrocode} - - - -% \begin{macrocode} -\tl_new:N \l__with_unique_counter_tl -\tl_new:N \l__with_param_tl -% \end{macrocode} - - - -% \begin{macrocode} -\cs_generate_variant:Nn \with:nn {xn} -\cs_generate_variant:Nn \with:nnnnnnnnn {oooooooon} -% \end{macrocode} - - - -% \begin{macrocode} -\NewDocumentCommand \with {m +o +o +o +o +o +o +o +m} { -% \end{macrocode} - - - -% \begin{macrocode} - \regex_match:nnF {^[noxfuU]{1,7}$} {#1} - { \msg_critical:nnn{with}{invalid-parameter-specs}{#1} } -% \end{macrocode} - - - -% \begin{macrocode} - \tl_set:Nn \l__with_argspec_tl {#1} - \int_zero:N \l__with_arg_int - \IfValueT{#2} { - \tl_set:cn {l__with_p_1_tl} {#2} \int_incr:N \l__with_arg_int - \IfValueT{#3} { - \tl_set:cn {l__with_p_2_tl} {#3} \int_incr:N \l__with_arg_int - \IfValueT{#4} { - \tl_set:cn {l__with_p_3_tl} {#4} \int_incr:N \l__with_arg_int - \IfValueT{#5} { - \tl_set:cn {l__with_p_4_tl} {#5} \int_incr:N \l__with_arg_int - \IfValueT{#6} { - \tl_set:cn {l__with_p_5_tl} {#6} \int_incr:N \l__with_arg_int - \IfValueT{#7} { - \tl_set:cn {l__with_p_6_tl} {#7} \int_incr:N \l__with_arg_int - \IfValueT{#8} { - \tl_set:cn {l__with_p_7_tl} {#8} \int_incr:N \l__with_arg_int - }}}}}}} - \tl_set:Nn \l__with_code_tl {#9} -% \end{macrocode} - - - -% \begin{macrocode} - \int_compare:nNnF {\tl_count:n{#1}} = {\l__with_arg_int} { - \msg_error:nnxxx{with}{invalid-parameter-number} - { \tl_count:n{#1} } - { \int_use:N \l__with_arg_int } - { #1 } - } -% \end{macrocode} - - - -% \begin{macrocode} - \tl_replace_all:Nnn \l__with_argspec_tl {u} {x} - \tl_replace_all:Nnn \l__with_argspec_tl {U} {c} -% \end{macrocode} - - - -% \begin{macrocode} - \int_zero:N \l__with_arg_int - \tl_map_inline:nn {#1} { - \int_incr:N \l__with_arg_int -% \end{macrocode} - - - -% \begin{macrocode} - \tl_if_in:nnT {uU} {##1} { - \tl_set:Nx \l__with_unique_counter_tl - { g__with_unique_ \use:c{\__with_param_name:} _count_int } - - \int_if_exist:cF {\l__with_unique_counter_tl} - { \int_new:c {\l__with_unique_counter_tl} } - - \int_incr:c {\l__with_unique_counter_tl} - - \tl_put_left:cx {\__with_param_name:} - { g_with_unique_ } - - \tl_put_right:cx {\__with_param_name:} - { _ \int_use:c{\l__with_unique_counter_tl} } - } -% \end{macrocode} - - - -% \uninteresting\begin{macrocode} - } -% \end{macrocode} - - - -% \begin{macrocode} - \with:oooooooon {\l__with_argspec_tl} - {\cs:w l__with_p_1_tl \cs_end:} - {\cs:w l__with_p_2_tl \cs_end:} - {\cs:w l__with_p_3_tl \cs_end:} - {\cs:w l__with_p_4_tl \cs_end:} - {\cs:w l__with_p_5_tl \cs_end:} - {\cs:w l__with_p_6_tl \cs_end:} - {\cs:w l__with_p_7_tl \cs_end:} { - \with:oooooooon {##1o}{##2}{##3}{##4} - {##5}{##6}{##7}{##8} { - \int_case:nnn {\l__with_arg_int} { - {1} { \gen_use:nn{with}{####1} - {####2} {\l__with_code_tl} } - {2} { \gen_use:nn{with}{####1} - {####2}{####3} {\l__with_code_tl} } - {3} { \gen_use:nn{with}{####1} - {####2}{####3}{####4} {\l__with_code_tl} } - {4} { \gen_use:nn{with}{####1} - {####2}{####3}{####4} - {####5} {\l__with_code_tl} } - {5} { \gen_use:nn{with}{####1} - {####2}{####3}{####4} - {####5}{####6} {\l__with_code_tl} } - {6} { \gen_use:nn{with}{####1} - {####2}{####3}{####4} - {####5}{####6}{####7} {\l__with_code_tl} } - {7} { \gen_use:nn{with}{####1} - {####2}{####3}{####4} - {####5}{####6}{####7} - {####8} {\l__with_code_tl} } - }{} - } - } -% \end{macrocode} - - - -% \uninteresting\begin{macrocode} -} -% \end{macrocode} - - diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index e3cea40eca9..f5250c38496 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -1276,6 +1276,7 @@ $standardtex='\.(.bx|cfg|sty|clo|ldf|cls|def|fd|cmap|4ht)$'; 'codepage', '\.sty|\.tex', 'colortab', 'colortab\.tex|' . $standardtex, 'components-of-TeX', 'NULL', + 'concepts', 'concepts\.sty', 'contour', '\.cfg|\.sty|\.cnt', 'csplain', '\.tex', 'ctib', '\.sty|\.clo|\.ldf|\.cls|\.def|\.fd$|ctib\.tex', -- cgit v1.2.3