这个问题的后续问题:amsart、setspace 和脚注
如那里所解释的,setspace
在文档中使用该包amsart
会删除脚注第一行的缩进。这显然是因为setspace
重新定义的方式\@footnotetext
。但是之前提供的解决方案是将此命令保存在宏中并在加载后恢复它setspace
,它有一个不受欢迎的特性,即将正文的行距设置也应用于脚注。就其本身而言,该\setstretch
功能仅影响正文的行距。但使用\@footnotetext
修复程序会使它也影响脚注的行距。因此,例如:
\documentclass[12pt]{amsart}
\makeatletter
\let\std@footnotetext\@footnotetext
\usepackage{setspace}
\setstretch{2}
\let\@footnotetext\std@footnotetext
\makeatother
\begin{document}
The main text is double-spaced thanks to our use of the setstretch function.\footnote{But now this footnote is double-spaced just like the main text. How do I fix this?}
\end{document}
结果是双倍行距的脚注。在上面的例子中插入\usepackage{footmisc}
after\makeatother
会使脚注再次变为单倍行距,但似乎每个脚注的第一行缩进有点太多(比正文的缩进量还多)。我可以使用 after 等来调整第一行脚注缩进\setlength{\footnotemargin}{1.1em}
,\usepackage{footmisc}
但我不知道标准正文缩进amsart
量有多宽,所以我不知道如何使其与正文完全匹配。这仍然留下了如何调整脚注中后续段落缩进的问题。
有谁知道正文缩进和脚注首行缩进之间的正确关系amsart
,以及脚注首行和脚注内后续段落首行之间的正确关系是什么?我该如何让它们对齐而不弄乱脚注的行距?
答案1
诀窍setspace
是添加
\def\baselinestretch{\setspace@singlespace}\reset@font
在代码前面\@footnotetext
(但它使用标准代码);所以我们对提供的代码执行此操作amsart
:
\usepackage{etoolbox}
\makeatletter
% save the code for \@foonotetext
\let\std@footnotetext\@footnotetext
\usepackage{setspace}
\setstretch{2}
% restore the code for \@footnotetext
\let\@footnotetext\std@footnotetext
% now patch it
\patchcmd{\@footnotetext}
{\normalfont}
{\def\baselinestretch{\setspace@singlespace}\reset@font\normalfont}
{}{}
\makeatother