我使用 natbib 在文本中进行引用,有时这些引用以句号结尾。当句号对应于句子结尾时,很容易插入重复的句号。MWE:
\documentclass{article}
\usepackage[authoryear]{natbib}
\begin{document}
I want to cite \cite{Doe14}, but if I put the citation at the end of a sentence, I get an extra period, as in \citeauthor{Doe14}.
\begin{thebibliography}{1}
\bibitem[{{Doe et~al.}(2014)}]{Doe14}
{Doe}, J. and collaborators 2014, Nature, 123, 321
\end{thebibliography}
\end{document}
现在我当然可以删除句子末尾的句号,但每次我重读时,我都认为我漏了一个句号,然后重新添加。是否可以创建一个“可选”标点符号,仅当前面的字符不是相同的标点符号时才存在?
答案1
您似乎正在“手动”输入参考书目(除非您这样做只是为了创建您的 MWE,当然这bibtex
是可能的(因为您已经标记了您的问题)。
无论如何,尽管我讨厌用“使用一些你不使用的参考书目包”来回答问题,但我还是要坚持说,这是一个很好的例子biblatex
,它完全符合你的想法。毫无疑问,这表明,如果你愿意,你可以自己重新创建它;但代码非常复杂,至少可以这么说:如果你有几天的空闲时间可以修改一下,可以看看biblatex2.sty
。关于的 (许多) 有用之处之一biblatex
就是它在这种情况下对标点符号的智能处理。
以下是 MWE:
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{Doe14,
author = "Doe, J. and others",
title = "Title",
journaltitle = "Nature",
volume = {123},
pages = {321},
date = {2014},
}
\end{filecontents}
\usepackage[natbib,style=authoryear]{biblatex}
\addbibresource{\jobname.bib}
\begin{document}
I want to cite \cite{Doe14}, and if I put the citation at the end of a sentence,
I \emph{don't} get an extra period, as in \citeauthor{Doe14}. As you can see,
we get only one full stop. But we still get it if we don't add the period
ourselves: \citeauthor{Doe14} (which is correct: because the dot at the end
of ``et al.'') is there because it's an abbreviation).
\printbibliography
\end{document}
这将产生以下内容:
当然,此处的实际书目输出与您的情况不同(它是“标准”biblatex
样式authoryear
);但如果您不喜欢,还有其他作者/年份样式可供选择。authordate
特别是,请查看 APA 样式和带有选项的芝加哥样式:它们是非常稳定的作者/年份样式。
亚太心理学协会
芝加哥(authordate
)(文中给出“Doe et al. 2014”)
natbib
(我在这里添加了选项,biblatex
因为您正在使用natbib
,但实际上它是不必要的,可能不推荐:biblatex
有自己的一组命令。正如您所见,该natbib
选项仅产生表面相似的界面:实际输出由控制biblatex
。)