PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabellengröße anpassen



Quax
16-03-2012, 11:13
Moin,

ich komme bei meinen Tabellen nicht wirklich weiter.

Die Einträge \BatchZugA, \BatchZugB werden vorher in dem Dokument über \newcommand{\BatchZugA}{XX}, usw. definiert. Gibt es eine Möglichkeit, wenn ein Eintrag leer bleibt keine Zeile in der Tabellen anzulegen?

\begin{tabular}{c}
\toprule
Test \\
\midrule
\BatchZugA \\
\BatchZugB \\
\bottomrule
\end{tabular}

Wäre topp wenn da einer eine Idee hätte. Vielen Dank

Quax

rstuby
16-03-2012, 11:21
Erstelle bitte ein vollständiges Minimalbeispiel, das wir direkt ausprobieren können.
Obwohl ich mir auch dann nicht sicher bin, dass jemand auf eine Idee kommt, wie das gehen könnte, aber mehr Chancen hast du damit auf jeden Fall.

Quax
16-03-2012, 11:36
Sorry, hatte den ersten Teil vergessen.

\newcommand{\A}{1}
\newcommand{\B}{}

\begin{tabular}{c}
\toprule
Titel \\
\midrule
\A \\
\B \\
\bottomrule
\end{tabular}

Vielen Dank

rstuby
16-03-2012, 11:45
OK, ich helfe dir mal, das zu einem lauffähigen Dokument zu erweitern. Aber eigentlich ist das deine Arbeit. Schon allein weil du besser weißt, welche Klasse und welche Pakete du dafür benutzt. OK, dass toprule etc. zum Paket booktabs gehören, wusste ich jetzt auswendig, aber wahrscheinlich kann noch nicht mal Ulrike Fischer zu allen Befehlen auf Anhieb das richtige Paket sagen.

\documentclass{scrreprt}
\usepackage{booktabs}
\newcommand{\A}{1}
\newcommand{\B}{}
\begin{document}
\begin{tabular}{c}
\toprule
Titel \\
\midrule
\A \\
\B \\
\bottomrule
\end{tabular}
\end{document}
Leider habe ich absolut keinen Plan, wie man deinem Wunsch näherkommen könnte. Aber jetzt hilft vielleicht auch sonst noch wer :-)

bobmalaria
16-03-2012, 12:54
hi,

das ist etwas trickreicher als gedacht....

ich habe es jetzt so geloest das das makro \Atemp bzw \Btemp mit deinem text gefuellt werden muss. dann wird getestet (\ifnum) on der test \pdfstrcmp (pdf string comparison) = 1 ergibt.

das ist der fall wenn das erste argument \Atemp bzw \Btemp groesser ist als das zweite (in diesem fall die {}). ansosnten passiert gar nichts.

dieser trick mit dem zahelnvergleich ist in diesem fall noetig, daman test wie z.b. \ifstrempty oder \ifblank (aus etoolbox) nicht verwenden kann da diese, so wie ich das verstanden habe, dann intern noch \edef{} ausgeben und das nicht expandiert wird und somit das makro nicht vollkommen leer ist was dann dazu fuehrt das zu leere extrazeilen
in deiner tabelle hast. aber du willst ja leere makros komplett gar nicht ausgeben.

gruss


\documentclass{article}

\usepackage{booktabs}

\newcommand{\Atemp}{something}
\newcommand{\Btemp}{}
\newcommand{\A}{\ifnum\pdfstrcmp{\Atemp}{}=1 \Atemp \tabularnewline \else\fi}
\newcommand{\B}{\ifnum\pdfstrcmp{\Btemp}{}=1 \Btemp \tabularnewline \else\fi}

\begin{document}

\begin{tabular}{c}
\toprule
Titel \\
\midrule
\A
\B
\bottomrule
\end{tabular}

\end{document}


http://www.mrunix.de/forums/attachment.php?attachmentid=5113&stc=1&d=1331898886

siehe dazu auch
http://tex.stackexchange.com/questions/5198/etoolbox-conditional-causes-unwanted-empty-row-in-tabular

und

http://www.tug.org/pipermail/pdftex/2005-August/005913.html

Quax
16-03-2012, 15:03
Hi,

super, vielen Dank. Wäre ich alleine im Leben nicht drauf gekommen.

Ich habe das ganze noch ein wenig auf mehrere Spalten erweitert, falls es jemand interessiert:



\documentclass{article}

\usepackage{booktabs}

\newcommand{\Atemp}{some}
\newcommand{\Btemp}{thing}
\newcommand{\Ctemp}{}
\newcommand{\Dtemp}{}
\newcommand{\A}{\ifnum\pdfstrcmp{\Atemp}{}=1 \Atemp & \else\fi}
\newcommand{\B}{\ifnum\pdfstrcmp{\Btemp}{}=1 \Btemp \tabularnewline \else\fi}
\newcommand{\C}{\ifnum\pdfstrcmp{\Ctemp}{}=1 \Ctemp & \else\fi}
\newcommand{\D}{\ifnum\pdfstrcmp{\Dtemp}{}=1 \Dtemp \tabularnewline \else\fi}


\begin{tabular}{c c}
\toprule
Titel & Bla \\
\midrule
\A \B
\C \D
\bottomrule
\end{tabular}



Nächstes Mal bringe ich auch gleich ein gescheites Minimalbeispiel, sorry dafür