O que o manyfoot faz com o multicol que o fnpara não faz?

O que o manyfoot faz com o multicol que o fnpara não faz?

Se eu usar o fnparapacote para notas de rodapé de parágrafo:

\documentclass{article}
\usepackage{multicol}
\usepackage{lipsum}
\usepackage{fnpara}
\begin{document}
\begin{multicols}{2}
\lipsum[1]
\footnote{This is a test.}\footnote{This is a test.}\footnote{This is a test.}
\footnote{This is a test.}\footnote{This is a test.}\footnote{This is a test.}
\footnote{This is a test.}\footnote{This is a test.}\footnote{This is a test.}
\footnote{This is a test.}\footnote{This is a test.}\footnote{This is a test.}
\footnote{This is a test.}\footnote{This is a test.}\footnote{This is a test.}
\footnote{This is a test.}\footnote{This is a test.}\footnote{This is a test.}
\footnote{This is a test.}\footnote{This is a test.}\footnote{This is a test.}
\footnote{This is a test.}\footnote{This is a test.}\footnote{This is a test.}
\footnote{This is a test.}\footnote{This is a test.}\footnote{This is a test.}
\footnote{This is a test.}\footnote{This is a test.}\footnote{This is a test.}
\footnote{This is a test.}\footnote{This is a test.}\footnote{This is a test.}
\footnote{This is a test.}\footnote{This is a test.}\footnote{This is a test.}
\footnote{This is a test.}\footnote{This is a test.}\footnote{This is a test.}
\footnote{This is a test.}\footnote{This is a test.}\footnote{This is a test.}
\footnote{This is a test.}\footnote{This is a test.}\footnote{This is a test.}
\footnote{This is a test.}\footnote{This is a test.}\footnote{This is a test.}
\footnote{This is a test.}\footnote{This is a test.}\footnote{This is a test.}
\footnote{This is a test.}\footnote{This is a test.}\footnote{This is a test.}
\lipsum[1-10]
\end{multicols}
\end{document}

então as notas de rodapé se sobrepõem ao rodapé. footmiscpacote sofre do mesmo problema. No entanto, isso não acontece com manyfooto pacote

\documentclass{article}
\usepackage{multicol}
\usepackage{lipsum}
\usepackage[para]{manyfoot}
\DeclareNewFootnote[para]{A}
\begin{document}
\begin{multicols}{2}
\lipsum[1]
\footnoteA{This is a test.}\footnoteA{This is a test.}\footnoteA{This is a test.}
\footnoteA{This is a test.}\footnoteA{This is a test.}\footnoteA{This is a test.}
\footnoteA{This is a test.}\footnoteA{This is a test.}\footnoteA{This is a test.}
\footnoteA{This is a test.}\footnoteA{This is a test.}\footnoteA{This is a test.}
\footnoteA{This is a test.}\footnoteA{This is a test.}\footnoteA{This is a test.}
\footnoteA{This is a test.}\footnoteA{This is a test.}\footnoteA{This is a test.}
\footnoteA{This is a test.}\footnoteA{This is a test.}\footnoteA{This is a test.}
\footnoteA{This is a test.}\footnoteA{This is a test.}\footnoteA{This is a test.}
\footnoteA{This is a test.}\footnoteA{This is a test.}\footnoteA{This is a test.}
\footnoteA{This is a test.}\footnoteA{This is a test.}\footnoteA{This is a test.}
\footnoteA{This is a test.}\footnoteA{This is a test.}\footnoteA{This is a test.}
\footnoteA{This is a test.}\footnoteA{This is a test.}\footnoteA{This is a test.}
\footnoteA{This is a test.}\footnoteA{This is a test.}\footnoteA{This is a test.}
\footnoteA{This is a test.}\footnoteA{This is a test.}\footnoteA{This is a test.}
\footnoteA{This is a test.}\footnoteA{This is a test.}\footnoteA{This is a test.}
\footnoteA{This is a test.}\footnoteA{This is a test.}\footnoteA{This is a test.}
\footnoteA{This is a test.}\footnoteA{This is a test.}\footnoteA{This is a test.}
\footnoteA{This is a test.}\footnoteA{This is a test.}\footnoteA{This is a test.}
\lipsum[1-10]
\end{multicols}
\end{document}

O que manyfooto pacote faz para multicolque isso fnparanão aconteça? como esse problema pode ser corrigido com fnparapacotes footmisc?

Responder1

fnpara e footmisc estão usando o mesmo algoritmo (mais ou menos) originalmente de um exemplo de Don Knuth no TeXbook. Em algum momento, eles combinam todas as notas de rodapé coletadas na página e as desempacotam em um parágrafo (o comando é chamado \makefootnoteparagraph). A largura desse parágrafo é explicitamente definida na macro como

 \hsize=\columnwidth

Isso geralmente é correto no LaTeX, pois no modo de duas colunas você deseja que esse parágrafo tenha a largura da coluna. No entanto, dentro de multicols, a expectativa é que as notas de rodapé abranjam todas as colunas; nesse caso, o parágrafo deve ser definido como \textwidth.

Portanto, uma solução possível é corrigir esse comando para usar \textwidth, ou seja,

\usepackage{etoolbox}
\patchcmd{\makefootnoteparagraph}
   {\columnwidth}{\textwidth}
   {\typeout{Success}}{\typeout{patch failed}}

que funciona tanto para fnpara quanto para footmisc.

Mas note que este não é um patch universal, ou seja, seria errado se você não usasse multicol, mas sim usasse \twocolumnou a opção twocolumn para a classe!

PS não verifiquei como isso é feito no Manyfoot. Esse pacote faz manipulações muito mais elaboradas e provavelmente usa um algoritmo diferente para obter notas de rodapé de parágrafo e, portanto, não se depara com o problema.

informação relacionada