是否有一个包或技巧可以收集所有定义的脚注并将其与页码一起打印在特定位置?

是否有一个包或技巧可以收集所有定义的脚注并将其与页码一起打印在特定位置?

我正在编写软件文档。在文档中,我讨论了可能在下一版本软件中实现的新想法以及错误问题。我认为应该提及与新想法和错误问题相关的项目,\footnote以使正文更简洁,并且它们出现在底部。

但是,有一天我必须更新文档,所以如果我必须浏览所有页面来编辑脚注以反映软件中所做的更改(或删除与已修复错误有关的不相关脚注),那将是乏味的。

所以我的想法是收集所有脚注并将它们及其位置(页码)打印在某个位置(可能是在附录中)。

有这样的包吗?如果没有,如何以最简单的方式实现?

答案1

如果您永远不需要可选参数\footnote,这里可以修改endnotes操作以执行延迟写入而不是立即写入,这样就可以正确计算页码。

\documentclass{article}
\usepackage{endnotes}
\makeatletter
\renewcommand\endnote{%
  \@ifnextchar[\@xendnote{\stepcounter{endnote}\protected@xdef\@theenmark{\theendnote}%
  %\@endnotemark % removed
  \@endnotetext}%
}
\renewcommand\@endnotetext[1]{%
  \if@enotesopen\else\@openenotes\fi
  \begingroup\edef\x{\endgroup\write\@enotes{\noexpand\@doanenote{\@theenmark}}}\x
  \begingroup
    \def\next{#1}%
    \newlinechar='40
  \edef\x{\endgroup\write\@enotes{\meaning\next\space-- Page \noexpand\thepage}}\x
  \begingroup\edef\x{\endgroup\write\@enotes{\@endanenote}}\x
}
\let\endnotes@theendnotes\theendnotes
\def\theendnotes{\clearpage\endnotes@theendnotes}
\makeatother

\newcommand\Footnote[1]{\footnote{#1}\endnote{#1}}
%\let\Footnote\footnote % for the final version

\begin{document}

abc\Footnote{abc}
def\Footnote{def}

\newpage

ghi\Footnote{ghi}

\theendnotes
\end{document}

当您不再需要尾注时,只需切换最后的注释并删除该\theendnotes命令。

答案2

这是一个使用todonotes一些技巧的解决方案:

\documentclass{article}
\usepackage[bordercolor=white,color=white]{todonotes}
\newcommand{\future}[1]{%
    \footnote{Future: #1}
    \todo[noline,noinline,caption={#1}]{}%
    }
\begin{document}
Lala lala lala lala lala 
lala lala\future{We might do this}
lala lala lala lala lala 
lala lala lala lala lala 
lala lala lala lala lala.

Lala lala lala lala lala 
lala lala\future{or we might do that}

\listoftodos
\end{document}

这提供了一个\future{}宏,可将您的文本设置在脚注和待办事项列表中,但在文本正文中,它会创建一个边缘的、全白的、不可见的待办事项标志。

当然,您可以通过多种方式进行调整,例如,在边缘放置一个小的彩色斑点来吸引注意力。

答案3

你可以使用尾注收集附录中的脚注。

但为了你的目的我建议待办事项。您还可以将错误修复和想法分开。

如果您已经有脚注,则可以用 todo 替换脚注:

\documentclass[english,11pt]{article} % use larger type; default would be 10pt
\usepackage[utf8]{inputenc}
\usepackage{todonotes}
\usepackage{babel,blindtext}

\let\footnote=\todo

\begin{document}
\listoftodos %All 'footnotes' with page.

\section{Start of document}
\blindtext\footnote{remark A}
\Blindtext\footnote{remark B}


\end{document}

如果您仍在编写文档,我建议定义新的宏。


这里有一个例子,说明如何定义\bug\idea

\documentclass[english,11pt]{article} % use larger type; default would be 10pt
\usepackage[utf8]{inputenc}
\usepackage{todonotes}
\usepackage{babel,blindtext}

\newcommand{\bug}[2][]{\todo[color=red,#1]{Bug: #2}}
\newcommand{\idea}[2][]{\todo[color=green,#1]{Idea: #2}}

\begin{document}
\listoftodos

\section{Start of document}
\blindtext\bug{remark A}
\Blindtext\idea{remark B}

\end{document}

您还可以使用整我-package。还有以下选项footnote在脚注中显示注释。因此,您可以在类似脚注和 fixme 的列表之间切换。

包含所有“修复程序”和脚注列表的示例。错误也在页边空白处标记。(请参阅软件包的选项和\fxfatal):

\documentclass[english,11pt]{article}
\usepackage[draft,footnote,nomargin]{fixme}
\usepackage{babel,blindtext}

\newcommand{\bug}[2][]{\fxfatal[margin,#1]{Bug: #2}}
\newcommand{\idea}[2][]{\fxfatal[#1]{Idea: #2}}

\begin{document}
\listoffixmes

\section{Start of document}
\blindtext\bug{remark A}
\Blindtext\idea{remark B}

\end{document}

相关内容