这是格式化脚注的正确方法吗?

这是格式化脚注的正确方法吗?

使用命令

\newcommand\@makefntext[1]{%
\noindent\makebox[.02\columnwidth][l]{\@thefnmark}%
\parbox[t]{.98\columnwidth}{#1}}

我得到了脚注的期望结果,如下图所示。

我想知道我的代码是否是实现此目的的最佳方法。

在此处输入图片描述

編輯:按照建议使用footmisc选项hang,脚注编号的格式不同,因此脚注周围的垂直空间会发生变化。

在此处输入图片描述

答案1

带有scrextend,是 的一部分的包KOMA 脚本捆绑,可以使用 KOMA 的命令

\deffootnote[<mark width>]{<indent>}{<parindent>}{<definition>}

使用标准类来格式化脚注。下图(取自KOMA-Script 文档)说明了不同的值:

在此处输入图片描述

在里面,<definition>可以使用 来引用脚注标记\thefootnotemark。以这种方式定义的脚注也可以用于hyperref

\documentclass{book}

\usepackage{scrextend}
\deffootnote[1.5em]{1.5em}{1em}{\thefootnotemark.\space}

\usepackage{lipsum}% dummy text

\usepackage{hyperref}
\begin{document}
\mainmatter

% we want to see what happens for two digit footnote numbers
\setcounter{footnote}{8} 

a\footnote{\lipsum*[2]}b\footnote{\lipsum[2]\lipsum*[3]}

\end{document}

在此处输入图片描述

答案2

您可以使用包自定义脚注的外观footmisc。以下是示例:

\documentclass{book}
\usepackage[hang]{footmisc}

% do this \AtBeginDocument so that all font settings will be already made
\AtBeginDocument{
 % set the \footnotemargin to 1.5em at \footnotesize
 \footnotesize\setlength{\footnotemargin}{1.5em}\normalsize
 % set the footnote parindent equal to the normal parindent
 \edef\hangfootparindent{\the\parindent}
 % no parskip in foonotes
 \renewcommand{\hangfootparskip}{0pt}
}

\usepackage{lipsum} % mock text
\begin{document}
\mainmatter

% we want to see what happens for two digit footnote numbers
\setcounter{footnote}{8} 

a\footnote{\lipsum*[2]}b\footnote{\lipsum[2]\lipsum*[3]}

\end{document}

在此处输入图片描述

您可以设置不同的参数;只需记住和\hangfootparindent\hangfootparskip宏,而不是长度。

\edef技巧用于存储的当前值\parindent

笔记的超链接hyperref无法使用footmisc,所以必须说

\hypersetup{hyperfootnotes=false}

如果hyperref已加载。

如果您尝试这样做,您将失去跨页面拆分脚注的可能性,这通常是不可取的,但有时是唯一的选择,特别是对于长脚注。


使脚注中的脚注标记不被上标的一种方法如下:

\usepackage{etoolbox}
\makeatletter
\newcommand{\sigur@makefnmark}{\@thefnmark}
\pretocmd{\@makefntext}{\let\@makefnmark\sigur@makefnmark}{}{}
\makeatother

我们修补了\@makefntext,以便使用不同的宏来排版脚注编号。当然,如果您有脚注到脚注,这将不起作用。更改 的含义是安全的,\@makefnmark因为\@makefntext是在组中展开的,因此此更改不会影响文本中脚注标记的排版。

相关内容