summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/nox
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/nox
Initial commit
Diffstat (limited to 'macros/latex/contrib/nox')
-rw-r--r--macros/latex/contrib/nox/README7
-rw-r--r--macros/latex/contrib/nox/nox.pdfbin0 -> 172338 bytes
-rw-r--r--macros/latex/contrib/nox/nox.sty299
-rw-r--r--macros/latex/contrib/nox/nox.tex186
4 files changed, 492 insertions, 0 deletions
diff --git a/macros/latex/contrib/nox/README b/macros/latex/contrib/nox/README
new file mode 100644
index 0000000000..d71bb0d66e
--- /dev/null
+++ b/macros/latex/contrib/nox/README
@@ -0,0 +1,7 @@
+
+
+nox
+
+Arrays of data, text, commands or environments are transformed to a
+variety of well structured and splitable tables. Notes and references
+are included.
diff --git a/macros/latex/contrib/nox/nox.pdf b/macros/latex/contrib/nox/nox.pdf
new file mode 100644
index 0000000000..4cfc599300
--- /dev/null
+++ b/macros/latex/contrib/nox/nox.pdf
Binary files differ
diff --git a/macros/latex/contrib/nox/nox.sty b/macros/latex/contrib/nox/nox.sty
new file mode 100644
index 0000000000..0038afa6e5
--- /dev/null
+++ b/macros/latex/contrib/nox/nox.sty
@@ -0,0 +1,299 @@
+\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+\ProvidesPackage{nox}[2013/06/09 v1.0 Tabellengebastel (ctansearch/rais)]
+\long\def\readme#1{\newwrite\readme%
+\immediate\openout\readme=readme\relax
+\immediate\write\readme{#1}\immediate\closeout\readme}
+\newcommand*\tn@warn[1]{\PackageWarning{nox}{#1}}% damit man den Paketnamen
+ % nicht für jede Warnung mitzuschleppen
+ % braucht
+\newcommand*\tn@info[1]{\PackageInfo{nox}{#1}}
+\newcommand*\tn@table@align{}
+\newif\iftn@cstreset
+\DeclareOption{c}{\renewcommand*\tn@table@align{c}}% Optionen an longtable angepasst 2013-06-09-rais
+\DeclareOption{l}{\renewcommand*\tn@table@align{l}}
+\DeclareOption{r}{\renewcommand*\tn@table@align{r}}
+\DeclareOption{colspecresetstable}{\tn@cstresettrue}% ++ 2013-06-09-rais
+\DeclareOption{colspecstaysintable}{\tn@cstresetfalse}% ++ 2013-06-09-rais
+\DeclareOption*{\tn@warn{Unknown option `\CurrentOption' (ignored)}}
+\ExecuteOptions{l,colspecresetstable}% wg. neuer Option 2013-06-09-rais
+\ProcessOptions\relax
+\RequirePackage{array}
+\RequirePackage{longtable}% wenn schon longtable verwendet wird, dann hier laden und nicht erst im Dokument 2013-06-09-rais
+\newif\iftnresume
+\newtoks\tn@currenttab
+\newcommand*\tn@tmpa{}% wird andernorts überschrieben
+\newcommand*\tn@tmpb{}% wird andernorts überschrieben
+\newcommand*\tn@currentelement{}%
+\newcommand*\tn@addcell{}
+\newcommand*\tn@captiontext{}% wird andernorts überschrieben
+\newcommand*\tn@lintab{}% Platzhalter für die lineare Tabelle
+\newcounter{tn@element}% aktuelles Element
+\newcounter{tn@elements}% bisher abgearbeitete Elemente
+\newcounter{tn@lastelement}% das letzte aktuell zu bearbeitende Element
+\newcounter{tn@tabline}
+\newcounter{tn@tabcol}[tn@tabline]
+\newcounter{tn@tabcell}%addbyctans{9.6.13}
+\newcounter{tn@table}
+\newcounter{tn@tmp}
+\newcommand\deflintab[1]{%
+ \ifnum\value{tn@elements}<\value{tn@element}\relax % Test und Warnung ergänzt,
+% sollten in der bisherigen Tabelle noch unbearbeitete Elemente anstehen
+% (das Gegenstück zu `Current element list exhausted') 2013-06-09-rais
+ \addtocounter{tn@element}{-\value{tn@elements}}%
+ \tn@warn{\arabic{tn@element} elements lost!^^J %
+ You may have used `\string\deflintab' a little too soon. ^^J
+Missing tntable[x]{y} for \arabic{tn@element} elements}% %addbyctans{9.06.13
+ \fi
+ \def\tn@lintab{#1}%
+ \iftn@cstreset\relax\else %wenn eine Neudefinition der Spaltenanzahl keine neue Tabelle beginnen soll,
+ \stepcounter{table}% beginnt mit einer neuen Tabellendefinition auch eine neue Tabelle 2013-06-09-rais
+ \fi
+ \setcounter{tn@elements}{0}%
+ \setcounter{tn@table}{0}% eigentlich weiss man mit dem \deflintab schon, dass hier
+% eine neue Tabelle beginnt, da kann man die Zähler hier auch schon zurücksetzen 2013-06-09-rais
+ \setcounter{tn@tabline}{0}%
+ \setcounter{tn@tabcol}{0}%
+}
+\let\thetn@table\thetable
+\newcounter{tn@effective@columns}% Anzahl effektiver Spalten
+\setcounter{tn@effective@columns}{3}
+\newcounter{tn@max@columns}% max. Anzahl effektiver Spalten
+\setcounter{tn@max@columns}{12}% oder was weiß ich
+\newlength\numbercolwidth
+\settowidth\numbercolwidth{0}
+\newcommand{\cellflush}{\raggedright}%\raggedleft,\centering addbyctans{5.6.13}
+\newdimen\cellheight%addbyctans{5.6.13}
+\setlength\cellheight{1\baselineskip}%addbyctans{5.6.13}
+\newdimen\basecolskip%addbyctans{5.6.13}
+\setlength\basecolskip{1em}
+\newdimen\cellwidth%addbyctans{5.6.13}
+\setlength\cellwidth{1\basecolskip}%addbyctans{5.6.13}
+\newcommand{\tntabledimen}[2]{
+\setlength\cellheight{#1\baselineskip}%
+\setlength\cellwidth{#2\basecolskip}
+\tn@warn{Current tabledimen: #1\baselineskip #2\basecolskip(\basecolskip=\the\basecolskip)}%
+}%Zusammengefasste cellwidth und cellheight Befehle addbyctans{9.6.13}
+\newcommand{\linenoformat}{\textsuperscript}%addbyctans{5.6.13}
+%%%%% code übernommen aus mbenotes.sty, um in jeder Zelle eine Anmerkung unterbringen
+\@definecounter{cellnote}
+\def\thecellnote{\@arabic\c@cellnote}
+\def\@makecellmark{\hbox{\@textsuperscript{{\tiny[\@thecellmark]}}}}
+\def\makecellmark{\@makecellmark}
+\def\thecellmark{\@thecellmark}
+\newdimen\cellnotesep
+\def\cellnote{\@ifnextchar[\@xcellnote{\stepcounter{cellnote}%
+ \protected@xdef\@thecellmark{\thecellnote}%
+ \@cellnotemark\@cellnotetext}}
+\def\@xcellnote[#1]{
+ \begingroup
+ \c@cellnote=#1\relax
+ \unrestored@protected@xdef\@thecellmark{ \thecellnote}%
+ \endgroup
+ \@cellnotemark\@cellnotetext }
+\let\@doancellnote=0
+\let\@endancellnote=0
+\newwrite\@cellnotes
+\newif\if@cellnotesopen \global\@cellnotesopenfalse
+\def\@opencellnotes{\immediate\openout\@cellnotes=\jobname.nox\relax
+ \global\@cellnotesopentrue}
+\long\def\@cellnotetext#1{%
+ \if@cellnotesopen \else \@opencellnotes \fi
+ \immediate\write\@cellnotes{\@doancellnote{\@thecellmark}}%
+ \begingroup
+ \def\next{#1}%
+ \newlinechar='40
+ \immediate\write\@cellnotes{\meaning\next}%
+ \endgroup
+ \immediate\write\@cellnotes{\@endancellnote}}
+\long\def\addtocellnotes#1{%
+ \if@cellnotesopen \else \@opencellnotes \fi
+ \begingroup
+ \newlinechar='40
+ \let\protect\string
+ \immediate\write\@cellnotes{#1}%
+ \endgroup}
+\def\cellnotemark{%
+ \@ifnextchar[\@xcellnotemark
+ {\stepcounter{cellnote}%
+ \protected@xdef\@thecellmark{\thecellnote}%
+ \@cellnotemark}}
+\def\@xcellnotemark[#1]{%
+ \begingroup
+ \c@cellnote #1\relax
+ \unrestored@protected@xdef\@thecellmark{\thecellnote}%
+ \endgroup
+ \@cellnotemark}
+\def\@cellnotemark{%
+ \leavevmode
+ \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi
+ \makecellmark
+ \ifhmode\spacefactor\@x@sf\fi
+ \relax}
+\def\cellnotetext{
+ \@ifnextchar [\@xcellnotenext
+ {\protected@xdef\@thecellmark{\thecellnote}%
+ \@cellnotetext}}
+\def\@xcellnotenext[#1]{\begingroup \c@cellnote=#1\relax
+ \xdef\@thecellmark{\thecellnote}\endgroup \@cellnotetext}
+\def\@xcellnotenext[#1]{%
+ \begingroup
+ \c@cellnote=#1\relax
+ \unrestored@protected@xdef\@thecellmark{\thecellnote}%
+ \endgroup
+ \@cellnotetext}
+\def\cellnotesname{cellnotes}
+\def\cellnoteheading{\subsubsection*{\footnotesize{\cellnotesname} \@mkboth{\MakeUppercase{\cellnotesname}}{\MakeUppercase{\cellnotesname}}}
+ \mbox{ }\par\vskip-\baselineskip}
+\def\cellnoteformat{\rightskip\z@ \leftskip\z@ \parindent=1.8em
+ \leavevmode\llap{\makecellmark}}
+\def\cellnotesize{\footnotesize}%
+\def\thecellnotes[#1]{\def\cellnotesname{#1}\immediate\closeout\@cellnotes \global\@cellnotesopenfalse
+ \begingroup
+ \makeatletter
+ \edef\@tempa{`\string >}%
+ \ifnum\catcode\@tempa=12%
+ \let\@ResetGT\relax
+ \else
+ \edef\@ResetGT{\noexpand\catcode\@tempa=\the\catcode\@tempa}%
+ \@makeother\>%
+ \fi
+ \def\@doancellnote##1##2>{ \def\@thecellmark{##1}\par\begingroup
+ \@ResetGT
+ \edef\@currentlabel{\csname p@cellnote\endcsname\@thecellmark}%
+ \cellnoteformat}
+ \def\@endancellnote{\par\endgroup}%
+ \cellnoteheading{\small{\textsl{Anm.Tab. \textbf{\cellnotesname} \thetn@table-\alph{tn@table}}}}%Headline für \thecellnotes addbyctans{9.06.13}
+ \cellnotesize
+ \input{\jobname.nox}%
+ \setcounter{cellnote}{0} \vspace{1.8em}
+ \endgroup}
+%%%%%%%%%%%%%%%%%ende code cellnotes addbyctans{9.06.13}
+\newcommand{\celltitle}[1]{\noexpand\textbf{#1}\vskip0.1\baselineskip}%addbyctans{5.6.13}
+ %gibt der Zelle einen Namen, eine Überschrift
+\newcommand{\celllabel}[1]{\noexpand\textbf{#1}\nox\label{#1}\vskip0.1\baselineskip}%addbyctans{11.6.13}erstellt
+ %aus dem Namen ein Label
+\newcommand\cell[1]{\tn@warn{`\string\cell' out of proper environment}}
+\newcommand*\seteffectivecolumns[1]{%
+ \ifnum#1>\value{tn@max@columns}\relax
+ \tn@warn{Restricting number of columns to \arabic{tn@max@columns} (you wanted #1)}%
+ \setcounter{tn@effective@columns}{\value{tn@max@columns}}%
+ \else
+ \tn@info{Accepting `#1' as number of columns}%
+ \setcounter{tn@effective@columns}{#1}%
+ \fi
+ \setcounter{tn@tabcol}{0}% den Spaltenzähler zurücksetzen:
+% Nach Neudefinition der Spaltenanzahl ist es IMHO unlogisch, die nächste erste Tabellenzeile
+% an die letzte der vorherigen Teiltabelle anschliessen lassen zu wollen 2013-06-09-rais
+}
+\newenvironment{tntable}[2][]{%
+ \renewcommand\cell[1]{%
+ \ifnum\value{tn@tabcol}=0\relax
+ \linenoformat{\thetn@tabline}%format of tabline addbyctans{5.6.13}
+ \else
+ \iftnresume
+ \ldots
+ \setcounter{tn@tmp}{0}%
+ \edef\tn@tmpa{}%
+ \loop \stepcounter{tn@tmp}\edef\tn@tmpa{\tn@tmpa&}%
+ \ifnum\c@tn@tmp<\c@tn@tabcol\relax\repeat
+ \tn@tmpa
+ \global\tnresumefalse
+ \fi
+ \fi
+ \stepcounter{tn@tabcol}%
+ \ifnum\value{tn@tabcol}>\value{tn@effective@columns}\relax
+ \stepcounter{tn@tabline}% starte neue Zeile
+ \stepcounter{tn@tabcol}%
+ \tabularnewline
+ \linenoformat{\thetn@tabline}%format of tabline addbyctans{5.6.13}
+ \fi
+&\vtop to \cellheight{\nox\vskip0pt %\fenestra addbyctans11.06.13
+##1\vfill\stepcounter{tn@tabcell}}%added
+ %vtop to scale the cellheight(the height of a
+ %line) addbyctans {5.6.13} tabcellcounter
+ %addbyctans{9.6.13}Noch unentschieden, ob vtop
+ %oder vbox besser ist, oder keins von beiden
+%&\vbox to \cellheight{##1\vfill\stepcounter{tn@tabcell}}%added
+ %vtop to scale the cellheight(the height of a
+ %line) addbyctans {5.6.13} tabcellcounter
+ %addbyctans{9.6.13}
+
+ }%
+ \renewcommand*\thetable{\thetn@table-\alph{tn@table}}%
+ \ifx\relax#1\relax %optionelles Argument leer oder nicht angegeben
+ \iftn@cstreset %konfigurierbar gemacht 2013-06-09-rais
+ \setcounter{tn@table}{0}%
+ \setcounter{tn@tabcol}{0}%
+ \setcounter{tn@tabline}%
+ \fi
+ \else %Test auf `resume':
+ \edef\tn@tmpa{#1}%
+ \edef\tn@tmpb{resume}%
+ \ifx\tn@tmpa\tn@tmpb\relax %bisherige Tabelle soll fortgesetzt werden
+ \tnresumetrue
+ \addtocounter{table}{-1}%
+ \else % weder leer noch `resume:
+ \seteffectivecolumns{#1}% neue Anzahl (eff.) Spalten
+ \iftn@cstreset %++ über Option konfigurierbar gemacht 2013-06-09-rais
+ \setcounter{tn@table}{0}%
+% \setcounter{tn@tabcol}{0}%<-- in \seteffectivecolumns verschoben 2013-06-09-rais
+ \setcounter{tn@tabline}{0}%
+ \else
+ \addtocounter{table}{-1}% neue Spaltenanzahl soll für bisherige Tabelle gelten
+ \fi
+ \fi
+ \fi
+ \refstepcounter{tn@table}%
+% \ifhmode\par\fi\noindent <-- das ist bei longtable auch nicht mehr notwendig 2013-06-09-rais
+ %\minipage{\linewidth}% damit die
+ %Tabellenüberschrift nicht vom Körper getrennt
+ %werden kann,deaktiviert für longtable{5.6.13}
+% \expandafter\begin{\tn@table@align} auskommentiert und Option an longtable übergeben 2013-06-09-rais
+ \ifx\relax#2\relax
+ \iftnresume\relax
+ \else
+ \tn@warn{Empty caption text for tntable \thetable}%
+ \xdef\tn@captiontext{#2}%
+ \fi
+ \else
+ \xdef\tn@captiontext{#2}%
+ \fi
+% \def\@captype{table}% damit \caption `weiß', daß es hier um eine Tabelle geht -- auskommentiert, \caption in longtable verschoben 2013-06-09-rais
+ \begin{longtable}[\tn@table@align]{@{}>{\cellflush}p{\numbercolwidth}*{\arabic{tn@effective@columns}}{>{\cellflush}p{\cellwidth}}@{}}%\cellflush addbyctans
+
+ \caption{\tn@captiontext}\\% innerhalb longtable ist \caption mit \\ abzuschliessen 2013-06-09-rais
+}{%
+%\addtocounter{table}{-1}%decrease counter{table}of longtable addbyctans{5.6.13}
+% ^^^ mit der Verschiebung der \caption obsolet geworden 2013-06-09-rais
+ \end{longtable}
+% \expandafter\end{\tn@table@align} deaktiviert für longtable 2013-06-09-rais
+ %\endminipage deaktiviert für longtable{5.6.13}
+\vskip2\baselineskip }
+\newcommand*\tntab[3][]{%
+ \setcounter{tn@lastelement}{\value{tn@elements}}%
+ \addtocounter{tn@lastelement}{#2}%
+ \setcounter{tn@element}{0}%Schleifenzähler
+ \tn@currenttab={}% und Tabelleninhalt initialisieren
+ \begin{tntable}[#1]{#3}
+ \@for\tn@currentelement:=\tn@lintab\do{%
+ \stepcounter{tn@element}%
+ \ifnum\value{tn@element}>\value{tn@elements}\relax
+ \ifnum\value{tn@element}>\value{tn@lastelement}\relax
+ \else
+ \edef\tn@addcell{\noexpand\tn@currenttab={\the\tn@currenttab\noexpand\cell{\tn@currentelement}}}%
+ \tn@addcell
+ \fi
+ \fi
+ }%
+ \the\tn@currenttab
+ \end{tntable}
+\ifnum\thecellnote>0 \thecellnotes[] \fi%cellnotes werden nur ausgegeben,wenn deren Zähler >0 ist addbyctans{9.06.13}
+ \ifnum\value{tn@element}<\value{tn@lastelement}\relax
+ \tn@warn{Current element list exhausted!^^J
+ You wanted to get \arabic{tn@lastelement}, but only \arabic{tn@element} were present}
+ \fi
+ \setcounter{tn@elements}{\value{tn@lastelement}}% Start für Folgetabelle festlegen
+}%\tntab[Anzahl Spalten]{Anzahl Elemente}{Überschrift}
+\def\nox{\noexpand}%shortcut for \noexpand %addbyctans{9.6.13}
+\def\amp{&} %ampersand für noexpand in Tabellen addbyctans{9.6.13}
+\endinput
diff --git a/macros/latex/contrib/nox/nox.tex b/macros/latex/contrib/nox/nox.tex
new file mode 100644
index 0000000000..da53574559
--- /dev/null
+++ b/macros/latex/contrib/nox/nox.tex
@@ -0,0 +1,186 @@
+\documentclass[10pt,a4paper]{article}%
+\usepackage[utf8]{inputenc}%
+\usepackage[ngerman]{babel}%
+\usepackage[colspecstaysintable,c]{nox}
+\usepackage{amsmath,graphicx,tabularx}
+\author{ctansearch,rais}
+\title{Nox v.1.0}
+\begin{document}%
+\maketitle
+\abstract{Dieses Paket ist aus einer kleinen Onlinezusammenarbeit entstanden. Es
+ermöglicht, Daten, Texte und \TeX/\LaTeX - Befehle und Umgebungen in einem Array
+unterzubringen und später in frei definierbaren und fortlaufenden Tabellen
+abzurufen. Ursprünglich hieß der Versuch \texttt{tablenumbers} Der häufige
+Gebrauch des \textbackslash noexpand-Befehls hat diesem Paket den Namen \texttt{Nox}
+gegeben.}\par
+\section{Allgemeines}
+Werte können in beliebiger Anzahl in den Array \begin{verbatim}
+\deflintab{1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,17} \end{verbatim} eingegeben werden.
+Dann legt man die Ausrichtung innerhalb der Tabelle fest
+\begin{verbatim}
+\renewcommand{\cellflush}{\raggedright}
+\renewcommand{\cellflush}{\raggedleft}
+\renewcommand{\cellflush}{\centering}
+\renewcommand{\cellflush}{} %ergibt Blocksatz
+\end{verbatim}
+Man definiert mit \begin{verbatim}\tntabledimen{x}{y}\end{verbatim} die
+Spaltenbreite x und Zeilenhöhe y.
+Durch \begin{verbatim}\tntab[x]{y}{y Elemente in x Spalten}\end{verbatim} legt man fest, in wievielen Spalten
+wieviele Elemente des Array dargestellt werden sollen. Wenn die Anzahl der
+abgerufenen Elemente (y*x) kleiner ist, als die im Array verfügbaren Elemente, können
+diese durch weitere, anschließende Tabellen abgerufen werden. Wenn sie größer
+ist, erscheint ein Fehlermeldung.
+
+\section{Anwendung mit Zahlen}
+\renewcommand{\cellflush}{}
+\begin{verbatim}
+\deflintab{1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,17}
+\renewcommand{\cellflush}{\raggedright}
+\tntabledimen{1}{1} %Zeilenhöhe 1\baselineskip Zellenbreite 1\basecolskip
+\tntab[4]{8}{2x4}
+\tntab[4]{8}{4x8}
+\tntab[4]{8}{4x8}
+\end{verbatim} ergibt
+\deflintab{1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,17}
+\tntabledimen{1}{5}
+\tntab[4]{8}{2x4}
+Zwischen den Tabellen kann man ohne weiteres einen Text einbringen, die
+Tabelle wird einfach weitergeführt.
+\tntab[4]{8}{2x4}
+\subsection{Verschachtelungen}
+Mit Verschachtelungen kann man auch mehrere Tabellen nebeneinander
+setzen. Wieviele Elemente und Befehle solche Teiltabellen aufnehmen können muß
+noch getestet werden.
+\def\TabA{%Tabelle in einem Befehl zusammenfassen addbyctans 11.06.13
+\deflintab{
+\celllabel{A}
+{\nox\begin{tabular}{cccc}\nox\caption{}\nox\\
+1\amp 2\amp \nox\\
+1\amp 2\amp 3 \nox\\
+1\amp 2\amp 3 $\nox\rightarrow$\nox\\
+\nox\end{tabular}},
+\celltitle{B}
+{\nox\begin{tabular}{cccc}\nox\caption{B}\nox\\
+1\amp 2\amp 3 \nox\\
+1\amp 2\amp 3 \nox\\
+1\amp 2\amp 3 $\nox\rightarrow$\nox\\
+\nox\end{tabular}},
+\celltitle{C}
+{\nox\begin{tabular}{cccc}\nox\caption{C}\nox\\
+1\amp 2\amp 3 \nox\\
+1\amp 2\amp 3 \nox\\
+1\amp 2\amp 3 $\nox\rightarrow$\nox\\
+\nox\end{tabular}},
+\celltitle{D}
+{\nox\begin{tabular}{cccc}\nox\caption{D}\nox\\
+1\amp 2\amp 3 \nox\\
+1\amp 2\amp 3 \nox\\
+1\amp 2\amp 3 $\nox\rightarrow$\nox\\
+\nox\end{tabular}},
+\celltitle{E}
+{\nox\begin{tabular}{cccc}\nox\caption{E}\nox\\
+1\amp 2\amp 3 \nox\\
+1\amp 2\amp 3 \nox\\
+1\amp 2\amp 3 $\nox\rightarrow$\nox\\
+\nox\end{tabular}},
+\celltitle{F}
+{\nox\begin{tabular}{cccc}\nox\caption{F}\nox\\
+1\amp 2\amp 3 \nox\\
+1\amp 2\amp 3 \nox\\
+1\amp 2\amp 3 $\nox\rightarrow$\nox\\
+\nox\end{tabular}}
+}
+\tntabledimen{9}{8}
+\tntab[3]{6}{Zwei mal drei}}
+\TabA%Zusammengefasste Tabelle abrufen.addbyctans 11.06.13
+
+Wenn man möchte, kann man die Konstruktionen jeweils als eigenen Befehl
+definieren und dort abrufen, wo man sie braucht. So ist zum Beispiel die
+Tabellenkette [\ref{A}] im Befehl \texttt{$\backslash$TabA} gespeichert.
+Man kann solche Tabellen in einer externen Datei speichern und bei Bedarf
+einbinden oder zum Beispiel Tabellenvorlagen erarbeiten, in die man nur noch
+die Daten einfügt.
+Für den Befehl \texttt{$\backslash$tntabledimen} ist zu erwähnen, daß er für alle
+folgenden Tabellen gilt, solange er nicht neu definiert wird. Man kann also
+alle Tabellen eines Dokumentes leicht auf ein Format bringen.
+\section{Anwendung mit Texten}
+Eine Anwendung mit Texten macht es möglich, Spalten mit fortlaufenden Texten
+zu füllen, die bei einem Zeilenwechsel immer mit der ersten Spalte neu beginnen.
+Automatische Spaltenwechsel sind nach wie vor nicht möglich, sie müssen im
+Array durch geschweifte Klammern(Gruppieren) und Kommata definiert werden.
+Die Zeilenhöhe wird dabei explizit festgelegt, die Zeilenhöhen passen sich
+\textbf{nicht} automatisch an. Es gibt derzeit keine Möglichkeit, die Anzahl
+der Zeichen mit der Spaltenbreite und Zeilenhöhe in Beziehung zu setzen um so
+einen automatischen Spaltenumbruch zu erzeugen. Übervolle Spalten führen
+deshalb zu einem Überlauf, der durch veränderte Gruppierung , breitere Spalten
+oder größere Zeilenhöhen ausgeglichen werden muß. Die Anpassung durch
+\texttt{$\backslash$tntabledimen} macht eine sehr genaue Dimensionierung der
+Tabellen möglich, worauf man nicht ohne weiteres verzichten
+sollte.
+\begin{verbatim}
+\deflintab{{...},{...},{...},{...},{...}}
+\tntabledimen{12}{7}%Zeilenhöhe Spaltenbreite
+\tntab[4]{12}{Worte}
+\end{verbatim} ergibt
+\tntabledimen{5}{7.5}%Zeilenhöhe Spaltenbreite
+\renewcommand{\cellflush}{\raggedright}
+\deflintab{{Hier wird ein Text dargestellt, der in einer Spalte ausgegeben
+ wird.},{In der zweiten Spalte wird er fortgeführt, so wie er},{in der
+ dritten Spalte beendet wird.},{Der nächste Text wird in die folgende
+ Spalte oder Zeile verschoben.},{Dies
+ hängt von der Gestaltung der Tabelle(der Spaltenanzahl, Spaltenhöhe und der
+ Gruppierung) ab.}}
+
+\tntab[4]{8}{Worte}
+\section{Anwendung mit Umgebungen und Befehlen}
+In dem Array \texttt{$\backslash$deflintab} können auch Befehle oder Umgebungen untergebracht werden, was
+eine große Zahl von Gestaltungsmöglichkeiten in Tabellenzellen erlaubt. Hier
+kommt der Befehl \texttt{$\backslash$noexpand} zum Tragen, der durch
+\texttt{$\backslash$nox} abgekürzt wird. Wenn man allen
+\texttt{$\backslash$} ein
+\texttt{$\backslash$nox} voranstellt, werden die Befehle nicht expandiert und
+kommen erst später zur Anwendung. Für viele Befehle und Umgebungen
+funktioniert dies, im Einzelnen muß man es ausprobieren. Manche Umgebungen muß
+man zusätzlich gruppieren \{...\}.
+\tntabledimen{5}{8}
+\deflintab{
+\celllabel{List}\nox\begin{list}{\nox\dots}{\nox\itemsep \nox\labelsep \nox\labelwidth \nox\leftmargin\nox\listparindent\nox\parsep\nox\parskip\nox\partopsep\nox\rightmargin \nox\topsep }
+\nox\item First item \nox\item Second item \nox\end{list},
+\celllabel{Equation } \nox\begin{equation}\nox\sqrt{15}=3.87\nox\end{equation},
+\celllabel{Itemize } \nox\begin{itemize}\nox\item Aufzählung \nox\item Aufzählung \nox\end{itemize},
+\celllabel{Math} Text ist immer dabei \nox\begin{math}x=f(y^2+2)
+ \nox\end{math},
+\celllabel{MathA} Text ist immer dabei \nox\begin{math}x=f(y^2+2) \nox\end{math},
+\celllabel{frac}$\nox\frac{\nox\pi}{180^\nox\circ}=1$,
+}
+\tntab[3]{8}{Umgebungen und Befehle}
+\section{Cellnotes}
+Aus dem Paket \textsl{mbenotes.sty} habe ich den Code entliehen, der Anmerkungen in jeder
+Zelle möglich macht. Diese werden am Ende der jeweiligen Teiltabelle
+ausgegeben, sofern sie vorhanden sind. \texttt{$\backslash$cellnote{}} muß mit
+\texttt{$\backslash$noexpand} oder \texttt{$\backslash$nox}
+eingeleitet werden, wenn sie im Array \texttt{$\backslash$deflintab{...}}genutzt wird.
+\begin{verbatim}
+\deflintab{1,2\nox\cellnote{$\nox\sqrt{4}$},3,4,5}
+\tntabledimen{1}{1}
+\tntab[3]{5}{Cellnotes}
+\end{verbatim} ergibt
+\deflintab{1,2\nox\cellnote{$\nox\sqrt{4}$},3,4,5}
+\tntabledimen{1}{1}
+\tntab[3]{5}{Cellnotes}
+\section{Referenzen}
+Im laufenden Text kann man auf jeden Zellentitel(jede Zelle der Tabelle) referenzieren, da die Labels
+bereits beim Erstellen der Titel erzeugt
+werden\texttt{$\backslash$celllabel\{x\}} erzeugt einen Titel und ein Label, \texttt{$\backslash$celltitle\{x\}} erzeugt nur einen
+Titel, ohne ein Label zu erzeugen. Die üblichen \texttt{$\backslash$label\{x\}}
+funktionieren weiterhin.
+\section{Erweiterungen}
+Der Grund, für die Tabellen \texttt{longtable} zu wählen ist, daß man die
+\texttt{$\backslash$tabular}-Umgebung in diese einbringen kann. Umgekehrt wäre
+dies schwieriger.
+Wünschenswert wäre noch eine \texttt{$\backslash$subtable}-Funktion für das
+Tabellenverzeichnis, um die Tabellen, die in der Longtable-Umgebung definiert
+werden, der Haupttabelle zu untergliedern.
+\listoftables
+\tableofcontents
+\end{document}