打印标题附加内容后的年份

打印标题附加内容后的年份

以下 MWE 生成如下图所示的参考书目条目:

\documentclass{scrartcl}
\usepackage{xeCJK}
\usepackage[style=authoryear-ibid]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{literature.bib}
@book{qingshi1998,
    date = {1998},
    title = {Qingshi gao},
    titleaddon = {清史稿},
    location = {Beijing},
    publisher = {Zhonghua}
}
\end{filecontents}
\bibliography{literature}
\begin{document}
\nocite{*}
\printbibliography
\end{document}

在此处输入图片描述

年份打印在标题之后和标题插件之前。这里的问题似乎是没有指定作者:当我添加虚构的作者时,日期正确地打印在作者之后和标题之前。

根据 biblatex 手册,类型条目需要作者book。但是,我尝试了其他不需要作者的条目类型,得到了相同的结果。

我怎样才能将标题和标题插件放在单独的数据字段中,省略作者,但仍在标题插件后打印年份?

答案1

如果字段author(或定义为标签的任何其他字段)为空,则标准样式biblatex使用另一个字段,如label参考书目中所示。如果样式authoryear为 ,shorttitle则为 ,如果其也为空,则只需title

title如果您以使用和的方式重新定义宏titleaddon,您将获得想要的结果。作为分隔符,我选择了一个点,但您可以使用 biblatexs 分隔符命令进行调整。我不知道您是否使用该shorttitle字段。如果没有,这样就可以了。如果您使用它,但不想将其打印为标签,则必须编辑特定条件。

这是您的改编版 MWE:

\documentclass{scrartcl}
\usepackage{xeCJK}
\usepackage[style=authoryear-ibid]{biblatex}

\begin{filecontents*}[overwrite]{literature.bib}
@book{qingshi1998,
    date = {1998},
    title = {Qingshi gao},
    titleaddon = {清史稿},
    location = {Beijing},
    publisher = {Zhonghua}
}

@book{qingshi1999,
    date = {1999},
    title = {Qingshi gao},
    shorttitle = {Gao},
    titleaddon = {清史稿},
    location = {Beijing},
    publisher = {Zhonghua}
}
\end{filecontents*}
\bibliography{literature}
\renewbibmacro*{labeltitle}{%
  \iffieldundef{label}
    {\iffieldundef{shorttitle}
       {\iffieldundef{titleaddon}{%
            \printfield{title}%
            \clearfield{title}%
            }{%
            \printfield{title}\addperiod\space\printfield[title]{titleaddon}%
            \clearfield{title}\clearfield{titleaddon}}
        }
       {\printfield[title]{shorttitle}
        }}
    {\printfield{label}}}
%\DeclareFieldFormat{title}{#1} Uncomment if you want title NOT in italics
\begin{document}
\nocite{*}
\printbibliography
\end{document}

还有更多可能性来调整字段的使用,就像label您的参考书目一样。例如,对于其他entrtypes等等。对于您发布的内容,此解决方案效果很好。如果您需要更复杂的东西,您可以优化您的问题。

编辑:我稍微更新了代码。现在,它显示了您的常规示例和一个带有 的示例shorttitle(我想,在这种情况下,中文中没有任何意义;对此表示歉意)。此外,如果titleaddon用作标签的一部分,则现在将其格式化为 以title保持其连贯性。您可以通过 重新定义它来关闭强调标题\DeclareFieldFormat。要测试它,只需取消注释 praeambel 底部的特定命令,然后查看中文字体如何改变其形状。

相关内容