즉시 \thepage 확장(맞춤 목차)

즉시 \thepage 확장(맞춤 목차)

명령이 호출되는 페이지 번호로 목차에 줄을 추가하는 명령을 정의하고 싶습니다. 첫 번째 시도는 다음과 같습니다.

\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올바른 일이 일어날 것입니다.

관련 정보