我目前正在完成一本书的项目,有时会发生脚注文本出现得早一页的情况,这意味着它不与脚注引用在同一页,而是在前一页。
当没有其他方式构建页面时,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 比较这些并给出错误,但可能更简单地进行外部检查。