From 71a5d913aca43d138491dd99f2f90ea20b723176 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Thu, 27 Jun 2013 23:35:08 +0000
Subject: nox (13jun13)

git-svn-id: svn://tug.org/texlive/trunk@30991 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/tex/latex/nox/nox.sty | 299 ++++++++++++++++++++++++++++++++
 1 file changed, 299 insertions(+)
 create mode 100644 Master/texmf-dist/tex/latex/nox/nox.sty

(limited to 'Master/texmf-dist/tex/latex/nox/nox.sty')

diff --git a/Master/texmf-dist/tex/latex/nox/nox.sty b/Master/texmf-dist/tex/latex/nox/nox.sty
new file mode 100644
index 00000000000..0038afa6e5a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/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
-- 
cgit v1.2.3

