From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/nox/README | 7 + macros/latex/contrib/nox/nox.pdf | Bin 0 -> 172338 bytes macros/latex/contrib/nox/nox.sty | 299 +++++++++++++++++++++++++++++++++++++++ macros/latex/contrib/nox/nox.tex | 186 ++++++++++++++++++++++++ 4 files changed, 492 insertions(+) create mode 100644 macros/latex/contrib/nox/README create mode 100644 macros/latex/contrib/nox/nox.pdf create mode 100644 macros/latex/contrib/nox/nox.sty create mode 100644 macros/latex/contrib/nox/nox.tex (limited to 'macros/latex/contrib/nox') 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 Binary files /dev/null and b/macros/latex/contrib/nox/nox.pdf 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} -- cgit v1.2.3