私はある学者の論文集を編集しています。このため、論文の初版に改ページを示すことは、必要ではないにしても非常に有用です。そうすることで、これらの論文の特定の部分を他の、特に古いテキストに引用しても、依然として有効で実行可能になります。以下は、このための私の 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
新しい章が始まるたびに、カウンターを手動で設定します。ある種の ›[マーク]‹ 記号は、古いテキストの改ページを示します。古いページは余白にも示されます。カウンターは、oldpage
通常のページ カウンターの反対側のヘッダーに設定されます (たとえば、本のページ カウンターが上部外側の場合、古いページ カウンターは上部内側です)。私は を使用してこれを実現しましたscrlayer-scrpage
。
私が望むのは、oldpage-counter がコンテキスト依存になることです。つまり、次のように動作するということです。
- 新しいページが参照する古いページが 1 つある場合、古いページ カウンターにはその番号が表示されます (例: ›1‹)
- 新しいページで参照される古いページが 2 つある場合、古いページ カウンターにはスペースとカンマで区切られた数字が表示されます (例: ›1, 2‹)
- 新しいページで参照される古いページが 3 つ以上ある場合、古いページ カウンターには、最初の数字と最後の数字が二重ダッシュで表示されます (例: ›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}