Variableninhalt über mehrere Absätze

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: Variableninhalt über mehrere Absätze

Danke schön !!!

von IrenaSekuta » Fr 5. Feb 2010, 09:45

Hallo KOMA,

recht herzlichen Dank für die tolle Erklärung. Ich werde mir dann erst einmal die von Dir aufgeführte Literatur zu Gemüte führen und erst einmal bei \input bleiben.

Gruß,

Irena

noch 21

von KOMA » Do 4. Feb 2010, 17:03

Etwas unbefriedigend ist das Verhalten von LaTeX, wenn in einer solchen Variablen ein Fehler enthalten ist. Du kannst das ja einmal ausprobieren, indem Du beispielsweise ein \endgroup oder sogar ein \DasIstEinBug irgendwo in der Variablen aus Deinem Beispiel einfügst.

Was Du da definierst, ist übrigens nicht wirklich eine Variable, sondern ein Makro. Das ist durchaus ein Unterschied. Die Unterschiede haben etwas damit zu tun, dass Makros expandiert werden, während Variablen Werte haben, die man setzen und abrufen kann. Ein Makro hat etwas von einer Funktion ist aber trotzdem auch keine Funktion. Wenn man wirklich wissen will, wie Makros funktionieren, sollte man sich etwas mit TeX selbst und der Expansion beschäftigen (→ »The TeX book« oder »TeX by Topic«).

Eine Alternative zu Makros sind übrigens Boxen. Hier sei dann ausdrücklich auf die im usrguide dokumentierte lrbox-Umgebung hingewiesen.

Eine weitere Alternative zu Makros sind Tokenregister. Das ist dann aber schon wieder etwas, bei dem na sich mit »The TeX book« oder »TeX by Topic« beschäftigen sollte.

Dass es so viele teilweise recht unterschiedliche Konzepte in TeX gibt, macht es übrigens nicht leichter TeX zu verstehen und oft auch nicht, es zu beherrschen.

Um zu Deinem Vergleich mit einer Variablen in C zurück zu kommen: Das sind zwei recht unterschiedliche Dinge. Nehmen wir das folgende Beispiel in C:
Vara=1
Varb=a
Vara=2
dann ist Varb am Ende dieses Beispiels bei einem Zugriff »1«.
Machen wir das mit Makros in LaTeX:
\newcommand*{\Vara}{1}
\newcommand*{\Varb}{\Vara}
\renewcommand*{\Vara}{2}
dann ergibt eine Expansion von \Varb nach diesem Beispiel »2«. Die Expansion kann sogar zu einem Fehler führen, wenn man beispielsweise ein \let\Vara\UnDeFined ergänzt.

Statt mit Makros zu arbeiten, kann man übrigens auch mit dem Paket filecontents und \input arbeiten. Das ist in vielen Fällen besser zu beherrschen und man bekommt Fehler wenigstens halbwegs gut gemeldet (wenn auch in der erzeugten Datei, statt in der Datei-erzeugenden Datei).

Variableninhalt über mehrere Absätze

von IrenaSekuta » Do 4. Feb 2010, 16:37

Hallo zusammen,

ich möchte mir gerne Variablen generieren, die auch längere textpassagen enthalten können, eventuell sogar innerhalb dieser Textpassagen auch Bilder oder Tabellen.

Anbei ein einfaches Minimalbeispiel:
\documentclass{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[ansinew]{inputenc}
\usepackage[ngerman]{babel}


\newcommand{\varA}{Erste Zeile

Zweite Zeile...}

\begin{document}
\varA
\end{document}
Ist diese Vorgehensweise anzuraten oder gibt es da bessere Möglickeiten. Die Möglichkeit mit \input ist mir bekannt. Gibt es zu obiger vorgehensweise und der Vorgehensweise mit CVariablen einen gravierenden Unterschied?

Gruß,

Irena

Nach oben