Probleme mit renewcommand in tabular-umgebung

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Probleme mit renewcommand in tabular-umgebung

von Besserwisser » Mi 26. Sep 2012, 14:35

Das ist kein Multipost. Das sind ja wohl zwei unterschiedliche Fragen!!!

Jede einzelne Zelle in einer Tabelle ist eine eigene Gruppe. \renewcommand innerhalb einer Tabellenzelle gelten daher nur bis an das Ende der Tabellenzelle.

von Gast » Mi 26. Sep 2012, 14:32

Es werden schon all \renewcommand ausgeführt, aber Zellen bilden Gruppen, daher verlierst du die Definition nach dem nächsten & wieder. Wenn sie bleiben soll, must du \gdef benutzen, oder per \let den Befehl "globalisieren":
\documentclass[11pt,a4paper,ngerman]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

\begin{document}

\newcommand{\rot}{rot ist rot}
\newcommand{\gruen}{grün ist grün}
\newcommand{\blau}{blau ist blau}

\begin{tabular}{lcr}
\rot&\gruen&\blau\\
\renewcommand{\rot}{rot ist blau}
\renewcommand{\gruen}{grün ist rot}\global\let\gruen\gruen
\renewcommand{\blau}{blau ist grün}
\rot,\gruen,\blau&\gruen&\blau\\
\end{tabular}
\end{document}
Grundsätzlich ist es nicht einfach, Tabellenteile in Befehle zu verstecken, u.a. wegen der Gruppierung. Tabellen sind sensible und komplizierte Gebilde. Oft ist es besser die Tabelle in einem toks-Register zusammenzubauen und anschließend als Ganzes auszugeben.

Ulrike Fischer
www.troubleshooting-tex.de

von Gast » Mi 26. Sep 2012, 14:28

Probleme mit renewcommand in tabular-umgebung

von realyeti » Mi 26. Sep 2012, 14:03

Hallo zusammen,

ich habe das folgende Problem.

Wenn ich mehrere renewcommand-Aufrufe in einer Tabular-Umgebung einsetze, dann wird nur der erste ausgeführt und das hat auch noch ungewollte Auswirkungen auf das Layout.

Anbei erstmal ein Minimalbeispiel zur Verdeutlichungdes Problems:
\documentclass[11pt,a4paper,ngerman]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

\begin{document}

\newcommand{\rot}{rot ist rot}
\newcommand{\gruen}{grün ist grün}
\newcommand{\blau}{blau ist blau}

\begin{tabular}{lcr}
\rot&\gruen&\blau\\
\renewcommand{\rot}{rot ist blau}
\renewcommand{\gruen}{grün ist rot}
\renewcommand{\blau}{blau ist grün}
\rot&\gruen&\blau\\
\end{tabular}
\end{document}
Wie man im Ergebnis sieht, wirkt nur die Änderung bei \rot und selbst dabei geht in der ersten Spalte die Linksausrichtung flöten.

Hintergrund der ganzen Spielerei ist der Gedanke, eine Tabelle auschließlich mit Hilfe eigener Makros zu erstellen. Mit einem Makro wird die Tabular-Umgebung geöffnet, mit einem weiteren wird sie wieder geschlossen und zu guter Letzt gibt es noch ein Makro, mit dem jeweils eine Zeile geschrieben werden kann und da möchte ich natürlich von Zeile zu Zeile die Inhalte der Variablen verändern (mit renewcommand) und das geht eben nicht.

Ich bin dankbar für jeden Tipp und hoffe auf euer geballtes Wissen.

Viele Grüße

Sven

Nach oben