我正在写一篇论文,我想跟踪每章的目标页数。目前我有一个粗略的(非功能性)宏,我把它放在章节标题下面。
如何获取某一章节的页数?
梅威瑟:
\documentclass{memoir}
% The magic counter would go where ??? is
\newcommand\pagesexpected[1]{??? of #1 pages written}
\begin{document}
\chapter{Foo bar}
\pagesexpected{3}
\end{document}
(我个人是 LuaLaTeX 的忠实粉丝,因此绝对鼓励使用 Lua,但任何帮助都会受到赞赏/可以稍后移植到 Lua。)
答案1
计数器page
是一个非常不可靠的朋友。它只能粗略地跟踪,xcntperchap
它有一个\RegisterTrackCounter
宏定义page
要跟踪的内容chapter
(如指定),即存储每章的页数。
请注意,基本上除 之外的任何计数器都可以与page
很好地配合使用。xcntperchap
xassoccnt
该宏\ObtainTrackedValue{chapter}{page}
将检索当前章节的页数,但如果有空白页,它可能会失败,就像在许多情况下一样\cleardoublepage
。
这需要最新的xassoccnt
v1.4 和xcntperchap
v0.4 软件包。(和 L3 内核软件包的最新更新xparse
需要对这两个软件包进行少量代码更改。)
以下是获取这两个软件包的旧版本的链接: https://www.dropbox.com/sh/s6apfkrga0qk92e/AAA2Wbq9uVSkZ19M4M8CC4Via?dl=0
但出于兼容性原因,我不建议恢复到v1.1
更早的版本xassoccnt
和v0.2
(或更早的)版本。xcntperchap
编辑根据 OP v1.3(xassoccnt
)和 v0.3(xcntperchap
)与旧版本xparse
(2017/04/01 之前)兼容。
\documentclass{memoir}
\usepackage{xcntperchap}% Loads xassoccnt as well!
\RegisterTrackCounter{chapter}{page}
\newcommand\pagesexpected[1]{\ObtainTrackedValueExp{chapter}{page} of #1 pages written}
\usepackage{blindtext}
\begin{document}
\chapter{Foo bar}
\pagesexpected{5}
\blindtext[20]
\chapter{Foo bar stuff}
\pagesexpected{5}
\blindtext[15]
\end{document}
编辑:页面计数器需要特殊处理,我应该在将来的版本中解决这个问题xassoccnt
。xcntperchap