我想确定我的目录需要多少页,它将显示在两列中,每页有 10 个(子)部分。
所以如果我有 8 个部分和 20 个小节,代码应该返回 28。
编辑:如果有人知道只需一次运行的解决方案,我们将不胜感激。
答案1
请参阅下面的改进版本!!!
第一的:快速而粗略的解决方案:只要没有\chapter
重置计数器的命令,这种方法就可以起作用section
。
但是,subsection
计数器通过以下方式重置\section
:要么放弃重置,要么\subsection
使用另一个总子节计数器应用特殊的重新定义。
毕竟,该值存储在计数器变量中\mytotalcounter
。
\documentclass{beamer}
\usepackage{totcount}
\newcounter{mytotalcounter}
\begin{document}
\regtotcounter{section}
\regtotcounter{subsection}
\newcounter{totalsubsection}
\regtotcounter{totalsubsection}%
\let\BeamerSubsection\subsection
\renewcommand{\subsection}[1]{%
\refstepcounter{totalsubsection}%
\BeamerSubsection{#1}%
}%
\setcounter{mytotalcounter}{\totvalue{section}}
\addtocounter{mytotalcounter}{\totvalue{totalsubsection}}
There are \themytotalcounter~section units
\section{A}
\subsection{A1}
\subsection{A2}
\subsection{A3}
\section{B}
\subsection{A1}
\subsection{A2}
\subsection{A3}
\section{C}
\subsection{A1}
\subsection{A2}
\subsection{A3}
\section{D}
\subsection{A1}
\subsection{A2}
\subsection{A3}
\section{E}
\subsection{A1}
\subsection{A2}
\subsection{A3}
\section{F}
\subsection{A1}
\subsection{A2}
\subsection{A3}
\section{G}
\subsection{A1}
\subsection{A2}
\subsection{A3}
\section{H}
\subsection{A1}
\subsection{A2}
\subsection{A3}
\end{document}
改良版
这不会重新定义\subsection
命令,而是使用包\pretocmd
中的宏etoolbox
。
\documentclass{beamer}%
\usepackage{etoolbox}%
\usepackage{totcount}%
\usepackage{forloop}%
\newcounter{mytotalcounter}%
\newcounter{totalsubsection}%
\regtotcounter{totalsubsection}%
\regtotcounter{section}%
\AtBeginDocument{%
\pretocmd{\subsection}{\refstepcounter{totalsubsection}}{\typeout{Yes, prepending was successful}}{\typeout{No, prepending was not it was successful}}%
\CalculateTotalSectionSubsection%
}%
\newcommand{\CalculateTotalSectionSubsection}{%
\setcounter{mytotalcounter}{\totvalue{section}}%
\addtocounter{mytotalcounter}{\totvalue{totalsubsection}}%
}%
\newcounter{loopsections}
\newcounter{loopsubsections}
\begin{document}
There are \themytotalcounter~(sub)section units
\forloop{loopsections}{1}{\number\value{loopsections} < 9}{%
\section{Section \Alph{loopsections}}
\forloop{loopsubsections}{1}{\number\value{loopsubsections} < 4}{%
\subsection{Subsection \Alph{loopsections}.\arabic{loopsubsections}}
}
}%
\end{document}
输出没有改变,所以我保留了旧的屏幕截图