如何重新定义命令来跟踪页面分配而不超出 TeX 容量

如何重新定义命令来跟踪页面分配而不超出 TeX 容量

看起来很简单(并且我按照 Christian 的建议进行了更改,\edef并添加了一些状态代码):

\documentclass{memoir}

\newcommand{\tabloidpagecount}{}
\newcommand{\shelftagpagecount}{}
\newcommand{\totalpagecount}{}
\newcounter{Tp}{}

\newcommand{\incTpc}{
\edef\Tpc{\tabloidpagecount}%
\edef\PC{\totalpagecount}%
\setcounter{Tp}{\thepage}
\addtocounter{Tp}{-1}
\renewcommand{\tabloidpagecount}{\Tpc\ \theTp}
\renewcommand{\totalpagecount}{\PC\ \theTp}
}

\newcommand{\incSTpc}{
\edef\STpc{\shelftagpagecount}%
\edef\PC{\totalpagecount}%
\setcounter{Tp}{\thepage}
\addtocounter{Tp}{-1}
\renewcommand{\shelftagpagecount}{\STpc\ \theTp}
\renewcommand{\totalpagecount}{\PC\ \theTp}
}

\newcommand{\outputstatus}{\par
TPC = \totalpagecount\par
tabloid = \tabloidpagecount\par
shelftags = \shelftagpagecount
\clearpage}

\begin{document}

a tabloidpage \incTpc\outputstatus

a standardpage \incSTpc\outputstatus

2nd standardpage \incSTpc\outputstatus

\outputstatus

\end{document}

它在第 3 页就失败了,但 Christian 建议我使用,从而解决了这个问题\edef

我正在使用lualatex。有什么方法可以做到这一点吗Lua?如果这很重要,我需要在最后将所有内容写入文件。

我需要跟踪:

  • 页面实例总数(因此,这应该是0 1 2正在运行的页面)
  • 小报页数总数以及哪些页面是小报(这应该是0但出于某种原因却2在最后)
  • 书架标签页总数以及它们是什么1 2(这也是有效的)

答案1

在我看来,你想要的是\edef\PC{\totalpagecount}等等,即当前内容的扩展,而不是等等的递归\totalpagecount定义\let

\documentclass{memoir}

\newcommand{\tabloidpagecount}{}
\newcommand{\shelftagpagecount}{}
\newcommand{\totalpagecount}{}
\newcounter{Tp}{}

\newcommand{\incTpc}{%
\edef\Tpc{\tabloidpagecount}%
\edef\PC{\totalpagecount}%
\setcounter{Tp}{\value{page}}%
\addtocounter{Tp}{-1}%
\renewcommand{\tabloidpagecount}{\Tpc\ \theTp}
\renewcommand{\totalpagecount}{\PC\ \theTp}
}

\newcommand{\incSTpc}{%
\edef\Tpc{\shelftagpagecount}%
\edef\PC{\totalpagecount}%
\setcounter{Tp}{\value{page}}%
\addtocounter{Tp}{-1}%
\renewcommand{\shelftagpagecount}{\Tpc\ \theTp}
\renewcommand{\totalpagecount}{\PC\ \theTp}
}

\begin{document}

a tabloidpage \incTpc\clearpage

a standardpage \incSTpc\clearpage

2nd standardpage \incSTpc\clearpage

TPC = \totalpagecount\par
tabloid = \tabloidpagecount\par
shelftags = \shelftagpagecount

\end{document}

相关内容