
我希望 BibLaTeX 在文本中引用時不顯示任何名字或縮寫。但我想在參考書目中有完整的名字。據我所知,這可以透過 來實現giveninits=false
。但這個指令根本不影響引用風格。
我這樣設定 BibLaTeX:
\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[
backend=biber,
style=apa,
maxcitenames = 2,
mincitenames = 1,
uniquename = false,
uniquelist = false,
maxbibnames = 99,
apamaxprtauth=99,
giveninits=false
]{biblatex}
\DeclareLanguageMapping{english}{english-apa}
\usepackage{filecontents}
\begin{filecontents*}{test.bib}
@article{marquard1975,
author = {Donald W. Marquardt and Ronald D. Snee},
title = {Ridge Regression in Practice},
journal = {American Statistician},
volume = {29},
number = {1},
pages = {3-20},
year = {1975},
publisher = {Taylor & Francis},
}
}
\end{filecontents*}
\addbibresource{test.bib}
\begin{document}
\title{asdf}
\author{myself}
\date{\today}
\maketitle
TEST \cite{marquard1975}
\printbibliography
\end{document}
我得到的是(文本引用很好,參考書目不行)
測試 Marquardt 和 Snee,1975
參考
馬夸特,DW 和斯尼,RD (1975)。嶺回歸的實踐。美國統計學家,29(1),3-20。
我想得到什麼:
測試 Marquardt 和 Snee,1975
參考
唐納德·W·馬夸特和羅納德·D·斯尼 (1975)。嶺回歸的實踐。美國統計學家,29(1),3-20。
答案1
正如評論中所提到的,APA 風格要求將名字縮寫為縮寫,並且僅將全名添加在(方括號)中,以防縮寫不明確。biblatex-apa
盡可能落實這項要求。由於這非常棘手,因此正常選項giveninits
無法按預期使用biblatex-apa
.這類似於(max|min)(bib|cite)?names
選項無法按預期工作的情況。
您必須重新定義兩個名稱 bibmacros 才能取得全名,一個用於按given-family
順序排列的名稱,另一個用於family-given
.原始定義可以在 中找到apa.bbx
,我們只刪除了 \ifthenelse{\value{uniquename}>1}
測試並確保使用\mkbibnamegiven{#2}
而不是列印完整的給定名稱\mkbibnamegiven{#3}
。
\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[
backend=biber,
style=apa,
uniquename = false,
uniquelist = false,
apamaxprtauth=99,
giveninits=false,
]{biblatex}
% 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}}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@article{marquard1975,
author = {Donald W. Marquardt and Ronald D. Snee},
title = {Ridge Regression in Practice},
journal = {American Statistician},
volume = {29},
number = {1},
pages = {3-20},
year = {1975},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\begin{document}
TEST \cite{marquard1975}
\printbibliography
\end{document}
請注意,&
inpublisher = {Taylor & Francis},
應轉義為\&
。這裡沒有錯誤,因為biblatex
沒有打印spublisher
的字段@article
,但最好記住&
正確對待。