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