批判版中的两种不同页数计数器(第 2 部分)

批判版中的两种不同页数计数器(第 2 部分)

问题,David Carlisle 提供了一些代码来在页眉中创建第二个页面计数器,以指示关键版本的页面和分页符。这很酷。但是,随着文档变得复杂,我遇到了问题。以下是详细说明两个问题的 MWE:

\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{First Chapter}
\markoldpage{} This is the first oldpage. 

\markoldpage{} Now the second oldpage has begun. 
\lipsum[1]
\lipsum[3] \markoldpage{} 
\lipsum \markoldpage{} 
\lipsum[1-10] \markoldpage{}
\lipsum[1]

\chapter{Second Chapter}
\section{First Section}
\setcounter{oldpage}{20}
\markoldpage{} This is the first oldpage. \markoldpage{} Now the second oldpage has begun.

\newpage

\lipsum[1-3] \markoldpage{} \lipsum[1-3] \markoldpage{}

\section{Second Section}
\setcounter{oldpage}{17} \markoldpage
\lipsum[1] 

\end{document}
  1. 有时,页面中的 oldpage 计数器下列的新章节不正确,如输出的第二页和第六页所示。有人能帮我理解发生了什么吗?
  2. 如果我将新物品放在相同的页面包含降低旧页 (例如,使用 a\section而不是\chapterMWE 中所示的 a),那么,当然,页码计数器也不起作用,因为宏只为较大的旧页码指定它。在这种情况下,是否可以使用标记将其排版为:[OldpageSection1],[OldpageSection2]

答案1

新的标记系统描述于标记(也许可以与新的 LaTeX-Companion I,第 390-395 页一起阅读)提供了一种简单的机制来实现所需的结果。

\documentclass{scrbook}

\usepackage{lipsum}
\usepackage{scrlayer-scrpage}
\addtokomafont{pagenumber}{\bfseries}

\NewMarkClass{oldpagemark}

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

\ohead{\pagemark}

\ihead{\IfMarksEqualTF{oldpagemark}{top}{last}{(\TopMark{oldpagemark})}{(\TopMark{oldpagemark}--\LastMark{oldpagemark})}}
\ofoot{}

\pagestyle{scrheadings}

\newcommand{\markoldpage}{¦\stepcounter{oldpage}\InsertMark{oldpagemark}{\theoldpage}\marginpar{\centering\footnotesize\theoldpage}}

\begin{document}

\chapter{First chapter}
\lipsum[1-2] \markoldpage{}
\lipsum[1-10] \markoldpage{}
\lipsum[1-2] \markoldpage{}
\lipsum[1-4] \markoldpage{}

\chapter{Second chapter with new numbering} \setcounter{oldpage}{43}
\lipsum[1-2] \markoldpage{}
\lipsum[1-4] \markoldpage{}
\lipsum[1-2] \markoldpage{}
\lipsum[1-4] \markoldpage{}

\chapter{Third chapter with new numbering} \setcounter{oldpage}{25}
\lipsum[1-2] \markoldpage{}
\lipsum[1-4] \markoldpage{}
\lipsum[1-2] \markoldpage{}
\lipsum[1-4] \markoldpage{}

\end{document}

一些散文描述:自 2022 年起,\NewMarkClass提供一种标记机制,该机制不会像\topmark使用 LaTeX 编译时那样遇到 eTeX 的标记和原始 TeX 的标记命令等问题。

新的相应命令\TopMark\LastMark使\InsertMarkLaTeX 能够抓取相关的页码信息而不会造成干扰。

\markoldpage使用这些功能与计数器(oldpage),只需通过 即可在正确的位置进行标记\InsertMark

\IfMarksEqualTF然后使用一个简单的条件,也定义在标记以便在页眉中打印正确的信息。粗体数字代表文档的页码,括号中的斜体数字代表旧页码。还添加了表示分页符 (»¦«) 的字符和页边距中的旧页码。

根据页面范围,比如说 »phantom-oldpage-numbering«,如果范围为 1,则在标题中写入单个数字,例如此处的输出页 2 ...

在此处输入图片描述

...或者页面范围(如果大于一)例如输出第 10 页。

在此处输入图片描述

以前,当我在章节之间更改计数器值时,我就会遇到问题,但到目前为止,这似乎没问题!

相关内容