我需要引用一部没有已知日期的古代作品,使用 natbib 和作者年份引用。我发现最好的建议是使用“nd”(无日期)作为出版年份来写引用,但将其放入 bibtex 文件中会呈现一个没有句号的丑陋引用:
(Author nd)
当我想要的是:
(Author n.d.)
将其括在花括号中(“{nd}”)似乎对内联引用没有帮助(尽管它在参考书目中有效)。
我如何强制 BibTex 在带有标点符号的内嵌引用中呈现日期?
示例 .bib
@book{aristotle,
Author = {Aristotle},
Booktitle = {Works of Aristotle},
Title = {Categoriae},
Year = {{n.d.}}}
示例 LaTeX
\documentclass{article}
\usepackage[authoryear]{natbib}
\bibliographystyle{apalike}
\begin{document}
Lorem ipsum dolor sit amet \citep{aristotle}, consectetur adipiscing elit.
\bibliography{file.bib}
\end{document}
(丑陋、不正确的)输出
Lorem ipsum dolor (Aristotle, nd) sit amet.
REFERENCES
Aristotle (n.d.). Categoriae.
答案1
calc.label
中的函数apalike.bst
负责这个:它删除所有非字母数字字符并保留最后最多四个剩余的字符。
如果你复制apalike.bst
到myapalike.bst
第 896-912 行中定义的函数并将其更改为
FUNCTION {calc.label}
{ type$ "book" =
type$ "inbook" =
or
'author.editor.key.label
{ type$ "proceedings" =
'editor.key.label % apalike ignores organization
'author.key.label % for labeling and sorting
if$
}
if$
", " % these three lines are
* % for apalike, which
year field.or.null #-1 #4 substring$ % uses all four digits
*
'label :=
}
那么就如你所愿\bibliographystyle{myapalike}
接受year={n.d.}
:它毕竟是由四个字符组成的!
更改内容只是删除字符串purify$
。我不能说这是否会对其他条目产生不利影响;但是,只要您只有 years 或n.d.
,一切都会顺利。