Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 24

Thema: Tabellengebastel- Ideen gesucht

  1. #1
    ctansearch
    Gast

    Fortlaufende Tabelle- Ideen gesucht

    Hallo
    Ich habe mir eine Tabellendarstellung gebastelt, die es ermöglicht, eine Tabelle fortlaufend zeilenweise als Teiltabelle auszugeben. Sie kann dabei unterbrochen werden und an beliebiger Stelle fortgeführt werden..

    Dazu brauche ich derzeit eine Tabellenpräamble, welche die Daten im Befehl \def\cell{...} auflistet, um sie später im Text abzurufen.

    Den dazu verwendeten Befehl
    Code:
    \cb[1,1,0]{\thetable,\thetabcols,\thetablines}
    (Die Zahlenwerte sind hier nur Platzhalter) würde ich gerne vereinfachen, sodaß man nicht immer die Werte [1,1,0] selbst eingeben muß. Hat jemand dazu eine Idee?

    Weiterführend soll es möglich sein, mehrere Tabellen vorzudefinieren und später im Text abzurufen, zum Beispiel, um Teilabschnitte und Auszüge verschiedener Tabellen miteinander zu vergleichen.

    tablenumbers.sty
    Code:
    \RequirePackage{longtable}
    \newcounter{tablines}%
    \newcounter{tabcols}%
    \newcounter{tabpage}%
    \newcounter{maxcols}%
    \setcounter{maxcols}{3}
    \newdimen\colwidth \colwidth=1em%
    \newcommand{\thehead}{}%
    \newcommand{\tabend}{ \end{longtable}}
    \parindent=0pt%
    \def\cb[#1,#2,#3]#4{\ifnum\thetable=#1\ifnum\thetabcols=#2\ifnum\thetablines=#3
      {#4}\else \fi\fi\fi}%
    \def\cell{}%
    \def\numbercol{r}
    \newcommand{\tabhead}{\begin{longtable}[l]{{\numbercol}*{\themaxcols}{p{\colwidth}}}\setcounter{table}{1}\\\caption{Fortlaufende
          Tabelle }\\\thehead \endfirsthead \thehead\endhead \setcounter{tabcols}{0}%
    }%
    \def\tabline{\thetablines
     &\cell&\cell&\cell&\cell
     \setcounter{tabcols}{0}\stepcounter{tablines}\\}
    \def\tabliner[#1]{
    \ifnum #1>0 \tabline \else \fi
    \ifnum #1>1 \tabline \else \fi
    \ifnum #1>2 \tabline \else \fi
    \ifnum #1>3 \tabline \else \fi
    \ifnum #1>4 \tabline \else \fi
    \ifnum #1>5 \tabline \else \fi
    \ifnum #1>6 \tabline \else \fi
    \ifnum #1>7 \tabline \else \fi
    \ifnum #1>8 \tabline \else \fi
    \ifnum #1>9 \tabline \else \fi
    \ifnum #1>10 \tabline \else \fi
    \ifnum #1>11 \tabline \else \fi
    \ifnum #1>12 \tabline \else \fi
    \ifnum #1>13 \tabline \else \fi}
    %
    tablenumbers.tex
    Code:
    \documentclass[a4paper]{article}%
    \usepackage[utf8]{inputenc}%
    \usepackage[ngerman]{babel}%
    \usepackage{tablenumbers,longtable,blindtext}%
    \setcounter{maxcols}{4}
    \colwidth=2cm
    \def\cell{%
    \cb[1,1,0]{\thetable,\thetabcols,\thetablines}\cb[1,2,0]{\thetable,\thetabcols,\thetablines}\cb[1,3,0]{\thetable,\thetabcols,\thetablines}%
    \cb[1,1,1]{\thetable,\thetabcols,\thetablines}\cb[1,2,1]{\thetable,\thetabcols,\thetablines}%
    \cb[1,1,2]{\thetable,\thetabcols,\thetablines}\cb[1,2,2]{\thetable,\thetabcols,\thetablines}%
    \cb[1,1,3]{\thetable,\thetabcols,\thetablines}\cb[1,2,3]{\thetable,\thetabcols,\thetablines}%
    \cb[1,1,4]{\thetable,\thetabcols,\thetablines}\cb[1,2,4]{\thetable,\thetabcols,\thetablines}%
    \cb[1,1,5]{\thetable,\thetabcols,\thetablines}\cb[1,2,5]{\thetable,\thetabcols,\thetablines}%
    \stepcounter{tabcols}}
    \begin{document}%
    \blindtext
    \tabhead%
    \tabliner[2]
    \tabend
    \blindtext
    \tabhead%
    \tabliner[2]
    \tabend
    \tabhead%
    \tabliner[2]
    \tabend
    \listoftables
    \end{document}%
    Geändert von ctansearch (23-05-2013 um 00:45 Uhr)

  2. #2
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.859
    Moin moin,
    Zitat Zitat von ctansearch Beitrag anzeigen
    Dazu brauche ich derzeit eine Tabellenpräamble, welche die Daten im Befehl \def\cell{...} auflistet, um sie später im Text abzurufen.
    wie wär's ohne Tabellenpräambel? Etwa
    Code:
    \documentclass[a4paper]{article}%
    \usepackage[utf8]{inputenc}%
    \usepackage[ngerman]{babel}%
    \usepackage{tablenumbers2,blindtext}%
    \usepackage{filecontents}
    \begin{filecontents*}{tablenumbers2.sty}
    \NeedsTeXFormat{LaTeX2e}[1995/06/01]
    \ProvidesPackage{tablenumbers2}[2013/05/27 v0.0 alpha Tabellengebastel (ctansearch/rais)]
    \newcommand*\tn@warn[1]{\PackageWarning{tablenumbers2}{#1}}% damit man den Paketnamen nicht für jede Warnung mitzuschleppen braucht
    \newcommand*\tn@info[1]{\PackageInfo{tablenumbers2}{#1}}
    \newcommand*\tn@table@align{}
    \DeclareOption{c}{\renewcommand*\tn@table@align{center}}
    \DeclareOption{l}{\renewcommand*\tn@table@align{flushleft}}
    \DeclareOption{r}{\renewcommand*\tn@table@align{flushright}}
    \DeclareOption*{\tn@warn{Unknown option `\CurrentOption' (ignored)}}
    \ExecuteOptions{l}
    \ProcessOptions\relax
    
    \newif\iftnresume
    \newcommand*\tn@tmpa{}% wird andernorts überschrieben
    \newcommand*\tn@tmpb{}% wird andernorts überschrieben
    \newcommand*\tn@captiontext{}% wird andernorts überschrieben
    \newcounter{tn@tabline}
    \newcounter{tn@tabcol}[tn@tabline]
    \newcounter{tn@table}
    \newcounter{tn@tmp}
    \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\colwidth %die LaTeX-Variante, um eine Länge zu deklarieren
    \setlength\colwidth{1em}% und festzulegen
    %Wobei zu überlegen wäre, ob man nicht analog dazu die Nummernspalte ebenfalls
    %in eine p-Spalte stecken sollte -- sonst hat man wohlmöglich unterschiedlich breite
    %Tabellen, die zusammen gehören sollen (A endet bei Zeile 9, B wird zweistellig o.ä.)
    \newlength\numbercolwidth
    \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
    }
    \newenvironment{tntable}[2][]{%
      \renewcommand\cell[1]{%
        \ifnum\value{tn@tabcol}=0\relax
          \thetn@tabline
        \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
          \thetn@tabline
        \fi
        &##1
      }%
      \renewcommand*\thetable{\thetn@table-\alph{tn@table}}%
      \ifx\relax#1\relax%neue Tabelle
        \setcounter{tn@table}{0}%
        \setcounter{tn@tabcol}{0}%
        \setcounter{tn@tabline}{0}%
      \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
          \setcounter{tn@table}{0}%
          \setcounter{tn@tabcol}{0}%
          \setcounter{tn@tabline}{0}%
        \fi
      \fi
      \refstepcounter{tn@table}%
      \expandafter\begin{\tn@table@align}
        \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
        \caption{\tn@captiontext}
        \begin{tabular}{@{}r*{\arabic{tn@effective@columns}}{p{\colwidth}}@{}}
    }{%
        \end{tabular}
      \expandafter\end{\tn@table@align}
    }
    \endinput
    \end{filecontents*}
    \colwidth=2cm
    \begin{document}%
    \blindtext
    \begin{tntable}[4]{Test}
    \cell{a}\cell{b}\cell{c}\cell{d}\cell{e}\cell{f}
    \end{tntable}
    \blindtext
    \begin{tntable}[resume]{}
    \cell{g}\cell{h}\cell{i}\cell{j}\cell{k}\cell{l}\cell{m}\cell{n}\cell{o}\cell{p}\cell{q}
    \end{tntable}
    \setlength\colwidth{4cm}
    \begin{tntable}[3]{Noch'n Test}
    \cell{a}\cell{b}\cell{c}\cell{d}\cell{e}
    \end{tntable}
    \begin{tntable}[resume]{}
    \cell{f}\cell{g}\cell{h}\cell{i}\cell{j}\cell{k}\cell{l}\cell{m}\cell{n}\cell{o}\cell{p}\cell{q}
    \end{tntable}
    \listoftables
    \end{document}
    PS) Nicht von der Fehlermeldung im ersten Lauf erschrecken lassen. Ich Dösbaddel versuche, erst die neue Datei zu laden, bevor ich sie erstelle. Mea Culpa...

    MfG
    Rainer
    There's nothing a good whack with a hammer won't fix!

  3. #3
    ctansearch
    Gast
    Sieht sehr gut aus, besonders die Möglichkeit, eine Tabelle mitten in der Zeile zu unterbrechen und dann fortzusetzen. Nehme mir später Zeit, es zu testen und nachzuvollziehen.

    Warum hast Du tabular und nicht longtable genommen?

    PS: Ich denke, das wäre es wert, als Paket auf CTAN zu landen, auch ohne Maintainer

  4. #4
    ctansearch
    Gast
    @rais

    Hallo rais,
    wenn ich es richtig verstehe, hast Du eine Möglichkeit definiert, die Anzahl der Spalten dynamisch festzulegen und die Daten jeweils für ein Teiltabelle einzugeben. Damit kann man fortlaufende Daten in unterschiedlich breiten Tabellen sehr bequem darstellen. Sowas gibt es, glaube ich, noch nicht. Das ist beeindruckend und nützlich, es ist aber nicht das, was ich beabsichtigte. Vielleicht habe ich aber auch was in Deiner Lösung übersehen.

    Was ich möchte ist, Tabellen zeilenweise an beliebiger Stelle darzustellen und jeweils die Anzahl der Zeilen festzulegen, die ausgegeben werden. Beim jeweils nächsten Aufruf sollen die jeweils folgenden Zeilen ausgegeben werden. Dabei ist die dynamische Spaltenbreite eventl. sehr nützlich, da man die Tabelle sowohl vertika ,. als auch horizontal anpassen könnte.
    Eine Verbindung beider Ansätze wäre super.

    Gruß

  5. #5
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.859
    Moin moin,
    Zitat Zitat von ctansearch Beitrag anzeigen
    Sieht sehr gut aus, besonders die Möglichkeit, eine Tabelle mitten in der Zeile zu unterbrechen und dann fortzusetzen.
    das ist aus einem Fehler entstanden: ich hatte vergessen, beim Start einer Folge-Teiltabelle den Spaltenzähler zurückzusetzen. Dann hab ich mich gefragt, wie es wohl aussieht, wenn man entsprechende Leerspalten davor setzt (darauf ist die Sache mit dem \loop...\repeat entstanden).
    Zitat Zitat von ctansearch Beitrag anzeigen
    Warum hast Du tabular und nicht longtable genommen?
    Kein besonderer Grund, außer vielleicht, daß es sich um Teiltabellen handeln soll (dafür schien mir longtable übertrieben). Davon abgesehen, wollte ich nur testen, ob's auch ohne geht.
    Zitat Zitat von ctansearch Beitrag anzeigen
    wenn ich es richtig verstehe, hast Du eine Möglichkeit definiert, die Anzahl der Spalten dynamisch festzulegen und die Daten jeweils für ein Teiltabelle einzugeben.
    dynamisch? Eher im Gegenteil: für mich sind hier nur Teile mit gleicher Spaltenanzahl zusammengehörend. Wobei man theoretisch zwischen zwei Teiltabellen \seteffectivecolums aufrufen und damit die Anzahl Spalten für Folgetabellen beeinflussen kann (nichts anderes hast Du vorher mit \setcounter{maxcols} gemacht).
    Wenn im optionalen Parameter `resume' angegeben ist, gehört das Teil zur vorherigen Tabelle (Spaltenanzahl bleibt gleich, und wenn kein anderer Text angegeben ist, auch der Text in der \caption).
    Wenn gar nichts im optionalen Argument angegeben ist, gehe ich von einer neuen Tabelle aus (bei bisher gleicher Spaltenanzahl).
    Ansonsten interpretiere ich den im optionalen Parameter angegebenen Wert als neue Spaltenanzahl (und gehe damit auch davon aus, daß hier eine neue Tabelle erstellt werden soll, vgl. ``Noch'n Test'' im Test).
    Aber ich hab mich sowieso gefragt, wie bei Deinem Einsatz zwischen mehreren Tabellen unterschieden werden soll (zumal Du den Tabellenzähler in \tabhead auf 1 fixiert hast). Die Angabe der Spaltenanzahl schien mir dafür ein geeigneter Ansatz.
    Zitat Zitat von ctansearch Beitrag anzeigen
    Was ich möchte ist, Tabellen zeilenweise an beliebiger Stelle darzustellen und jeweils die Anzahl der Zeilen festzulegen, die ausgegeben werden.
    Das versteh ich nicht: wozu die Anzahl Zeilen festlegen, wenn man es -- imho bequemer -- direkt über den zur Verfügung gestellten Inhalt realisieren kann?

    MfG
    Rainer
    There's nothing a good whack with a hammer won't fix!

  6. #6
    ctansearch
    Gast
    Das versteh ich nicht: wozu die Anzahl Zeilen festlegen, wenn man es -- imho bequemer -- direkt über den zur Verfügung gestellten Inhalt realisieren kann?
    Ursprünglich ging die Idee davon aus, Tabellen aus Calculationsprogrammen zu übernehmen und die Zelleninhalte zwischen möglichst wenig Latex-Code zu kapseln und die gesamte Tabelle in einer externen Datei abzulegen, aus dem man dann Zeilen nach Bedarf abruft. (Die ursprüngliche
    Code:
    \def\cell{}
    Sequenz.)

    Die Unterscheidung zwischen mehreren Tabellen hatte ich noch nicht hingekriegt, deshalb hatte ich den counter{table} absolut gesetzt.

  7. #7
    ctansearch
    Gast
    Sorry, Beitrag zurückgezogen. Ich schrieb:
    ....aber im Moment sehe ich besonders den Effekt, Daten zeilenweise darzustellen und einen Umbruch automatisch nach der vorgegebenen Spaltenzahl zu setzen. (siehe Beispiel). Das ist nützlich, aber es ist im eigentlichen Sinne keine Tabelle, da die Daten nicht spaltenweise nach Kategorie (Spaltenkopf) geordnet werden. "
    Natürlich entsteht eine korrekte Tablelle, wenn man die Daten entsprechend so anordnet wie es die Spaltenzahll vorgibt..
    Geändert von ctansearch (29-05-2013 um 21:15 Uhr)

  8. #8
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.859
    Zitat Zitat von ctansearch Beitrag anzeigen
    Eine Verbindung beider Ansätze wäre super.
    Versuch macht kluch
    Code:
    \documentclass[a4paper]{article}%
    \usepackage[utf8]{inputenc}%
    \usepackage[ngerman]{babel}%
    \usepackage{filecontents}
    \begin{filecontents*}{tablenumbers2.sty}
    \NeedsTeXFormat{LaTeX2e}[1995/06/01]
    \ProvidesPackage{tablenumbers2}[2013/06/01 v0.0 beta Tabellengebastel (ctansearch/rais)]
    \newcommand*\tn@warn[1]{\PackageWarning{tablenumbers2}{#1}}% damit man den Paketnamen nicht für jede Warnung mitzuschleppen braucht
    \newcommand*\tn@info[1]{\PackageInfo{tablenumbers2}{#1}}
    \newcommand*\tn@table@align{}
    \DeclareOption{c}{\renewcommand*\tn@table@align{center}}
    \DeclareOption{l}{\renewcommand*\tn@table@align{flushleft}}
    \DeclareOption{r}{\renewcommand*\tn@table@align{flushright}}
    \DeclareOption*{\tn@warn{Unknown option `\CurrentOption' (ignored)}}
    \ExecuteOptions{l}
    \ProcessOptions\relax
    
    \RequirePackage{array}
    
    \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@table}
    \newcounter{tn@tmp}
    \newcommand\deflintab[1]{\def\tn@lintab{#1}\setcounter{tn@elements}{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\colwidth %die LaTeX-Variante, um eine Länge zu deklarieren
    \setlength\colwidth{1em}% und festzulegen
    \newlength\numbercolwidth
    \settowidth\numbercolwidth{\ldots}
    \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
    }
    \newenvironment{tntable}[2][]{%
      \renewcommand\cell[1]{%
        \ifnum\value{tn@tabcol}=0\relax
          \thetn@tabline
        \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
          \thetn@tabline
        \fi
        &##1
      }%
      \renewcommand*\thetable{\thetn@table-\alph{tn@table}}%
      \ifx\relax#1\relax%neue Tabelle
        \setcounter{tn@table}{0}%
        \setcounter{tn@tabcol}{0}%
        \setcounter{tn@tabline}{0}%
      \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
          \setcounter{tn@table}{0}%
          \setcounter{tn@tabcol}{0}%
          \setcounter{tn@tabline}{0}%
        \fi
      \fi
      \refstepcounter{tn@table}%
      \ifhmode\par\fi\noindent\minipage{\linewidth}% damit die Tabellenüberschrift nicht vom Körper getrennt werden kann
      \expandafter\begin{\tn@table@align}
        \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
        \caption{\tn@captiontext}
        \begin{tabular}{@{}>{\raggedleft}p{\numbercolwidth}*{\arabic{tn@effective@columns}}{p{\colwidth}}@{}}
    }{%
        \end{tabular}
      \expandafter\end{\tn@table@align}
      \endminipage
    }
    \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\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}
    \endinput
    \end{filecontents*}
    \usepackage{tablenumbers2,blindtext}%
    \colwidth=2cm
    \deflintab{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}
    \begin{document}%
    \blindtext
    \tntab[4]{6}{Test}
    \blindtext
    \tntab[resume]{7}{}
    \tntab[resume]{19}{}
    \setlength\colwidth{3cm}
    \deflintab{A,{B,C},D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z}
    \tntab[3]{5}{Noch'n Test}
    \tntab[resume]{11}{}
    
    \listoftables
    \end{document}
    hier über Anzahl Elemente statt Zeilen.

    MfG
    Rainer
    There's nothing a good whack with a hammer won't fix!

  9. #9
    ctansearch
    Gast

    Red face

    Genauso hätte ich es auch gemacht
    --wenn ich es könnte.

    Wunderbar gelöst, jetzt bastle ich noch ein bißchen weiter , aber ich verrate besser nicht woran...
    Geändert von ctansearch (01-06-2013 um 22:26 Uhr)

  10. #10
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.859
    Moin moin,
    Zitat Zitat von ctansearch Beitrag anzeigen
    Genauso hätte ich es auch gemacht
    --wenn ich es könnte.
    ich musste mich auch erstmal schlau machen, wie ich die \cell-Befehle einsammeln kann (in der \@for-Schleife), ohne daß sie expandiert werden. Ein einfaches \protect oder \noexpand vorm \cell in einem \edef wäre zwar im ersten Durchlauf gutgegangen, im nächsten (also bereits beim nächsen Element) nicht mehr.
    TeXbyTopic wusste Rat: ein Tokenregister wird innerhalb eines \edef nur in seine Elemente (hier die \cell{}-Einträge), aber eben nicht bis zum geht-nicht-mehr expandiert.
    Zitat Zitat von ctansearch Beitrag anzeigen
    Wunderbar gelöst,
    Wie Axel einst so schön schrieb:
    Zitat Zitat von sommerfee Beitrag anzeigen
    LaTeX-Regel Nr. 1: An jedem LaTeX-Code gibt es noch was zu verbessern!
    Hier wäre z. B. eine Überlegung wert, die bereits gesetzten Elemente aus der Liste zu streichen, damit in den Folgetabellen nicht unnötig die komplette Liste abgearbeitet werden muss ...

    MfG
    Geändert von rais (03-06-2013 um 01:54 Uhr) Grund: Hervorhebung unterschlagen
    Rainer
    There's nothing a good whack with a hammer won't fix!

  11. #11
    ctansearch
    Gast

    Thumbs up

    So,
    ich habe das ganze nun auf longtable umgestellt und ein paar Dinge ergänzt.
    (steht jeweils im Kommentar)
    1. Man kann nun eine Tabelle unter longtable mit \raggedright,\raggedleft oder \centering setzen (command \cellflush}

    2.Einen Text kann man bequem über mehrere Tabellen, Spalten und Zeilen setzen. Problem ist, daß das Komma in \deflintab ein Trenner ist, also im Text ene Funktion übernimmt. Das kann man zwar durch \catcode`\,=11 abstellen, dann fehlt aber wiederum der Spaltenumbruch. & hat seine Funktion schon in der Tabelle, kann also nicht benutzt werden. Sehr prakisch wäre, wenn man den catcode mitten im Text umschalten könnte, ich weiß aber nicht wie das geht und welchen catcode das Komma ursprünglich hat. Sonst könnte man ja hin-und herschalten.

    Vielleicht hilft dabei http://de.comp.text.tex.narkive.com/...komma-ersetzen

    3. Wenn man nur mit Zahlen arbeitet, sind die Funktionen der Tabellen genial, man kann sehr bequem lange Datenreihen verarbeiten.
    Code:
    \documentclass[a4paper]{article}%
    \usepackage[utf8]{inputenc}%
    \usepackage[ngerman]{babel}%
    \usepackage{filecontents}
    \begin{filecontents*}{tablenumbers3.sty}
    \NeedsTeXFormat{LaTeX2e}[1995/06/01]
    \ProvidesPackage{tablenumbers3}[2013/06/01 v0.0 beta Tabellengebastel (ctansearch/rais)]
    \newcommand*\tn@warn[1]{\PackageWarning{tablenumbers3}{#1}}% damit man den Paketnamen nicht für jede Warnung mitzuschleppen braucht
    \newcommand*\tn@info[1]{\PackageInfo{tablenumbers3}{#1}}
    \newcommand*\tn@table@align{}
    \DeclareOption{c}{\renewcommand*\tn@table@align{center}}
    \DeclareOption{l}{\renewcommand*\tn@table@align{flushleft}}
    \DeclareOption{r}{\renewcommand*\tn@table@align{flushright}}
    \DeclareOption*{\tn@warn{Unknown option `\CurrentOption' (ignored)}}
    \ExecuteOptions{l}
    \ProcessOptions\relax
    
    \RequirePackage{array}
    
    \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@table}
    \newcounter{tn@tmp}
    \newcommand\deflintab[1]{\def\tn@lintab{#1}\setcounter{tn@elements}{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\colwidth %die LaTeX-Variante, um eine Länge zu deklarieren
    \setlength\colwidth{1em}% und festzulegen
    \newlength\numbercolwidth
    \settowidth\numbercolwidth{\ldots}
    \newcommand{\cellflush}{\raggedright}%\raggedleft,\centering  added by ctansearch
    \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
    }
    \newenvironment{tntable}[2][]{%
      \renewcommand\cell[1]{%
        \ifnum\value{tn@tabcol}=0\relax
          \thetn@tabline
        \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
          \thetn@tabline
        \fi
        &\cellflush{##1}%\cellflush{} added by ctansearch
      }%
      \renewcommand*\thetable{\thetn@table-\alph{tn@table}}%
      \ifx\relax#1\relax%neue Tabelle
        \setcounter{tn@table}{0}%
        \setcounter{tn@tabcol}{0}%
        \setcounter{tn@tabline}{0}%
      \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
          \setcounter{tn@table}{0}%
          \setcounter{tn@tabcol}{0}%
          \setcounter{tn@tabline}{0}%
        \fi
      \fi
      \refstepcounter{tn@table}%
      \ifhmode\par\fi\noindent\minipage{\linewidth}% damit die Tabellenüberschrift nicht vom Körper getrennt werden kann
      \expandafter\begin{\tn@table@align}
        \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
        \caption{\tn@captiontext}
        \begin{longtable}{@{}>{\raggedleft}p{\numbercolwidth}*{\arabic{tn@effective@columns}}{p{\colwidth}}@{}}
    }{%
    \addtocounter{table}{-1}%rücksetzen tablezähler longatble addedbyctans
        \end{longtable}
      \expandafter\end{\tn@table@align}
      \endminipage
    }
    \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\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}
    \endinput
    \end{filecontents*}
    \usepackage{tablenumbers3,blindtext,longtable}%
    \colwidth=2cm
    \deflintab{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}
    \begin{document}%
    \renewcommand{\cellflush}{\raggedleft}
    
    \tntab[4]{6}{Test}
    \tntab[resume]{7}{}
    \tntab[resume]{19}{}
    \setlength\colwidth{3cm}
    \deflintab{Vor einem großen Walde wohnte ein armer Holzhacker mit seiner Frau und seinen zwei Kindern; das Bübchen hieß Hänsel und das Mädchen Gretel. Er hatte wenig zu beißen und zu brechen, und einmal, als große Teuerung ins Land kam, konnte er das tägliche Brot nicht mehr schaffen. Wie er sich nun abends im Bette Gedanken machte und sich vor Sorgen herumwälzte, seufzte er und sprach zu seiner Frau:" Was soll aus uns werden? Wie können wir unsere armen Kinder ernähren da wir für uns selbst nichts mehr haben?" Weißt du was, Mann, antwortete die Frau, wir wollen morgen in aller Frühe die Kinder hinaus in den Wald führen, wo er am dicksten ist. }
    \tntab[3]{5}{Hänsel und Gretel}
    \tntab[resume]{11}{}
    \listoftables
    \end{document}
    Geändert von ctansearch (03-06-2013 um 14:57 Uhr)

  12. #12
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.859
    Moin moin,
    ich kann das auf dieser Kiste derzeit nicht testen, aber
    Zitat Zitat von ctansearch Beitrag anzeigen
    ich habe das ganze nun auf longtable umgestellt und ein paar Dinge ergänzt.
    vllt hättest Du dazu die minipage-Umgebung innerhalb tntable auskommentieren sollen, sonst kann die longtable nicht über Seitengrenzen hinaus ... dazu vllt den \caption-Befehl (wieder) innerhalb der longtable-Umgebung aufrufen, dann erübrigt sich vllt auch das Erniedrigen des Tabellenzählers.
    Zitat Zitat von ctansearch Beitrag anzeigen
    1. Man kann nun eine Tabelle unter longtable mit \raggedright,\raggedleft oder \centering setzen (command \cellflush}
    statt \cellflush im Tabellenkörper hätte es vllt auch ein >{\cellflush} in der Spaltendeklaration getan.
    Zitat Zitat von ctansearch Beitrag anzeigen
    2.Einen Text kann man bequem über mehrere Tabellen, Spalten und Zeilen setzen. Problem ist, daß das Komma in \deflintab ein Trenner ist, also im Text ene Funktion übernimmt. Das kann man zwar durch \catcode`\,=11 abstellen, dann fehlt aber wiederum der Spaltenumbruch. & hat seine Funktion schon in der Tabelle, kann also nicht benutzt werden. Sehr prakisch wäre, wenn man den catcode mitten im Text umschalten könnte, ich weiß aber nicht wie das geht und welchen catcode das Komma ursprünglich hat. Sonst könnte man ja hin-und herschalten.
    hast Du es schon mit Gruppieren versucht? Vgl. \deflintab{A,{B,C}, ...} in Beitrag #8: `B,C' landet dort innerhalb einer Zelle.

    MfG
    Rainer
    There's nothing a good whack with a hammer won't fix!

  13. #13
    ctansearch
    Gast
    Ja, das Gruppieren funktioniert natürlich, und man kann den Text damit gut strukturieren. Trotzdem habe ich den Ehrgeiz, das Problem "automatisch" zu lösen. Es ist ziemlich schwierig, in einem langen Text die Gruppierungen zu erkennen und man hat zeimlich viele Korrekturen, wenn die Zellen nicht mehr optimal gefüllt werden.
    Die minipage habe ich rausgenommen, funktioniert, das Verschieben der \caption führt zu einer Fehlermeldung.
    \cellflush habe ich in die Spaltendefinition verschoben, funktioniert .
    Später kommt noch ein Zellenzähler hinzu, damit man auf einzelne Zellen referenzieren kann.
    Ich stelle hier aber noch keinen neuen Code ein, das lohnt nicht, bei so kleinen Änderungen.

  14. #14
    ctansearch
    Gast
    So, nun habe ich ein paar neue Funktionen eingefügt, die jeweils im Kommentar durch
    Code:
    %addbyctans{5.6.13}
    kenntlich gemacht sind.

    \colwidth habe ich durch \cellwidth und \basecolskip ersetzt, wodurch eine Standardspaltenbreite gesetzt wird, die durch Multiplikation vergrößert werden kann. \setlength\cellwidth(x\basecolskip)
    Eine \newdimen\cellheight gibt mit Hilfe eines \vtop to \dimen eine Zellenhöhe vor, die auch multipliziert werden kann. Somit sind Spaltenbreite und Zeilenhöhe definierbar.
    Bei Zahlenwerten sollen diese gleich 1\baselineskip und [Stellen]\basecolskip sein, bei Texten sind sie frei wählbar. Die wählbaren Zellenhöhen(=Zeilenhöhen) werden durch \vfill aufgefüllt. Man erhält also immer gleiche Zeilenhöhen.
    Durch Verschiebung der trennenden Kommas kann die Füllung der Zeilen angepasst werden, besser jedoch durch Gruppierung, da sonst die Kommas als Zeichen verschwinden.
    Wenn man jetzt noch den Wert des \vfill in eine Anzahl Zeichen übersetzen könnte, könnte man den leergefüllten Raum durch Verschiebung der Gruppierung um n-Zeichen auffüllen. Zu diese Zeitpunkt bleibt nicht anderes übrig, als diese tatsächlich zu zählen und die Klammer {} entsprechend zu setzen.

    Hilfreich wäre die Defintion einer "Verschiebeklammer" die die Zeichen
    Code:
    },{
    in \deflintab einfügt, ohne sie zu expandieren.

    Code:
    \documentclass[a4paper]{article}%
    \usepackage[utf8]{inputenc}%
    \usepackage[ngerman]{babel}%
    \usepackage{filecontents}
    \begin{filecontents*}{tablenumbers3.sty}
    \NeedsTeXFormat{LaTeX2e}[1995/06/01]
    \ProvidesPackage{tablenumbers3}[2013/06/01 v0.3 beta Tabellengebastel (ctansearch/rais)]
    \newcommand*\tn@warn[1]{\PackageWarning{tablenumbers3}{#1}}% damit man den Paketnamen nicht für jede Warnung mitzuschleppen braucht
    \newcommand*\tn@info[1]{\PackageInfo{tablenumbers3}{#1}}
    \newcommand*\tn@table@align{}
    \DeclareOption{c}{\renewcommand*\tn@table@align{center}}
    \DeclareOption{l}{\renewcommand*\tn@table@align{flushleft}}
    \DeclareOption{r}{\renewcommand*\tn@table@align{flushright}}
    \DeclareOption*{\tn@warn{Unknown option `\CurrentOption' (ignored)}}
    \ExecuteOptions{l}
    \ProcessOptions\relax
    \RequirePackage{array}
    \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@table}
    \newcounter{tn@tmp}
    \newcommand\deflintab[1]{\def\tn@lintab{#1}\setcounter{tn@elements}{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{\ldots}
    \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{10pt}
    \newdimen\cellwidth%addbyctans{5.6.13}
    \setlength\cellwidth{1\basecolskip}%addbyctans{5.6.13}
    \newcommand{\linenoformat}{\textsuperscript}%addbyctans{5.6.13}
    \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
    }
    \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{##1}%added vtop to scale the cellheight(the height of a line) addbyctans {5.6.13}
      }%
      \renewcommand*\thetable{\thetn@table-\alph{tn@table}}%
      \ifx\relax#1\relax%neue Tabelle
        \setcounter{tn@table}{0}%
        \setcounter{tn@tabcol}{0}%
        \setcounter{tn@tabline}{0}%
      \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
          \setcounter{tn@table}{0}%
          \setcounter{tn@tabcol}{0}%
          \setcounter{tn@tabline}{0}%
        \fi
      \fi
      \refstepcounter{tn@table}%
      \ifhmode\par\fi\noindent %\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}
        \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
        \caption{\tn@captiontext}
        \begin{longtable}{@{}>{\raggedleft}p{\numbercolwidth}*{\arabic{tn@effective@columns}}{>{\cellflush}p{\cellwidth}}@{}}%\cellflush addbyctans
    }{%
    \addtocounter{table}{-1}%decrease counter{table}of longtable addbyctans{5.6.13}
        \end{longtable}
      \expandafter\end{\tn@table@align}
      %\endminipage deaktiviert für longtable{5.6.13}
    }
    \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\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}
    \endinput
    \end{filecontents*}
    \usepackage{tablenumbers3,longtable}
    \begin{document}%
    \renewcommand{\cellflush}{\raggedright}
    \setlength\cellheight{1\baselineskip}%addbyctans{5.6.13}
    \setlength\cellwidth{1\basecolskip}%addbyctans{5.6.13}
    \deflintab{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}
    \tntab[4]{6}{6 elemente in 4 spalten}
    \tntab[4]{6}{6 elemente in 5 spalten}
    \setlength\cellheight{8\baselineskip}%addbyctans{5.6.13}
    \setlength\cellwidth{9\basecolskip}%addbyctans{5.6.13}
    \deflintab{{Eine Menge Worte die in einer,Tabelle dargestellt werden und eine
      Menge Text in die Spalten setzen, },{und die durch Kommata getrennt sind}}
    \tntab[4]{4}{}
    \listoftables
    \end{document}
    Geändert von ctansearch (05-06-2013 um 02:55 Uhr)

  15. #15
    ctansearch
    Gast
    @rais

    Hallo rais, liest Du noch mit?

    Ich habe die Tabelle um einige Funktionen erweitert, sodaß man in \deflintab eine Menge von Befehlen und Umgebungen einbringen kann. Ich würde das gerne als Paket bei CTAN hochladen., wenn Du einverstanden bist.
    Bei Interesse stelle ich den aktuellen Stand hier ein.

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •