von cgnieder » Sa 1. Dez 2012, 18:34
ChristophW hat geschrieben:ich habe eine ziemlich - wahrscheinlich dumme - Anfängerfrage.
Das ist gar keine dumme Frage. Hier sind drei Varianten, die allerdings alle nicht mit \the funktionieren (dafür müsste man toks verwenden).
\documentclass{article}
\usepackage{etoolbox}
\makeatletter
% Variante 1 mit etoolbox (\appto):
\def\test@internal{}
\newcommand\test[1]{\appto\test@internal{#1}}
\newcommand\showtest{\test@internal}
% Variante 2: \expandafter Kette:
\def\Test@internal{}
\newcommand\Test[1]{\expandafter\def\expandafter\Test@internal\expandafter{\Test@internal#1}}
\newcommand\showTest{\Test@internal}
% Variante 3: \g@addto@macro (im Gegensatz zu den anderen global)
\def\TEST@internal{}
\newcommand\TEST[1]{\g@addto@macro\TEST@internal{#1}}
\newcommand\showTEST{\TEST@internal}
\makeatother
\begin{document}
Test: \showtest, \showTest, \showTEST
Test: \test{abc}\Test{abc}\TEST{abc}\showtest, \showTest, \showTEST
Test: \test{def}\Test{def}\TEST{def}\showtest, \showTest, \showTEST
\end{document}
Grüße
[quote="ChristophW"]ich habe eine ziemlich - wahrscheinlich dumme - Anfängerfrage.[/quote]
Das ist gar keine dumme Frage. Hier sind drei Varianten, die allerdings alle nicht mit \the funktionieren (dafür müsste man toks verwenden).
[code]\documentclass{article}
\usepackage{etoolbox}
\makeatletter
% Variante 1 mit etoolbox (\appto):
\def\test@internal{}
\newcommand\test[1]{\appto\test@internal{#1}}
\newcommand\showtest{\test@internal}
% Variante 2: \expandafter Kette:
\def\Test@internal{}
\newcommand\Test[1]{\expandafter\def\expandafter\Test@internal\expandafter{\Test@internal#1}}
\newcommand\showTest{\Test@internal}
% Variante 3: \g@addto@macro (im Gegensatz zu den anderen global)
\def\TEST@internal{}
\newcommand\TEST[1]{\g@addto@macro\TEST@internal{#1}}
\newcommand\showTEST{\TEST@internal}
\makeatother
\begin{document}
Test: \showtest, \showTest, \showTEST
Test: \test{abc}\Test{abc}\TEST{abc}\showtest, \showTest, \showTEST
Test: \test{def}\Test{def}\TEST{def}\showtest, \showTest, \showTEST
\end{document}[/code]
Grüße