考虑以下 MWE:
\documentclass[12pt,twoside,letterpaper]{report}
\usepackage{etoolbox}
\newcounter{totchapters}
\providecommand\totchap{}
\makeatletter
\AtEndDocument{%
\addtocounter{totchapters}{\value{chapter}}%
\immediate\write\@mainaux{%
\string\gdef\string\totchap{\number\value{totchapters}}%
}%
}
\makeatother
\pretocmd{\chapter}{\addtocounter{totchapters}{\value{chapter}}\setcounter{chapter}{0}}{}{}
\begin{document}
\totchap \chapter{one}
\chapter{two}
\chapter{three}
\chapter{four}
\end{document}
我正在尝试获取文档中章节总数。我的灵感来自https://tex.stackexchange.com/a/55583/10898。但由于某种原因,章节计数器受到影响,不再增加。为什么会出现这种情况?如何解决?请注意,我想使用此总数进行计算。
答案1
您可以更改代码以使用\stepcounter{totchapters}
而不是
\addtocounter{totchapters}{\value{chapter}}
也许我误解了原意,但这是一个完整的 MWE,可以按预期工作
% arara: pdflatex
\documentclass{report}
\usepackage{etoolbox}
\newcounter{totchapters}
\providecommand\totchap{}
\makeatletter
\AtEndDocument{%
%\stepcounter{totchapters}%
\immediate\write\@mainaux{%
\string\gdef\string\totchap{\number\value{totchapters}}%
}%
}
\makeatother
\pretocmd{\chapter}{\stepcounter{totchapters}}{}{}
\begin{document}
\totchap\
\chapter{one}
\chapter{two}
\chapter{three}
\chapter{four}
\end{document}
答案2
无需任何重新定义即可totcount
完成此操作。
\documentclass[12pt,twoside,letterpaper]{report}
\usepackage{totcount}
\regtotcounter{chapter}
\begin{document}
This document has \total{chapter} chapters.
\chapter{one}
\chapter{two}
\chapter{three}
\chapter{four}
\end{document}
第一页将显示
本文件共有 4 章。