我正在尝试为书籍(以及其他东西)编写自定义驱动程序,但遇到了一个问题。
我当前的输出是:
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。