看起来很简单(并且我按照 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}