\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} 
