summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/nox
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-06-27 23:35:08 +0000
committerKarl Berry <karl@freefriends.org>2013-06-27 23:35:08 +0000
commit71a5d913aca43d138491dd99f2f90ea20b723176 (patch)
treee748ab1afad77b4bc4d7b53e49aefe5137982289 /Master/texmf-dist/tex/latex/nox
parent2466fd53f3a3a5f41a1a20172277b36ed797527e (diff)
nox (13jun13)
git-svn-id: svn://tug.org/texlive/trunk@30991 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/nox')
-rw-r--r--Master/texmf-dist/tex/latex/nox/nox.sty299
1 files changed, 299 insertions, 0 deletions
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