Perpage + Para не стабилизируется

Perpage + Para не стабилизируется

Я новичок в Latex (использую xelatex) и пытаюсь сделать макет документа с большим количеством коротких сносок. Я использую paraи perpage.

Я пробовал paraи с тем, bigfootи с другим footmisc. Я пробовал perpageиз footmisc, perpageи bigfoot. Во всех этих комбинациях (когда я наконец получаю что-то компилируемое), однако, я получаю своего рода состояние гонки, когда страница a будет начинаться со сносок 27 и 28, например. Когда я перезапускаю xetex, сноски оказываются на предыдущей странице, но пронумерованы 1 и 2, а следующая страница начинается со сноски 3.

Другими словами, кажется, что номер(а) сноски, состоящий из двух цифр, находится на пороге, который переносит слово(а) на следующую страницу. Когда xetex запускается снова (со словами и сносками на следующей странице), номер сноски уменьшается на страницу, что заставляет слово(а) перенестись обратно на предыдущую страницу.

Я могу бесконечно перезапускать xetex, но нумерация/интервалы не стабилизируются. Я могу привести рабочий пример, но он не будет "минимальным", потому что документы часто длинные. Они также в основном на греческом языке.

[РЕДАКТИРОВАТЬ:]Как я уже сказал, я новичок в Latex, и мне кажется, что вся система довольно хрупкая. Если есть Right Way™, как это сделать, я весь внимание. Одна вещь, которая, как мне показалось, могла бы помочь, это возможность установить минимальную ширину сноски. Я не думаю, что у меня 100 сносок на какой-либо странице, поэтому мне просто нужно было бы зафиксировать ширину на чем-то достаточно широком, чтобы вместить две самые широкие цифры. Я не знаю, возможно ли это, но это сделало бы номера сносок предсказуемыми для переноса.

решение1

Стандартные знаки сносок LaTeX набираются в полях, ширина которых как раз достаточна для того, чтобы вместить их содержимое. Это делается командой, \@makefnmarkопределенной в ltfloat.dtx:

\def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}

Согласноваш комментарий, я покажу, как можно изменить это определение, чтобы набрать знаки сносок в полях одинаковой ширины. Боюсь, это будет некрасиво для маленьких (например, однозначных) номеров сносок...

Для общей ширины, общей для всех полей сносок, мы будем использовать естественную ширину 00в \normalfontи размер для стандартных сносок. Если вы хотите зафиксировать ширину более простым способом — который не будет адаптироваться к шрифту документа — вы можете использовать что-то вроде \setlength{\myfootnotemarkwidth}{4mm}.

Поскольку в этой настройке поля для сносок имеют фиксированную ширину, вам нужно выбрать, как содержимое будет выравниваться внутри поля. Следующий пример, используемый в полном примере ниже, центрирует каждый знак сноски внутри его поля:

\renewcommand*\@makefnmark{%
  \hbox to \myfootnotemarkwidth{%
    \hfil\@textsuperscript{\normalfont\@thefnmark}\hfil
  }%
}

Если вы предпочитаете выравнивание по левому или правому краю, просто удалите одну из \hfilкоманд.

Если у вас есть знаки сносок, которые слишком велики для выбранной ширины блока (которая есть \myfootnotemarkwidthв моем коде), это правильно выдаст \hboxпредупреждения о переполнении. Как я понял из вашего вопроса, ситуация переполненности может быть временной из-за perpageи обязательно исчезнет при следующем запуске LaTeX. Тем не менее, если вас слишком беспокоят \hboxпредупреждения о переполнении при первом запуске (почему?), вы можете заменить \hfilна \hss; но будьте осторожны, если вы это сделаете, у вас могут быть знаки сносок, накладывающиеся на соседний текст без уведомления. Поэтому тщательно взвесьте все «за» и «против», прежде чем вносить такое изменение.

Вот полный пример:

\documentclass{article}

\makeatletter
\newlength{\myfootnotemarkwidth}

% Compute the width of a standard footnote mark numbered 00 (two digits) in
% \normalfont.
\AtBeginDocument{%
  \settowidth{\myfootnotemarkwidth}{\@textsuperscript{\normalfont 00}}%
}

\renewcommand*\@makefnmark{%
  \hbox to \myfootnotemarkwidth{%
    \hfil\@textsuperscript{\normalfont\@thefnmark}\hfil
  }%
}
\makeatother

\begin{document}

Some text\footnote{The footnote text.} to show the width of the footnote mark.
And now a high-numbered\footnote[99]{Other footnote text.} footnote.

\end{document}

Верх страницы:

Верх страницы

Внизу страницы:

Нижняя часть страницы

Если вы хотите, чтобы знаки сносок, используемые командой \footnotetext(т. е. место назначения для сносок внизу страницы), оставались в своем обычном форматировании, вы можете изменить предыдущий пример следующим образом:

\documentclass{article}
\usepackage{etoolbox}

(...)

\AtBeginDocument{(...)
}

\let\@latex@makefnmark\@makefnmark
\patchcmd{\@makefntext}{\@makefnmark}{\@latex@makefnmark}{}{\FAILED}

\renewcommand*\@makefnmark{%
(...)

Тогда нижний колонтитул примера будет выглядеть следующим образом (цифра «1» расположена ближе к слову «The», чем в полном примере, показанном выше):

Скриншот

Связанный контент