.png)
Quiero definir un comando para agregar una línea a un TOC con el número de página donde se llama el comando. El primer intento fue:
\def\mytoc{}
\def\addlinetomytoc#1{
\g@addto@macro\mytoc{
#1\dotfill\thepage\par
}
}
De esta manera, luego llamé \toc
, cada línea informa el número de página del TOC y entendí por qué.
Entonces modifiqué de esta manera:
\def\mytoc{}
\def\addlinetomytoc#1{
\edef\@tmp{\thepage}
\g@addto@macro\mytoc{
#1\dotfill\@tmp\par
}
}
En este caso, obtengo para todas las líneas el número de página de la última vez que llamé \addlinetomytoc
y también entendí por qué. Pero ahora estoy estancado y no puedo encontrar otras soluciones.
No puedo hacer algo así \edef\mytoc{...}
porque \dotfill
no funciona \edef
(sin \dotfill
obtener lo que necesito).
Llevo un par de horas intentando hacer esto, pero no encuentro ninguna solución. ¿Alguien puede ayudarme?
Respuesta1
No estoy seguro de para qué sirve esto, porque \thepage
normalmente apuntará a un número de página incorrecto, a menos que lo emita \addlinetomytoc
después de \clearpage
.
De todos modos, hay que expandir \thepage
al agregar los tokens:
\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
}
De esta manera \x
se convierte
\endgroup\g@addto@macro{#1\dotfill}<expansion of \thepage>\par}
y ejecutarlo \x
hará lo correcto.