
Я набираю библейский текст и хотел бы напечатать ряд стихов на каждой странице в заголовке. Мне удалось повторитьэтотв обычном тексте. Однако я сталкиваюсь с проблемами при использовании его в среде нумерации reledmac, поскольку создается дополнительное вертикальное пространство (см. второй абзац ниже, стихи 5-8). Обратите внимание, что он отлично работает вне этой среды.
Вот минимальный рабочий пример:
\documentclass{memoir}
\usepackage{reledmac}
%% Page style for READER SECTION %%
\makepagestyle{myps}
%\makepsmarks{myps}{}
% Headers
\makeevenhead{myps}{\firstmarks1:\botmarks1}{\leftmark}{\thepage}
\makeoddhead{myps}{\thepage}{\leftmark}{\firstmarks1-\botmarks1}
\markboth{Chapter 1}{Chapter 1}
% Set verse counter (for printing in header)
\newcounter{verseno}
\newcommand{\vnum}{\refstepcounter{verseno}%
\textbf{\theverseno}. %
\marks1{\theverseno}}
\begin{document}
\pagestyle{myps}
\vnum Lorem ipsum dolor sit amet, consectetur adipiscing elit. \vnum Etiam in semper dolor, ut imperdiet lectus. \vnum Praesent ut consequat enim, et pretium ligula. \vnum Sed aliquam purus neque, nec laoreet arcu porta non. Nullam ut finibus lacus. Duis sit amet magna a\linenumannotation{23} metus bibendum vehicula. Aliquam mollis facilisis tellus quis semper. Curabitur at mi tempus, fringilla odio aliquam, ultrices tellus. Quisque finibus varius dolor at dapibus. Sed vel justo eu odio mollis finibus vel eu nisl.\\
%% START NUMBERED LINES %%
\beginnumbering
\pstart
\vnum Lorem ipsum dolor sit amet, consectetur adipiscing elit. \vnum Etiam in semper dolor, ut imperdiet lectus. \vnum Praesent ut consequat enim, et pretium ligula. \vnum Sed aliquam purus neque, nec laoreet arcu porta non. Nullam ut finibus lacus. Duis sit amet magna a metus bibendum vehicula. Aliquam mollis facilisis tellus quis semper. Curabitur at mi tempus, fringilla odio aliquam, ultrices tellus. Quisque finibus varius dolor at dapibus. Sed vel justo eu odio mollis finibus vel eu nisl.
%% END NUMBERED LINES %%
\pend
\endnumbering
\end{document}
Есть ли способ обойти эту проблему?
*** РЕДАКТИРОВАТЬ ***
Я обнаружил, что проблема связана с \marks1{\theverseno}
командой, по-видимому, потому, что reledmac использует метки по-другому.
Я попытался найти решение, используя пакет atbegshi для обновления счетчика в начале каждой страницы (первый стих в диапазоне) и используя счетчик verseno для последнего стиха в диапазоне. Однако я столкнулся с другой проблемой, которая заключается в том, что с reledmac, \AtBeginShipout
похоже, применяется для каждого абзаца как блока, а не для каждой страницы.
решение1
Как сказал @Maïeul, разработчик reledmac
,объясняет, из-за своеобразной структуры пронумерованных абзацев вам следует
используйте
\doinsidethislinehook
для включения конфиденциальной команды, например\marking
.
В частности, Майель указывает на (тщательно составленный и очень полезный) пример файла, который включен в дистрибутив reledmac
:Номер подразделения в заголовкеЭтот документ в основном охватывает ваши потребности; здесь я написал конкретное решение, основанное на вашем MWE.
Вариант 1: Ручное переключение
Я адаптировал команду Maïeul \autoversenumber
к вашим требованиям к стилю: она строится на основе вашего счетчика verseno
и соответствующим образом набирает номера. Это означает, что нумерация остается непрерывной, когда вы переключаетесь между ней и \vnum
.
\newcommand{\autoversenumber}{%
\refstepcounter{verseno}%Add 1 to the counter
\edef\tmp{\noexpand\marks1{\theverseno}}%\tmp will be expanded to \markboth{<verse-value>}{<verse-value}>
\expandafter\doinsidethislinehook\expandafter{\tmp}%First, we expand \tmp to the value, and then, pass the result as argument to \doinsidelinehook
\textbf{\theverseno}.\space%Typeset the verse counter value in bold, followed by a dot and then a space.
}
Обратите внимание, что эта команда будет работать только в пределах пронумерованного текста, и наоборот для вашего \vnum
. Поэтому вам нужно выбрать соответствующую команду в зависимости от контекста.
Вариант 2: Агностическая команда выбирает за вас
Чтобы упростить задачу, вы можете определить команду, которая определяет, вызывается ли она в пронумерованном разделе ( \ifnumbering
), и соответственно выбирает между вашим оригиналом \vnum
и моим \autoversenumber
. Нет необходимости делать это определение самостоятельно.
Я использовал эту команду во второй части моего MWE, то есть в стихах 9–16 (пожалуйста, удалите первое вхождение, \end{document}
чтобы активировать эту часть).
\newcommand{\myautovnum}{\ifnumbering\autoversenumber\else\vnum\fi}
МВЭ
\documentclass{memoir}
\usepackage{reledmac}
\makepagestyle{myps}
% Headers
\makeevenhead{myps}{\firstmarks1:\botmarks1}{\leftmark}{\thepage}
\makeoddhead{myps}{\thepage}{\leftmark}{\firstmarks1-\botmarks1}
\markboth{Chapter 1}{Chapter 1}
%%% 1 - \vnum - This block in the original MWE:
%
% Set verse counter (for printing in header)
\newcounter{verseno}
\newcommand{\vnum}{\refstepcounter{verseno}%
\textbf{\theverseno}. %
\marks1{\theverseno}}
%%% 2 - \autoversenumber - This block adapted from the reledmac examples: 2-subdivision-number-in-header.tex:
%
\newcommand{\autoversenumber}{%
\refstepcounter{verseno}%Add 1 to the counter
\edef\tmp{\noexpand\marks1{\theverseno}}%\tmp will be expanded to \markboth{<verse-value>}{<verse-value}>
\expandafter\doinsidethislinehook\expandafter{\tmp}%First, we expand \tmp to the value, and then, pass the result as argument to \doinsidelinehook
\textbf{\theverseno}.\space%Typeset the verse counter value in bold, followed by a dot and then a space.
}
%%% Agnostic command detects whether to use \vnum or \autoversenumber
%
\newcommand{\myautovnum}{\ifnumbering\autoversenumber\else\vnum\fi}
\begin{document}
\pagestyle{myps}
%%% VARIANT 1: Manual selection of appropriate verse command
%
\vnum Lorem ipsum dolor sit amet, consectetur adipiscing elit.
\vnum Etiam in semper dolor, ut imperdiet lectus.
\vnum Praesent ut consequat enim, et pretium ligula.
\vnum Sed aliquam purus neque, nec laoreet arcu porta non. Nullam ut finibus lacus. Duis sit amet magna a\linenumannotation{23} metus bibendum vehicula. Aliquam mollis facilisis tellus quis semper. Curabitur at mi tempus, fringilla odio aliquam, ultrices tellus. Quisque finibus varius dolor at dapibus. Sed vel justo eu odio mollis finibus vel eu nisl.
%% START NUMBERED LINES %%
\beginnumbering
\pstart
\autoversenumber Lorem ipsum dolor sit amet, consectetur adipiscing elit.
\autoversenumber Etiam in semper dolor, ut imperdiet lectus.
\autoversenumber Praesent ut consequat enim, et pretium ligula.
\autoversenumber Sed aliquam purus neque, nec laoreet arcu porta non. Nullam ut finibus lacus. Duis sit amet magna a metus bibendum vehicula. Aliquam mollis facilisis tellus quis semper. Curabitur at mi tempus, fringilla odio aliquam, ultrices tellus. Quisque finibus varius dolor at dapibus. Sed vel justo eu odio mollis finibus vel eu nisl.
%% END NUMBERED LINES %%
\pend
\endnumbering
\end{document} % Comment to try out the agnostic command, \myautovnum
%%% VARIANT 2: Agnostic verse command
%
\myautovnum Lorem ipsum dolor sit amet, consectetur adipiscing elit.
\myautovnum Etiam in semper dolor, ut imperdiet lectus.
\myautovnum Praesent ut consequat enim, et pretium ligula.
\myautovnum Sed aliquam purus neque, nec laoreet arcu porta non. Nullam ut finibus lacus. Duis sit amet magna a\linenumannotation{23} metus bibendum vehicula. Aliquam mollis facilisis tellus quis semper. Curabitur at mi tempus, fringilla odio aliquam, ultrices tellus. Quisque finibus varius dolor at dapibus. Sed vel justo eu odio mollis finibus vel eu nisl.
%% START NUMBERED LINES %%
\beginnumbering
\pstart
\myautovnum Lorem ipsum dolor sit amet, consectetur adipiscing elit.
\myautovnum Etiam in semper dolor, ut imperdiet lectus.
\myautovnum Praesent ut consequat enim, et pretium ligula.
\myautovnum Sed aliquam purus neque, nec laoreet arcu porta non. Nullam ut finibus lacus. Duis sit amet magna a metus bibendum vehicula. Aliquam mollis facilisis tellus quis semper. Curabitur at mi tempus, fringilla odio aliquam, ultrices tellus. Quisque finibus varius dolor at dapibus. Sed vel justo eu odio mollis finibus vel eu nisl.
%% END NUMBERED LINES %%
\pend
\endnumbering
\end{document}
PS: В целях сокращения ненужных пробелов я предлагаю избегать пустых строк в пронумерованных частях документа (то есть внутри \pstart...\pend
). Пустая строка обычно начинает новый абзац, и это может привести к неприятным сюрпризам в reledmac
.