diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/collcell/collcell.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/collcell/collcell.dtx | 262 |
1 files changed, 262 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/collcell/collcell.dtx b/Master/texmf-dist/source/latex/collcell/collcell.dtx new file mode 100644 index 00000000000..2bf3c89d5a5 --- /dev/null +++ b/Master/texmf-dist/source/latex/collcell/collcell.dtx @@ -0,0 +1,262 @@ +% \iffalse meta-comment +% +% Copyright (C) 2009-2011 by Martin Scharrer <martin@scharrer-online.de> +% ---------------------------------------------------------------------- +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3c +% 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.3c or later is part of all distributions of LaTeX +% version 2008/05/04 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Martin Scharrer. +% +% This work consists of the files collcell.dtx, collcell.ins +% and the derived file collcell.sty. +% +% \fi +%%^^A $Id: collcell.dtx 2129 2011-02-04 11:36:33Z martin $ +% +% \iffalse +%<package>\ProvidesPackage{collcell} +%<*driver> +\ProvidesFile{collcell.dtx} +%</driver> + [2011/02/04 v0.1 Collect the content of a tabular cell] +%<*driver> +\documentclass{ydoc} +\GetFileInfo{\jobname.dtx} +\usepackage{collcell}[\filedate] + +\EnableCrossrefs +%\CodelineIndex +\RecordChanges +%\OnlyDescription +\begin{document} + \DocInput{\jobname.dtx} + \PrintChanges + %\newpage\PrintIndex +\end{document} +%</driver> +% \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 \~} +% +% +% \changes{v0.0}{2009/08/13}{Created package} +% \changes{v0.1}{2011/02/04}{First released version} +% +% +% \DoNotIndex{\newcommand,\newenvironment,\def,\edef,\xdef,\DeclareRobustCommand} +% +% \GetFileInfo{\jobname.dtx} +% \ifpdf +% \hypersetup{% +% pdfauthor = {Martin Scharrer <martin@scharrer-online.de>}, +% pdftitle = {The collcell package}, +% pdfsubject = {Documentation of LaTeX package collcell}, +% pdfkeywords = {collcell, LaTeX, TeX} +% }% +% \fi +% \clearpage +% \null +% \vspace*{-2em} +% \begin{center} +% {\LARGE The \textsf{collcell} Package\\[\medskipamount]} +% {\large Martin Scharrer \\[\medskipamount]\normalsize +% \url{martin@scharrer-online.de}\\[.8ex] +% \url{http://www.ctan.org/pkg/collcell/}\\[\medskipamount]} +% {\large Version \fileversion\ -- \filedate}\\ +% \end{center} +% \vspace{1.2em}% +% +% \begin{abstract} +% This small package provides macros which collect the cell content of a tabular +% and provide it to a macro as argument. It was inspired by the |\collect@body| +% macro defined by the \pkg{amsmath} or the \pkg{environ} package, which can be used +% to collect the body of an environment. Special care is taken to remove all aligning +% macros inserted by tabular from the cell content. The macros also work in the last +% column of a table. They do not support verbatim material inside the cells. +% \end{abstract} +% +% \section{Usage} +% This package provides the macros \Macro\collectcell and \Macro\endcollectcell +% which are supposed to be used with the |>{ }| and |<{ }| tabular column declarations of +% the \pkg{array} package. This can be done either in the argument of tabular or using +% \Macro\newcolumntype. +% +% The following code defines a `|E|' column which passes the contents of its cell +% to \Macro\usermacro as an argument. The macro can the process the content as usual. +% +% \par\bigskip +% \noindent +% |% Preamble:|\\ +% |\usepackage{array}|\\ +% |\usepackage{collcell}|\\ +% |% Preamble or document:|\\ +% |\newcolumntype{E}{>{\collectmacro\usermacro}c<{\endcollectmacro}}|\\ +% ||\\ +% |% Document:|\\ +% |\begin{tabular}{lE}|\\ +% | A & Example \\ % Same as \usermacro{Example} |\\ +% | B & Text \\ % Same as \usermacro{Text} |\\ +% |\end{tabular}|\\ +% \par\medskip +% +% For example \Macro\usermacro could be \Macro\fbox and wrap the cell content in a frame box. +% More complicated macros are also supported as long they take one argument. This package +% was originally programmed to be used with the \Macro\tikztiming macro of the \pkg{tikz-timing} package. +% This macro takes some complex user input and draws a timing diagram from it +% +% Note that if such a cell contains a tabular environment by itself, the environment must be wrapped +% in braces `|{ }|' to ensure proper operation. +% +% +% \StopEventually{} +% \clearpage +% \iffalse +%<*package> +% \fi +% \section{Implementation} +% \begin{macrocode} +\newtoks\collect@cell@toks +% \end{macrocode} +% +% \begin{macro}{\collectcell} +% \begin{macrocode} +\newenvironment{collectcell}{}{} +\def\collectcell#1#2\ignorespaces{% + \collect@cell@toks{}% + \let\collect@cell@spaces\empty + \def\collect@cell@end{% + \expandafter\scantokens\expandafter + {\expandafter#1\expandafter{\the\collect@cell@toks}}% + } + \def\collect@cell@next{\collect@cell@look}% + \collect@cell@next +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\endcollectcell} +% Holds unique signature which will expand to nothing. +% \begin{macrocode} +\def\endcollectcell{\@gobble{endcollectcell}} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\collect@cell@look} +% \begin{macrocode} +\def\collect@cell@look{% + \futurelet\collect@cell@lettoken\collect@cell@look@ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\collect@cell@eatspace} +% \begin{macrocode} +\begingroup +\def\:{\collect@cell@eatspace} +\expandafter\gdef\: {\collect@cell@look} +\endgroup +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\collect@cell@look@} +% \begin{macrocode} +\def\collect@cell@look@{% + \ifx\collect@cell@lettoken\@sptoken + \edef\collect@cell@spaces{\collect@cell@spaces\space}% + \def\collect@cell@next{\collect@cell@eatspace}% + \else + \ifx\collect@cell@lettoken\bgroup + \def\collect@cell@next{\collect@cell@group}% + \else + \def\collect@cell@next{\collect@cell@arg}% + \fi + \fi + \collect@cell@next +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\collect@cell@group} +% \begin{macrocode} +\def\collect@cell@group#1{% + \begingroup + \def\@tempa{#1}% + \def\@tempb{\bgroup}% + \ifx\@tempa\@tempb + \endgroup + \def\collect@cell@next{\collect@cell@arg\bgroup}% + \else + \endgroup + \def\collect@cell@next{\collect@cell@arg{{#1}}}% + \fi + \collect@cell@next +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\collect@cell@addarg} +% \begin{macrocode} +\def\collect@cell@addarg#1{% + \expandafter\expandafter\expandafter\collect@cell@toks + \expandafter\expandafter\expandafter + {\expandafter\the\expandafter\collect@cell@toks\collect@cell@spaces#1}% + \let\collect@cell@spaces\empty +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\collect@cell@arg} +% \begin{macrocode} +\def\collect@cell@arg#1{% + \ifx\collect@cell@lettoken\\ + \def\collect@cell@next{\collect@cell@end#1}% + \else + \ifx\collect@cell@lettoken\unskip + \def\collect@cell@next{% + \@ifnextchar\endcollectcell + {\collect@cell@end#1}% + {\collect@cell@addarg{#1}\collect@cell@look}% + }% + \else + \collect@cell@addarg{#1}% + \def\collect@cell@next{\collect@cell@look}% + \fi + \fi + \collect@cell@next +} +% \end{macrocode} +% \end{macro} +% +% +% \Finale +% \iffalse +%</package> +% \fi + |