\newcommand mit Tabelle

Tabellen und Grafiken erstellen und anordnen


Schnapphase
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Mi 29. Apr 2009, 22:46

\newcommand mit Tabelle

Beitrag 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?

skater
Forum-Guru
Forum-Guru
Beiträge: 356
Registriert: Do 12. Mär 2009, 14:34
Wohnort: Berlin

Beitrag von skater »

How about \newenvironment{mytabular}[]{×}{×}? :D

Schnapphase
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Mi 29. Apr 2009, 22:46

Beitrag von Schnapphase »

Ich habs grad selbst rausgefunden...

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

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag 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.

Antworten