我的 bib 文件中有此条目,这是一本书,但缺少位置、出版商和年份信息。我的格式如下:
@Book{ARBED1965,
author = {{Aciéries Réunies de Burbach-Eich-Dudelange}},
shortauthor = {{ARBED}},
title = {Un demi-siècle d'histoire industrielle 1911--1964},
date = {1965~},
date+an = {=attributed},
}
我确实使用了 biblatex 提供的“大约”日期以及相应的datecirca
选项。但这导致我的参考书目中出现了一个不想要的大写“Ca。”。
布尔巴赫-艾希-迪德朗日的法国化工企业。 1911 年至 1964 年的半个世纪工业史。大约1965 年。
在 bibdriver 上下文中缺少出版商和位置信息的情况下,很容易理解为什么会发生这种情况book
。我们还可以争论@book
在这种情况下是否是正确的条目类型。我们还可以争论在这种情况下“circa”是否应该大写(我碰巧不喜欢它)。不过我想解决一个简单的技术方面,即:在任何情况下,避免特定本地化字符串自动大写的正确方法是什么?
我唯一能想到的就是\midsentence
,例如:
\DefineBibliographyStrings{english}{%
circa = {\midsentence{}ca\adddot},
}
这真的是该案的最佳替代方案吗?
一位 MWE 表示:
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Book{ARBED1965,
author = {{Aciéries Réunies de Burbach-Eich-Dudelange}},
shortauthor = {{ARBED}},
title = {Un demi-siècle d'histoire industrielle 1911--1964},
date = {1965~},
date+an = {=attributed},
}
\end{filecontents}
\usepackage[style=authortitle, datecirca=true]{biblatex}
\addbibresource{\jobname.bib}
\DeclareFieldFormat{date}{%
\ifdateannotation{date}{attributed}{\mkbibbrackets{#1}}{#1}}
\DefineBibliographyStrings{english}{%
circa = {\midsentence{}ca\adddot},
}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
答案1
biblatex
从参考书目字符串中抓取第一个“字符”,并在必要时将其大写。在此示例中,biblatex
处于句首模式(因为标题后面有句号),因此它将尝试将其大写circa
。
避免特定字符串大写的标准技巧是在开头添加一个空组
\DefineBibliographyStrings{english}{%
circa = {{}ca\adddot},
}
german.lbx
例如,可以在(370 升)
nodate = {{ohne\space Datum}{{}o\adddot D\adddot}},
实际上,所有不产生输出并能被biblatex
的大写处理程序抓取的东西都可以工作,所以你也可以尝试
circa = {\relax ca\adddot},
或(根据您的建议)
circa = {\midsentence ca\adddot},
具体来说\midsentence
,它本身并没有什么用,因为在读取字符串时,已经做出了是否大写的决定。因此,它\midsentence
没有帮助,因为它改变了大写跟踪器的状态,它只是因为它被大写宏所吞噬。这可以通过测试来确认
circa = {\bibsentence ca\adddot},
或者,您可以添加\midsentence
到date
格式中,这将产生影响
\DeclareFieldFormat{date}{%
\midsentence
\ifdateannotation{date}{attributed}{\mkbibbrackets{#1}}{#1}}