.png)
コマンドが呼び出されたページ番号を含む行を TOC に追加するコマンドを定義したいと思います。最初の試みは次のとおりでした:
\def\mytoc{}
\def\addlinetomytoc#1{
\g@addto@macro\mytoc{
#1\dotfill\thepage\par
}
}
このように、 を呼び出すと\toc
、各行が TOC のページ番号を報告するので、その理由がわかりました。
そこで私は次のように変更しました:
\def\mytoc{}
\def\addlinetomytoc#1{
\edef\@tmp{\thepage}
\g@addto@macro\mytoc{
#1\dotfill\@tmp\par
}
}
この場合、すべての行に対して、最後に呼び出したときのページ番号が取得され\addlinetomytoc
、その理由も理解できました。しかし、今は行き詰まっていて、他の解決策を見つけることができません。
は動作しない\edef\mytoc{...}
ので(必要なものが得られなければ)、このようなことはできません。\dotfill
\edef
\dotfill
これを数時間試してみましたが、解決策が見つかりません。誰か助けてくれませんか?
答え1
これが何に役立つのかはわかりません。の後に\thepage
発行しない限り、通常は間違ったページ番号を指すからです。\addlinetomytoc
\clearpage
\thepage
とにかく、トークンを追加するときに拡張する必要があります:
\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
}
この方法\x
は
\endgroup\g@addto@macro{#1\dotfill}<expansion of \thepage>\par}
実行すれば\x
正しい結果が得られます。