我正在尝试获得与 bibtex 等效的东西\usepackage{apalike}
,但能够使用parencite
等等。
因此,我尝试使用\usepackage[style=apa]{biblatex}
,但现在每个引用都包含 & 符号而不是and
。
对于作者年份,定义\finalnamedelim
作品(在 biblatex 中的引文和参考书目中使用与号 &), 像这样:
\newcommand*{\finalnamedelim}{%
\ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
\addspace\bibstring{and}\space}
以及参考书目(使用 BibLaTeX 将参考书目和括号引文中的“and”替换为“&”) 和
\AtBeginBibliography{%
\renewcommand*{\finalnamedelim}{%
\ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
\addspace\&\space}%
}
不幸的是,对于 apa 风格我无法做到这一点。
对 apa 唯一有效的方法是使用\DeclareDelimFormat
(https://tex.stackexchange.com/a/590692/85628)就像在这个mwe中:
\documentclass{article}
\usepackage[style=apa]{biblatex}
\DeclareDelimFormat[bib,parencite]{finalnamedelim}{%
\ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
\addspace\bibstring{and}\space}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{A01,
author = {Author, A. and Buthor, B. and Cuthor, C.},
year = {2001},
title = {Alpha},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Some text \autocite{A01}.
\printbibliography
\end{document}
不幸的是,这也只适用于文本本身,而不适用于最后的参考书目。此外,这会导致超过 2 个名称被完整地写出(而不是被替换et al.
)。
将声明更改为
\DeclareDelimFormat[bibliography,parencite]{finalnamedelim}{%
\ifnumgreater{\value{liststop}}{1}%
\addspace\bibstring{and}\space}
解决了 3 位作者的问题,但在参考书目中仍然使用 & 符号而不是and
。
此外,参考文献的格式也不相同(Alcocer, J. P. S. and Bergel, A. (2015). Tracking down performance variation against source code evolution. In Proceedings of the 11th Symposium on Dynamic Languages, DLS 2015, pages 129–139, New York, NY, USA. ACM.
apalike 和Alcocer, J. P. S., & Bergel, A. (2015). Tracking down performance variation against source code evolution, In Proceedings of the 11th symposium on dynamic languages, Pittsburgh, PA, USA, ACM.
APA)。
有没有什么解决方案,可以让 biblatex 和 biber 的行为完全一样apalike
?
答案1
应当指出的是apalike
只是,嗯......喜欢APA。该样式非常古老(它是 BibTeX 基本样式之一),其灵感来自/模仿了现已过时的 APA 样式版本。biblatex-apa
style=apa
另一方面, 尽可能接近地实现了当前版本的 APA 样式(第 7 版)。biblatex
因此结果可能确实非常不同。
biblatex-apa
一般来说,我建议仅在需要真正的 APA 样式时才使用。特别是biblatex-apa
它不是为轻松定制而构建的。它是为了尽可能接近 APA 样式而构建的。
如果您想要大致“像 APA”(即作者年份格式),我建议您选择biblatex
标准格式authoryear
并对其进行修改,以便您喜欢输出。是的,输出将不同于apalike
(根本没有apalike
格式biblatex
),但您可以更改您绝对不喜欢的内容(开始biblatex
自定义的开始是自定义 biblatex 样式的指南,但您会发现这个网站上有很多关于各种修改的问题 - 如果您遇到困难,您可以提出一个新问题),也许会接受一些您不太认同的事情。
\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=authoryear]{biblatex}
\addbibresource{biblatex-examples.bib}
\begin{document}
Lorem \autocite[380]{sigfridsson}
ipsum \autocite{nussbaum}
dolor \autocite{worman}
sit \autocite{companion}
\printbibliography
\end{document}
答案2
试试这个代码。我添加了一些示例来biblatex-examples.bib
检查 APA 样式。
编译为pdflatex
+ biber
+ pdflatex
+ pdflatex
。
此答案假定您正在使用实现第 7 版 APA 样式的 biblatex-apa 最新版本(至少从 2019-11-23 开始为 v9.0)。
检查\listfiles
之前添加的内容\documentclass{article}
并查看日志文件中已加载文件的列表。
\documentclass{article}
\usepackage[
backend=biber,
sorting=nyt,
citestyle=authoryear,
bibstyle=apa,
maxbibnames=99, %<<<<<
apamaxprtauth=99,%<<<<<
]{biblatex}
%% From https://tex.stackexchange.com/a/534084/161015 <<<<<<<<<<<<<<<<<<<<<<<<<
\DeclareDelimFormat[bib]{finalnamedelim:apa:family-given}{% added <<<<<<<<<<<<<<<<<<<<<<
\ifthenelse{\value{listcount}>\maxprtauth}
{}
{\ifthenelse{\ifcurrentname{groupauthor}\AND%
\value{liststop}=2}
{\addspace\bibstring{and}\space}
{\finalandcomma\addspace\bibstring{and}\space}}}
%\usepackage{filecontents} % no needed <<<<<<<<<
\begin{filecontents}[overwrite]{\jobname.bib}
@misc{A01,
author = {Author, A. and Buthor, B. and Cuthor, C.},
year = {2001},
title = {Alpha},
}
@book{vizedom,
title = {The Rites of Passage},
year = 1960,
author = {Vizedom, Monika B. and Caffee, Gabrielle L. and Coulton, Paul},
language = {english},
publisher = {University of Chicago Press},
}
@online{baez,
author = {Baez, John C. and Lauda, Aaron D.} ,
title = {Higher-Dimensional Algebra {V}: 2-Groups},
date = {2004-10-27},
version = 3,
langid = {english},
langidopts = {variant=american},
eprinttype = {arxiv},
eprint = {math/0307200v3},
}
@report{chiu,
author = {Chiu, Willy W. and Chow, We Min and Chu, Fuman},
title = {A Hybrid Hierarchical Model of a {Multiple Virtual Storage}
({MVS}) Operating System},
type = {resreport},
institution = {IBM},
date = 1978,
number = {RC-6947},
langid = {english},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Some text \autocite{A01}
\autocite{vizedom}
\cite{chiu}
\textcite{baez}
\printbibliography
\end{document}