仅列出高于第 1 期且位于出版商之后的版本

仅列出高于第 1 期且位于出版商之后的版本

我正在尝试根据需求定制 biblatex。目前,我正在研究 -class book

现状基于以下 MWE。正如我在标题中指出的那样,我希望它像这样:

史密斯,J.(2012):
《随机书名》,第 3 版,Springer,柏林。

或者如果该版本是第一版:

史密斯,J.(2012):
《随机书名》,施普林格出版社,柏林。

我尝试\newbibmacro按照建议使用该命令,但我基本上只是对整个事情进行一些测试和测试。到目前为止,我得到了以下信息:

\renewbibmacro*{publisher+location}{%
\iflistundef{publisher}
{\setunit*{\addspace}}
{\setunit*{\addcomma\space}}
\printlist{publisher}
\setunit*{\addcomma\space}
\printlist{location}
\newunit}

我觉得我可以为这个宏添加一些内容,但这样做毫无用处。它反而“毁掉了”我迄今为止取得的成果。

请单击此处获取 MWE。

答案1

我感觉你正试图对标准authoryear风格进行相当大的改变。我能否集中讨论一下你提出的最直接的问题,即出版商和位置点。

你基本上走在正确的轨道上。相关的宏实际上被调用了publisher+location+date(尽管,出于现在不重要的原因,它最终并没有以样式打印日期authoryear。你的重新定义基本上可以工作,但是(因为你已经重新定义了\newunitpunct)你可以让它更简单

\renewbibmacro*{publisher+location+date}{%
\newunit
\printlist{publisher}%
\newunit
\printlist{location}%
\newunit}

就你的就这一点而言,版本在驱动程序中处理得相当早——它通常跟在标题后面。我怀疑这真的是你想要的(在一般情况下,这意味着版本后面是出版商和位置)。如果你想移动它,以便它总是在出版商之前立即处理,你需要重写驱动程序。但请找一个有合理数据的例子,打印版本错误的在尝试之前,因为我怀疑实际上没有问题。


更新

至于如果版本为“1”,则不打印版本,我认为可以通过以下重新定义字段格式来实现。请注意,仅有的“捕获”(但不打印)精确的“1”:将打印“1st”或“First”。

\DeclareFieldFormat{edition}{%
  \ifstrequal{#1}{1}
     {}
     {\ifinteger{#1}
       {\mkbibordedition{#1}~\bibstring{edition}}
       {#1\isdot}}}

.bib但请再考虑一下!当然,如果是第一版,通常不会在文件中包括版本信息。但如果这样的信息包括,为什么不应该打印出来?如果您/您的用户希望引用特定作品的第一版和第二版,会发生什么情况?

相关内容