我想使用非标准类型的管辖权和一个名为 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
biblatex
Biber 警告并不总是有用。但这次它确实很准确:Biber 期望您labelname
在 中选择的\DeclareLabelname
是姓名字段。
如果officialvolume
是类似名称的字段(即它通常包含人名),则将该字段的数据模型声明从 更改type=field, datatype=literal
为type=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
不同的方式处理条目。