如何使用 authortitle-dw 和较小的字体在注释中获得正确的 \baselinskip

如何使用 authortitle-dw 和较小的字体在注释中获得正确的 \baselinskip

如果我更改参考书目中注释的字体大小,字体大小会改变,但基线跳过不会改变。我知道 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-dwfinentry\parDeclareFieldFormat

\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,因此如果字段libraryannotation都已定义,它现在也可以工作。

相关内容