PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit Tabellen und IfThen



Odie
16-02-2011, 14:54
Hallo,

gibt es eine Möglichkeit, die einzelnen Zeilen einer Tabelle durch BoolKeys des ifthen-Paketes zu Steuern?
Bei meinen bisherigen Versuchen, gibt es immer nur Fehlermeldungen, deren Ursache ich mit meinem Wissensstand nicht gelöst bekomme.
Das folgende Beispiel verdeutlicht die Situation:

\documentclass[draft]{scrbook}

\usepackage{array}
\usepackage{booktabs}

\usepackage{xkeyval} %Paket für den Umgang mit Schlüsseln und Werten
\usepackage{ifthen}

\DefineFamily{Fam}
\DefineFamilyMember{Fam}

\makeatletter
\define@boolkey+{Fam}{featureA}{%
\ifKV@Fam@featureA
\PackageInfo{MyPack}{turning featureA on}%
\else
\PackageInfo{MyPack}{turning featureA off}%
\fi
}
\makeatother

\newenvironment{Details}{%
\begin{tabular*}{\textwidth}{lll}\toprule%
\textit{Spalte 1} & \textit{Spalte 2} & Spalte 3\\ \midrule%
Z1S1&Z1S2&Z1S3\\%
}{%
\bottomrule\end{tabular*}%
}%

\setkeys{Fam}{featureA=true} %Steuerflag

\begin{document}%
\begin{Details}%
\makeatletter%
\key@ifundefined{Fam}{featureA}{%
\PackageWarning{MyPack}{"featureA" not defined}%
}{%
\ifKV@Fam@featureA%
Z2S1 & Z2S2 & Z2S3\tabularnewline%
\fi%
}%
\makeatother%
\end{Details}%
\end{document}%

Je nachdem, ob das Flag aktiviert ist oder nicht, kommen die Fehler entweder aus dem \bottomrule- oder dem \ifKV-Aufruf.

Schweinebacke
17-02-2011, 08:58
Zunächst einmal hast Du da ein verwirrendes Durcheinander von scrbasic-Befehlen (\DefineFamily und \DefineFamilyMember) und Befehlen aus anderen Paketen (\define@boolkey). Ich würde vorschlagen, das entweder mit Hilfe von scrbasic zu lösen, das ja bereits Befehle zum Definieren von Schaltern bietet, oder ohne scrbasic. Einen Mischmasch solltest DU nicht verwenden.

Ansonsten ist anzumerken, dass man sich am Anfang einer Tabellenzeile bereits innerhalb der ersten Tabellenzelle befindet. Das bedeutet auch, dass man sich innerhalb einer Gruppe befindet. Man kann da also nicht beliebigen Code ausführen.