sbox wiederholt aufrufen mit verändertem Inhalt (ifthen)

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


Seban
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 89
Registriert: Do 10. Jan 2013, 13:31

sbox wiederholt aufrufen mit verändertem Inhalt (ifthen)

Beitrag von Seban »

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

Noch so einer

Beitrag von Noch so einer »

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.

Seban
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 89
Registriert: Do 10. Jan 2013, 13:31

Beitrag von Seban »

So einfach kann es manchmal sein. Vielen Dank.

Antworten