關鍵版本中有兩個不同的頁面計數器

關鍵版本中有兩個不同的頁面計數器

我正在編輯一位學者的文章集。為此,我發現如果沒有必要在文章的第一版中指示分頁符,則非常有用,以便在其他文本(尤其是較舊的文本)中對這些文章的某些段落的引用仍然有效且可行。這是我的 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}

我所取得的成就是定義了一個新的 counter oldpage。每章都開始一篇新文章。因此,oldpage每次新章節開始時,我都會手動設定計數器。某種>[標記]<符號表示舊文本中的分頁符號。舊頁也會在頁邊空白處標示。然後將-counteroldpage設定在頭部,在正常頁面計數器的相反​​側(例如,如果書中的頁面計數器是從上到外的,則舊頁面計數器是從上到內的)。我使用 實現了這一點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}

相關內容