diff options
author | Norbert Preining <preining@logic.at> | 2013-05-27 02:13:45 +0000 |
---|---|---|
committer | Norbert Preining <preining@logic.at> | 2013-05-27 02:13:45 +0000 |
commit | b2f9bba8d6a7ed504466bc800297e98328dc38f5 (patch) | |
tree | 11556a51d7780783e45d1135b33d10cbc61a5653 /Master | |
parent | 8b6c2f6781bc4a3f291fdfbbd51f337c7c9d74b7 (diff) |
new package l3ctr2e (5/27)
git-svn-id: svn://tug.org/texlive/trunk@30714 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/latex/l3ctr2e/README | 37 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/l3ctr2e/l3ctr2e.pdf | bin | 0 -> 150081 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/latex/l3ctr2e/l3ctr2e.tex | 560 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/l3ctr2e/l3ctr2e.sty | 151 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/collection-latexrecommended.tlpsrc | 1 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/l3ctr2e.tlpsrc | 0 |
6 files changed, 749 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/l3ctr2e/README b/Master/texmf-dist/doc/latex/l3ctr2e/README new file mode 100644 index 00000000000..f5019fa5761 --- /dev/null +++ b/Master/texmf-dist/doc/latex/l3ctr2e/README @@ -0,0 +1,37 @@ +%% l3ctr2e LaTeX2e counters in LaTeX3 ways +%% +%% Copyright (C) 2012-2013 by Simon Sigurdhsson <sigurdhsson@gmail.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 `maintained'. +%% +%% The Current Maintainer of this work is Simon Sigurdhsson. +%% +%% This work consists of the file l3ctr2e.tex and the derived file +%% l3ctr2e.sty. + +This is version 0.1d of the l3ctr2e package, a reimplementation of some +of the LaTeX2e counter functionality in LaTeX3 code. It should be +backwards-compatible with LaTeX2e counters. + +The following files are enclosed. + + README - This file + Makefile - GNU Makefile for making the package and documentation + l3ctr.tex - LaTeX source code of the class and documentation + l3ctr.pdf - PDF version of the documentation + +Installation notes: +The easiest way to install this package, assuming you have obtained the +source code from Github or CTAN, is to simply run `make install`. This +will generate package code and documentation, install it into TEXMFHOME +and run `mktexlsr`. If you wish to compile the package but not install +it, run `make all` instead. If you insist on doing it manually, remember +that you must use `pdflatex` (not `tex` or `latex`). diff --git a/Master/texmf-dist/doc/latex/l3ctr2e/l3ctr2e.pdf b/Master/texmf-dist/doc/latex/l3ctr2e/l3ctr2e.pdf Binary files differnew file mode 100644 index 00000000000..ae0212d87a2 --- /dev/null +++ b/Master/texmf-dist/doc/latex/l3ctr2e/l3ctr2e.pdf diff --git a/Master/texmf-dist/source/latex/l3ctr2e/l3ctr2e.tex b/Master/texmf-dist/source/latex/l3ctr2e/l3ctr2e.tex new file mode 100644 index 00000000000..53ef24ac057 --- /dev/null +++ b/Master/texmf-dist/source/latex/l3ctr2e/l3ctr2e.tex @@ -0,0 +1,560 @@ +%% l3ctr2e LaTeX2e counters in LaTeX3 ways +%% +%% Copyright (C) 2012-2013 by Simon Sigurdhsson <sigurdhsson@gmail.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 `maintained'. +%% +%% The Current Maintainer of this work is Simon Sigurdhsson. +%% +%% This work consists of the file l3ctr2e.tex and the derived file +%% l3ctr2e.sty. +\documentclass{skdoc} +\usepackage{hologo,booktabs,varioref,cleveref,hyperref} + +\ExplSyntaxOn +\cs_set_protected_nopar:Npn\ExplHack{ + \char_set_catcode_letter:n{ 58 } + \char_set_catcode_letter:n{ 95 } +} +\ExplSyntaxOff +\ExplHack + +% Declare the target files +\SelfPreambleTo{\mypreamble} +\DeclareFile[key=package,preamble=\mypreamble]{l3ctr2e.sty} + +% This is where the documentation begins +\begin{document} + % Change & version info + \version{0.1d} + \changes{0.1}{Initial version} + \changes{0.1c}{Moved attachment of global parent from \cs{__ctr_define:n} to \cs{ctr_new:n}} + + % Metadata + \package[ctan=l3ctr2e,vcs=https://github.com/urdh/l3ctr2e]{l3ctr2e} + \title{The \textbf{\thepackage} package} + \author{Simon Sigurdhsson} + \email{sigurdhsson@gmail.com} + + % First page + \maketitle + \begin{abstract} + A reimplementation of some of the \LaTeXe\ counter functionality + in \LaTeX3 code. It should be backwards-compatible with \LaTeXe\ + counters. + \end{abstract} + \tableofcontents + + \section{Documentation} + This package is intended to complement the \LaTeXe\ counter macros + with \LaTeX3 counterparts. The new macros use the same internal + counters and macros as the \LaTeXe\ ones, and as such they should be + fully backwards-compatible. The package is not terribly complicated + but could be useful in adapting (or rewriting) \LaTeXe\ packages or + document styles to \LaTeX3 standards. + + \Warning{The package is not backwards-compatible as it is now: the + resetting of child counters is not implemented in a backwards-% + compatible way.} + + \subsection{Options} + \Option{replace}\WithValues{true,false}\AndDefault{false} + There is only one option, \opt{replace}, which will make the package + replace the original \LaTeXe\ public API macros with new, \LaTeX3-% + based ones (with the same API). Its default value is \texttt{false}. + + \subsection{Public API} + The public \LaTeX3 API has macros corresponding to the macros of the + \LaTeXe\ API according to \vref{tab:macros}. In addition to the + direct replacements there are also a number of new macros which are + missing in the original \LaTeXe\ API. + + \begin{table}[tbp] + \centering + \caption{\LaTeX3 counterparts of the \LaTeXe\ counter macros} + \label{tab:macros} + \begin{tabular}{ll} + \toprule + \textbf{\LaTeXe} & \textbf{\LaTeX3} \\ + \midrule + \cs*{newcounter} & \cs*{ctr_new:n} \\ + \cs*{stepcounter} & \cs*{ctr_gincr:n} \\ + \cs*{refstepcounter} & \cs*{ctr_ref_gincr:n} \\ + \cs*{addtocounter} & \cs*{ctr_gadd:nn} \\ + \cs*{setcounter} & \cs*{ctr_gset:nn} \\ + \cs*{value} & \cs*{ctr_use:n} \\ + \cs*{arabic} & \cs*{ctr_use_arabic:n} \\ + \cs*{alph} & \cs*{ctr_use_alph:n} \\ + \cs*{Alph} & \cs*{ctr_use_Alph:n} \\ + \cs*{roman} & \cs*{ctr_use_roman:n} \\ + \cs*{Roman} & \cs*{ctr_use_Roman:n} \\ + \cs*{fnsymbol} & \cs*{ctr_use_fn:n} \\ + \bottomrule + \end{tabular} + \end{table} + + \subsubsection{Creating counters} + \DescribeMacro\ctr_new:n{<counter name>} + \DescribeMacro\ctr_new:nn{<counter name>}{<parent counter>} + This macro creates a new counter, and is the direct counterpart of the + \cs{newcounter} \LaTeXe\ macro. It has two variants, one of which also + sets a parent counter (\emph{i.e.} a counter which will reset the new + counter when incremented), corresponding to using \cs{newcounter} with + an optional argument. + + \subsubsection{Setting counters} + \DescribeMacro\ctr_gzero:n{<counter name>} + This macro has no \LaTeXe\ counterpart, but could be useful (and is + used internally by other \thepkg\ macros). It sets the counter value + to zero. + + \DescribeMacro\ctr_gincr:n{<counter name>} + This macro increments the counter by one, and is the \LaTeX3 + equivalent of \cs{stepcounter}. + + \DescribeMacro\ctr_ref_gincr:n{<counter name>} + In addition to incementing the counter by one, this macro sets the + internal \LaTeXe\ macro \cs{@currentlabel}, so that references and + labels work properly. It is the \LaTeX3 variant of + \cs{refstepcounter}. + + \DescribeMacro\ctr_gadd:nn{<counter name>}{<value>} + The \LaTeX3 counterpart of \cs{addtocounter}. Simply adds \meta{value} + to the counter. + + \DescribeMacro\ctr_gset:nn{<counter name>}{<new value>} + Corresponds to \cs{setcounter}. Sets the counter to \meta{new value}. + + \subsubsection{Displaying counters} + \LaTeXe\ provides a couple of different ways to express counters in + typeset text. These macros correspond to (and extend) the repertoire + of counter value macros provided by \LaTeXe\ using functionality from + the \pkg{l3int} package. + + \DescribeMacro\ctr_use:n{<counter name>} + This is simply \cs{value}. It will simply use the value of the counter + (using \cs{int_use:c}) and as such could be used in a \pkg{l3int} + context whenever an integer value of the counter is needed. + + \DescribeMacro\ctr_use_arabic:n{<counter name>} + This macro typesets the counter value as arabic numbers, and + corresponds to the \cs{arabic} macro. + \DescribeMacro\ctr_use_alph:n{<counter name>} + \DescribeMacro\ctr_use_Alph:n{<counter name>} + Typesets the counter value as lower-case or upper-case alphabetic + characters --- the corresponding \LaTeXe\ macros are \cs{alph} and + \cs{Alph}. + \DescribeMacro\ctr_use_roman:n{<counter name>} + \DescribeMacro\ctr_use_Roman:n{<counter name>} + Typesets the counter value as lower-case or upper-case roman numerals. + Corresponds to \cs{roman} and \cs{Roman}. + \DescribeMacro\ctr_use_fn:n{<counter name>} + Typesets the counter value as footnote symbols, and is intended for + use in footnote marks only. Corresponds to \cs{fnsymbol}. + \DescribeMacro\ctr_use_binary:n{<counter name>} + \DescribeMacro\ctr_use_octal:n{<counter name>} + \DescribeMacro\ctr_use_hex:n{<counter name>} + Typesets the counter value as binary, octal or hexadecimal numbers. + These macros have no \LaTeXe\ counterparts. + \DescribeMacro\ctr_use_custom:nn{<counter name>}{<item>,\meta{item},...} + Typesets the counter value according to the comma-separated list + provided (containing a list of items). Values larger than the number + of items in the list will cause an error. + + \section{Known issues} + A list of current issues is available in the Github repository of this + package\footnote{\url{https://github.com/urdh/l3ctr2e/issues}}, but as + of the release of \theversion, there are no known issues. + %\begin{description} + % \item[\#6] ??? + %\end{description} + + If you discover any bugs in this package, please report them to the issue + tracker in the \thepackage\ Github repository. + + \Implementation + \section{Implementation} + Start by including \pkg{expl3} and well as declaring the class. +\begin{MacroCode}{package} +\RequirePackage{expl3,l3keys2e,xparse} +\ProvidesExplClass{l3ctr2e}% + {2013/05/25}{0.1d}{LaTeX2e counters in LaTeX3 ways} +\end{MacroCode} + + \subsection{Options} +\begin{MacroCode}{package} +\keys_define:nn{l3ctr2e}{ +\end{MacroCode} + \begin{option}{replace} +\begin{MacroCode}{package} + replace .bool_set:N = \g__ctr_replace_latexe_bool, + replace .default:n = true, + replace .initial:n = false +\end{MacroCode} + \end{option} +\begin{MacroCode}{package} +} +\ProcessKeysPackageOptions{l3ctr2e} +\end{MacroCode} + + \subsection{Messages} + One message is declared for future use. +\begin{MacroCode}{package} +\msg_new:nnn{l3ctr2e}{no-counter}{No~counter~`#1'~defined!} +\end{MacroCode} + + \subsection{Private macros} + \begin{macro}{\__ctr_exists:nT}[1] + {Counter name} +\begin{MacroCode}{package} +\prg_new_conditional:Npnn\__ctr_exists:n#1{T}{ + \int_if_exist:cTF{c@#1}{ + \prg_return_true: + }{ + \msg_error:nnn{l3ctr2e}{no-counter}{#1} + \prg_return_false: + } +} +\end{MacroCode} + \end{macro} + \begin{macro*}{\g__ctr_children__ctr_global_tl} +\begin{MacroCode}{package} +\tl_new:N\g__ctr_children__ctr_global_tl +\end{MacroCode} + \end{macro*} + \begin{macro}{\__ctr_define:n}[1] + {Counter name} + This does not yet fully correspond to \cs{@definecounter}. +\begin{MacroCode}{package} +\cs_new:Npn\__ctr_define:n#1{ + \int_new:c{c@#1} % actually \newcount, incorrect! FIX! + \ctr_gzero:n{#1} + \tl_new:c{g__ctr_children_#1_tl} + \cs_gset:cpn{cl@#1}{} + \cs_gset:cpn{p@#1}{} + \cs_gset:cpn{the#1}{\ctr_use_arabic:n{#1}} +} +\end{MacroCode} + \end{macro} + \begin{macro}{\__ctr_add_child:nn}[2] + {Parent counter name} + {Counter name} + This probably fully corresponds to \cs{@addtoreset}. +\begin{MacroCode}{package} +\cs_new:Npn\__ctr_add_child:nn#1#2{ + \tl_gput_right:cn{g__ctr_children_#1_tl}{{#2}} +} +\end{MacroCode} + \end{macro} + + \subsection{Public API} + \subsubsection{Creating counters} + \begin{macro}{\ctr_new:n}[1] + {Counter name} +\begin{MacroCode}{package} +\cs_new:Npn\ctr_new:n#1{ + \__ctr_define:n{#1} + \__ctr_add_child:nn{_ctr_global}{#1} +} +\end{MacroCode} + \end{macro} + \begin{macro}{\ctr_new:nn}[2] + {Counter name} + {Parent counter} + \changes{0.1c}{Changed \cs{ctr_new:n} into \cs{__ctr_define:n}} +\begin{MacroCode}{package} +\cs_new:Npn\ctr_new:nn#1#2{ + \__ctr_define:n{#1} + \__ctr_add_child:nn{#2}{#1} +} +\end{MacroCode} + \end{macro} + + \subsubsection{Setting counters} + \begin{macro}{\ctr_gzero:n}[1] + {Counter name} +\begin{MacroCode}{package} +\cs_new:Npn\ctr_gzero:n#1{ + \__ctr_exists:nT{#1}{\int_gzero:c{c@#1}} +} +\end{MacroCode} + \end{macro} + \begin{macro}{\ctr_gset:nn}[2] + {Counter name} + {New value} +\begin{MacroCode}{package} +\cs_new:Npn\ctr_gset:nn#1#2{ + \__ctr_exists:nT{#1}{\int_gset:cn{c@#1}{#2}} +} +\end{MacroCode} + \end{macro} + \begin{macro}{\ctr_gadd:nn}[2] + {Counter name} + {Value to add} +\begin{MacroCode}{package} +\cs_new:Npn\ctr_gadd:nn#1#2{ + \__ctr_exists:nT{#1}{\int_gadd:cn{c@#1}{#2}} +} +\end{MacroCode} + \end{macro} + \begin{macro}{\ctr_gincr:n}[1] + {Counter name} + \changes{0.1c}{Now also resets grandchildren and so on} +\begin{MacroCode}{package} +\cs_new:Npn\ctr_gincr:n#1{ + \ctr_gadd:nn{#1}{\c_one} + \tl_if_exist:cT{g__ctr_children_#1_tl}{ + \tl_map_inline:cn{g__ctr_children_#1_tl}{ + \ctr_gincr:n{##1} % To reset children of the child + \ctr_gzero:n{##1} + } + } +} +\end{MacroCode} + \end{macro} + \begin{macro}{\ctr_ref_gincr:n}[1] + {Counter name} + \changes{0.1a}{Fixed erroneous use of non-existent \cs{ctr_gincr:c}} + \changes{0.1c}{Redeclaration of \cs{@currentlabel} is now local and unprotected} +\begin{MacroCode}{package} +\cs_new:Npn\ctr_ref_gincr:n#1{ + \ctr_gincr:n{#1} + \cs_set:Npx\@currentlabel{ + \use:c{p@#1} + \use:c{the#1} + } +} +\end{MacroCode} + \end{macro} + + \subsubsection{Displaying counters} + \begin{macro}{\ctr_value:n}[1] + {Counter name} +\begin{MacroCode}{package} +\cs_new:Npn\ctr_value:n#1{ + \use:c{c@#1} +} +\end{MacroCode} + \end{macro} + \begin{macro}{\ctr_use:n}[1] + {Counter name} +\begin{MacroCode}{package} +\cs_new:Npn\ctr_use:n#1{ + \int_use:c{c@#1} +} +\end{MacroCode} + \end{macro} + \begin{macro}{\ctr_use_arabic:n}[1] + {Counter name} +\begin{MacroCode}{package} +\cs_new:Npn\ctr_use_arabic:n#1{ + \int_to_arabic:n{\ctr_use:n{#1}} +} +\end{MacroCode} + \end{macro} + \begin{macro}{\ctr_use_alph:n}[1] + {Counter name} +\begin{MacroCode}{package} +\cs_new:Npn\ctr_use_alph:n#1{ + \int_to_alph:n{\ctr_use:n{#1}} +} +\end{MacroCode} + \end{macro} + \begin{macro}{\ctr_use_Alph:n}[1] + {Counter name} +\begin{MacroCode}{package} +\cs_new:Npn\ctr_use_Alph:n#1{ + \int_to_Alph:n{\ctr_use:n{#1}} +} +\end{MacroCode} + \end{macro} + \begin{macro}{\ctr_use_binary:n}[1] + {Counter name} +\begin{MacroCode}{package} +\cs_new:Npn\ctr_use_binary:n#1{ + \int_to_binary:n{\ctr_use:n{#1}} +} +\end{MacroCode} + \end{macro} + \begin{macro}{\ctr_use_hex:n}[1] + {Counter name} +\begin{MacroCode}{package} +\cs_new:Npn\ctr_use_hex:n#1{ + \int_to_hexadecimal:n{\ctr_use:n{#1}} +} +\end{MacroCode} + \end{macro} + \begin{macro}{\ctr_use_octal:n}[1] + {Counter name} +\begin{MacroCode}{package} +\cs_new:Npn\ctr_use_octal:n#1{ + \int_to_octal:n{\ctr_use:n{#1}} +} +\end{MacroCode} + \end{macro} + \begin{macro}{\ctr_use_roman:n}[1] + {Counter name} +\begin{MacroCode}{package} +\cs_new:Npn\ctr_use_roman:n#1{ + \int_to_roman:n{\ctr_use:n{#1}} +} +\end{MacroCode} + \end{macro} + \begin{macro}{\ctr_use_Roman:n}[1] + {Counter name} +\begin{MacroCode}{package} +\cs_new:Npn\ctr_use_Roman:n#1{ + \int_to_Roman:n{\ctr_use:n{#1}} +} +\end{MacroCode} + \end{macro} + \begin{macro}{\ctr_use_fn:n}[1] + {Counter name} +\begin{MacroCode}{package} +\cs_new:Npn\ctr_use_fn:n#1{ + \ensuremath{\ctr_use_custom:nn{#1}{ + *, \dagger, \ddagger, + \mathsection,\mathparagraph,\|, + **, \dagger\dagger,\ddagger\ddagger + }} +} +\end{MacroCode} + \end{macro} + \begin{macro}{\ctr_use_custom:nn}[2] + {Counter name} + {Comma-separated list of items} +\begin{MacroCode}{package} +\cs_new:Npn\ctr_use_custom:nn#1#2{ + \clist_set:Nn\l_tmpa_clist{#2} + \tl_clear:N\l_tmpa_tl + \int_zero:N\l_tmpa_int + \clist_map_inline:Nn\l_tmpa_clist{ + \int_incr:N\l_tmpa_int + \tl_put_right:Nx\l_tmpa_tl{{\int_use:N\l_tmpa_int}{##1}} + } + \exp_args:Nnnx\int_to_symbols:nnn{\ctr_use:n{#1}} + {\clist_count:N\l_tmpa_clist} + {\tl_use:N\l_tmpa_tl} +} +\end{MacroCode} + \end{macro} + + \subsection{Replacing the \LaTeXe\ API} +\begin{MacroCode}{package} +\bool_if:NT\g__ctr_replace_latexe_bool{ +\end{MacroCode} + \begin{macro}{\newcounter}[2] + {Counter name} + {Parent counter} +\begin{MacroCode}{package} + \RenewDocumentCommand\newcounter{mo}{ + \IfNoValueTF{#2}{\ctr_new:n{#1}} + {\ctr_new:nn{#1}{#2}} + } +\end{MacroCode} + \end{macro} + \begin{macro}{\stepcounter}[1] + {Counter name} +\begin{MacroCode}{package} + \RenewDocumentCommand\stepcounter{m}{\ctr_gincr:n{#1}} +\end{MacroCode} + \end{macro} + \begin{macro}{\refstepcounter}[1] + {Counter name} +\begin{MacroCode}{package} + \RenewDocumentCommand\refstepcounter{m}{\ctr_ref_gincr:n{#1}} +\end{MacroCode} + \end{macro} + \begin{macro}{\addtocounter}[2] + {Counter name} + {Value to add} +\begin{MacroCode}{package} + \RenewDocumentCommand\addtocounter{mm}{\ctr_gadd:nn{#1}{#2}} +\end{MacroCode} + \end{macro} + \begin{macro}{\setcounter}[2] + {Counter name} + {New value} +\begin{MacroCode}{package} + \RenewDocumentCommand\setcounter{mm}{\ctr_gset:nn{#1}{#2}} +\end{MacroCode} + \end{macro} + \begin{macro}{\value}[1] + {Counter name} + \changes{0.1d}{Return a command sequence, not a number} +\begin{MacroCode}{package} + \RenewDocumentCommand\value{m}{\ctr_value:n{#1}} +\end{MacroCode} + \end{macro} + \begin{macro}{\arabic}[1] + {Counter name} +\begin{MacroCode}{package} + \RenewDocumentCommand\arabic{m}{\ctr_use_arabic:n{#1}} +\end{MacroCode} + \end{macro} + \begin{macro}{\alph}[1] + {Counter name} +\begin{MacroCode}{package} + \RenewDocumentCommand\alph{m}{\ctr_use_alph:n{#1}} +\end{MacroCode} + \end{macro} + \begin{macro}{\Alph}[1] + {Counter name} +\begin{MacroCode}{package} + \RenewDocumentCommand\Alph{m}{\ctr_use_Alph:n{#1}} +\end{MacroCode} + \end{macro} + \begin{macro}{\roman}[1] + {Counter name} +\begin{MacroCode}{package} + \RenewDocumentCommand\roman{m}{\ctr_use_roman:n{#1}} +\end{MacroCode} + \end{macro} + \begin{macro}{\Roman}[1] + {Counter name} +\begin{MacroCode}{package} + \RenewDocumentCommand\Roman{m}{\ctr_use_Roman:n{#1}} +\end{MacroCode} + \end{macro} + \begin{macro}{\fnsymbol}[1] + {Counter name} +\begin{MacroCode}{package} + \RenewDocumentCommand\fnsymbol{m}{\ctr_use_fn:n{#1}} +\end{MacroCode} + \end{macro} +\begin{MacroCode}{package} +} +\end{MacroCode} + +\begin{MacroCode}{package} +\endinput +\end{MacroCode} + + \Finale + \section{Installation} + The easiest way to install this package is using the package + manager provided by your \LaTeX\ installation if such a program + is available. Failing that, provided you have obtained the package + source (\file{l3ctr2e.tex} and \file{Makefile}) from either CTAN + or Github, running \texttt{make install} inside the source directory + works well. This will extract the documentation and code from + \file{l3ctr2e.tex}, install all files into the TDS tree at + \texttt{TEXMFHOME} and run \texttt{mktexlsr}. + + If you want to extract code and documentation without installing + the package, run \texttt{make all} instead. If you insist on not + using \texttt{make}, remember that packages distributed using + \pkg{skdoc} must be extracted using \texttt{pdflatex}, \emph{not} + \texttt{tex} or \texttt{latex}. + + \PrintChanges + \PrintIndex +\end{document} diff --git a/Master/texmf-dist/tex/latex/l3ctr2e/l3ctr2e.sty b/Master/texmf-dist/tex/latex/l3ctr2e/l3ctr2e.sty new file mode 100644 index 00000000000..a9371bc938e --- /dev/null +++ b/Master/texmf-dist/tex/latex/l3ctr2e/l3ctr2e.sty @@ -0,0 +1,151 @@ +%% This is file `l3ctr2e.sty', generated from `l3ctr2e.tex' (key `package'). +%% l3ctr2e LaTeX2e counters in LaTeX3 ways +%% +%% Copyright (C) 2012-2013 by Simon Sigurdhsson <sigurdhsson@gmail.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 `maintained'. +%% +%% The Current Maintainer of this work is Simon Sigurdhsson. +%% +%% This work consists of the file l3ctr2e.tex and the derived file +%% l3ctr2e.sty. + +\RequirePackage{expl3,l3keys2e,xparse} +\ProvidesExplClass{l3ctr2e}% + {2013/05/25}{0.1d}{LaTeX2e counters in LaTeX3 ways} +\keys_define:nn{l3ctr2e}{ + replace .bool_set:N = \g__ctr_replace_latexe_bool, + replace .default:n = true, + replace .initial:n = false +} +\ProcessKeysPackageOptions{l3ctr2e} +\msg_new:nnn{l3ctr2e}{no-counter}{No~counter~`#1'~defined!} +\prg_new_conditional:Npnn\__ctr_exists:n#1{T}{ + \int_if_exist:cTF{c@#1}{ + \prg_return_true: + }{ + \msg_error:nnn{l3ctr2e}{no-counter}{#1} + \prg_return_false: + } +} +\tl_new:N\g__ctr_children__ctr_global_tl +\cs_new:Npn\__ctr_define:n#1{ + \int_new:c{c@#1} % actually \newcount, incorrect! FIX! + \ctr_gzero:n{#1} + \tl_new:c{g__ctr_children_#1_tl} + \cs_gset:cpn{cl@#1}{} + \cs_gset:cpn{p@#1}{} + \cs_gset:cpn{the#1}{\ctr_use_arabic:n{#1}} +} +\cs_new:Npn\__ctr_add_child:nn#1#2{ + \tl_gput_right:cn{g__ctr_children_#1_tl}{{#2}} +} +\cs_new:Npn\ctr_new:n#1{ + \__ctr_define:n{#1} + \__ctr_add_child:nn{_ctr_global}{#1} +} +\cs_new:Npn\ctr_new:nn#1#2{ + \__ctr_define:n{#1} + \__ctr_add_child:nn{#2}{#1} +} +\cs_new:Npn\ctr_gzero:n#1{ + \__ctr_exists:nT{#1}{\int_gzero:c{c@#1}} +} +\cs_new:Npn\ctr_gset:nn#1#2{ + \__ctr_exists:nT{#1}{\int_gset:cn{c@#1}{#2}} +} +\cs_new:Npn\ctr_gadd:nn#1#2{ + \__ctr_exists:nT{#1}{\int_gadd:cn{c@#1}{#2}} +} +\cs_new:Npn\ctr_gincr:n#1{ + \ctr_gadd:nn{#1}{\c_one} + \tl_if_exist:cT{g__ctr_children_#1_tl}{ + \tl_map_inline:cn{g__ctr_children_#1_tl}{ + \ctr_gincr:n{##1} % To reset children of the child + \ctr_gzero:n{##1} + } + } +} +\cs_new:Npn\ctr_ref_gincr:n#1{ + \ctr_gincr:n{#1} + \cs_set:Npx\@currentlabel{ + \use:c{p@#1} + \use:c{the#1} + } +} +\cs_new:Npn\ctr_value:n#1{ + \use:c{c@#1} +} +\cs_new:Npn\ctr_use:n#1{ + \int_use:c{c@#1} +} +\cs_new:Npn\ctr_use_arabic:n#1{ + \int_to_arabic:n{\ctr_use:n{#1}} +} +\cs_new:Npn\ctr_use_alph:n#1{ + \int_to_alph:n{\ctr_use:n{#1}} +} +\cs_new:Npn\ctr_use_Alph:n#1{ + \int_to_Alph:n{\ctr_use:n{#1}} +} +\cs_new:Npn\ctr_use_binary:n#1{ + \int_to_binary:n{\ctr_use:n{#1}} +} +\cs_new:Npn\ctr_use_hex:n#1{ + \int_to_hexadecimal:n{\ctr_use:n{#1}} +} +\cs_new:Npn\ctr_use_octal:n#1{ + \int_to_octal:n{\ctr_use:n{#1}} +} +\cs_new:Npn\ctr_use_roman:n#1{ + \int_to_roman:n{\ctr_use:n{#1}} +} +\cs_new:Npn\ctr_use_Roman:n#1{ + \int_to_Roman:n{\ctr_use:n{#1}} +} +\cs_new:Npn\ctr_use_fn:n#1{ + \ensuremath{\ctr_use_custom:nn{#1}{ + *, \dagger, \ddagger, + \mathsection,\mathparagraph,\|, + **, \dagger\dagger,\ddagger\ddagger + }} +} +\cs_new:Npn\ctr_use_custom:nn#1#2{ + \clist_set:Nn\l_tmpa_clist{#2} + \tl_clear:N\l_tmpa_tl + \int_zero:N\l_tmpa_int + \clist_map_inline:Nn\l_tmpa_clist{ + \int_incr:N\l_tmpa_int + \tl_put_right:Nx\l_tmpa_tl{{\int_use:N\l_tmpa_int}{##1}} + } + \exp_args:Nnnx\int_to_symbols:nnn{\ctr_use:n{#1}} + {\clist_count:N\l_tmpa_clist} + {\tl_use:N\l_tmpa_tl} +} +\bool_if:NT\g__ctr_replace_latexe_bool{ + \RenewDocumentCommand\newcounter{mo}{ + \IfNoValueTF{#2}{\ctr_new:n{#1}} + {\ctr_new:nn{#1}{#2}} + } + \RenewDocumentCommand\stepcounter{m}{\ctr_gincr:n{#1}} + \RenewDocumentCommand\refstepcounter{m}{\ctr_ref_gincr:n{#1}} + \RenewDocumentCommand\addtocounter{mm}{\ctr_gadd:nn{#1}{#2}} + \RenewDocumentCommand\setcounter{mm}{\ctr_gset:nn{#1}{#2}} + \RenewDocumentCommand\value{m}{\ctr_value:n{#1}} + \RenewDocumentCommand\arabic{m}{\ctr_use_arabic:n{#1}} + \RenewDocumentCommand\alph{m}{\ctr_use_alph:n{#1}} + \RenewDocumentCommand\Alph{m}{\ctr_use_Alph:n{#1}} + \RenewDocumentCommand\roman{m}{\ctr_use_roman:n{#1}} + \RenewDocumentCommand\Roman{m}{\ctr_use_Roman:n{#1}} + \RenewDocumentCommand\fnsymbol{m}{\ctr_use_fn:n{#1}} +} +\endinput + diff --git a/Master/tlpkg/tlpsrc/collection-latexrecommended.tlpsrc b/Master/tlpkg/tlpsrc/collection-latexrecommended.tlpsrc index 6a6989500dc..4adb453b952 100644 --- a/Master/tlpkg/tlpsrc/collection-latexrecommended.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-latexrecommended.tlpsrc @@ -26,6 +26,7 @@ depend fp depend index depend jknapltx depend koma-script +depend l3ctr2e depend l3kernel depend l3packages depend l3experimental diff --git a/Master/tlpkg/tlpsrc/l3ctr2e.tlpsrc b/Master/tlpkg/tlpsrc/l3ctr2e.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/Master/tlpkg/tlpsrc/l3ctr2e.tlpsrc |