将脚注与正文分离

将脚注与正文分离

我有几个句子有很多脚注。目前我的 tex 代码如下所示:

This is One%
%
\footnote{
Footnote text 1
}%
%
, Two%
%
\footnote{
Footnote text 2
}%
%
~and Three%
%
\footnote{
Footnote text 2
}%
%
.

代码显然很难阅读,而且脚注后面的逗号、点和空格也容易出错。我添加了注释行以提高可读性,但这帮助不大。有没有办法将脚注与正文分离?我知道有命令和,但是\footnotemark\footenotetext我写

This is One\footnotemark, Two\footnotemark and Three\footnotemark.

\footnotetext{
Footnote text 1
}
\footnotetext{
Footnote text 2
}
\footnotetext{
Footnote text 3
}

所有脚注文本都引用最后一个脚注标记。我还知道我可以使用数字参数(从而使脚注索引静态化),但如果我必须在现有脚注之前或之间添加脚注,那么就会出现问题。我如何才能实现第二个示例中的代码,但同时保持脚注索引动态化?

答案1

\footnotetext宏基本上是用于\footnotemark使用计数器的当前值来引用相当接近它的footnote,但是,多个\footnotemark将相应地增加footnote计数器,即在示例中它的值为3

现在,\footnotetext将仅用作3计数器值,而不是前一个值。

一种解决方法是重置脚注计数器,并在footnote每次\footnotetext使用时自动步进计数器,方法是使用\xpretocmd(在命令前面加上\stepcounter

\documentclass{article}

\usepackage{xpatch}

\xpretocmd{\footnotetext}{\stepcounter{footnote}}{}{}

\begin{document}



This is One\footnotemark, Two\footnotemark and Three\footnotemark.


\setcounter{footnote}{0}
\footnotetext{%
Footnote text 1
}
\footnotetext{
Footnote text 2
}
\footnotetext{
Footnote text 3
}


\end{document}

在此处输入图片描述

更新

另一种方法,稍微重新发明endnotes

\documentclass{article}


\usepackage{xparse}

\ExplSyntaxOn

\seq_new:N \g_rolch_seq 

\NewDocumentCommand{\StoreNote}{+m}{%
  \seq_gput_right:Nx \g_rolch_seq {{#1}} % Storing all notes in a list
}

\NewDocumentCommand{\ShowNotes}{}{%
  \setcounter{footnote}{0}
  \seq_map_inline:Nn \g_rolch_seq {\stepcounter{footnote}\footnotetext{##1}}
}


\ExplSyntaxOff


\AtEndDocument{%
  \ShowNotes%
}


\usepackage{blindtext}

\begin{document}


This is One\footnotemark, Two\footnotemark and Three\footnotemark.

\StoreNote{A long note}
\StoreNote{Another Long note}
\StoreNote{The note for the footnote with number \number\value{footnote}}

\blindtext[5]

Another\footnotemark

\blindtext[6]

Another footnote anchor is here\footnotemark


\StoreNote{More long notes}
\StoreNote{More other long notes}
\StoreNote{And now for something completely different}





\end{document}

答案2

这里我开发了一个相当于脚注的标签系统。在序言中使用 定义它们,\labelfn{label}{footnote}在正文中使用 调用它们\Lfn{label}

\documentclass{article}
\newcommand\labelfn[2]{\expandafter\def\csname Footnote#1\endcsname{#2}}
\newcommand\Lfn[1]{\footnote{\csname Footnote#1\endcsname}}
\labelfn{intro}{This is my introductory footnote.}
\labelfn{trivia}{Here is a bit of trivia.}
\labelfn{reminder}{Now for a reminder.}
\begin{document}
\vspace*{6in}
Here is some blah-blah text.\Lfn{intro}  Now as I continue my
text, there is more\Lfn{trivia} to say on the subject.

I am now done.\Lfn{reminder}
\end{document}

在此处输入图片描述

相关内容