
Sou novo no Latex (usando xelatex) e estou tentando criar um documento com muitas notas de rodapé curtas. Estou usando para
e perpage
.
Eu tentei para
com ambos bigfoot
e footmisc
. Eu tentei perpage
de footmisc
, perpage
e bigfoot
. Em todas as combinações dessas (quando finalmente consigo compilar algo), porém, acabo com uma espécie de condição de corrida em que a página começa com as notas de rodapé 27 e 28, por exemplo. Quando executo novamente o xetex, as notas de rodapé terminam na página anterior, mas são numeradas 1 e 2 e a página seguinte começa na nota de rodapé 3.
Em outras palavras, parece que o(s) número(s) da nota de rodapé com dois dígitos estão no limite que envolve a(s) palavra(s) na próxima página. Quando o xetex é executado novamente (com as palavras e notas de rodapé na próxima página), o número da nota de rodapé é diminuído por página, o que faz com que a(s) palavra(s) retornem à página anterior.
Posso executar novamente o xetex infinitamente, mas a numeração/espaçamento não se estabiliza. Posso dar um exemplo prático, mas não será "mínimo" porque os documentos costumam ser longos. Eles também são principalmente gregos.
[EDITAR:]Como eu disse, sou novo no Latex e parece que todo o sistema é meio frágil. Se houver um jeito certo™ de fazer isso, sou todo ouvidos. Uma coisa que pensei que poderia ajudar era se houvesse uma maneira de definir uma largura mínima para notas de rodapé. Não acho que tenha 100 notas de rodapé em nenhuma página, então seria apenas uma questão de fixar a largura em algo largo o suficiente para conter os dois dígitos mais largos. Não sei se isso é possível, mas tornaria os números das notas de rodapé previsíveis para empacotamento.
Responder1
As notas de rodapé padrão do LaTeX são escritas em caixas cuja largura é grande o suficiente para caber em seu conteúdo. Isso é feito pelo \@makefnmark
comando definido ltfloat.dtx
por:
\def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}
Conformeseu comentário, mostrarei como você pode alterar essa definição para compor marcas de notas de rodapé em caixas que tenham a mesma largura. Receio que isso seja feio para números de notas de rodapé pequenos (por exemplo, um dígito)...
Para a largura comum compartilhada por todas as caixas de marca de nota de rodapé, usaremos a largura natural 00
e \normalfont
o tamanho para notas de rodapé padrão. Se você quiser corrigir a largura de uma forma mais direta (que não se adapte à fonte do documento), você pode usar algo como \setlength{\myfootnotemarkwidth}{4mm}
.
Como as caixas para marcas de rodapé têm largura fixa nesta configuração, você precisa escolher como o conteúdo será alinhado dentro da caixa. O seguinte, usado no exemplo completo abaixo, centraliza cada marca de nota de rodapé dentro de sua caixa:
\renewcommand*\@makefnmark{%
\hbox to \myfootnotemarkwidth{%
\hfil\@textsuperscript{\normalfont\@thefnmark}\hfil
}%
}
Se preferir o alinhamento à esquerda ou à direita, basta remover um dos \hfil
comandos.
Se você tiver notas de rodapé muito grandes para a largura da caixa escolhida (que está \myfootnotemarkwidth
no meu código), isso produzirá corretamente \hbox
avisos excessivos. Como entendi na sua pergunta, a situação excessiva pode ser temporária perpage
e desaparecerá na próxima execução do LaTeX. Dito isto, se você estiver muito incomodado com os \hbox
avisos cheios na primeira execução (por quê?), você pode substituir \hfil
por \hss
; mas tome cuidado, pois se você fizer isso, poderá ter marcas de notas de rodapé sobrepostas ao texto próximo sem ser notificado. Portanto, pese cuidadosamente os prós e os contras antes de fazer tal mudança.
Aqui está o exemplo completo:
\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}
Topo da página:
Parte inferior da página:
Caso você queira que as marcas de rodapé utilizadas pelo \footnotetext
comando (ou seja, o local de “destino” das notas de rodapé, na parte inferior do corpo da página) permaneçam com sua formatação habitual, você pode modificar o exemplo anterior desta forma:
\documentclass{article}
\usepackage{etoolbox}
(...)
\AtBeginDocument{(...)
}
\let\@latex@makefnmark\@makefnmark
\patchcmd{\@makefntext}{\@makefnmark}{\@latex@makefnmark}{}{\FAILED}
\renewcommand*\@makefnmark{%
(...)
Então o rodapé do exemplo ficará assim (o número “1” está mais próximo da palavra “The” do que no exemplo completo mostrado acima):