带有自动结束句号的脚注

带有自动结束句号的脚注

我总是厌倦在命令末尾添加句号\footnote。LaTeX 是否有可能在每个脚注末尾自动执行此操作?

答案1

您可以重新定义工作方式\@makefntext并将其添加到定义中。\@makefntext是在标准文档类中执行的用于构建脚注的最终宏。在下面的 MWE 中,我.在之后添加了#1,其中#1提供给的参数是\footnote{...}

在此处输入图片描述

\documentclass{article}
\makeatletter%
\long\def\@makefntext#1{%
  \parindent 1em\noindent \hb@xt@ 1.8em{\hss\@makefnmark}#1.}
\makeatother
\begin{document} 
Here is some text\footnote{This is a footnote}.
\end{document}​

根据您的请求,这将添加到每一个脚注。因此,即使您有整个(带标点)段落作为脚注,最后一句也不应该有句号。

答案2

Werner 的解决方案解决了原始发帖者的问题,但为了好玩,让我们解决一个更普遍的问题。假设用户有时有时会放句号,有时不放。我们希望我们的宏插入句号仅有的如果脚注没有以句号、问号或感叹号结尾。

以下解决方案基于 Will Robertson 在评论中提出的想法。它需要nonfrenchspacing发挥作用(可以制定一个更通用的解决方案,但目前这已经足够了)。基本上,我们检查\spacefactor脚注中最后一个字母的 ,如果太小,则添加句号(3000 是普通和乳胶默认的句子结尾)

\documentclass{article}
\makeatletter%
\long\def\@makefntext#1{%
  \parindent 1em\noindent \hb@xt@ 1.8em{\hss\@makefnmark}#1%
  \ifnum\the\spacefactor<3000.\fi}
\makeatother
\begin{document}
Here is some text\footnote{This is a footnote}.  More
text\footnote{This footnote ends by a full stop.}.  Even more
text\footnote{End with a bang!}.
\end{document}

相关内容