脚注,非内联语法?

脚注,非内联语法?

我想使用脚注而不使容器段落杂乱。例如:

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.commarkdown 语法。

答案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 的答案在某些情况下更灵活、更有用。我只是提供了一种替代方案。

相关内容