\thepage sofort erweitern (benutzerdefiniertes Inhaltsverzeichnis)

\thepage sofort erweitern (benutzerdefiniertes Inhaltsverzeichnis)

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 \addlinetomytocund verstehe auch, warum. Aber jetzt stecke ich fest und finde keine anderen Lösungen.

Ich kann so etwas nicht machen, \edef\mytoc{...}weil \dotfilles nicht klappt \edef(ohne \dotfillbekomme 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 \thepagenormalerweise auf eine falsche Seitenzahl verweist, es sei denn, Sie geben \addlinetomytocdanach ein \clearpage.

Auf jeden Fall muss \thepagebeim 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 \xwird

\endgroup\g@addto@macro{#1\dotfill}<expansion of \thepage>\par}

und die Ausführung \xwird das Richtige bewirken.

verwandte Informationen