sbox wiederholt aufrufen mit verändertem Inhalt (ifthen)

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: sbox wiederholt aufrufen mit verändertem Inhalt (ifthen)

von Seban » So 11. Okt 2015, 16:11

So einfach kann es manchmal sein. Vielen Dank.

von Noch so einer » Fr 9. Okt 2015, 14:13

Ein Box-Register enthält immer fertig gesetztes Material. Damit ist es für variablen Inhalt, der nicht von den Umständen zum Zeitpunkt der Definition, sondern von Umständen zum Zeitpunkt der Verwendung abhängt, ungeeignet.

Geeignet ist möglicherweise schlicht eine Anweisung:
\newcommand*{\mytext}{\ifthenelse{\boolean{boo}}{boo ist true}{boo ist false}}
Und dann natürlich im Beispiel jede Verwendung von \mybox durch \mytext ersetzen.

sbox wiederholt aufrufen mit verändertem Inhalt (ifthen)

von Seban » Fr 9. Okt 2015, 13:56

Hallo zusammen,

In einem Dokument sollen bestimmte Daten zwei mal ausgegeben werden. Um diese nur ein mal anzulegen und copy/paste zu vermeiden, wurde eine sbox erzeugt, die dann zwei mal aufgerufen wird. Dies klappt soweit.

Nun soll aber ein Teil der Box beim zweiten Aufruf im Dokument etwas anders sein als beim ersten Aufruf. Meine Hoffnung war, dies mittels ifthenelse zu lösen; wie zu erwarten wird die sbox aber wohl nicht vor jedem Aufruf neu erstellt, so dass eine Änderung der boolschen Variable keine Auswirkung mehr hat nachdem die sbox erzeugt ist.

Gibt es eine Möglichkeit dies auf andere Weise umzusetzen?

\documentclass{scrreprt}

\usepackage{ifthen}

\begin{document}

% Bool anlegen: true
	\newboolean{boo}
	\setboolean{boo}{true}
	
	
% Box anlegen	
	\newsavebox{\mybox}
	\sbox{\mybox}{
		\ifthenelse{\boolean{boo}}{boo ist true}{boo ist false}
	}
	
	
% Box erstmals aufrufen
	1. Aufruf:\par	
	\usebox{\mybox}\par
	\ifthenelse{\boolean{boo}}{Probe: TRUE}{Probe: FALSE}
	

% Bool ändern: false
	\setboolean{boo}{false}
	
	
% Box erneut aufrufen
	2. Aufruf:\par	
	\usebox{\mybox}\par
	\ifthenelse{\boolean{boo}}{Probe: TRUE}{Probe: FALSE}
	
\end{document}

Beste Grüße,
Seban

Nach oben