Seite 1 von 1

\newcommand mit Tabelle

Verfasst: Mi 29. Apr 2009, 22:52
von Schnapphase
Hallo,

ich habe eine Tabellenstruktur, die sich recht oft wiederholt - da dachte ich mir, bau dir doch ein newcommand. Problem: Latex wirft einen Fehler.
\newcommand{\TaskBox}[1][2]
{
\begin{tabularx}{\linewidth}{|p{2.5cm}|X|}
\hline
\cellcolor{black} \textcolor{white}{ \textbf{Aufgabe #1:} } &
#2 \\
\hline
\end{tabularx}
}
Der Fehler: You can't use `macro parameter character #' in internal vertical mode.

Bevor ich die Tabellenbreite festgesetzt habe, kam der selbe Fehler für den horizontal mode. Ich verstehe auch, warum der Fehler auftritt - schließlich weiß Latex ja nicht, wieviel Text ich einsetzen möchte und kann die Tabellenhölhe nicht bestimmen. \newcommand ist anscheinend keine Präprozessor-Ersetzung wie zB ein #define ....

Die Höhe festlegen möchte ich natürlich auch nicht.

Wie kann ich das Problem lösen?

Verfasst: Mi 29. Apr 2009, 22:57
von skater
How about \newenvironment{mytabular}[]{×}{×}? :D

Verfasst: Mi 29. Apr 2009, 23:54
von Schnapphase
Ich habs grad selbst rausgefunden...

\newcommand ... [1][2] ist natürlich sinnfrei. Das muss \newcommand ... [2] heißen... So funkionierts dann auch.

Verfasst: Do 30. Apr 2009, 10:14
von KOMA
Sinnfrei ist das keineswegs. Du definierst damit schlicht das erste (und einzige) Argument als optionales Argument mit dem voreingestellten Wert »2«. Das ist nur in dem Fall nicht, was Du haben willst.

Ich würde dafür übrigens keine Tabelle verwenden, sondern eine labeling-Umgebung (gibt es bei jeder KOMA-Script-Klasse oder mit dem Paket scrextend). Die hat dann beispielsweise den Vorteil, dass sie einen Seitenumbruch erfahren kann. Die ganzen Linien (vor allem die vertikalen) sind ja ohnehin eher unsinnig und typografisches Grauen. Die würde ich also ganz schnell loswerden. Falls ein Rahmen um die ganze Aufgabe soll (finde ich auch nicht gut), kann ich das Paket framed empfehlen.