重要版本中的两个不同页数计数器

重要版本中的两个不同页数计数器

我正在编辑一位学者的论文集。为此,我发现在文章的第一版中标明分页符非常有用(即使不是必需的),这样这些文章的某些段落在其他文本(尤其是较旧的文本)中的引用仍然有效且可行。这是我的 MWE 示例:

\documentclass{scrbook}

\usepackage{lipsum}
\usepackage{scrlayer-scrpage}
\ohead{\textbf{\pagemark}}
\ihead{\textit{\theoldpage}}
\ofoot{}
\pagestyle{scrheadings}

\newcounter{oldpage}
\setcounter{oldpage}{1}

\newcommand{\markoldpage}{
[mark]
\marginpar{\begin{center}\footnotesize\theoldpage\end{center}}
\stepcounter{oldpage}
}

\begin{document}

\chapter{Chapter}

\markoldpage{} This is the first oldpage. \markoldpage{} Now the second oldpage has begun.

\newpage

\lipsum \markoldpage{} \lipsum \markoldpage{}

\end{document}

我所实现的是定义一个新的计数器oldpage。每个章节都以新文章开始。因此,oldpage每次开始新章节时,我都会手动设置计数器。某种 ›[mark]‹ 符号表示旧文本中的分页符。然后,旧页码也会显示在页边距中。然后,计数器oldpage会设置在头部,与普通页码计数器完全相反(例如,如果一本书中的页码计数器位于顶部外侧,则旧页码计数器位于顶部内侧)。我使用 实现了这一点scrlayer-scrpage

我希望 oldpage-counter 是上下文相关的,这意味着它应该按照以下方式运行:

  • 如果新页面中引用了一个旧页面,则旧页面计数器应仅显示数字(例如›1‹)
  • 如果新页面引用了两个旧页面,则旧页面计数器应显示以空格和逗号分隔的数字(例如›1,2‹)
  • 如果新页面引用了三个或更多旧页面,则旧页面计数器应显示用双破折号连接的第一个和最后一个数字(例如›1--3‹)

我想,要编写预期行为,就必须使用条件,而这些条件可能需要有关最终输出页面上将有多少旧分页符的信息。我的问题是:

  • 哪里可以得到这些信息?如何引用这些信息?我一点头绪都没有,也不知道从哪里开始找。

如果有人能帮助我完成第一步并帮助我编写一些代码,我将非常感激。

答案1

TeX 的标记系统提供了一种方法来跟踪应在页面头中注册的值。

在此处输入图片描述

\documentclass{scrbook}

\usepackage{lipsum}
\usepackage{scrlayer-scrpage}
\ohead{\textbf{\pagemark}}
\def\lastoldpagemark{\topmarks\oldpagemark}
\ihead{\textit{\lastoldpagemark\ifnum\lastoldpagemark<\botmarks\oldpagemark--\botmarks\oldpagemark\fi
               \xdef\lastoldpagemark{\botmarks\oldpagemark}}}
\ofoot{}
\pagestyle{scrheadings}
\newmarks\oldpagemark % etex marks not completely reliable in latex, but probably OK here
\newcounter{oldpage}
\setcounter{oldpage}{1}

\newcommand{\markoldpage}{%%%
[mark]%%%
\marks\oldpagemark{\theoldpage}\marginpar{\centering\footnotesize\theoldpage}%%%
\stepcounter{oldpage}%%%
}

\begin{document}

\chapter{Chapter}

\markoldpage{} This is the first oldpage. \markoldpage{} Now the second oldpage has begun.

\newpage

\lipsum \markoldpage{} \lipsum \markoldpage{}

\end{document}

相关内容