如何检查脚注标记是否出现在脚注文本的同一页面上?

如何检查脚注标记是否出现在脚注文本的同一页面上?

为了排版,我需要检查“脚注标签”是否出现在“脚注文本”的同一页(开头)。有时确实会发生这种情况,例如,我在一页中有脚注标签,而在下一页中有脚注文本。

目前,我通过目视进行此项检查……这非常无聊且容易出错。

我想到(暂时)重新定义命令\footnote以使其打印.aux我将使用 elisp 脚本解析的文件中的“标签页”和“文本页”,但老实说,我不知道如何做到这一点(我的意思是技巧的 LaTeX 部分)。

为了更好地解释我的想法,我想在文件中包含.aux如下字符串:

"Foonote1: footnotemarkePage=X, footnotetextPage=Y"  

有人能帮助我吗?

有没有更好的解决办法?

我无法提供 MWE,但我希望这可以有所帮助:

\documentclass[11pt]{article}

\begin{document}

I need to print this footnote mark.\footnote{Footnote text.} page 
and the related footnote text page in the ``.aux'' file.

\end{document}

以下是真实案例的截图。

在此处输入图片描述

笔记。我并不是在寻求解决问题的解决方案,而是寻求“检测”问题的解决方案。

已添加注释。有时脚注文本会分成两页(或更多页)。使用自动解决方案检测此问题会很有帮助。

工作正在进行中:

使用egreg 解决方案与类似问题相关我尝试过这个:

\documentclass[12pt]{article}

\usepackage{blindtext}

\usepackage{etoolbox}
\usepackage{hyperref}

\makeatletter
\AtBeginDocument{%
  \renewcommand{\NR@setref}[1]{%
    \ref@page@write{#1}%
    \begingroup\@safe@activestrue\expandafter\endgroup
    \expandafter\NR@@setref\csname r@#1\endcsname
  }%
}
\newcommand{\ref@page@write}[1]{%
  \protected@write\@auxout{}{\string\ref@page{#1}{\thepage}}%
}
\newcommand{\ref@page}[2]{}
\makeatother

\newcounter{MyFootnote}

\let\MyOldFootnote\footnote
\renewcommand{\footnote}[1]{\stepcounter{MyFootnote}\label{FOOTNOTE\arabic{MyFootnote}}\MyOldFootnote{\ref{FOOTNOTE\arabic{MyFootnote}}#1}}

\begin{document}

\setcounter{section}{4}

\section{Section}

I need to print this footnote mark.\footnote{Footnote text.} page and the related footnote text page in the ``.aux'' file.

\blindtext
\blindtext
\blindtext
\blindtext

I need to print this footnote mark.\footnote{Footnote text.} page and the related footnote text page in the ``.aux'' file.

\blindtext
\blindtext
\blindtext
\blindtext

I need to print this footnote tag.\footnote{Footnote text.} page and the related footnote text page in the ``.aux'' file.

\end{document}

现在在.aux文件中我得到:

\newlabel{FOOTNOTE1}{{5}{1}{Section}{section.5}{}}
\ref@page{FOOTNOTE1}{1}
\newlabel{FOOTNOTE2}{{5}{2}{Section}{section.5}{}}
\ref@page{FOOTNOTE2}{2}
\newlabel{FOOTNOTE3}{{5}{3}{Section}{section.5}{}}
\ref@page{FOOTNOTE3}{3}

因此,我可以比较标签所指的页面(以及出现脚注标记的位置)与出现脚注文本的页面。此解决方案的唯一问题是它在脚注文本的开头添加了一个额外的字符串。

就我的截图而言:

\newlabel{FOOTNOTE11}{{4.2.3}{29}{xxxxxxxxxx}{equation.4.25}{}}
\ref@page{FOOTNOTE11}{31}

其中“29”是脚注标记的页码,“31”是脚注文本的页码。请记住,命令的重新定义\footenote是暂时的。

答案1

好的,这符合我的目的:

我将编译:

latex '\AtBeginDocument{\newcounter{MyFootnote} \let\MyOldFootnot  \footnote \renewcommand{\footnote}[1]{\stepcounter{MyFootnote}\label{FootnoteMark\arabic{MyFootnote}}\MyOldFootnote{\label{FootnoteText\arabic{MyFootnote}}#1}}} \input{Footnotes.tex}'

我将进入.aux文件:

\newlabel{FootnoteMark1}{{5}{1}}
\newlabel{FootnoteText1}{{1}{1}}
\newlabel{FootnoteMark2}{{5}{2}}
\newlabel{FootnoteText2}{{2}{2}}
\newlabel{FootnoteMark3}{{5}{3}}
\newlabel{FootnoteText3}{{3}{3}}

所以我可以(用脚本)比较脚注标记和脚注文本的页码。

我知道这不是最完美的解决方案,但对我来说还是有效的。

相关内容