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