TeX
专家!
LaTeX
我使用文档类编写了一份文档book
。
我在文档开头的某个部分描述了文档的结构,列出了所有章节及其内容的简短描述。我希望以文档中总共有多少章节的信息作为该部分的开头。
那么,有没有办法可以获取文档中的章节总数并将其打印在文本中?
\section{Structure of the document}
The document is organized into ?? chapters as follows:
\begin{enumerate}
\item Chapter \ref{chap:intro} brings the introduction.
\item Chapter \ref{chap:problem} describes the problem we try to solve.
...
\end{enumerate}
答案1
totcount
例如,通过包就可以实现这一点!
\regtotcounter{chapter}
注册一个现有的计数器名称,并在编译结束时将值存储到文件中.aux
,在第二次编译期间可以使用来获取总值\total{chapter}
。
无需手动调整最后一章的标签。
我自己的包xassoccnt
也允许使用总计数器。
\documentclass{book}
\usepackage{totcount}
\regtotcounter{chapter}
\begin{document}
\section{Structure of the document}
The document is organized into \total{chapter} chapters as follows:
\begin{enumerate}
\item Chapter \ref{chap:intro} brings the introduction.
\item Chapter \ref{chap:problem} describes the problem we try to solve.
\end{enumerate}
\chapter{First} \label{chap:intro}
\chapter{Second} \label{chap:problem}
\chapter{Third}
\chapter{Four}
\end{document}
更新:这里有一个“证明”,将文档拆分成myintro.tex
等等仍然可以得到一份有效的文档!
\documentclass{book}
\begin{filecontents}{myintro.tex}
\section{Structure of the document}
The document is organized into \total{chapter} chapters as follows:
\begin{enumerate}
\item Chapter \ref{chap:intro} brings the introduction.
\item Chapter \ref{chap:problem} describes the problem we try to solve.
\end{enumerate}
\end{filecontents}
\usepackage{totcount}
\regtotcounter{chapter}
\begin{document}
\InputIfFileExists{myintro}{}{}
\chapter{First} \label{chap:intro}
\chapter{Second} \label{chap:problem}
\chapter{Third}
\chapter{Four}
\end{document}
更新 2
如果\appendix
使用,则chapter
计数器重置。在这种情况下使用\DeclareTotalAssociatedCounters{chapter}{allchapters}
,其中allchapters
忽略的重置chapter
。
\documentclass{book}
\usepackage{xassoccnt}
\DeclareTotalAssociatedCounters{chapter}{allchapters}
\begin{document}
\section{Structure of the document}
The document is organized into \TotalValue{allchapters} chapters as follows:
\begin{enumerate}
\item Chapter \ref{chap:intro} brings the introduction.
\item Chapter \ref{chap:problem} describes the problem we try to solve.
\end{enumerate}
\chapter{First} \label{chap:intro}
\chapter{Second} \label{chap:problem}
\chapter{Third}
\chapter{Four}
\appendix
\chapter{One of Appendix}
\chapter{Two of Appendix}
\end{document}
答案2
如果您只计算章节并且其中没有计数器重置附录,则可以\label
在文档末尾设置一个,专门捕获当前的值\arabic{chapter}
:
\documentclass{book}
\makeatletter
\AtEndDocument{%
\protected@edef\@currentlabel{\arabic{chapter}}%
\label{chap:last}}
\makeatother
\usepackage{multido}
\begin{document}
\chapter{Structure of the document}
The document has \ref{chap:last} chapters.
\multido{\i=1+1}{57}{\chapter{A chapter}}
\end{document}