我正在使用以下命令在我的 scrreprt 文档中生成参考书目
\usepackage[style=authoryear,backend=biber,sortlocale=de_DE,sorting=nty,maxbibnames=99,maxcitenames=1]{biblatex} %maxnames=bib&cite, maxbibname=bib, maxcitenames=cite, (default=3)
我被要求按照第一作者或出版商的姓氏字母顺序打印参考书目。这或多或少是哈佛风格。
我不能使用style=alphabetic
,因为输出如下
相反,我需要以下内容
[Lui et al. 2017] J. Lui, H. Shen und L. Yu. ...
我怎样才能实现这个目标?
快速编辑:我忘了至少提到引用样式必须authoryear
用于文本中的引用
答案1
你可以用我的biblatex-ext
样式包(适用于 MikTeX 和 TeX live 2018 及以上版本)。基于在参考书目条目开头添加 [AuthorYear] 块,使用 biblatex 和 biber 创建具有固定缩进和作者年份标签的参考书目以及许多相关的问题和答案这些风格实现了一种introcite
选择。
你introcite=plain
可以得到类似的输出在参考书目条目开头添加 [AuthorYear] 块
\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=ext-authoryear, backend=biber, introcite=plain, dashed=false]{biblatex}
\DeclareFieldFormat{bbx@introcite}{\mkbibbold{\mkbibbrackets{#1}}}
\renewcommand*{\introcitepunct}{\addspace}
\addbibresource{biblatex-examples.bib}
\begin{document}
\cite{sigfridsson,worman,geer,knuth:ct:a,knuth:ct:b}
\printbibliography
\end{document}
你introcite=label
可以得到更像列表的输出,类似于使用 biblatex 和 biber 创建具有固定缩进和作者年份标签的参考书目
\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=ext-authoryear, backend=biber, introcite=label, dashed=false]{biblatex}
\DeclareFieldFormat{bbx@introcite}{\mkbibbrackets{#1}}
\setlength{\introcitewidth}{8\biblabelsep}
\setlength{\introcitesep}{.5\biblabelsep}
\addbibresource{biblatex-examples.bib}
\begin{document}
\cite{sigfridsson,worman,geer,knuth:ct:a,knuth:ct:b}
\printbibliography
\end{document}
\introcitewidth
可以使用和来控制列表缩进和“标签”与引用正文之间的最小间距\introcitesep
。太长的标签会将引用移至下一行。
针对 v0.4 中的名称更改进行了编辑biblatex-ext
。
答案2
以下 MWE 展示了如何使用\DeclareLabelalphaTemplate
来实现所需的字母书目样式标签的定制。
\documentclass{scrreprt}
\usepackage[style=authoryear,backend=biber,sortlocale=de_DE,sorting=nty,maxbibnames=99,maxcitenames=1,style=alphabetic]{biblatex}
\addbibresource{\jobname.bib}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{key,
author = {Author, A. and Name, B.},
year = {2001},
title = {A long title to show the indentation of the second line},
publisher = {Publisher},
}
\end{filecontents}
\renewcommand{\labelalphaothers}{\addspace et al.}
\DeclareLabelalphaTemplate[]{\labelelement{\field[names=1]{author}}
\labelelement{\literal{\addspace}}
\labelelement{\field{year}}
}
\begin{document}
\cite{key}
\printbibliography
\end{document}