我使用 biblatex-chicago(authordate 格式)和 bib 文件中的 entrysubtype={classical} 引用了一些古典作家的作品。现在调用 \autocite 会隐藏年份并添加相关作品的标题。
对于使用传统 entrysubtype 的资料,我希望在第一个引用中使用完整标题,然后使用“shorttitle”中给出的标题。目前,在我看来,一旦 bib-record 中包含了短标题,调用 \autocite 时就会忽略完整标题。任何后续使用 \autocite 都会完全删除标题,只打印页码/章节号。
是否有机会让 \autocite 在第一次引用中使用完整标题,但在后续引用中除了页码/章节号外还打印简称?
这是我的 MWE:
\documentclass[12pt, a4paper]{article}
\usepackage[authordate,strict,backend=bibtex8,citetracker=true,babel=other,%
bibencoding=inputenc,sorting=nyt]{biblatex-chicago}
\usepackage{filecontents}
\begin{filecontents}{bibsample.bib}
@BOOK{Plato2003,
title = {The Republic},
publisher = {Penguin},
year = {2003},
author = {Plato},
address = {London},
nameb = {Lee, Desmond},
entrysubtype = {classical},
shorttitle = {Rep.},
}
\end{filecontents}
\addbibresource{bibsample.bib}
\begin{document}
\autocite[123d]{Plato2003}
\autocite[344a]{Plato2003}
\printbibliography
\end{document}
目前发生的情况是:
现在的第一个例子\autocite[123a]{Plato2003}
是(柏拉图代表123a),然后\autocite[345a]{{Plato2003}
删除作者和标题,得到 (345a)。
我想要得到的:
第一个\autocite
产生(柏拉图共和國123a)(=使用完整标题),而后续\autocite
将使用不带作者的简称和章节编号:(代表123b)
如果 bib-record 没有 shorttitle 也没有 entrysubtype={classical},那么我希望 \autocite 按照默认方式运行:首先是 (作者年份,页码),然后是 (页码)。
任何帮助是极大的赞赏..!
答案1
为了获得第一个引用的所需输出,您可以将字段的内容复制title
到中labeltitle
。
在第二个引用中,您需要抑制 ibidem 引用标签和(在非 ibdiem 标签中)名称labelname
列表。biblatex-chicago
前者通过发出 来执行\blx@ibidreset
。后者可以通过清除 来完成labelname
。
以下钩子将所有这些组合在一起。请注意,它会在每个引用命令时执行,而不仅仅是\autocite
。
\makeatletter
\AtEveryCitekey{%
\ifboolexpr{ test {\iffieldequalstr{entrysubtype}{classical}}
and not test {\iffieldundef{shorttitle}} }
{\ifciteseen
{\blx@ibidreset\clearname{labelname}}
{\savefield{title}{\cbxtitle}\restorefield{labeltitle}{\cbxtitle}}}
{}}
\makeatother
只需将其添加到您的序言中。它应该适用于最新biblatex-chicago
版本,该版本需要 biber 来实现作者日期样式。