使用行号引用作为脚注的参数

使用行号引用作为脚注的参数

\footnote{text goes in here}命令采用可选的编号参数,因此如果我想直接跳到脚注#5或覆盖默认编号,我可以这样做:

\documentclass{article}
\begin{document}
    Polaris\footnote[5]{i.e. the North Star}.
\end{document}

然而,我想做的是使用相关的电话号码(使用lineno包)用于脚注参数。

此外,由于我的脚注在上下文中会非常长且难以处理,因此我使用\footnotetext行号本身作为可选参数。我不希望\footnotemark文本本身包含行号。只需在相关页面的底部显示一个脚注,脚注本身标有该页面上引用的行号,这正是我想要的。

问题是,当我将行引用作为参数输入时,LaTeX 似乎不喜欢它。它想要一个数字。换句话说,以下方法不起作用:

\documentclass{article}
\usepackage{lineno}
\linenumbers
\begin{document}
    Polaris\linelabel{label1}.
    \footnotetext[\lineref{label1}]{i.e. the North Star}
\end{document}

我意识到为什么这不管用,但我对 LaTeX 了解不够,无法解决这个问题。我的大部分编程都是用 Java 编写的,你可以随意插入任何东西,编译器就会明白你的意思。

有人有什么建议吗?非常感谢。

答案1

脚注文本是

\def\footnotetext{%
     \@ifnextchar [\@xfootnotenext
       {\protected@xdef\@thefnmark{\thempfn}%
    \@footnotetext}}
\def\@xfootnotenext[#1]{%
  \begingroup
     \csname c@\@mpfn\endcsname #1\relax
     \unrestored@protected@xdef\@thefnmark{\thempfn}%
  \endgroup
  \@footnotetext}

所以它只是暂时使用一个数字来定义\@thefnmark,所以你可以直接剪掉那部分

在此处输入图片描述

\documentclass{article}
\usepackage{lineno}
\linenumbers
\makeatletter
 \def\@xfootnotenext[#1]{%
         \protected@edef\@thefnmark{#1}%
      \@footnotetext}
\makeatother

\setlength\textheight{5cm}
\begin{document}

  a\\b\\c\\d\\
    Polaris\linelabel{label1}.
    \footnotetext[\lineref{label1}]{i.e. the North Star}
\end{document}

答案2

对于您的设置,似乎更建议使用自动化方法,这种方法不需要您设置\linelabel然后立即使用它\footnotetext[.]。只需定义类似以下内容\footnoteline{<footnote>}

在此处输入图片描述

\documentclass{article}

\usepackage{lineno}
\linenumbers

\makeatletter
\newcounter{footnotelineno}
\newcommand{\footnoteline}[1]{{%
  \stepcounter{footnotelineno}% A new \footnoteline
  \linelabel{fnln-\thefootnotelineno}% Mark the line with a unique \linelabel
   % Update \@makefnmark to use \ref instead of the counter.
   % This is a local redefinition due to the grouping within \footnoteline.
  \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\ref{fnln-\thefootnotelineno}}}}%
  \footnotetext[\value{footnotelineno}]{#1}% Set the \footnotetext (with a phoney counter value)
}}
\makeatother

\setlength\textheight{5cm}% Just for this example

\begin{document}

a\\b\\c\\d\\
Polaris.\footnoteline{\textit{i.e.}, the North Star}

\end{document}

相关内容