BibLaTeX - 使用新字段作为标签名称

BibLaTeX - 使用新字段作为标签名称

我想使用非标准类型的管辖权和一个名为 officialvolume 的可选字段。

如果设置,此字段应该用于脚注中的引用。管辖项目不必出现在参考书目中。

新文件的声明可以在我的朱拉文件:

\DeclareDatamodelFields[type=field, datatype=literal, label=true]{officialvolume}
\DeclareDatamodelEntryfields{officialvolume}

我尝试使用 DeclareLabelname 通过 officialvalue 在我的最小.tex

\documentclass[]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}

\usepackage[backend=biber,%
    autocite=footnote,%
    bibstyle=ext-authortitle,%
    citestyle=ext-authortitle,%
    datamodel=myjura,%
]{biblatex}

\DeclareLabelname[jurisdiction]{%
    \field{officialvolume}%
    \field{shortauthor}%
    \field{author}%
    \field{shorteditor}%
    \field{editor}%
    \field{translator}%
}

\addbibresource{bibfile.bib}

\begin{document}
Cite\autocite{BGH1.Strafsenat.03.05.1960}
\end{document}

以下是相应的书目文件

@jurisdiction{BGH1.Strafsenat.03.05.1960,
 author = {{BGH 1. Strafsenat}},
 officialvolume = {Editor},
 date = {1960-05-03},
 title = {Wehrstrafrecht},
 pages = {269--279},
 volume = {14}
}

运行 biber(至少运行一次 latex 之后)没有出现任何错误,但出现以下警告:“警告 - 标签名称候选‘officialvolume’不是名称字段 - 跳过”

引文本应为“编辑[...]”,但读出来却是“BGH 1. Strafsenat[...]”。

我究竟做错了什么?

答案1

biblatexBiber 警告并不总是有用。但这次它确实很准确:Biber 期望您labelname在 中选择的\DeclareLabelname是姓名字段。

如果officialvolume是类似名称的字段(即它通常包含人名),则将该字段的数据模型声明从 更改type=field, datatype=literaltype=list, datatype=name

例如(使用.dbx.bib文件内联创建以filecontents使文档自包含)

\documentclass[ngerman]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}

\begin{filecontents}{myjura.dbx}
\DeclareDatamodelFields[type=list, datatype=name, label=true]{officialvolume}
\DeclareDatamodelEntryfields{officialvolume}
\end{filecontents}

\usepackage[backend=biber,
  style=ext-authortitle,
  autocite=footnote,
  datamodel=myjura,
]{biblatex}

\DeclareLabelname[jurisdiction]{%
  \field{officialvolume}%
  \field{shortauthor}%
  \field{author}%
  \field{shorteditor}%
  \field{editor}%
  \field{translator}%
}

\begin{filecontents}{\jobname.bib}
@jurisdiction{BGH1.Strafsenat.03.05.1960,
  author         = {{BGH 1.~Strafsenat}},
  officialvolume = {Editor},
  date           = {1960-05-03},
  title          = {Wehrstrafrecht},
  pages          = {269-279},
  volume         = {14},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
Cite\autocite{BGH1.Strafsenat.03.05.1960}
\end{document}

国防法编辑。

如果officialvolume是一个无名称字段,则不能labelname在此处使用,而需要重写相关的引用 bibmacros 以@jurisdiction不同的方式处理条目。

相关内容