manyfoot は multicol に対して何を行いますか? fnpara は行いません。

manyfoot は multicol に対して何を行いますか? fnpara は行いません。

fnpara段落の脚注にパッケージを使用する場合:

\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}

すると脚注がフッターに重なります。footmiscパッケージは同じ問題を抱えています。しかし、manyfootパッケージではこれは起こりません。

\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}

manyfootパッケージは何をしますmulticolか? パッケージを使用してfnparaこの問題をどのように修正できますか?fnparafootmisc

答え1

fnparaとfootmiscは、TeXbookのDon Knuthの例から派生した、ほぼ同じアルゴリズムを使用しています。ある時点で、ページ上のすべての脚注を結合し、段落に展開します(これを行うコマンドは と呼ばれます\makefootnoteparagraph)。段落の幅は、マクロで明示的に次のように設定されます。

 \hsize=\columnwidth

これは通常、LaTeX では正しい動作です。2 列モードでは、このような段落を列の幅にしたいからです。ただし、複数列モードでは、脚注がすべての列にまたがることが想定されるため、その場合は段落を に設定する必要があります\textwidth

したがって、回避策として\textwidthは、代わりにそのコマンドをパッチして使用するという方法があります。

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

これは fnpara と footmisc の両方に機能します。

ただし、これはユニバーサル パッチではないことに注意してください。つまり、multicol を使用せず、代わりに\twocolumnクラスに twocolumn オプションを使用すると、エラーになります。

PS: manyfoot でどのように行われるかは確認していません。そのパッケージははるかに複雑な操作を行い、おそらく段落の脚注を取得するために異なるアルゴリズムを使用しているため、問題は発生しません。

関連情報