如果我更改参考书目中注释的字体大小,字体大小会改变,但基线跳过不会改变。我知道 TeX 使用段落中的最后一个字体来计算基线跳过,但我不知道如何解决这个问题。
从这张图片中可以明显看出,注释设置的跳跃太大。
\documentclass{article}
\usepackage[%
backend=biber,
style=authortitle-dw,
annotation=true,
]{biblatex}
\addbibresource{biblatex-examples.bib}
% extreme values make the problem obvious
\renewcommand{\annotationfont}{\scriptsize}
\usepackage[textwidth=3cm]{geometry}
\begin{document}
\nocite{bertram}
\printbibliography
\end{document}
我尝试使用 with 设置\parbox
注释
\DeclareFieldFormat{annotation}{%
\par\vspace{-0.7\baselineskip}
\parbox{\textwidth}{\annotationfont #1\addperiod}.
}
但这会导致出现一个我无法删除的额外句号。此外,在我看来,这似乎是一个糟糕的黑客行为……
(我将\annotationfont
下图中的额外句号设为红色,以使该句号可见。)
答案1
在bibmacro 的 (重新) 定义中有一个多余的\finentry
命令。如果您删除该命令并将 放入命令中,它就会起作用。我已相应地修改了您的示例:biblatex-dw
finentry
\par
DeclareFieldFormat
\documentclass{article}
\usepackage[%
backend=biber,
style=authortitle-dw,
annotation=true,
]{biblatex}
\addbibresource{biblatex-examples.bib}
% extreme values make the problem obvious
\renewcommand{\annotationfont}{\scriptsize}
\usepackage[textwidth=3cm]{geometry}
\DeclareFieldFormat{annotation}{%
\annotationfont #1\addperiod\par}
\renewbibmacro*{finentry}{%
\ifboolexpr{
test {\iffieldundef{annotation}}
and
test {\iffieldundef{library}}
}
{\finentry}
{\iffieldundef{library}
{}
{\ifbool{bbx:library}
{\setunit{\addperiod\par}
\printfield{library}}
{}}%
\iffieldundef{annotation}
{}
{\ifbool{bbx:annotation}
{\iffieldundef{library}
{\setunit{\addperiod\par}}
{}
\printfield{annotation}}
{}}}}
\begin{document}
\cite{bertram,springer}
\printbibliography
\end{document}
我将在 biblatex-dw 的未来版本中尽力使其更加强大,以便只需简单地重新定义宏\annotationfont
即可达到预期的效果。
编辑:
我改进了 bibmacro 的重新定义finentry
,因此如果字段library
和annotation
都已定义,它现在也可以工作。