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