我想使用脚注而不使容器段落杂乱。例如:
This is a very long complex\footnote[a] sentence.
\foottext[a]{So complex that I would prefer to pull out the footnote text.}
这个想法源自[linktext][1], [1]: http://url.com
markdown 语法。
答案1
这sepfootnotes
包可能会起到作用,但脚注内容必须在使用之前出现:
\documentclass{scrartcl}
\usepackage{sepfootnotes}
\newfootnotes{A}
\begin{document}
\Anotecontent{a}{So complex that I would prefer to pull out the footnote text.}
This is a very long complex\Anote{a} sentence.
\end{document}
答案2
下面的代码定义了一个宏\longfootnote[fn-label]{footnote text}
,它生成一个脚注并为其分配一个标签,该标签可以按照通常的方式进行交叉引用,以\ref
生成脚注标记。
\makeatletter
\def\longfootnote[#1]{%
\stepcounter{footnote}%
\@bsphack
\protected@write\@auxout{}%
{\string\newlabel{#1}{{%
\string\begingroup
\string\c@footnote \number\c@footnote\string\relax
\string\unrestored@protected@xdef\string\@thefnmark{%
\string\thefootnote}%
\string\endgroup
\string\@footnotemark
}{\thepage}}}%
\@esphack
\protected@xdef\@thefnmark{\thefootnote}
\@footnotetext}
\makeatother
\label
此代码实际上是来自和\@xfootnotemark
来自 的代码的组合latex.ltx
,将标签写入辅助文件,该文件包含新脚注的脚注标记。如果您使用在标签更改时重新编译的编辑器,您应该可以快速获得一个新文档,其中对长脚注的引用可以正确显示。
示例文件。
\documentclass{article}
\usepackage[left=5mm,right=5mm,paperheight=55mm, paperwidth=62mm]{geometry}
\thispagestyle{empty}
\makeatletter
\def\longfootnote[#1]{%
\stepcounter{footnote}%
\@bsphack
\protected@write\@auxout{}%
{\string\newlabel{#1}{{%
\string\begingroup
\string\c@footnote \number\c@footnote\string\relax
\string\unrestored@protected@xdef\string\@thefnmark{%
\string\thefootnote}%
\string\endgroup
\string\@footnotemark
}{\thepage}}}%
\@esphack
\protected@xdef\@thefnmark{\thefootnote}
\@footnotetext}
\makeatother
\begin{document}
\section{A demonstration}
Here\footnote{foo} is\ref{c} a\ref{a} test\footnote{bar} paragraph.\ref{b}
\longfootnote[a]{baz}
\longfootnote[b]{gleep}
\longfootnote[c]{glorp}
\label{sec:test}
This text\footnote{fie} is a part of Section~\ref{sec:test}.
\end{document}
结果。
如上所示,长脚注不应干扰任何其他交叉引用。
答案3
添加到OlivierBlanvillain 的回答, 这sepfootnotes
该软件包还提供了开箱即用的命令\sepfootnotecontent
:\sepfootnote
\documentclass{article}
\usepackage{sepfootnotes}
\begin{document}
\sepfootnotecontent{a}{So complex that I would prefer to pull out the footnote text.}
This is a very long complex\sepfootnote{a} sentence.
\end{document}
结果:
答案4
您也可以定义一个新命令并在常规\footnote
命令中使用它,例如,
\newcommand{\fnOne}{A footnote.}
\newcommand{\fnTwo}{Another footnote.}
A text\footnote{\fnOne} with some\footnote{\fnTwo} footnotes.
其产生预期的结果:
这种方法的一个问题是不能在命令名称内使用数字,在这种情况下,这可能会或可能不会打扰您。
尽管如此,我同意使用脚注包可能是更规范的答案,而@Neil de Beaudrop 的答案在某些情况下更灵活、更有用。我只是提供了一种替代方案。