我研究过这个问题,但没有找到正确的解决方案。我有一个没有作者的在线资源,因此使用 APA 样式,biblatex 会生成:(“文章标题”2009},没有逗号。但该样式要求在标题和年份之间有一个逗号。我想我需要类似这样的内容:
\AtBeginBibliography{%
\renewcommand*{\nonameyeardelim}{\addcomma\space}}
但它不起作用。
Here is a minimal example:
\documentclass[man,]{apa6}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[backend=biber,style=apa,natbib=true]{biblatex}
\usepackage{float}
\usepackage{graphicx}
\addbibresource{example.bib}
\DeclareLanguageMapping{american}{american-apa}
%\AtBeginDocument{\renewcommand\nonameyeardelim}{\addcomma\space}
%\AtBeginDocument{\renewcommand*{\nonameyeardelim}{\addcomma\space}}
\AtBeginBibliography{%
\renewcommand*{\nonameyeardelim}{\addcomma\space}}
\title{Title}
\shorttitle{Short Title}
\author{Tom }
\affiliation{University of Ignorance}
\date{May 28, 2017}
\abstract{This paper is meant to illustrate a problem I have with Latex
}
\keywords{ignorance}
\begin{document}
\maketitle
\section{Introduction}
I want to cite this \citep{vicodin}.
\printbibliography[heading=bibnumbered]
\end{document}
最小的 bib 文件(example.bib)将是这样的:
@Online{vicodin,
title = {Life Without Vicodin?},
year = {2009},
date = {2009-07-02},
url = {http://nymag.com/news/intelligencer/topic/57770/},
}
注意:当我重现上面最小示例中的错误时,我注意到参考文献在最后的参考文献列表中正确出现,但在内联引用中仍然没有逗号。
答案1
如果你想用逗号来表示所有内容,
\renewcommand*{\nonameyeardelim}{\addcomma\space}
就够了。你不需要钩子\AtBeginBibliography
。
但实际上这里并不需要biblatex-apa
使用的引用宏\nameyeardelim
,它被设置\addcomma\space
为apa.cbx
。
不过,您这里的问题有所不同。
由于美国标点符号和标题结尾的问号,您没有看到逗号。
对于american
(美式英语)biblatex
用法\uspunctuation
,这涉及将标点符号移到引号内。所以你有
“无忧无虑”一般是指“没有烦恼,没有忧虑”。
而不是(英国风格/“逻辑”标点符号)
“Carefree”一般意为“没有烦恼、没有忧虑”。
这也是这里的情况。逗号移到了引号内。而不是(英国)
“没有维柯丁的生活?”,2009年
你会(美国)
*“没有维柯丁的生活?”,2009 年
但双标点符号是不可接受的,引号胜出(它更重要),所以你会得到
“没有维柯丁的生活?” 2009
尝试在标题中删除问号并检查输出。
如果你不想使用美国标点符号,请发出
\DefineBibliographyExtras{american}{\stdpunctuation}