使用命令
\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
是在组中展开的,因此此更改不会影响文本中脚注标记的排版。