我想根据章节的长度(页数、行数等)来测量章节。
章节标题-->章节标题(12 页)
我想要一个动态的解决方案,而不是静态地生成并添加这些信息;
\section{Section Title (\pagedistance{label1,label2} pages)}
\pagedistancelabel{label1}
...
...
\section{Section Title (\pagedistance{label2, label3} pages)}
\pagedistancelabel{label2}
...
...
目前是否存在这个包?
答案1
没有针对页面距离的直接命令,但可以使用refcount
Heiko Oberdiek (TeX.SX 上的 TeX 大师之一 ;-)) 编写的包。
引用的问题在于它们可以是任何东西(数字、链接等),并且命令\ref
和\pageref
不可扩展。但是,\getpagerefnumber{label}
命令返回纯数字并且可扩展。
我定义了一个\pagedistance{label1}{label2}
命令,将第一个标签视为参考点(=即零级)并减去第二个标签的参考计数。如果差值为负,则label1
位于比更早的页面上label2
。
该命令不检查标签是否存在。
\documentclass{article}
\usepackage{refcount}
\newcounter{pagediff}
\newcommand{\pagedistance}[2]{%
\setcounter{pagediff}{\getpagerefnumber{#1}}%
\addtocounter{pagediff}{-\getpagerefnumber{#2}}%
\number\value{pagediff}%
}%
\usepackage{blindtext}
\begin{document}
\section{A: \protect\pagedistance{sectionB}{sectionA} pages ahead} \label{sectionA}
\blindtext[50]
\section{B: \protect\pagedistance{sectionA}{sectionB} pages backwards} \label{sectionB}
\blindtext[20]
\section{C: \protect\pagedistance{sectionA}{sectionC} pages backwards} \label{sectionC}
\end{document}
一些改进的版本(请注意,不再\pagedistance
可扩展)
\documentclass{article}
\usepackage{etoolbox}
\usepackage{xparse}
\usepackage{refcount}
\newcounter{pagediff}
\NewDocumentCommand{\pagedistance}{smm}{%
\setcounter{pagediff}{\numexpr\getpagerefnumber{#2} -\getpagerefnumber{#3}}%
\IfBooleanF{#1}{%
\number\value{pagediff}%
}%
}
\newcommand{\Pagedistance}[2]{%
\begingroup
\pagedistance*{#1}{#2}% The starred version doesn't print the number, it stores only.
\def\x{\number\value{pagediff}}
\ifnumgreater{\x}{0}{%
\x\ pages ahead%
}{%
\ifnumless{\x}{0}{%
\x\ pages backward%
}{%
On the same page%
}%
}%
\endgroup
}
\usepackage{blindtext}
\begin{document}
\section{A: \protect\Pagedistance{sectionB}{sectionA}} \label{sectionA}
\blindtext[4]
\section{B: \protect\Pagedistance{sectionA}{sectionA}} \label{sectionB}
\section{C: \protect\Pagedistance{sectionA}{sectionC}} \label{sectionC}
\end{document}