From ca94651714aa4fc2f0ce2f363011b2deda254885 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 7 Dec 2012 23:32:12 +0000 Subject: new latex package tableof (7dec12) git-svn-id: svn://tug.org/texlive/trunk@28463 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/tableof/README | 45 ++ Master/texmf-dist/doc/latex/tableof/tableof.pdf | Bin 0 -> 71747 bytes Master/texmf-dist/source/latex/tableof/tableof.dtx | 621 +++++++++++++++++++++ Master/texmf-dist/source/latex/tableof/tableof.ins | 37 ++ Master/texmf-dist/tex/latex/tableof/tableof.sty | 135 +++++ Master/tlpkg/bin/tlpkg-ctan-check | 2 +- Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc | 1 + Master/tlpkg/tlpsrc/tableof.tlpsrc | 0 8 files changed, 840 insertions(+), 1 deletion(-) create mode 100644 Master/texmf-dist/doc/latex/tableof/README create mode 100644 Master/texmf-dist/doc/latex/tableof/tableof.pdf create mode 100644 Master/texmf-dist/source/latex/tableof/tableof.dtx create mode 100644 Master/texmf-dist/source/latex/tableof/tableof.ins create mode 100644 Master/texmf-dist/tex/latex/tableof/tableof.sty create mode 100644 Master/tlpkg/tlpsrc/tableof.tlpsrc (limited to 'Master') diff --git a/Master/texmf-dist/doc/latex/tableof/README b/Master/texmf-dist/doc/latex/tableof/README new file mode 100644 index 00000000000..12e0bd22e7e --- /dev/null +++ b/Master/texmf-dist/doc/latex/tableof/README @@ -0,0 +1,45 @@ + + Package `tableof' (v1.0, 2012/12/06) + `tables of tagged contents' (jfB) + + The tableof package allows to tag the table of contents entries. + + The \tableof{comma,separated,list,of,tags} command displays a table of + contents containing only the entries having all the listed tags. There + is a complementary command \tablenotof. They may be used multiple times. + + One sets tags in the source with commands such as \toftagstart{A,B,C,D} + and one unsets them with \toftagstop{A,D}, and, for a punctual use, one + has \toftagthis{A,E}, \tofuntagthis{C,D}. + + Copyright (C) 2012 by Jean-Francois Burnol + + The source file etoc.dtx and its derived files 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 2003/12/01 or later. + + Installation: + ============ + + `latex tableof.dtx' or `pdflatex tableof.dtx' + Run twice to get the bookmarks right. + + `tableof.sty', `tableof.ins' and `tableoftest.tex' are generated on + the first latex run. + + Put `tableof.sty' at a suitable location within the TeX installation: + tableof.sty -> ..path..to../tex/latex/tableof/ + + `tableof.ins' is for TeX distributions expecting it. + + `tableoftest.tex' is an example of use of the package commands. Run + latex twice on it to get the tagged tables of contents. + + diff --git a/Master/texmf-dist/doc/latex/tableof/tableof.pdf b/Master/texmf-dist/doc/latex/tableof/tableof.pdf new file mode 100644 index 00000000000..0444052d0d8 Binary files /dev/null and b/Master/texmf-dist/doc/latex/tableof/tableof.pdf differ diff --git a/Master/texmf-dist/source/latex/tableof/tableof.dtx b/Master/texmf-dist/source/latex/tableof/tableof.dtx new file mode 100644 index 00000000000..aceb5e6123b --- /dev/null +++ b/Master/texmf-dist/source/latex/tableof/tableof.dtx @@ -0,0 +1,621 @@ +% -*- coding: iso-latin-1; -*- +%<*ins> +\def\lasttimestamp{Time-stamp: <06-12-2012 22:11:56 CET jfb>} +\def\pkgname{tableof} +\def\pkgdate{2012/12/06} +\def\pkgversion{v1.0} +\def\pkgdescription{tables of tagged contents (jfB)} +% +%% +%% Package `tableof' by Jean-Francois Burnol +%% Copyright (C) 2012 by Jean-Francois Burnol +%% +%<*none> +\def\docdate{2012/12/06} +\def\striptimestamp#1 <#2 #3 #4 #5>{#2 at #3 #4} +\edef\dtxtimestamp{\expandafter\striptimestamp\lasttimestamp} +\ProvidesFile{\pkgname.dtx} + [`\pkgname' source and documentation (\dtxtimestamp)] +% +% The copyright at the top of this file applies to `tableof.dtx' +% and to its derived files. +% +% They 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 2003/12/01 or later. +% +% Installation: +% ============ +% +% `latex tableof.dtx' or `pdflatex tableof.dtx' +% Run twice to get the bookmarks right. +% +% `tableof.sty', `tableof.ins' and `tableoftest.tex' are generated on +% the first latex run. +% +% Put `tableof.sty' at a suitable location within the TeX installation: +% tableof.sty -> ..path..to../tex/latex/tableof/ +% +% `tableof.ins' is for TeX distributions expecting it. +% +% `tableoftest.tex' is an example of use of the package commands. Run +% latex twice on it to get the tagged tables of contents. +% +\begingroup +\input docstrip.tex +\askforoverwritefalse +\def\pkgpreamble{\defaultpreamble^^J\MetaPrefix^^J% +\string\ProvidesPackage{\pkgname}^^J% +\space[\pkgdate\space\pkgversion\space\pkgdescription]} +\generate{\nopreamble +\file{\pkgname.ins}{\from{\pkgname.dtx}{ins}} +\usepreamble\defaultpreamble +\file{\pkgname test.tex}{\from{\pkgname.dtx}{test}} +\usepreamble\pkgpreamble +\file{\pkgname.sty}{\from{\pkgname.dtx}{package}}} +\endgroup +\iffalse +% +%<*ins> +%------------------------------------------------------------------------------- +%% This file `tableof.ins' is provided for compatibility with TeX +%% distributions expecting to find it for installation of `tableof.sty'. +%% +%% As usual `latex tableof.ins' produces `tableof.sty' from the source +%% `tableof.dtx' +%% +%% (an already existing `tableof.sty' in the same repertory will be +%% overwritten) +%% +%% Put `tableof.sty' in a suitable location within the TeX installation: +%% tableof.sty -> ................/tex/latex/tableof/ +%% +%% The generated auxiliary files may be discarded. +%% +%% See `tableof.dtx' for the statements of copyright and conditions of +%% distribution or modification. +%% +\input docstrip.tex +\askforoverwritefalse +\def\pkgpreamble{\defaultpreamble^^J\MetaPrefix^^J% +\string\ProvidesPackage{\pkgname}^^J% +\space[\pkgdate\space\pkgversion\space\pkgdescription]} +\generate{\usepreamble\pkgpreamble +\file{\pkgname.sty}{\from{\pkgname.dtx}{package}}} +\endbatchfile +%------------------------------------------------------------------------------- +% +%<*test> +%------------------------------------------------------------------------------- +%% This file `tableoftest.tex' serves to demontrate the use of the +%% commands from package `tableof'. +%% +%% (run on it `latex' or `pdflatex' twice.) +%% +\documentclass{article} +\usepackage[colorlinks,linkcolor=blue]{hyperref} +\usepackage{tableof} +\begin{document} +\tofOpenTocFileForWrite +\section*{with (and)} +\tableof{} +\section*{with (or)} +\tableof*{} +\section*{with A (and)} +\tableof{A} +\section*{with A (or)} +\tableof*{A} +\section*{with A and with C} +\tableof{A,C} +\section*{with B or with C} +\tableof*{B,C} +\section*{with A and with B and with C} +\tableof{A,B,C} +\section*{with A or with B or with C} +\tableof*{A,B,C} +\section*{without B (and)} +\tablenotof{B} +\section*{without A and without B} +\tablenotof{A,B} +\section*{without A or without C} +\tablenotof*{A,C} +\section*{without A and without B and without C} +\tablenotof{A,B,C} +\section*{without A or without B or without C} +\tablenotof*{A,B,C} +\section*{with D and with E} +\tableof{D,E} +\section*{with E} +\tableof{E} +\section*{without D} +\tablenotof{D} +\section*{Ecology} +\tableof{ecology} +\section*{Rabbits} +\tableof{rabbits} +\section*{Kitchenware} +\tableof{kitchenware} +\clearpage +\section{no tag} +nothing +\begin{verbatim} +\toftagstart{D,E} +\toftagthis{A} +\end{verbatim} +\toftagstart{D,E} +\toftagthis{A} +\section{A,D,E} +A,D,E +\begin{verbatim} +\toftagthis{B} +\end{verbatim} +\toftagthis{B} +\section{B,D,E} +B,D,E +\begin{verbatim} +\toftagthis{C} +\end{verbatim} +\toftagthis{C} +\section{C,D,E} +C,D,E +\begin{verbatim} +\toftagstop{E,F} +\toftagthis{A,B} +\end{verbatim} +\toftagstop{E,F} +\toftagthis{A,B} +\section{A,B,D} +A,B,D +\begin{verbatim} +\toftagthis{B,C} +\end{verbatim} +\toftagthis{B,C} +\section{B,C,D} +B,C,D +\begin{verbatim} +\toftagthis{A,C} +\end{verbatim} +\toftagthis{A,C} +\section{A,C,D} +A,C,D +\begin{verbatim} +\toftagstop{D} +\toftagthis{A,B,C} +\end{verbatim} +\toftagstop{D} +\toftagthis{A,B,C} +\section{A,B,C} +A,B,C +\begin{verbatim} +\toftagstop{A,B,C,D,E} +\toftagstart{kitchenware,rabbits} +\end{verbatim} +\toftagstop{A,B,C,D,E} +\toftagstart{kitchenware,rabbits} +\section{Knives and rabbits} +\begin{verbatim} +\tofuntagthis{kitchenware} +\end{verbatim} +\tofuntagthis{kitchenware} +\subsection{Hunting rabbits} +\begin{verbatim} +\tofuntagthis{rabbits} +\end{verbatim} +\tofuntagthis{rabbits} +\subsection{Best knives for cooking} +\subsection{Eating rabbits} +\begin{verbatim} +\toftagstart{ecology}\tofuntagthis{rabbits} +\end{verbatim} +\toftagstart{ecology}\tofuntagthis{rabbits} +\section{Knives and global climate} +\begin{verbatim} +\toftagstop{kitchenware} +\end{verbatim} +\toftagstop{kitchenware} +\section{The rabbit in the wild} +\subsection{Impact of the rabbit on global climate} +\begin{verbatim} +\toftagstop{rabbits} +\end{verbatim} +\toftagstop{rabbits} +\section{Other species of interest for cooking} +\end{document}\endinput +%------------------------------------------------------------------------------- +% +%<*none> +\fi +\documentclass[a4paper,11pt,abstract]{scrdoc} +\pagestyle{headings} +\usepackage[latin1]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{geometry} +\usepackage{verbatim} +\usepackage{txfonts} +\usepackage{xspace} +\usepackage{color} +\definecolor{joli}{RGB}{225,95,0} +\definecolor{JOLI}{RGB}{225,95,0} +\definecolor{BLUE}{RGB}{0,0,255} +\usepackage[english]{babel} + +\usepackage[%dvipdfmx,% +pdfencoding=pdfdoc,bookmarks=true]{hyperref} + +\hypersetup{% +linktoc=all,% +breaklinks=true,% +hidelinks,% +pdfauthor={Jean-Fran\c cois Burnol},% +pdftitle={The tableof package},% +pdfsubject={LaTeX, table of contents},% +pdfkeywords={LaTeX, table of contents},% +pdfstartview=FitH,% +pdfpagemode=UseOutlines} + +\MakeShortVerb{\|} + +\DeclareRobustCommand\cs[1]{{\ttfamily\hyphenchar\font45\char`\\#1}} +\DeclareRobustCommand\csb[1]{{% +\color{blue}\ttfamily\hyphenchar\font45\char`\\#1}} + +\newcommand\cshyp[1]{\texorpdfstring{\cs{#1}}{\textbackslash #1}} +\newcommand\csbhyp[1]{\texorpdfstring{\csb{#1}}{\textbackslash #1}} +\newcommand\lowast{\raisebox{-.25\height}{*}} +\newcommand\starit[1]{\cs{#1\lowast}} +\newcommand\staritb[1]{\csb{#1\lowast}} + +\newcommand\tof{\cs{tableof}\xspace} +\newcommand\tnotof{\cs{tablenotof}\xspace} +\newcommand\tofb{\csb{tableof}\xspace} +\newcommand\tnotofb{\csb{tablenotof}\xspace} + +\newcommand\tableof{% +\texorpdfstring{{\color{joli}\ttfamily\bfseries tableof}} +{tableof}\xspace} + + +\frenchspacing + +\renewcommand\familydefault\sfdefault + +\begin{document} +\thispagestyle{empty} +\rmfamily + +\begin{center} + {\normalfont\Large The \tableof package}\\ +\textsc{Jean-François Burnol}\par + \footnotesize \ttfamily + jfbu (at) free (dot) fr\\ + Package version: \pkgversion\ (\pkgdate)\\ + Documentation generated from the source file\\ + with timestamp ``\dtxtimestamp'' +\end{center} + +\begin{abstract} + The \tableof package allows to tag the table of contents entries. + + The \csb{tableof}\{{\color{blue}\emph{comma,separated,list,of,tags}}\} command + displays a table of contents containing only the entries having all the listed + tags. There is a complementary command \csb{tablenotof}. They may be used + multiple times. +\end{abstract} + + +\section{Commands} + +\subsection{\csbhyp{toftagstart} and \csbhyp{toftagstop}} + +These commands have a mandatory argument which is a comma separated list of +tags. The tags need not have been predeclared. +\begin{verbatim} +\toftagstart{kitchenware,weaponry,gastronomy} +\section{Dealing with knives} +\subsection{This is tagged, too} +\section{Hunting rabbits} +\toftagstop{weaponry} +\section{Eating rabbits} +\end{verbatim} + +\subsection{\csbhyp{toftagthis} and \csbhyp{tofuntagthis}} + +The \cs{toftagthis} command tags with the values from its argument (a comma +separated list) only the next object found in the |.toc| file. The command +should be located \emph{before} and not \emph{after} the +to-be-tagged TOC entry. The \cs{tofuntagthis} +command untags the next entry. +\begin{verbatim} +\toftagstart{kitchenware,rabbits} +\section{Knives and rabbits} + \tofuntagthis{kitchenware} +\subsection{Hunting rabbits} +\subsection{Best knives for cooking} +\subsection{Eating rabbits} +\toftagstart{ecology} + \toftagthis{climate} +\section{Knives and global climate} +\toftagstop{kitchenware} +\section{The rabbit in the wild} + \toftagthis{climate} +\subsection{Impact of the rabbit on global climate} +\end{verbatim} + +\subsection{\csbhyp{tableof}} + +This command has a mandatory argument which is a comma separated list of tags. +It displays, exactly as would appear in the table of contents, the corresponding +tagged entries from the |.toc| file. Its title needs to be explicitely set up by +additional code. +\begin{verbatim} +\section*{Table of entries tagged with weaponry AND with hunting} +\tableof{weaponry,hunting} +\end{verbatim} +There is a starred variant: +\begin{verbatim} +\section*{Table of entries tagged with weaponry OR with hunting} +\tableof*{weaponry,hunting} +\end{verbatim} + +\subsection{\csbhyp{tablenotof}} + +It has a mandatory argument which is a comma separated list of tags. It +displays, exactly as would appear in the table of contents, the +entries from the |.toc| file which are \emph{not} tagged: +\begin{verbatim} +\section*{Table of entries NOT tagged with weaponry NEITHER with hunting} +\tablenotof{weaponry,hunting} +\end{verbatim} +There is a starred variant: +\begin{verbatim} +\section*{Table of entries NOT tagged with weaponry OR NOT tagged with hunting} +\tablenotof*{weaponry,hunting} +\end{verbatim} + + +\subsection{\csbhyp{tofOpenTocFileForWrite}} + +The |.toc| file is read into memory (if it exists) by \tableof at the +\cs{usepackage}. But the creation of the |.toc| file is not dealt with by +\tableof itself: either this will be done by a standard \cs{tableofcontents} +command somewhere in the document, or, one may use the package provided command +\cs{tofOpenTocFileForWrite} which does not display anything and just does what +its name indicates. This command can be used also in the preamble.\footnote{Note + to people or packages wanting also to access the |.toc| file: as + happens with the standard \cs{tableofcontents}, the |.toc| file + becomes temporarily empty immediately after \cs{tofOpenTocFileForWrite}.} + + + +\subsection{Compatibility with other packages} + +\tableof checks if the package |hyperref| is loaded as it modifies the format +of the |.toc| file lines. This check is done at the \cs{begin}|{document}| so +the order of loading is not important. + +\tableof adds the tag data to the |.toc| file, but this data is defined to do +nothing except when it is used by \tableof itself. + +\subsection{TODO} + +Create a parser for arbitrary iterated boolean combinations of tags . . . but +this kind of thing must have been done a zillion times already, as it belongs to +the basics in computer science! . . . and it surely is no easy task in \TeX{}! +so I cautiously retreated from such an endeavor. + +\section{Generating the package file and the test file} + +Running |latex| (or |pdflatex|) on |tableof.dtx| generates:\\ +(1) the package file |tableof.sty| (which should be moved to a suitable +location within the \TeX{} installation), (2) |tableof.ins| for \TeX{} +distributions expecting such a file, (3) |tableoftest.tex| which +demonstrates the package features (one should run |latex| twice on it), +and (4) the documentation itself (run |pdflatex| twice to get the +bookmarks.) + + +\section{Implementation} + +\makeatletter +\StopEventually{\check@checksum\end{document}} +\makeatother + +Writing-up source code comments is hopefully for a future +release. + +% I don't want to have to type at this location (far from the top of the file) +% explicitly the package version or version date, as it is inconvenient to have +% to remember to do this when updating the package. Also, I prefer not to add +% macros to the |.sty| file macros with the package date, name, or version. So I +% cut out the following from the real macrocode environment (leaving out the +% \init@crossref.) +\makeatletter +\begingroup +\topsep\MacrocodeTopsep +\trivlist\parskip\z@\item[] +\macro@font +\leftskip\@totalleftmargin \advance\leftskip\MacroIndent +\rightskip\z@ \parindent\z@ \parfillskip\@flushglue +\global\@newlistfalse \global\@minipagefalse +\ifcodeline@index + \everypar{\global\advance\c@CodelineNo\@ne + \llap{\theCodelineNo\ \hskip\@totalleftmargin}}% +\fi +\string\ProvidesPackage\string{\pkgname\string}\par +\noindent\space [\pkgdate\space\pkgversion\space\pkgdescription]\par +\nointerlineskip +\global\@inlabelfalse +\endtrivlist +\endgroup +\makeatother +% The catcode hackery next is to avoid to have <*package> to be listed +% in the commented source code... +% (c) 2012/11/19 jf burnol ;-) +\MakePercentIgnore +% +% \catcode`\<=0 \catcode`\>=11 \catcode`\*=11 \catcode`\/=11 +% \let\relax +% \def<*package>{\catcode`\<=12 \catcode`\>=12 \catcode`\*=12 \catcode`\/=12} +% +% +%<*package> +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\DeclareOption*{\PackageWarning{tableof}{Option `\CurrentOption' is unknown.}} +\ProcessOptions\relax +% \end{macrocode} +% \begin{macrocode} +\newtoks\tof@toctoks +% \end{macrocode} +% \begin{macrocode} +\def\tof@readtoc#1{% + \ifeof #1 + \let\tof@nextread\@gobble + \global\tof@toctoks=\expandafter{\the\tof@toctoks}% + \else + \let\tof@nextread\tof@readtoc + \read #1 to \tof@buffer + \tof@toctoks=\expandafter\expandafter\expandafter + {\expandafter\the\expandafter\tof@toctoks\tof@buffer}% + \fi + \tof@nextread{#1}} +% \end{macrocode} +% \begin{macrocode} +\IfFileExists{\jobname .toc} + {{\endlinechar=-1 \makeatletter + \newread\tof@tf + \openin\tof@tf\@filef@und + \tof@readtoc\tof@tf + \closein\tof@tf}}{} +% \end{macrocode} +% \begin{macrocode} +\AtBeginDocument{ +\@ifpackageloaded{hyperref} + {\def\tof@gobblethree@orfour#1#2#3#4{}% + \ifx\hyper@last\@undefined\tof@toctoks{}\fi} + {\def\tof@gobblethree@orfour#1#2#3{}}} +% \end{macrocode} +% \begin{macrocode} +\def\tof@tags{} +\def\tof@tags@tmp{} +\def\tof@untags@tmp{} +\def\tof@true#1{\expandafter\let\csname if@tof#1.\endcsname\iftrue} +\def\tof@false#1{\expandafter\let\csname if@tof#1.\endcsname\iffalse} +\def\tof@secondiftrue#1{\csname if@tof#1.\endcsname + \let\tof@next\@secondoftwo\fi} +\def\tof@secondiffalse#1{\csname if@tof#1.\endcsname\else + \let\tof@next\@secondoftwo\fi} +\def\tof@setflags#1{% + \let\tof@next\@firstoftwo + \@for\@tempa:=#1\do{\tof@true{\@tempa}}% + \@for\@tempa:=\tof@tags\do{\tof@false{\@tempa}}% + \@for\@tempa:=\tof@tags@tmp\do{\tof@false{\@tempa}}% + \@for\@tempa:=\tof@untags@tmp\do{\tof@true{\@tempa}}% + \def\tof@tags@tmp{}\def\tof@untags@tmp{}} +% \end{macrocode} +% \begin{macrocode} +\def\tof@and#1{% + \def\contentsline{% + \tof@setflags{#1}% + \@for\@tempa:=#1\do{\tof@secondiftrue{\@tempa}}% + \tof@next\tof@savedcontentsline\tof@gobblethree@orfour} + \the\tof@toctoks + \endgroup} +% \end{macrocode} +% \begin{macrocode} +\def\tof@or#1{% + \def\contentsline{% + \tof@setflags{#1}% + \@for\@tempa:=#1\do{\tof@secondiffalse{\@tempa}}% + \tof@next\tof@gobblethree@orfour\tof@savedcontentsline} + \the\tof@toctoks + \endgroup} +% \end{macrocode} +% \begin{macrocode} +\def\tof@nor#1{% + \def\contentsline{% + \tof@setflags{#1}% + \@for\@tempa:=#1\do{\tof@secondiffalse{\@tempa}}% + \tof@next\tof@savedcontentsline\tof@gobblethree@orfour} + \the\tof@toctoks + \endgroup} +% \end{macrocode} +% \begin{macrocode} +\def\tof@nand#1{% + \def\contentsline{% + \tof@setflags{#1}% + \@for\@tempa:=#1\do{\tof@secondiftrue{\@tempa}}% + \tof@next\tof@gobblethree@orfour\tof@savedcontentsline} + \the\tof@toctoks + \endgroup} +% \end{macrocode} +% \begin{macrocode} +\def\tof@filter#1#2{\ifx#1#2\else + \ifx\tof@tmptags\@empty\edef\tof@tmptags{#2}\else + \edef\tof@tmptags{\tof@tmptags,#2}\fi\fi} +\def\tof@@start#1{% + \ifx\tof@tags\@empty\edef\tof@tags{#1}\else + \edef\tof@tags{\tof@tags,#1}\fi} +\def\tof@@stop#1{% + \@for\@tempa:=#1\do{\def\tof@tmptags{}% + \@for\@tempb:=\tof@tags\do{\tof@filter\@tempa\@tempb}% + \edef\tof@tags{\tof@tmptags}}} +% \end{macrocode} +% \begin{macrocode} +\let\tof@start\@gobble +\let\tof@stop\@gobble +\let\tof@tagthis\@gobble +\let\tof@untagthis\@gobble +\def\tof@init{\begingroup + \let\tof@savedcontentsline\contentsline + \let\tof@start\tof@@start + \let\tof@stop\tof@@stop + \def\tof@tagthis##1{\def\tof@tags@tmp{##1}}% + \def\tof@untagthis##1{\def\tof@untags@tmp{##1}}} +\newcommand\tableof{\tof@init\@ifstar{\tof@or}{\tof@and}} +\newcommand\tablenotof{\tof@init\@ifstar{\tof@nand}{\tof@nor}} +% \end{macrocode} +% \begin{macrocode} +\newcommand*\toftagthis[1]{\addtocontents{toc} + {\string\tof@tagthis\string{#1\string}}} +\newcommand*\tofuntagthis[1]{\addtocontents{toc} + {\string\tof@untagthis\string{#1\string}}} +\newcommand*\toftagstart[1]{\addtocontents{toc} + {\string\tof@start\string{#1\string}}} +\newcommand*\toftagstop[1]{\addtocontents{toc} + {\string\tof@stop\string{#1\string}}} +\newcommand\tofOpenTocFileForWrite{% +\expandafter\newwrite \csname tf@toc\endcsname +\immediate \openout \csname tf@toc\endcsname \jobname .toc\relax} +\endinput +% \end{macrocode} +% \MakePercentComment +\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 \~} + +\CheckSum{322} + +\Finale +%% +%% End of file `tableof.dtx'. + diff --git a/Master/texmf-dist/source/latex/tableof/tableof.ins b/Master/texmf-dist/source/latex/tableof/tableof.ins new file mode 100644 index 00000000000..c27a0dd83ba --- /dev/null +++ b/Master/texmf-dist/source/latex/tableof/tableof.ins @@ -0,0 +1,37 @@ +\def\lasttimestamp{Time-stamp: <06-12-2012 22:11:56 CET jfb>} +\def\pkgname{tableof} +\def\pkgdate{2012/12/06} +\def\pkgversion{v1.0} +\def\pkgdescription{tables of tagged contents (jfB)} +%% +%% Package `tableof' by Jean-Francois Burnol +%% Copyright (C) 2012 by Jean-Francois Burnol +%% +%% This file `tableof.ins' is provided for compatibility with TeX +%% distributions expecting to find it for installation of `tableof.sty'. +%% +%% As usual `latex tableof.ins' produces `tableof.sty' from the source +%% `tableof.dtx' +%% +%% (an already existing `tableof.sty' in the same repertory will be +%% overwritten) +%% +%% Put `tableof.sty' in a suitable location within the TeX installation: +%% tableof.sty -> ................/tex/latex/tableof/ +%% +%% The generated auxiliary files may be discarded. +%% +%% See `tableof.dtx' for the statements of copyright and conditions of +%% distribution or modification. +%% +\input docstrip.tex +\askforoverwritefalse +\def\pkgpreamble{\defaultpreamble^^J\MetaPrefix^^J% +\string\ProvidesPackage{\pkgname}^^J% +\space[\pkgdate\space\pkgversion\space\pkgdescription]} +\generate{\usepreamble\pkgpreamble +\file{\pkgname.sty}{\from{\pkgname.dtx}{package}}} +\endbatchfile +\endinput +%% +%% End of file `tableof.ins'. diff --git a/Master/texmf-dist/tex/latex/tableof/tableof.sty b/Master/texmf-dist/tex/latex/tableof/tableof.sty new file mode 100644 index 00000000000..c88ab65716a --- /dev/null +++ b/Master/texmf-dist/tex/latex/tableof/tableof.sty @@ -0,0 +1,135 @@ +%% +%% This is file `tableof.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tableof.dtx (with options: `package') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from tableof.sty. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file tableof.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +%% +\ProvidesPackage{tableof} + [2012/12/06 v1.0 tables of tagged contents (jfB)] +%% +%% Package `tableof' by Jean-Francois Burnol +%% Copyright (C) 2012 by Jean-Francois Burnol +%% +\NeedsTeXFormat{LaTeX2e} +\DeclareOption*{\PackageWarning{tableof}{Option `\CurrentOption' is unknown.}} +\ProcessOptions\relax +\newtoks\tof@toctoks +\def\tof@readtoc#1{% + \ifeof #1 + \let\tof@nextread\@gobble + \global\tof@toctoks=\expandafter{\the\tof@toctoks}% + \else + \let\tof@nextread\tof@readtoc + \read #1 to \tof@buffer + \tof@toctoks=\expandafter\expandafter\expandafter + {\expandafter\the\expandafter\tof@toctoks\tof@buffer}% + \fi + \tof@nextread{#1}} +\IfFileExists{\jobname .toc} + {{\endlinechar=-1 \makeatletter + \newread\tof@tf + \openin\tof@tf\@filef@und + \tof@readtoc\tof@tf + \closein\tof@tf}}{} +\AtBeginDocument{ +\@ifpackageloaded{hyperref} + {\def\tof@gobblethree@orfour#1#2#3#4{}% + \ifx\hyper@last\@undefined\tof@toctoks{}\fi} + {\def\tof@gobblethree@orfour#1#2#3{}}} +\def\tof@tags{} +\def\tof@tags@tmp{} +\def\tof@untags@tmp{} +\def\tof@true#1{\expandafter\let\csname if@tof#1.\endcsname\iftrue} +\def\tof@false#1{\expandafter\let\csname if@tof#1.\endcsname\iffalse} +\def\tof@secondiftrue#1{\csname if@tof#1.\endcsname + \let\tof@next\@secondoftwo\fi} +\def\tof@secondiffalse#1{\csname if@tof#1.\endcsname\else + \let\tof@next\@secondoftwo\fi} +\def\tof@setflags#1{% + \let\tof@next\@firstoftwo + \@for\@tempa:=#1\do{\tof@true{\@tempa}}% + \@for\@tempa:=\tof@tags\do{\tof@false{\@tempa}}% + \@for\@tempa:=\tof@tags@tmp\do{\tof@false{\@tempa}}% + \@for\@tempa:=\tof@untags@tmp\do{\tof@true{\@tempa}}% + \def\tof@tags@tmp{}\def\tof@untags@tmp{}} +\def\tof@and#1{% + \def\contentsline{% + \tof@setflags{#1}% + \@for\@tempa:=#1\do{\tof@secondiftrue{\@tempa}}% + \tof@next\tof@savedcontentsline\tof@gobblethree@orfour} + \the\tof@toctoks + \endgroup} +\def\tof@or#1{% + \def\contentsline{% + \tof@setflags{#1}% + \@for\@tempa:=#1\do{\tof@secondiffalse{\@tempa}}% + \tof@next\tof@gobblethree@orfour\tof@savedcontentsline} + \the\tof@toctoks + \endgroup} +\def\tof@nor#1{% + \def\contentsline{% + \tof@setflags{#1}% + \@for\@tempa:=#1\do{\tof@secondiffalse{\@tempa}}% + \tof@next\tof@savedcontentsline\tof@gobblethree@orfour} + \the\tof@toctoks + \endgroup} +\def\tof@nand#1{% + \def\contentsline{% + \tof@setflags{#1}% + \@for\@tempa:=#1\do{\tof@secondiftrue{\@tempa}}% + \tof@next\tof@gobblethree@orfour\tof@savedcontentsline} + \the\tof@toctoks + \endgroup} +\def\tof@filter#1#2{\ifx#1#2\else + \ifx\tof@tmptags\@empty\edef\tof@tmptags{#2}\else + \edef\tof@tmptags{\tof@tmptags,#2}\fi\fi} +\def\tof@@start#1{% + \ifx\tof@tags\@empty\edef\tof@tags{#1}\else + \edef\tof@tags{\tof@tags,#1}\fi} +\def\tof@@stop#1{% + \@for\@tempa:=#1\do{\def\tof@tmptags{}% + \@for\@tempb:=\tof@tags\do{\tof@filter\@tempa\@tempb}% + \edef\tof@tags{\tof@tmptags}}} +\let\tof@start\@gobble +\let\tof@stop\@gobble +\let\tof@tagthis\@gobble +\let\tof@untagthis\@gobble +\def\tof@init{\begingroup + \let\tof@savedcontentsline\contentsline + \let\tof@start\tof@@start + \let\tof@stop\tof@@stop + \def\tof@tagthis##1{\def\tof@tags@tmp{##1}}% + \def\tof@untagthis##1{\def\tof@untags@tmp{##1}}} +\newcommand\tableof{\tof@init\@ifstar{\tof@or}{\tof@and}} +\newcommand\tablenotof{\tof@init\@ifstar{\tof@nand}{\tof@nor}} +\newcommand*\toftagthis[1]{\addtocontents{toc} + {\string\tof@tagthis\string{#1\string}}} +\newcommand*\tofuntagthis[1]{\addtocontents{toc} + {\string\tof@untagthis\string{#1\string}}} +\newcommand*\toftagstart[1]{\addtocontents{toc} + {\string\tof@start\string{#1\string}}} +\newcommand*\toftagstop[1]{\addtocontents{toc} + {\string\tof@stop\string{#1\string}}} +\newcommand\tofOpenTocFileForWrite{% +\expandafter\newwrite \csname tf@toc\endcsname +\immediate \openout \csname tf@toc\endcsname \jobname .toc\relax} +\endinput +%% +%% End of file `tableof.sty'. diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index f84eeeeae2a..28cdf31e3a1 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -397,7 +397,7 @@ my @TLP_working = qw( swebib swimgraf syllogism syntax synproof syntrace synttree systeme t-angles t2 - tabfigures tableaux tablefootnote tablists tablor tabls + tabfigures tableaux tablefootnote tablists tableof tablor tabls tabto-generic tabto-ltx tabu tabularborder tabularcalc tabularew tabulars-e tabulary tabvar tagging talk tamefloats diff --git a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc index 702bf8d55f2..e2fc08d70af 100644 --- a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc @@ -747,6 +747,7 @@ depend synttree depend tabfigures depend tableaux depend tablefootnote +depend tableof depend tablists depend tabls depend tabto-ltx diff --git a/Master/tlpkg/tlpsrc/tableof.tlpsrc b/Master/tlpkg/tlpsrc/tableof.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d -- cgit v1.2.3