![APA Biblatex 参考样式问题](https://linux22.com/image/464777/APA%20Biblatex%20%E5%8F%82%E8%80%83%E6%A0%B7%E5%BC%8F%E9%97%AE%E9%A2%98.png)
我对 APA Biblatex 参考样式有一些疑问,当前输出是:
这是文内引用 (Badenhorst, Plug, Pelser, & Van Vollenhoven 2002: 10)
第二个参考显示仅等。(Badenhorst等人。 2002年:10)
参考
Badenhorst, S., Plug, I., Pelser, A., & Van Vollenhoven, A. (2002).南非战争期间,克鲁格国家公园最北端的英国军事前哨斯坦尼克马的动物群分析。德兰士瓦博物馆年鉴《细胞与分子生物学》, 39 (10): 57–63。
文中引用是正确的,但我的参考文献列表存在一些问题,应该像下面的参考文献列表图像一样。
- 年份不能放在括号内。
- 文章名称应在当前输出中显示正确的格式,只有第一个单词是大写的“Faunal”,但在 bib 文件中,名称有多个大写字母。
- 期刊名称后不应有 (,) 逗号
我的 MWE 是:
\documentclass{article}
\usepackage[a4paper,total={160mm,240mm},left=25mm,top=20mm]{geometry}
\usepackage{filecontents}
\begin{filecontents*}{refs.bib}
@article{A01,
title = {Faunal analysis from Steinaecker’s Horse, the northernmost British military outpost in the Kruger National Park during the South African War},
volume = {39},
number= {10},
pages = {57--63},
journaltitle = {Annals of the Transvaal Museum},
author = {Badenhorst, Shaw and Plug, Ina and Pelser, A.J. and Van Vollenhoven, A.C.},
date = {2002},
}
\end{filecontents*}
\usepackage[english]{babel}
\usepackage[style=apa,backend=biber]{biblatex}
% 2nd author in bibliography also display Surname, name
\DeclareNameAlias{sortname}{last-first}
% preceed last author with &
\DeclareDelimFormat{finalnamedelim}{\addspace\&\space}
% Change Journal Volume to normal from italics.
\DeclareFieldFormat[article,periodical]{volume}{\apanum{#1}}
\DeclareFieldFormat[article,inbook,incollection,inproceedings,patent,thesis,unpublished]{title}{#1}
% Impliment et al option for more than 2 authors
\newcommand*{\mkandothers}{\mkbibemph}
\renewbibmacro*{name:andothers}{%
\ifboolexpr{
test {\ifnumequal{\value{listcount}}{\value{liststop}}}
and
test \ifmorenames
}
{\ifnumgreater{\value{liststop}}{1}
{\finalandcomma}
{}%
\andothersdelim\bibstring[\mkandothers]{andothers}}
{}}
% Display In text reference as (Autor Year:Page)
\renewcommand*{\nameyeardelim}{\space}
\renewcommand*{\postnotedelim}{\addcolon\addspace}
\DeclareFieldFormat{postnote}{#1}
\DeclareFieldFormat{multipostnote}{#1}
% Add colon (:) after Journal edition in stead of comma (,)
\renewcommand*{\bibpagespunct}{\addcolon\space}
\usepackage{xpatch}
\xpretobibmacro{date+extrayear}{\addperiod\space}{}{}
\xapptobibmacro{date+extrayear}{\nopunct}{}{}
% Change the first occurence of 3 or more authors to display their surnames in text and from the 2nd occurence et al.
\makeatletter
\AtEveryCitekey{%
\ifciteseen
{}
{\defcounter{maxnames}{6}}%
}
\makeatother
\addbibresource{refs.bib}
\begin{document}
This is the in text reference \autocite[10]{A01}\\
Second reference display et al only. \autocite[10]{A01}\\
\xpatchbibmacro{date+extradate}{%
\printtext[parens]%
}{%
\setunit{\addperiod\space}%
\printtext%
}{}{}
\begingroup
\setlength{\bibhang}{0pt} % remove indentation
\setlength\bibitemsep{0.5\baselineskip} % Space between each reference entry
\printbibliography
\endgroup
\end{document}
期望的输出应该是
Badenhorst, S., Plug, I., Pelser, A., 和 Van Vollenhoven, A. 2002.对南非战争期间克鲁格国家公园最北端的英国军事前哨施泰纳克马的动物群进行分析。德兰士瓦博物馆年鉴39(10): 57–63。
谢谢
答案1
我不确定您要在 apa-style 中做出的所有修改,biblatex
但我对您的 MWE 做了一些修改,以实现您想要的两个更改。请注意,这biblatex-apa
并不意味着要进行大量定制。
\documentclass{article}
\usepackage[a4paper,total={160mm,240mm},left=25mm,top=20mm]{geometry}
\usepackage{filecontents}
\begin{filecontents*}{refs.bib}
@article{A01,
title = {Faunal analysis from Steinaecker’s Horse, the northernmost British military outpost in the Kruger National Park during the South African War},
volume = {39},
number= {10},
pages = {57--63},
journaltitle = {Annals of the Transvaal Museum},
author = {Badenhorst, Shaw and Plug, Ina and Pelser, A.J. and Van Vollenhoven, A.C.},
date = {2002},
}
\end{filecontents*}
\usepackage[english]{babel}
\usepackage[style=apa,backend=biber]{biblatex}
% 2nd author in bibliography also display Surname, name
\DeclareNameAlias{sortname}{last-first}
% preceed last author with &
\DeclareDelimFormat{finalnamedelim}{\addspace\&\space}
% Change Journal Volume to normal from italics.
\DeclareFieldFormat[article,periodical]{volume}{\apanum{#1}}
\DeclareFieldFormat[article,inbook,incollection,inproceedings,patent,thesis,unpublished]{title}{#1}
% Impliment et al option for more than 2 authors
\newcommand*{\mkandothers}{\mkbibemph}
\renewbibmacro*{name:andothers}{%
\ifboolexpr{
test {\ifnumequal{\value{listcount}}{\value{liststop}}}
and
test \ifmorenames
}
{\ifnumgreater{\value{liststop}}{1}
{\finalandcomma}
{}%
\andothersdelim\bibstring[\mkandothers]{andothers}}
{}}
% Display In text reference as (Autor Year:Page)
\renewcommand*{\nameyeardelim}{\space}
\renewcommand*{\postnotedelim}{\addcolon\addspace}
\DeclareFieldFormat{postnote}{#1}
\DeclareFieldFormat{multipostnote}{#1}
% Add colon (:) after Journal edition in stead of comma (,)
\renewcommand*{\bibpagespunct}{\addcolon\space}
\usepackage{xpatch}
\xpretobibmacro{date+extrayear}{\addperiod\space}{}{}
\xapptobibmacro{date+extrayear}{\nopunct}{}{}
% Change the first occurence of 3 or more authors to display their surnames in text and from the 2nd occurence et al.
\makeatletter
\AtEveryCitekey{%
\ifciteseen
{}
{\defcounter{maxnames}{6}}%
}
\makeatother
% Disable year parentheses.
\DeclareFieldFormat{apadate}{%
\ifboolexpr{ test {\ifdatecirca} or test {\ifdateuncertain} }
{\mkbibbrackets{#1}}
{#1}}
% Remove colon after journal name.
\renewbibmacro*{journal+issuetitle}{%
\usebibmacro{journal}%
\setunit*{\addspace}%
\printfield{volume}%
\printfield{number}%
\setunit{\addcomma\addspace}%
\printfield{eid}%
\newunit\newblock
\usebibmacro{issuename}%
\newunit}
\addbibresource{refs.bib}
\begin{document}
This is the in text reference \autocite[10]{A01}\\
Second reference display et al only. \autocite[10]{A01}\\
\begingroup
\setlength{\bibhang}{0pt} % remove indentation
\setlength\bibitemsep{0.5\baselineskip} % Space between each reference entry
\printbibliography
\endgroup
\end{document}