我总是厌倦在命令末尾添加句号\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}