调整 biblatex 的 authoryear 样式,mkbibparens 插入奇怪的空格

调整 biblatex 的 authoryear 样式,mkbibparens 插入奇怪的空格

我目前正在自定义 authoryear biblatex 样式,但似乎还有一些事情我搞不清楚:我希望打印出编辑者列表,然后在括号中显示“eds”。因此我创建了一个自定义宏\usebibmacro{editors+parens}

\newbibmacro*{editors+parens}{%
  \ifnameundef{editor}
  {}
  {\newunit\newblock%
   \printnames{editor}%
   \setunit{\addspace}%
   \mkbibparens{\bibstring{editors}}}}

我调整了驱动程序以incollection使用该宏:

\DeclareBibliographyDriver{incollection}{%
  ...
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{in:}%
  \usebibmacro{editors+parens}
  \setunit{\addspace}\newblock
  \usebibmacro{maintitle+booktitle}%
  \newunit\newblock
  \printfield{edition}%
  ...
  \usebibmacro{finentry}}

但最终的结果是这样的:

在此处输入图片描述

因此,一方面mkbibparens似乎插入了一个额外的空格,其次,编辑器和第一个左括号之间缺少一个空格。

有人能帮我解决这个问题吗?最后应该是这样的<List of Editors><space>(eds.)<space><Title>

祝一切顺利,David Becher

答案1

biblatex有一个非常奇特的机制来正确使用标点符号。由于这种机制,您几乎无法在宏中直接使用标点符号命令。标点符号只能通过\setunit\printunit和 朋友\DeclareFieldFormat或 来添加\printtext。另请参阅 §4.11.7使用标点符号追踪器biblatex文档,尤其是第 4.11.7.2 条常见错误,第 243-244 页。

在你的情况下

\DeclareFieldFormat{editortype}{\mkbibparens{#1}}

应该足够了。如果您使用标准宏editor+others而不是您的editors+parens.

相关内容