summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/collcell/collcell.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/collcell/collcell.dtx')
-rw-r--r--Master/texmf-dist/source/latex/collcell/collcell.dtx262
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
+