von Gast » Fr 1. Feb 2019, 11:06
Das kommt ganz auf die Aufgabenstellung an. Wenn ich nur wissen will, was in einer Variablen drin steht, kann ich sie mir ja einfach ausgeben lassen. Für die interne Verwendung in Paketen gibt es häufig andere Methoden als mit Strings zu arbeiten, sodass man sich die recht komplexen Stringvergleiche sparen kann. Bei Boolean-Werten bin ich zum Beispiel ein Freund von toggles aus etoolbox, aber es gibt viele ähnliche und andere Methoden. Wenn es um die Ausgabe von irgendwas geht, dann ist es häufig einfacher, die Ausgabe von Anfang an so auszulegen, dass man den String einfach ausgibt, anstatt ihn noch aufwendig testen zu müssen und dann zu reagieren.
Die um 19:03 gezeigte Lösung nutzt statt des Expandierballets mit \edef oder \expandafter eben direkt eine Schnittstelle von pgfkeys und ist daher nicht nur einfacher zu verstehen sondern, wie erwähnt, auch sicherer. (Gibt es einen Grund, warum Du \ifcsstring verwendet hast? Ich hätte hier \ifdefstring{\tempvar}{true} wegen der Verwendung von \tempvar in \pgfkeysgetvalue{/variables/#1}{\tempvar} fast klarer gefunden.)
Den ganzen Lösungen hier liegt aber zugrunde, dass man zwischen einer Variablen (einem Makro) und ihrem Wert (seiner Expansion) unterscheiden muss.
Das kommt ganz auf die Aufgabenstellung an. Wenn ich nur wissen will, was in einer Variablen drin steht, kann ich sie mir ja einfach ausgeben lassen. Für die interne Verwendung in Paketen gibt es häufig andere Methoden als mit Strings zu arbeiten, sodass man sich die recht komplexen Stringvergleiche sparen kann. Bei Boolean-Werten bin ich zum Beispiel ein Freund von [i]toggles[/i] aus [p]etoolbox[/p], aber es gibt viele ähnliche und andere Methoden. Wenn es um die Ausgabe von irgendwas geht, dann ist es häufig einfacher, die Ausgabe von Anfang an so auszulegen, dass man den String einfach ausgibt, anstatt ihn noch aufwendig testen zu müssen und dann zu reagieren.
Die um 19:03 gezeigte Lösung nutzt statt des Expandierballets mit [tt]\edef[/tt] oder [tt]\expandafter[/tt] eben direkt eine Schnittstelle von [tt]pgfkeys[/tt] und ist daher nicht nur einfacher zu verstehen sondern, wie erwähnt, auch sicherer. (Gibt es einen Grund, warum Du [tt]\ifcsstring[/tt] verwendet hast? Ich hätte hier [tt]\ifdefstring{\tempvar}{true}[/tt] wegen der Verwendung von [tt]\tempvar[/tt] in [tt]\pgfkeysgetvalue{/variables/#1}{\tempvar}[/tt] fast klarer gefunden.)
Den ganzen Lösungen hier liegt aber zugrunde, dass man zwischen einer Variablen (einem Makro) und ihrem Wert (seiner Expansion) unterscheiden muss.