Speichere eine Textzeichenfolge in Latex und füge dann anderen Text hinzu (verketten)

8

Ich beginne mit der Definition eines Befehls zum Speichern der Zeichenfolge "Hello":

%Vor%

Ich möchte den String "world" anhängen, aber leider verursacht dieser Code einen Fehler:

%Vor%     
flaflamm 27.06.2010, 01:43
quelle

4 Antworten

9

Sie können dies erreichen, indem Sie \expandafter verwenden. Zum Beispiel:

%Vor%

Wenn Sie \expandafter nicht verwenden, kommt es zu einem Rekursionsproblem. Sie können mehr darüber hier lesen.

    
David Underhill 27.06.2010, 02:21
quelle
2

Verwendet die Eingabe dieser Frage zum Generieren

%Vor%

(sorry brian, aber das war das anschaulichste Beispiel, das ich mir vorstellen konnte)

Die Skizze kann Ihnen helfen, eine einfache Todo-Liste mit etwas wie:

zu erstellen %Vor%

Ich hoffe, das kann jemandem helfen, der versucht, Strings für diesen Zweck zu verwenden.

    
Neon 24.05.2012 21:55
quelle
1

Das Problem ist, dass die Definition von \textstring überschreibt, anstatt auf die alte Referenz zu verweisen. Um anhängen zu können, wird standardmäßig der TeX-Befehl \edef verwendet, der die Definition erweitert, bevor etwas zugewiesen wird. Also, wenn Sie

haben %Vor%

LaTeX wird die rechte Seite von \edef in Hello world ändern und dann diese% ce_de% zuweisen, was Sie wollen. Stattdessen erweitert die \textstring in Ihrer aktuellen Version nicht die rechte Seite. Wenn Sie also \newcommand verwenden, wird sie auf \textstring erweitert, die ihrerseits auf \textstring world erweitert wird. , die sich selbst erweitert ... zu dir kommt die Idee.

    
Antal Spector-Zabusky 27.06.2010 06:25
quelle
1

Ähnlich wie David Underhill's Antwort ist das folgende

%Vor%

Das Makro g@addto@macro erzielt den gleichen Effekt und kann etwas besser lesbaren Code erzeugen (besonders wenn Ihr Code in einem Paket / Stil ist oder wenn Sie sich bereits in einer \makeatletter & amp; \makeatother -Situation befinden)

    
drfrogsplat 12.04.2011 04:26
quelle

Tags und Links