![biblatex-apa 定制](https://linux22.com/image/437434/biblatex-apa%20%E5%AE%9A%E5%88%B6.png)
我在网上搜索了答案,但没找到。我正在尝试自定义biblatex-apa
标准样式,以便获得以下内容。
使用时\parencite
我想得到
(Schmidt 和 Wesson,2015 年)
和不是
(Schmidt 和 Wesson,2015 年)
在参考书目中,我希望列出以下名字
Schmidt, S., Wesson, R.,2015。21 世纪早期的社会运动。
不是
Schmidt, S., & Wesson, R. (2015).21 世纪早期的社会运动。
相关代码总结如下main.tex
\documentclass[12pt,twoside]{report}
\usepackage[style=apa]{biblatex}
\addbibresource{references.bib}
\begin{document}
I refer to \parencite{schmidt2015early} to highlight my point.
\printbibliography
\end{document}
并且references.bib
我有:
@article{schmidt2015early,
title={Early 21st century movements in society},
author={Schmidt, S and Wesson, R},
year={2015}
}
有人知道我怎样才能获得期望的结果吗?
答案1
biblatex-apa
专门为尽可能紧密地实现 APA 引用和参考/参考书目样式的所有要求而编写biblatex
。该样式不应定制,编写时也没有考虑可定制性。其唯一目的是生成符合 APA 的输出。
这并不意味着完全无法进行自定义,而是说即使是看似微不足道的事情也可能很棘手。如果您想编写自己的样式,我强烈建议您以标准样式之一为基础。标准样式应该是可自定义的,并且应该是进一步修改的基础。
无论如何,以下是您可以采取的措施biblatex-apa
来获得您想要的东西。它并不像使用标准biblatex
样式那样简单authoryear
(想想nameyeardelim
、biblatex-ext
的biblabeldate
格式、不需要finalnamedelim:apa:family-given
等等)。
\documentclass[12pt]{article}
\usepackage[style=apa]{biblatex}
\DeclareDelimFormat*{finalnamedelim}{%
\ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
\addspace\bibstring{and}\space}
\DeclareDelimAlias[bib]{finalnamedelim}{multinamedelim}
\DeclareDelimAlias[bib]{finalnamedelim:apa:family-given}{finalnamedelim}
\DeclareFieldFormat{apadate}{%
\ifboolexpr{ test {\ifdatecirca} or test {\ifdateuncertain} }
{\mkbibbrackets{#1}}
{#1}}
\renewbibmacro*{author/editor}{%
\ifthenelse{\ifnameundef{author}\AND\ifnameundef{groupauthor}}
{\ifnameundef{editor}
{\usebibmacro{title}%
% need to clear all title fields so we don't get them again later
\clearfield{title}%
\clearfield{subtitle}%
\clearfield{titleaddon}}
{\usebibmacro{editorinauthpos}}}
{\usebibmacro{author}}%
\setunit{\addcomma\space}\newblock%
\usebibmacro{labelyear+extradate}}
\addbibresource{biblatex-examples.bib}
\begin{document}
Lorem \parencite{sigfridsson}
\printbibliography
\end{document}