批評版における2つの異なるページカウンター

批評版における2つの異なるページカウンター

私はある学者の論文集を編集しています。このため、論文の初版に改ページを示すことは、必要ではないにしても非常に有用です。そうすることで、これらの論文の特定の部分を他の、特に古いテキストに引用しても、依然として有効で実行可能になります。以下は、このための私の 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}

関連情報