.png)
Quero definir um comando para adicionar uma linha a um sumário com o número da página onde o comando é chamado. A primeira tentativa foi:
\def\mytoc{}
\def\addlinetomytoc#1{
\g@addto@macro\mytoc{
#1\dotfill\thepage\par
}
}
Dessa forma, aí eu chamo \toc
, cada linha informa o número da página do TOC, e entendi o porquê.
Então modifiquei desta forma:
\def\mytoc{}
\def\addlinetomytoc#1{
\edef\@tmp{\thepage}
\g@addto@macro\mytoc{
#1\dotfill\@tmp\par
}
}
Nesse caso, recebo para todas as linhas o número da página da última vez que liguei \addlinetomytoc
e entendi o porquê também. Mas agora estou preso e não consigo encontrar outras soluções.
Não posso fazer algo como \edef\mytoc{...}
porque \dotfill
não funciona \edef
(sem que \dotfill
eu consiga o que preciso).
Estou tentando fazer isso há algumas horas, mas não consigo encontrar nenhuma solução. Alguém pode me ajudar, por favor?
Responder1
Não tenho certeza para que isso é útil, porque \thepage
normalmente apontará para um número de página errado, a menos que você emita \addlinetomytoc
depois de \clearpage
.
De qualquer forma, você tem que expandir \thepage
ao adicionar os 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
}
Desta forma \x
torna-se
\endgroup\g@addto@macro{#1\dotfill}<expansion of \thepage>\par}
e executar \x
fará a coisa certa.