我使用 natbib 包(带有默认的 authoryear 选项)和 apalike 书目样式来编写参考书目。
我想引用以下 bibtex 条目:
@article{Lake2010/11,
Author = {Lake, David A.},
Journal = {International Security},
Number = {3},
Pages = {7-52},
Title = {Two Cheers for Bargaining Theory: Assessing Rationalist Explanations of the Iraq War},
Volume = {35},
Year = {2010/11}}
当我使用时,\citep{Lake2010/11}
我会在我的参考书目中获得正确的输出
Lake, David A. (2010/11),为讨价还价理论欢呼:评估对伊拉克战争的理性主义解释,国际安全,35(3),7-52。
但是,文中的引用标注是错误的:应为 (Lake, 1011),而不是 (Lake, 2010/11)
问题似乎是年份截断所以我改变了以下行
年份字段.or.null purify$ #-1 #4 子字符串$
到
年份字段.or.null purify$ #-1 #14 子字符串$
现在我在文本中得到以下输出:(Lake,201011)——缺少斜线(/)。
为什么?
答案1
假设字段中没有真正奇怪的字符year
,即,如果字段仅包含数字和偶尔出现的/
(“斜线”)字符,则只需更改行即可
year field.or.null purify$ #-1 #4 substring$
在文件apalike.bst
中
year field.or.null #-1 #14 substring$
实际上,你应该把这个改变变成复制文件apalike.bst
;不要直接编辑 TeX 发行版的原始文件。
主要变化是取消了 BibTeX 内置函数purify$
。(您可能已经猜到了,该函数purify$
会清除字段中的所有非数字字符。在本例中,这被证明是好事多磨。)
将文件myapalike.bst
(或您可能命名的文件)保存在主 tex 文件所在的目录中或 BibTeX 搜索的目录中。如果您选择第二种方法,请确保适当更新 TeX 发行版的文件名数据库。
这是完整 MWE 的结果。(请注意,您应该将“伊拉克战争”括在一对额外的花括号中,以防止 BibTeX 将字母“I”和“W”小写。)
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@article{Lake201011,
Author = {Lake, David A.},
Journal = {International Security},
Number = {3},
Pages = {7-52},
Title = {Two Cheers for Bargaining Theory: Assessing Rationalist Explanations of the {Iraq War}},
Volume = {35},
Year = {2010/11},
}
\end{filecontents*}
\usepackage{natbib}
\bibliographystyle{myapalike}
\begin{document}
\citep{Lake201011}
\bibliography{\jobname}
\end{document}