我想添加一个 biblatex 输入字段,如果激活,则会打印引用内容的方式。因此,在参考书目中我会有类似这样的内容:
所以我们的想法是,设立一个专门的入口区域。”引用次数“ 例如:
@COMMENTARY{beck.ok,
MAINTITLE = {Beck'scher Online-Kommentar BGB},
SHORTTITLE = {},
EDITOR = {Bamberger, Heinz Georg and Roth, Herbert and Hau, Wolfgang and Poseck, Roman},
SHORTHAND = {BeckOK},
VOLUME = {},
TITLE = {},
YEAR = {2018},
EDITION = {45},
HOWCITED = {1},
}
此字段将充当开关。如果输入为“1”,则该字段将首先打印以下文本:
“(也被称为:”
然后它要么获取shorthand
条目并打印它,然后打印“/贝尔贝特)”
所以最后我会留下类似“(zitiert als: shorthand
/贝尔贝特)”
请参阅附图。
有什么想法可以实现吗?提前谢谢!
答案1
对我来说,定义一个输入选项而不是定义一个具有一次性值的字段似乎更自然。
定义条目选项 后,您可以使用或 短文本howcited
启用“howcited”功能。下面的选项也是按类型和全局实现的,因此您可以为所有类型的条目或一次为所有条目启用“howcited”,而无需在文件中设置选项。由于宏在执行任何操作之前会检查 ,因此您可能可以根据每个类型设置选项:options = {howcited=true},
options = {howcited},
.bib
@commentary
.bib
shorthand
\ExecuteBibliographyOptions[commentary]{howcited}
这节省了您必须向文件中的每个条目添加选项的工作.bib
。
bibmacro 方面的事情相当简单,实际上有点像shorthandintro
中的宏biblatex.def
。在这里我将宏挂接到 中finentry
,但由于您似乎无论如何都有完全自定义的样式,因此您可能会找到更优雅的地方。
\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=authoryear, backend=biber]{biblatex}
\newtoggle{tnbcbx@howcited}
\DeclareEntryOption[boolean]{howcited}[true]{\settoggle{tnbcbx@howcited}{#1}}
\DeclareBibliographyOption[boolean]{howcited}[true]{\settoggle{tnbcbx@howcited}{#1}}
\DeclareTypeOption[boolean]{howcited}[true]{\settoggle{tnbcbx@howcited}{#1}}
\newbibmacro{howcited}{%
\iftoggle{tnbcbx@howcited}
{\iffieldundef{shorthand}
{}
{\setunit{\addspace}%
\printtext[parens]{%
\bibstring{citedas}%
\setunit{\addcolon\space}%
\printfield{shorthand}%
\setunit{\addslash}%
\bibstring[\emph]{bearbeiter}}}}
{}}
\renewbibmacro{finentry}{\usebibmacro{howcited}\finentry}
\NewBibliographyString{bearbeiter}
\DefineBibliographyStrings{ngerman}{
citedas = {zitiert als},
bearbeiter = {Bearbeiter},
}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@collection{beck.ok,
maintitle = {Beck'scher Online-Kommentar BGB},
editor = {Bamberger, Heinz Georg and Roth, Herbert and Hau, Wolfgang and Poseck, Roman},
shorthand = {BeckOK},
date = {2018},
edition = {45},
options = {howcited},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}
\cite{sigfridsson,beck.ok}
\printbibliography
\end{document}