중요한 버전의 두 가지 다른 페이지 카운터

중요한 버전의 두 가지 다른 페이지 카운터

나는 한 학자의 논문 모음집을 편집하고 있습니다. 이를 위해 나는 기사의 초판에 페이지 구분을 표시할 필요가 없다면 다른 기사, 특히 오래된 기사에서 이 기사의 특정 구절에 대한 인용이 여전히 유효하고 실행 가능하도록 하는 것이 매우 유용하다는 것을 알았습니다. 이에 대한 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새 장이 시작될 때마다 -counter를 수동으로 설정합니다 . 일종의 >[mark]<-기호는 이전 텍스트의 페이지 나누기를 나타냅니다. 그러면 이전 페이지가 여백에도 표시됩니다. 그런 다음 -counter oldpage는 일반 페이지 카운터의 정반대인 헤드에 설정됩니다(예: 책의 페이지 카운터가 상단 외부인 경우 oldpage-counter는 상단 내부입니다). 나는 이것을 사용하여 이것을 달성했습니다 scrlayer-scrpage.

내가 원하는 것은 oldpage-counter가 상황에 맞게 작동하는 것입니다. 즉, 다음과 같은 방식으로 동작해야 합니다.

  • 새 페이지에 참조된 이전 페이지가 하나 있는 경우 이전 페이지 카운터는 단순히 숫자만 표시해야 합니다(예: >1<)
  • 새 페이지에 참조된 두 개의 이전 페이지가 있는 경우 이전 페이지 카운터는 공백과 쉼표로 구분된 숫자를 표시해야 합니다(예: >1, 2<)
  • 새 페이지에서 참조된 이전 페이지가 3개 이상인 경우 이전 페이지 카운터는 이중 대시로 연결된 첫 번째 숫자와 마지막 숫자를 표시해야 합니다(예: >1-3<)

의도한 동작을 프로그래밍하려면 조건문을 사용하는 것이 필요하다고 생각하며 이러한 조건문에는 결국 출력 페이지에 얼마나 많은 oldpage-break가 있을 것인지에 대한 정보가 필요할 것입니다. 내 질문은 다음과 같습니다.

  • 정보는 어디에서 얻을 수 있으며 어떻게 참조할 수 있나요? 나는 단서를 얻지 못했고 어디서부터 찾아야할지 몰랐습니다.

누군가 제가 첫 번째 단계를 수행하고 이에 대한 코드를 작성하는 데 도움을 줄 수 있다면 매우 기쁠 것입니다.

답변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}

관련 정보