.png)
Ich möchte einen Befehl definieren, der einem Inhaltsverzeichnis eine Zeile mit der Seitennummer hinzufügt, auf der der Befehl aufgerufen wird. Der erste Versuch war:
\def\mytoc{}
\def\addlinetomytoc#1{
\g@addto@macro\mytoc{
#1\dotfill\thepage\par
}
}
Auf diese Weise rufe ich dann auf \toc
, jede Zeile gibt die Seitenzahl des Inhaltsverzeichnisses an, und ich verstehe, warum.
Ich habe es folgendermaßen geändert:
\def\mytoc{}
\def\addlinetomytoc#1{
\edef\@tmp{\thepage}
\g@addto@macro\mytoc{
#1\dotfill\@tmp\par
}
}
In diesem Fall bekomme ich für alle Zeilen die Seitenzahl des letzten Aufrufs angezeigt \addlinetomytoc
und verstehe auch, warum. Aber jetzt stecke ich fest und finde keine anderen Lösungen.
Ich kann so etwas nicht machen, \edef\mytoc{...}
weil \dotfill
es nicht klappt \edef
(ohne \dotfill
bekomme ich, was ich brauche).
Ich versuche das schon seit ein paar Stunden, aber ich finde keine Lösung. Kann mir bitte jemand helfen?
Antwort1
Ich bin nicht sicher, wozu das nützlich ist, da es \thepage
normalerweise auf eine falsche Seitenzahl verweist, es sei denn, Sie geben \addlinetomytoc
danach ein \clearpage
.
Auf jeden Fall muss \thepage
beim Hinzufügen der Tokens erweitert werden:
\def\mytoc{}
\def\addlinetomytoc#1{%
\begingroup\edef\x{\endgroup
\noexpand\g@addto@macro\noexpand\mytoc{%
\unexpanded{#1\dotfill}\thepage\noexpand\par
}% end of \g@addto@macro
}\x
}
Dieser Weg \x
wird
\endgroup\g@addto@macro{#1\dotfill}<expansion of \thepage>\par}
und die Ausführung \x
wird das Richtige bewirken.