如何获取文档中的章节数

如何获取文档中的章节数

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}

相关内容