我如何添加额外的 \pagemark 来标记当前章节开始和结束的页码?

我如何添加额外的 \pagemark 来标记当前章节开始和结束的页码?

我正在使用 KOMA-Script scrbook 类。并使用 scrpage2 包来设置标题:

\usepackage{scrpage2}
\clearscrheadfoot
\pagestyle{scrheadings}
\cfoot[\pagemark]{\pagemark}
\chead[]{\headmark}

我想在目录上添加一个额外的页码。我需要的额外页码是这样的:第 181-195 页,其中 181 是当前章节开始的页码,195 是章节结束的页码。当然,我需要在每一章中都更改这一点。

答案1

我不知道有什么直接解决方案。不过,你可以执行以下操作:

0)\currchapternick在文档开头定义:

\newcommand{\currchapternick}{}

1)用以下内容概括每一章:

\renewcommand{\currchapternick}{unique-nick-for-chapter}
\label{begin-\currchapternick}
...
\label{end-\currchapternick}

2)设置ofoot如下:

\ofoot[pp.~\pageref{begin-\currchapternick}--\pageref{end-\currchapternick}]%
      {pp.~\pageref{begin-\currchapternick}--\pageref{end-\currchapternick}}

我已经测试了宏的使用,\label并且\ref-- 有效。如果页脚的内容是延迟扩展的,那么代码将产生所需的结果,我推测是这样。如果没有,您仍然可以\ofoot在每章开始时调用,如上所述。

根据邮件档案中的讨论,没有\AtBeginChapter或这样的东西\AtEndChapter,因此除非你深入研究 TeX 内部结构,否则无法进一步自动化这一点。

答案2

对于此任务和类似任务,该zref包非常有用。基于此包提供的abspage和模块,您可以定义一个宏,如下所示:thepage\chappagerangelabel

\documentclass{scrbook}

\usepackage{calc}
\usepackage[abspage, thepage]{zref}
\usepackage{scrpage2}
\usepackage{lipsum}% lorem ipsum placeholder text

\makeatletter

\newcounter{chappagerange}% auxiliary counter

\newcounter{chappointer}% auxiliary counter
\stepcounter{chappointer}% value 1 for first chapter

\newcommand*{\chappagerangelabel}{%
  \zref@label{chappagerange:\the\value{chappointer}}%
  \setcounter{chappagerange}{\zref@extract{chappagerange:\the\value{chappointer}}{abspage}}%
  \edef\thechappagerange{\zthepage{\the\value{chappagerange}}}% first page
  \stepcounter{chappointer}%
  \setcounter{chappagerange}{\zref@extract{chappagerange:\the\value{chappointer}}{abspage}-1}%
  \edef\thechappagerange{pp.~\thechappagerange--\zthepage{\the\value{chappagerange}}}% first page--last page
}

现在,定义一个\pagerangemark仿照以下的宏\pagemark

\DeclareRobustCommand*{\pagerangemark}{%
  {\pnumfont\thechappagerange}%
}

\makeatother

放在\chappagerangelabel每章的最开始和最后一章之后,并\pagerangemark使用\ofoot

\begin{document}

\pagestyle{scrheadings}

\clearscrheadfoot
\cfoot[\pagemark]{\pagemark}
\chead[]{\headmark}

\frontmatter

\noindent
Text

\mainmatter

\ofoot[\pagerangemark]{\pagerangemark}

\chapter{A Chapter}
\chappagerangelabel

\lipsum[1-20]

\chapter{Another Chapter}
\chappagerangelabel

\lipsum[21-40]

\backmatter

\chappagerangelabel

\ofoot[]{}

\noindent
Text

\end{document}

请注意,此解决方案不允许最后一章的最后一页也是整个文档的最后一页的情况。除此之外,它应该可以顺利运行。

相关内容