ratet mal, wer schon wieder eine Frage hat
Genau ich...
Diesmal geht es um Folgendes:
Ich möchte gerne, dass der Inhalt einer Umgebung – also das zwischen \begin{} und \end{} – automatisch zweimal ausgegeben wird. Das Problem dabei ist, dass in der Umgebung Befehle stehen, deren Definition sich zwischen dem ersten und zweiten Ausgeben verändern soll.
Ich habe es mit einer savebox versucht, die scheint aber den vollständig expandierten Text zu speichern, so dass die Veränderung der Definition keine Wirkung mehr hat. Wie kann ich den Inhalt der Umgebung unexpandiert speichern, so dass er bei jeder Ausgabe erneut ausgewertet wird?
Hier das Beispiel, in dem die Veränderung der Definition durch eine if-Abfrage geschieht.
\documentclass[11pt,a4paper]{scrartcl} \usepackage[latin1]{inputenc} \usepackage{ifthen} \newboolean{mybool}% neue boolsche Variable, ist mit false bvoreingestellt \newsavebox{\mybox}% neue sbox anlegen \newenvironment{myenv}{% Umgebung definieren \begin{lrbox}{\mybox}% Box öffnen }{ \end{lrbox}% Box schließen \par Zunächst die Ausgabe, mit als falsch eingestellter Variable:\par \usebox{\mybox}% Box das erste Mal ausgeben \setboolean{mybool}{true}% boolsche Variable ändern \par Jetzt die Ausgabe mit umgestellter Variable (wahr):\par \usebox{\mybox}% Box das zweite mal Ausgeben } \newcommand{\mycmd}{%neuer Befel, der sich abhängig von der boolschen Variable verhält \ifthenelse{\boolean{mybool}}{ \texttt{mybool} ist wahr. }{ \texttt{mybool} ist falsch. } } \begin{document} \section*{Minimalbeispiel -- unausgeführte Befehle in sbox} \begin{myenv} \par Diese Inhalt wird mehrfach Ausgegeben. Mit dem Befehl \mycmd \end{myenv} \end{document}
Vielleicht mit Zwischenspeichern in einer externen Datei...?
Und noch eine Frage: Kann die savebox keine Umbrüche speichern? Wenn ich die \par-Befehle weglasse, steht alles in einer über den Rand hinausragenden Zeile...
Vielen Dank und
liebe Grüße!
Tobi