我想根据脚注标记的数字位数调整脚注的左缩进。因此,一位数字的脚注与左边距对齐单个 \parindent 的长度(设置为 4 毫米):而两位或三位数字的脚注(我们假设不会有更多数字)与左侧对齐 8 毫米(= 2*\parindent)。我设法使用以下代码做到这一点:
\documentclass[11pt]{article}
\setlength{\parindent}{4mm}
\usepackage{fancyvrb,footnote}
\VerbatimFootnotes% I created the code in a file which used this command, but for some reason it doesn't work without it.
\usepackage{ifthen}
\makeatletter
\renewcommand\@makefntext[1]{%
\ifthenelse{\value{footnote}>9}{%
\parindent 12mm%
\noindent
\@hangfrom{%
\hb@xt@ 8mm{\@thefnmark}#1%
}%
}{%
\parindent 8mm%
\noindent
\@hangfrom{%
\hb@xt@ 4mm{\@thefnmark}#1%
}%
}%
}
\makeatother
\usepackage{blindtext}
\begin{document}
A word, phrase, or sentence that needs to be commented on.\footnote{\blindtext}
\setcounter{footnote}{15}
\blindtext\footnote{\blindtext\par\blindtext}
\end{document}
然后我遇到了第二个问题:在包含一位和两位脚注的页面上,我不希望出现这种差异。在那里,双缩进/边距也应该用于一位脚注标记。我认为让缩进取决于脚注 10 是否出现在页面上就足够了。有没有办法添加这样的条件?
答案1
更新
最初使用的答案\thepage
不可靠。我已更新此答案以\oddpage@page
从ifoddpage
包中使用。另请参阅这个问题。
以下是尝试执行此操作的方法。它使用aux
文件,需要编译至少两次,有时需要编译三次(取决于分页符)以确保缩进正确。
我还使用了该footmisc
包,它提供了一个内置界面,可以按照您的需要悬挂脚注。
它会将脚注缩进的宽度写入文件aux
中,在每个脚注处跳过特定页面。然后使用每页上的最后一个(这将是最大跳过)来设置第二遍的缩进。
平均能量损失
\documentclass{article}
\usepackage{lipsum}
\usepackage{etoolbox}
\usepackage{ifoddpage}
\usepackage[hang]{footmisc}
\renewcommand{\hangfootparskip}{0mm}
\renewcommand{\hangfootparindent}{4mm}
\makeatletter
\patchcmd{\@makefntext}
{\bgroup
\setbox\@tempboxa\hbox{%
\ifdim\footnotemargin>0pt
\hb@xt@\footnotemargin{\@makefnmark\hss}%
\else
\@makefnmark
\fi
}}
{\bgroup
\checkoddpage
\ifcslength{@\thepage @max@footnotemargin}
{\footnotemargin \csname @\oddpage@page @max@footnotemargin\endcsname}
{}%
\immediate\write\@auxout{%
\noexpand\expandafter\noexpand\newskip
\noexpand\csname @\oddpage@page @max@footnotemargin\endcsname}%
\ifnumgreater{\value{footnote}}{9}
{\immediate\write\@auxout{%
\global\noexpand\csname @\oddpage@page @max@footnotemargin\endcsname 8mm}}
{\immediate\write\@auxout{%
\global\noexpand\csname @\oddpage@page @max@footnotemargin\endcsname 4mm}}%
% remove superscript footnote mark
\setbox\@tempboxa\hbox{%
\ifdim\footnotemargin>0pt
\hb@xt@\footnotemargin{\hbox{\normalfont \@thefnmark}\hss}%
\else
\hbox{\normalfont \@thefnmark}%
\fi
}}
{}
{}
\makeatother
\begin{document}
\null\vfill
Filler text.\footnote{\lipsum*[2]}
Filler text.\footnote{\lipsum*[2]\par\lipsum*[2]}
\clearpage
\null\vfill
Filler text.\footnote{\lipsum*[2]}
\setcounter{footnote}{9}
Filler text.\footnote{\lipsum*[2]\par\lipsum*[2]}
\end{document}