Estou editando uma coleção de artigos de um acadêmico. Para isso considero extremamente útil, se não necessário, indicar quebras de página na primeira edição dos artigos para que as citações de certas passagens desses artigos em outros textos, especialmente em textos mais antigos, ainda sejam válidas e viáveis. Aqui está meu exemplo MWE para isso:
\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}
O que consegui foi definir um novo contador oldpage
. Cada capítulo inicia um novo artigo. Portanto, defino manualmente o oldpage
-counter sempre que um novo capítulo é iniciado. Algum tipo de símbolo ›[marca]‹ indica uma quebra de página no texto antigo. A página antiga também é indicada nas margens. O oldpage
-counter é então definido no cabeçalho, exatamente no lado oposto dos contadores de páginas normais (por exemplo, se o contador de páginas de um livro for de cima para fora, o contador de páginas antigo será de cima para dentro). Eu consegui isso usando scrlayer-scrpage
.
O que eu gostaria é que o contador de páginas antigas fosse sensível ao contexto, o que significa que ele deveria se comportar da seguinte maneira:
- Se houver uma página antiga referida na nova página, o contador de páginas antigas deve simplesmente mostrar o número (por exemplo, ›1‹)
- se houver duas páginas antigas referidas na nova página, o contador de páginas antigas deverá mostrar os números separados por um espaço e uma vírgula (por exemplo, ›1, 2‹)
- se houver três ou mais páginas antigas mencionadas na nova página, o contador de páginas antigas deverá mostrar o primeiro e o último número conectado com um traço duplo (por exemplo, ›1--3‹)
Para programar o comportamento pretendido, acho que é necessário trabalhar com condicionais, e essas condicionais provavelmente precisam de informações sobre quantas quebras de página antigas haverá na página de saída no final. Minhas perguntas são assim:
- Onde posso obter a informação e como posso consultá-la? Não tenho a menor ideia e não saberia por onde começar a procurar.
Eu ficaria extremamente grato se alguém pudesse me ajudar a dar o primeiro passo e me ajudar a escrever algum código sobre isso.
Responder1
O sistema de marcas do TeX fornece uma maneira de rastrear valores que devem ser registrados no cabeçalho da página.
\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}