我正在尝试在 Biblatex 中自定义 apalike-german 样式。BibTex 的 apalike 样式很好,但因为无法更改一些小东西(et al. 而不是 ua),所以我改用了 Biblatex。
我对 Biblatex 进行了style=authoryear
很多改进,但它仍然存在一些问题。style=authoryear
左侧参考书目前的括号中没有简短的文档。
以下是示例参考:
@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}
产生不正确的
输出,而\usepackage{apalike}
在序言中,你会得到预期的
natbib
在很大程度上向后兼容apalike
(有些极端情况会出现怪异的行为),因此如果您改为加载,也可以获得正确的输出\usepackage{natbib}
。(只是不要同时加载\usepackage{apalike}
和\usepackage{natbib}
。)
仔细查看屏幕截图中的输出,您会发现括号中的作者年份信息是多余的。作者和年份无论如何都清晰且突出地显示在参考书目条目的开头,因此即使没有额外的标签,作者年份引用标签也很容易与参考书目中的条目匹配。
如果你坚持在参考书目中使用作者年份引用标签biblatex
,则可以使用biblatex-ext
样式免责声明:我是作者,也是他们的introcite
特征(参见biblatex-ext
文档,第 0.13 版第 15-21 页)。
第 19 页上的“示例定制introcite=plain
”非常接近您的需求,但您也可以货比三家寻找其他选择。
以下是文档中显示的内容。请注意,我简化了您的biblatex
选项
- 一般不需要选择单独的
bibstyle
和citestyle
:citestyle=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-given
Biblatex 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}