如果脚注文本出现过早,则发出警告

如果脚注文本出现过早,则发出警告

我目前正在完成一本书的项目,有时会发生脚注文本出现得早一页的情况,这意味着它不与脚注引用在同一页,而是在前一页。

当没有其他方式构建页面时,LaTeX 似乎会将其作为最后的手段(因为它只会发生在长而复杂的文本中,所以我无法使用 MWE)。

在大多数情况下,唯一的补救措施就是简单地更改文本(或有时更改图形的排列)。我所寻找的不是避免这种情况的方法,而是更容易发现这种行为的方法。是否可以让 LaTeX 跟踪此类脚注并以某种方式标记它们,以便于发现它们?

编辑

现在有一个 MWE 显示了这个问题。脚注的文本在第二页,而参考文献在第三页。

\documentclass{scrbook}
\usepackage{geometry}
\geometry{paperheight=22.5cm, 
paperwidth=15.5cm,
inner=1.9cm,
outer=2.2cm,
bottom=1.8cm,
top=1.83cm,
}
\usepackage{graphicx}
\usepackage{mwe}
\usepackage{bigfoot}
\begin{document}
\blindtext
\blindtext 
\begin{figure}[!t]
\noindent\includegraphics[width=\textwidth]{example-image-a}
\end{figure}
\blindtext\blindtext Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque p \footnote{\blindtext\blindtext}
\end{document}

注意:这并不是为了解决这个问题,而是为了更容易地发现它。

答案1

该解决方案使用 ifoddpage 包,与涉及 aux 文件的所有内容一样,您必须运行它两次。

\documentclass{scrbook}
\usepackage{geometry}
\geometry{paperheight=22.5cm, 
paperwidth=15.5cm,
inner=1.9cm,
outer=2.2cm,
bottom=1.8cm,
top=1.83cm,
}
\usepackage{graphicx}
\usepackage{mwe}
\usepackage{bigfoot}

\usepackage{ifoddpage}
\newcounter{checkfoot}
\makeatletter
\newcommand{\checkmark}{\checkoddpage
  \stepcounter{checkfoot}%
  \expandafter\xdef\csname checkfoot\thecheckfoot\endcsname{\oddpage@page}}
\newcommand{\checknote}{\checkoddpage
  \ifnum\csname checkfoot\thecheckfoot\endcsname=\oddpage@page\relax\else
    WARNING: footnote is on another page.\par
  \fi}
\makeatother


\begin{document}
\blindtext
\blindtext 
\begin{figure}[!t]
\noindent\includegraphics[width=\textwidth]{example-image-a}
\end{figure}
\blindtext\blindtext Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque p 
\checkmark\footnote{\checknote\blindtext\blindtext}

\end{document}

答案2

您可以添加以下标签

\documentclass{scrbook}
\usepackage{geometry}
\geometry{paperheight=22.5cm, 
paperwidth=15.5cm,
inner=1.9cm,
outer=2.2cm,
bottom=1.8cm,
top=1.83cm,
}
\usepackage{graphicx}
\usepackage{mwe}
\usepackage{bigfoot}
\begin{document}
\blindtext
\blindtext 
\begin{figure}[!t]
\noindent\includegraphics[width=\textwidth]{example-image-a}
\end{figure}
\blindtext\blindtext Lorem ipsum dolor sit amet, consectetuer
adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque
p\label{fnotemarkaaa}\footnote{\leavevmode\label{fnoteaaa}\blindtext\blindtext}
\end{document}

可能通过使用添加标签和脚注文本的自定义宏。

那么您只需要在辅助文件中检查每个fnotemark标签是否位于相应fnote标签之前,但在这种情况下,您会看到

\newlabel{fnoteaaa}{{1}{2}}
\newlabel{fnotemarkaaa}{{}{3}}

显示商标在第 3 页,但注释的文字在第 2 页。

您可以让 tex 比较这些并给出错误,但可能更简单地进行外部检查。

相关内容