使用 biblatex 自定义 apalike-german 风格,并在参考书目中添加简短形式的文档(德语:Kurzbeleg)

使用 biblatex 自定义 apalike-german 风格,并在参考书目中添加简短形式的文档(德语:Kurzbeleg)

我正在尝试在 Biblatex 中自定义 apalike-german 样式。BibTex 的 apalike 样式很好,但因为无法更改一些小东西(et al. 而不是 ua),所以我改用了 Biblatex。

我对 Biblatex 进行了style=authoryear很多改进,但它仍然存在一些问题。style=authoryear左侧参考书目前的括号中没有简短的文档。

我想要的是左侧带有作者年份的括号: apalike-德语

以下是示例参考:

@misc{EuropaischeKommission.2011,
 author = {{Europ{\"a}ische Kommission}},
 year = {2011},
 title = {Was ist ein „Nanomaterial“? Europäische Kommission legt erstmals gemeinsame Definition vor},
 url = {https://ec.europa.eu/commission/presscorner/detail/de/IP_11_1202},
 urldate = {03/13/2021}
} 

@article{Siddique.2017,
 author = {Siddique, Abu Raihan Mohammad and Mahmud, Shohel and {van Heyst}, Bill},
 year = {2017},
 title = {A review of the state of the science on wearable thermoelectric power generators (TEGs) and their existing challenges},
 pages = {730--744},
 volume = {73},
 issn = {13640321},
 journal = {Renewable and Sustainable Energy Reviews},
 doi = {10.1016/j.rser.2017.01.177}
}

@article{Muller.2018,
 author = {M{\"u}ller, Eckhard and Stiewe, Christian and Ebling, Dirk},
 title = {Anwendungspotential thermoelektrischer Generatoren zur Abw{\"a}rmenutzung in station{\"a}ren Systemen},
 year = {2018},
 pages = {1--11},
 journal = {Gefahrstoffe-Reinhaltung der Luft}
}

这些是我正在使用的软件包:

\usepackage{hyperref}
\usepackage[utf8]{inputenc} 
\usepackage[ngerman]{babel}
\usepackage[backend=biber, citestyle=authoryear-icomp, bibstyle=authoryear, sorting=nyt, hyperref=true, uniquename=false,
dashed=false, isbn=false, maxcitenames=2, maxbibnames=3, minnames=1 
]{biblatex} 
\addbibresource{bib/references.bib}
\DefineBibliographyStrings{ngerman}{andothers={et\addabbrvspace al\adddot},}
\makeatletter
   \patchcmd{\blx@citeprint}
           {\blx@loopcode}
           {\blx@imc@bibhyperlink{#1}{\blx@loopcode}}
           {}{}
\makeatother
\setlength\bibitemsep{\medskipamount} 
\renewcommand{\labelnamepunct}{\addcolon\addspace}
\DeclareFieldFormat*{title}{#1}
\DeclareFieldFormat{url}{{In:}\addspace\url{#1}}
\newcommand*{\bibmultinamedelim}{\addsemicolon\space}
\newcommand*{\bibfinalnamedelim}{\addsemicolon\space} 
\AtBeginBibliography{
  \let\multinamedelim\bibmultinamedelim
  \let\finalnamedelim\bibfinalnamedelim
  }
\renewcommand*{\labelnamepunct}{\addcolon\space} 
\DeclareNameAlias{sortname}{last-first}

\begin{document}
Lorem \autocite{EuropaischeKommission.2011} \autocite{Siddique.2017} \autocite{Muller.2018}

\printbibliography[heading=bibintoc, title={Literaturverzeichnis}]
\end{document}

我怎样才能将 biblatex-bibstyle 更改为 -bibstyle apalike-german

答案1

屏幕截图中显示的输出带有括号中条目左侧的引文标签,这是由于对apalike参考书目样式的误用。该输出不是预期的结果。事实上,如果您环顾 LaTeX 世界之外的参考书目和引文样式,您会发现很少有(如果有的话 - 我目前不知道)作者年份样式要求在参考书目中重复引用标签。

\bibliographystyle{apalike}\usepackage{apalike}应与序言中的一起使用。请参阅以下注释apalike.bst

% This style should be used with the `apalike' LaTeX style (apalike.sty).
% \cite's come out like "(Jones, 1986)" in the text but there are no labels
% in the bibliography, and something like "(1986)" comes out immediately
% after the author.  Author (and editor) names appear as last name, comma,
% initials.  A `year' field is required for every entry, and so is either
% an author (or in some cases, an editor) field or a key field.

因此,

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}

\begin{filecontents}{\jobname.bib}
@book{elk,
  author    = {Anne Elk},
  title     = {A Theory on Brontosauruses},
  year      = {1972},
  publisher = {Monthy \& Co.},
  location  = {London},
}
\end{filecontents}

\begin{document}
Lorem \cite{elk}

\bibliographystyle{apalike}
\bibliography{\jobname}
\end{document}

产生不正确的

[Elk, 1972] Elk, A. (1972)。《雷龙理论》。Monthy & Co.

输出,而\usepackage{apalike}在序言中,你会得到预期的

Elk, A. (1972)。《雷龙理论》。Monthy & Co.

natbib在很大程度上向后兼容apalike(有些极端情况会出现怪异的行为),因此如果您改为加载,也可以获得正确的输出\usepackage{natbib}。(只是不要同时加载\usepackage{apalike}\usepackage{natbib}。)

仔细查看屏幕截图中的输出,您会发现括号中的作者年份信息是多余的。作者和年份无论如何都清晰且突出地显示在参考书目条目的开头,因此即使没有额外的标签,作者年份引用标签也很容易与参考书目中的条目匹配。


如果你坚持在参考书目中使用作者年份引用标签biblatex,则可以使用biblatex-ext样式免责声明:我是作者,也是他们的introcite特征(参见biblatex-ext文档,第 0.13 版第 15-21 页)。

第 19 页上的“示例定制introcite=plain”非常接近您的需求,但您也可以货比三家寻找其他选择。

以下是文档中显示的内容。请注意,我简化了您的biblatex选项

  • 一般不需要选择单独的bibstylecitestylecitestyle=authoryear-icomp, bibstyle=authoryear,相当于style=authoryear-icomp(但我们biblatex-ext无论如何都会使用替换),
  • 样式authoryear将自动选择sorting=nyt,,因此没有必要手动指定,
  • 该设置hyperref=true,通常不会比默认设置更好:当且仅当加载hyperref=auto,时,这两个选项才会打开链接。唯一的区别是,如果未加载,将产生警告。\usepackage{hyperref}hyperref=true,\usepackage{hyperref}

您的其他一些代码也可以进行现代化改造:对于上下文敏感的分隔符,multinamedelim您应该使用\DeclareDelimFormat。然后,您可以使用可选参数仅在参考书目中更改它们的行为。不需要\AtBeginBibliography\bibmultinamedelim\labelnamepunct已被弃用,取而代之的是上下文敏感的。五年多前,nametitledelim名称格式在 v3.3 上last-first被重命名为(family-givenBiblatex 3.3 名称格式)。

(我删除了该\DeclareFieldFormat{url}{{Zugriffsdatum:}\addspace\url{#1}}行只是因为我不明白其重要性:显然这\url不是 URL 访问日期。)

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage[
  backend=biber,
  style=ext-authoryear-icomp,
  uniquename=false,
  maxcitenames=2, maxbibnames=3, minnames=1,
  introcite=plain,
  dashed=false,
  isbn=false,
]{biblatex}

\usepackage{hyperref}

\setlength\bibitemsep{\medskipamount}

\DeclareFieldFormat{bbx@introcite}{\mkbibbrackets{#1}}
\DeclareDelimFormat[bbx@introcite]{nameyeardelim}{\addcomma\space}
\UndeclareInnerCiteDelims{bbx@introcite}
\renewcommand*{\introcitepunct}{\quad}

\DefineBibliographyStrings{ngerman}{andothers={et\addabbrvspace al\adddot},}

\DeclareNameAlias{sortname}{family-given}

\DeclareDelimFormat[bib]{multinamedelim}{\addsemicolon\space}
\DeclareDelimAlias[bib]{finalnamedelim}{multinamedelim}

\DeclareDelimFormat[bib]{nametitledelim}{\addcolon\space}

\DeclareFieldFormat*{title}{#1}

\addbibresource{biblatex-examples.bib}

\begin{document}
Lorem \autocite{sigfridsson}

\printbibliography
\end{document}

[Sigfridsson und Ryde, 1998] Sigfridsson, Emma; Ryde, Ulf (1998): 比较从电势和电势矩推导原子电荷的方法。在:《计算化学杂志》19.4,第 377–395 页。doi:10.1002/(SICI)1096-987X(199803)19:4<377::AID-JCC1>3.0.CO;2-P。

相关内容