我试图根据 Benjamins 的风格重新创建一种非常独特的风格,并进行了一些更改。Benjamins 的风格与 APA 风格很接近,但有一些细微的差别,而且这个项目的主管在多年的编辑过程中也学会了其他一些特质。我希望使用 APA 风格,并“即时”进行这些修改。
默认情况下,biblatex 包似乎会将引用的作者作为“family-given”,将所有后续作者作为“given-family”。不幸的是,当我使用 APA 样式时,所有作者都变为“family-given”。我不知道如何阻止这种情况发生。有人能帮我吗?
简化代码:
\documentclass{article}
\usepackage{colortbl}
\usepackage{xcolor}
\usepackage{multicol}
\usepackage{multirow}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{covington}
\usepackage{fancyref}
\usepackage[
style=apa,
dashed=false
]{biblatex}
\if@pdfa
\usepackage[a-3b]{pdfx}
\fi
\renewcommand*{\nameyeardelim}{\addcomma\space}
\renewcommand*{\postnotedelim}{\addcolon}
\DefineBibliographyStrings{english}{%
page = {},
pages = {},
}
%RENEW APA
% argument meanings from apa.bbx
% #1 = family name
% #2 = given name
% #3 = given name (initials)
% #4 = name prefix
% #5 = name suffix
\renewbibmacro*{name:apa:family-given}[5]{%
\ifuseprefix
{\usebibmacro{name:delim:apa:family-given}{#4#1}%
\usebibmacro{name:hook}{#4#1}%
\ifdefvoid{#4}{}{%
\mkbibnameprefix{#4}\isdot%
\ifprefchar{}{\bibnamedelimc}}%
\mkbibnamefamily{#1}\isdot%
\ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{#2}\isdot}%
\ifdefvoid{#5}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#5}\isdot}}
{\usebibmacro{name:delim:apa:family-given}{#1}%
\usebibmacro{name:hook}{#1}%
\mkbibnamefamily{#1}\isdot
\ifboolexpe{%
test {\ifdefvoid{#2}}
and
test {\ifdefvoid{#4}}}
{}
{\revsdnamepunct}%
\ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{#2}\isdot}%
\ifdefvoid{#4}{}{%
\bibnamedelimc\mkbibnameprefix{#4}%
\ifprefchar{}{\bibnamedelimc}}%
\ifdefvoid{#5}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#5}\isdot}}}
\renewbibmacro*{name:apa:given-family}[5]{%
\usebibmacro{name:delim}{#2#4#1#5}%
\usebibmacro{name:hook}{#2#4#1#5}%
\ifdefvoid{#2}{}{\mkbibnamegiven{#2}\isdot%
\bibnamedelimd}%
\ifdefvoid{#4}{}{%
\mkbibnameprefix{#4}\isdot
\ifprefchar{}{\bibnamedelimc}}%
\mkbibnamefamily{#1}\isdot%
\ifdefvoid{#5}{}{\bibnamedelimd\mkbibnamesuffix{#5}\isdot}}
\hypersetup{
colorlinks=true,
linkcolor=blue,
filecolor=magenta,
urlcolor=cyan,
pdftitle={Test DocumOverleaf Examplent},
pdfpagemode=FullScreen
}
\title{Testing}
\date{2023}
\addbibresource{References.bib}
\begin{document}
%\include{Test.tex}
\maketitle
\section{Introduction}
\nocite{*} %Uncomment if you have a bibliography with work read but not cited
\renewcommand\bibname{References}
\begin{refcontext}[sorting=nty]
\printbibliography[heading=bibintoc]
\end{refcontext}
\bigskip
\end{document}
包含 APA 样式:
Epps, Patience L., Webster, Anthony K., & Woodbury, Anthony C. (2017). A holistic
humanities of speaking: Franz Boas and the continuing centrality of texts.
International Journal of American Linguistics, 83 (1), 41–78. https://doi.org/
10.1086/689547
未包含 APA 样式:
[50] Patience L. Epps, Anthony K. Webster, and Anthony C. Woodbury.
“A Holistic Humanities of Speaking: Franz Boas and the Continuing
Centrality of Texts”. In: International Journal of American Linguistics
83.1 (2017), 41–78. doi: 10.1086/689547. eprint: https://doi.org/
10.1086/689547. url: https://doi.org/10.1086/689547.
我想要第一个的样式,但只有列表中第一个名字的顺序应该改变,而不是全部改变。换句话说:
Epps, Patience L., Anthony K. Webster, & Anthony C. Woodbury (2017). A holistic
humanities of speaking: Franz Boas and the continuing centrality of texts.
International Journal of American Linguistics, 83 (1), 41–78. https://doi.org/
10.1086/689547.
答案1
正如评论中提到的,biblatex-apa
它实现了 APA 样式的复杂要求。编写时并未考虑可定制性。即使是看起来很小且“应该很容易”的更改也很难实现。因此,最好将自定义样式建立在biblatex
标准样式之上,而不是biblatex-apa
。
如果您只需要更改姓名格式和冒号,则以下方法可能可行。(像这样更改姓名格式可能会禁用 APA 样式中涉及姓名的一些较模糊的功能,但您可能可以忍受。无论如何,请仔细检查输出。)
\documentclass{article}
\usepackage[
style=apa,
dashed=false
]{biblatex}
\usepackage{hyperref}
\DeclareNameAlias{apaauthor}{family-given/given-family}
\DeclareNameAlias{apanames}{given-family}
\DeclareDelimFormat[bib]{nameyeardelim}{\addspace}
\renewcommand*{\nameyeardelim}{\addcomma\space}
\renewcommand*{\postnotedelim}{\addcolon\space}
\DeclareFieldFormat{postnote}{\mknormrange{#1}}
\addbibresource{biblatex-examples.bib}
\begin{document}
\autocite{sigfridsson,aksin}
\autocite[380]{sigfridsson}
\printbibliography[heading=bibintoc]
\end{document}