防止 biblatex 驱动程序中的发布者列表前有空格

防止 biblatex 驱动程序中的发布者列表前有空格

我正在尝试为书籍(以及其他东西)编写自定义驱动程序,但遇到了一个问题。

我当前的输出是:

HI Dutton, The Patent System and Inventive Activity During the Industrial Revolution 1750-1852( Manchester University Press, 1984)
                                                                                              ^^

预期输出为:

HI Dutton, The Patent System and Inventive Activity During the Industrial Revolution 1750-1852 (Manchester University Press, 1984)
                                                                                              ^^

我看不出代码中是什么让空格出现在括号后,尽管我是 biblatex 的新手,所以我可能指定了错误的东西。

我当前的代码:

% Publishing information
\renewbibmacro*{publisher+edition+date}{%
  (\printlist{publisher}%
  \setunit*{\addcomma\space}%
  \printfield{edition}%
  \setunit*{\addcomma\space}%
  \usebibmacro{date})%
  \newunit}


\DeclareBibliographyDriver{book}{%
  \usebibmacro{bibindex}%
  \usebibmacro{author/editor}%
  \setunit{\addcomma\space}\newblock%
  \usebibmacro{maintitle+title}%
  \setunit{\addspace}\newblock%
  \usebibmacro{publisher+edition+date}}

这是基于现有代码的,我仍然不完全理解。

我知道会插入一个空格,但是和\setunit{\addcomma\space}之间有什么区别?\addspace\space

它到底起什么\newblock作用?手册上没有完全说明。

我应该如何书写常数(例如())?

答案1

您不想在 bibmacro 中“硬编码”括号。请参阅手册的 § 4.11.7.2(我的版本当前为 2.5):对于您要实现的目标,这是必读内容。您的 bibmacro 的简单实现将是:

% Publishing information
\renewbibmacro*{publisher+edition+date}{%
  \printtext[parens]{%        <-- added
  \printlist{publisher}%
  \setunit*{\addcomma\space}%
  \printfield{edition}%
  \setunit*{\addcomma\space}%
  \usebibmacro{date}%
  }%                          <-- added
  \newunit}

结果应为:“(出版商、版本、日期)”。

\space不是biblatex命令。尝试更改行

  \setunit*{\addcomma\space}%

  \setunit*{\addcomma\space\space\space}%

  \setunit*{\addcomma\space\addspace\addspace}%

在实践中观察差异。

其他人会解释得\newblock更好,但请将您的参考书目条目视为由离散的“块”组成,其中\newblock标记了每个块之间的分界线 --- 这对于biblatex能够如此巧妙地跟踪标点符号是必要的。关于这一点,请参阅 § 4.11.7。

相关内容