未注明日期的引文,例如(Aristotle nd)

未注明日期的引文,例如(Aristotle nd)

我需要引用一部没有已知日期的古代作品,使用 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.bstmyapalike.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.,一切都会顺利。

相关内容