![biblatex. 如果使用两个花括号,则抑制 \bibstring](https://linux22.com/image/290710/biblatex.%20%E5%A6%82%E6%9E%9C%E4%BD%BF%E7%94%A8%E4%B8%A4%E4%B8%AA%E8%8A%B1%E6%8B%AC%E5%8F%B7%EF%BC%8C%E5%88%99%E6%8A%91%E5%88%B6%20%5Cbibstring.png)
我有一个mvreference
带有该字段的volumes
。其格式由 biblatex 声明为
\DeclareFieldFormat{volumes}{#1~\bibstring{volumes}}
。
我怎样才能强制 biblatex不是\bibstring
如果条目被包裹在两个花括号,就像 MWE 的情况一样,但如果它只被包裹在一?
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{filecontents}
\usepackage[ngerman]{babel}
\usepackage[style=verbose-ibid,backend=biber]{biblatex}
\begin{filecontents*}{mybib.bib}
@mvreference{mylexA,
shorthand = {mylex},
title = {Lexikon in mehreren Bänden},
volumes = {{Lexikon in 20 Bänden in zwei Teilen. Zwei Supplement-Bde. mit Anh.}},
editor = {Some One},
location = {München},
year = {1997-2001}
}
\end{filecontents*}
\addbibresource{mybib.bib}
\begin{document}
Welcome.
\nocite{*}
\printbibliography
\end{document}
答案1
据我所知,没有内置函数可以检查字段中的双花括号。但这几乎没有必要。通常,询问字段是否包含数字或文本更有趣。
您的示例似乎也存在这种情况。通常,该字段仅包含属于 a (或)volumes
的卷数(请参阅第 23 页maintitle
title
biblatex
文档以及 中的示例biblatex-examples.bib
)。在这些情况下,添加volumes
bibstring 似乎很自然。有时可能需要添加一些解释性文字,如“22 卷百科全书分为两部分”,那么 bibstring 当然volumes
看起来不合适。
因此,检查字段是否volumes
包含数字或文本似乎更为自然。如果它包含文本,则添加 bibstring 几乎不合适volumes
。即使它可能适合“由 22 个“卷”组成的百科全书”(通过 by 添加“卷” \bibstring{volumes}
)的情况,如果您将语言设置更改为德语并得到“由 22 个 Bände 组成的百科全书”,它看起来会非常奇怪。
请参阅有关该领域的建议edition
(第 16 页)biblatex
文档,以及中的示例biblatex-examples.bib
):
印刷出版物的版本。这必须是整数,而不是序数。不要说
edition={First}
或edition={1st}
但是edition={1}
。书目样式会将其转换为语言相关的序数。也可以将版本作为文字字符串给出,例如“第三版,修订版和扩充版”。
所以我们可以通过以下方式来volumes
实现edition
\DeclareFieldFormat{volumes}{%
\ifnumerals{#1}
{#1~\bibstring{volumes}}
{#1}}