使用 amsart 和 setspace 进行脚注缩进

使用 amsart 和 setspace 进行脚注缩进

这个问题的后续问题: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

相关内容