Я видел много похожих вопросов, но не видел ни одного ответа. Я хочу, чтобы сноски появлялись под основным текстом, не меняя размер основного текста. Только в случае, если сноска слишком большая (она должна иметь собственное нижнее поле, ниже поля основного текста), я хочу, чтобы она сдвинула основной текст вверх. Вот приблизительное представление того, что я ищу (извините за мои навыки рисования)
Вот самое близкое, что мне удалось получить на данный момент
\begin{luacode}
function enlarge_page()
tex.print("\\enlargethispage{\\custom_distance}")
end
\end{luacode}
\let\oldfootnote\footnote
\renewcommand{\footnote}[1]{%
\directlua{enlarge_page()} % Call the Lua function to enlarge the page
\oldfootnote{#1}%
}
то есть не очень далеко: расстояние смещения неверное, не учитывает количество строк в сноске, разное расстояние между первой сноской и текстом, а также между самими сносками. Любая попытка включить больше деталей приводила к сообщению об ошибке. Я использую класс memoir. Есть ли способ добиться этого?
UPD: Я больше нигде не использую Lua, так что если есть решение в XeLaTex, я могу его использовать
UPD2: Вот примерно та логика, которую я ищу:
if footnote in page : lower bottom margin by a specific constant amount
for every footnote in page : lower bottom margin by distance between footnotes + (footnote length/55)* line height
% There are roughly 55 characters per line in the footnotes
if bottom margin < the lowest possible point: bottom margin = the lowest possible point.
Думаю, это должно быть возможно в Lua, учитывая, что мне удалось уменьшить поля для каждой сноски.