Dee
05-04-2010, 14:33
Hallo,
ich beziehe mich auf diesen Thread (http://www.mrunix.de/forums/showthread.php?t=63031).
Ich möchte eine Liste mit Links dynamisch erstellen. Heißt, wenn ich \AddLink{http...} aufrufe, soll dieser zu einer Liste hinzugefügt werden, diese wird dann am Ende ausgegeben.
Für die Realisierung gibt es, glaube ich, drei Möglichkeiten:
\documentclass{scrartcl}
\newcommand*{\PrintLinksI}{}
\newcommand*{\PrintLinksII}{}
\newcommand*{\PrintLinksIII}{}
% mit expandafter
\newcommand*{\AddLinkI}[1]{%
\expandafter\def\expandafter\PrintLinksI\expandaft er{\PrintLinksI{} #1}%
}
% mit \addto
\makeatletter
\newcommand*{\AddLinkII}[1]{%
\g@addto@macro{\PrintLinksII}{#1 }%
}
\makeatother
% mit \let
\newcommand*{\AddLinkIII}[1]{%
\let\PrintLinksAlt\PrintLinksIII%
\renewcommand*\PrintLinksIII{\PrintLinksAlt{} #1}%
}
\begin{document}
Beispieltext fuer mrunix.de\AddLinkI{http://www.mrunix.de/} und fuer die
Wikipedia\AddLinkI{http://de.wikipedia.org/}.\\
Links:\PrintLinksI{}\\
Beispieltext fuer mrunix.de\AddLinkII{http://www.mrunix.de/} und fuer die
Wikipedia\AddLinkII{http://de.wikipedia.org/}.\\
Links:\PrintLinksII{}\\
Beispieltext fuer mrunix.de\AddLinkIII{http://www.mrunix.de/} und fuer die
Wikipedia\AddLinkIII{http://de.wikipedia.org/}.\\
Links:\PrintLinksIII{}\\
\end{document}
Lösung I und II funktionieren, Lösung III wird beendet mit
! TeX capacity exceeded, sorry [input stack size=5000].
\PrintLinksAlt ->\PrintLinksAlt
{} http://www.mrunix.de/
l.40 Links:\PrintLinksIII
{}\\
Die Frage ist also, wo mein Rekursionsfehler in Lösung III liegt.
Nun ist das Problem eigentlich gelöst, aber ich möchte das Ganze auch per tth (http://hutchinson.belmont.ma.us/tth/) in HTML exportieren. Leider kommt tth nicht mit Lösung I und II zurecht. Bei Lösung I werden die Links direkt in den Text gesetzt. Bei Lösung II kennt tth das \g@addto@macro nicht und erweitert die Liste daher nicht.
Meine Hoffnung ist, dass Lösung III nach obiger Fehlerbehebung mit tth klappt.
Viele Grüße
Dee
ich beziehe mich auf diesen Thread (http://www.mrunix.de/forums/showthread.php?t=63031).
Ich möchte eine Liste mit Links dynamisch erstellen. Heißt, wenn ich \AddLink{http...} aufrufe, soll dieser zu einer Liste hinzugefügt werden, diese wird dann am Ende ausgegeben.
Für die Realisierung gibt es, glaube ich, drei Möglichkeiten:
\documentclass{scrartcl}
\newcommand*{\PrintLinksI}{}
\newcommand*{\PrintLinksII}{}
\newcommand*{\PrintLinksIII}{}
% mit expandafter
\newcommand*{\AddLinkI}[1]{%
\expandafter\def\expandafter\PrintLinksI\expandaft er{\PrintLinksI{} #1}%
}
% mit \addto
\makeatletter
\newcommand*{\AddLinkII}[1]{%
\g@addto@macro{\PrintLinksII}{#1 }%
}
\makeatother
% mit \let
\newcommand*{\AddLinkIII}[1]{%
\let\PrintLinksAlt\PrintLinksIII%
\renewcommand*\PrintLinksIII{\PrintLinksAlt{} #1}%
}
\begin{document}
Beispieltext fuer mrunix.de\AddLinkI{http://www.mrunix.de/} und fuer die
Wikipedia\AddLinkI{http://de.wikipedia.org/}.\\
Links:\PrintLinksI{}\\
Beispieltext fuer mrunix.de\AddLinkII{http://www.mrunix.de/} und fuer die
Wikipedia\AddLinkII{http://de.wikipedia.org/}.\\
Links:\PrintLinksII{}\\
Beispieltext fuer mrunix.de\AddLinkIII{http://www.mrunix.de/} und fuer die
Wikipedia\AddLinkIII{http://de.wikipedia.org/}.\\
Links:\PrintLinksIII{}\\
\end{document}
Lösung I und II funktionieren, Lösung III wird beendet mit
! TeX capacity exceeded, sorry [input stack size=5000].
\PrintLinksAlt ->\PrintLinksAlt
{} http://www.mrunix.de/
l.40 Links:\PrintLinksIII
{}\\
Die Frage ist also, wo mein Rekursionsfehler in Lösung III liegt.
Nun ist das Problem eigentlich gelöst, aber ich möchte das Ganze auch per tth (http://hutchinson.belmont.ma.us/tth/) in HTML exportieren. Leider kommt tth nicht mit Lösung I und II zurecht. Bei Lösung I werden die Links direkt in den Text gesetzt. Bei Lösung II kennt tth das \g@addto@macro nicht und erweitert die Liste daher nicht.
Meine Hoffnung ist, dass Lösung III nach obiger Fehlerbehebung mit tth klappt.
Viele Grüße
Dee