哈佛书目,不正确的字母常数

哈佛书目,不正确的字母常数

我正在尝试使用 bibtex 和软件包natbib为需要它的期刊制作哈佛风格的书目,但我必须使用的在线工具无法处理.bib它。因此,我剪切并粘贴了.bbl文件的内容,以替代书目的输入命令。这个过程运行一次非常顺利,但你必须执行两次,第二次,我收到错误:

********
./filename: Improper alphabetic constant
<to be read again>
                  \protect
l.7 blah\cite{paper1,paper2}
?
and typing h for help gives
A one-character control sequence belongs after a ` mark.
So I am essentially inserting \0 here.
******

现在,如果我按 q 进入批处理模式,我会得到我想要的 .pdf,但在线工具不允许我这样做,所以它只是失败了。我自己的系统重现了错误,所以这不是他们的工具的问题。我使用的是natbib8.31 和 TeXShop 3.62

测试文件:

\documentclass[12pt,a4paper]{article}

\usepackage{natbib} %harvard style

\begin{document}

blah\cite{paper1,paper2}

\bibliographystyle{agsm}
%\bibliography{testbib}

\begin{thebibliography}{xx}

\harvarditem{Auth}{{2001}{\em a}}{paper1}
Auth, P.~J.  \harvardyearleft {2001}{\em a}\harvardyearright , `{paper1}', {\em {Journal 1}} {\bf {11}}({5}),~{417--436}.

\harvarditem{Auth}{{2001}{\em b}}{paper2}
Auth, P.~J.  \harvardyearleft {2001}{\em b}\harvardyearright , `{paper2}', {\em {Journal 2}} {\bf
  {1}}({1}),~{3--67}.

\end{thebibliography}
\end{document}

答案1

natbib不喜欢年份的格式

\harvarditem{Auth}{{2001}{\em a}}{paper1}

手动将其更改为

\harvarditem{Auth}{2001a}{paper1}

或从 切换natbibharvard


在研究了 Mico 的答案中的 MWE 并将他的答案.bbl与您的答案进行比较之后,我不禁注意到您的答案比通常的.bib文件生成的答案中包含了更多的花括号。

我目前的假设是,您的.bib文件包含太多花括号。您是否像下面这样将字段分成两对

journal = {{Journal 1}},
volume  = {{1}},

\documentclass[12pt,a4paper]{article}
\usepackage{harvard} %harvard style

\begin{document}
blah\cite{paper1,paper2}

\begin{thebibliography}{xx}
\harvarditem{Auth}{{2001}{\em a}}{paper1}
Auth, P.~J.  \harvardyearleft {2001}{\em a}\harvardyearright , `{paper1}', {\em {Journal 1}} {\bf {11}}({5}),~{417--436}.

\harvarditem{Auth}{{2001}{\em b}}{paper2}
Auth, P.~J.  \harvardyearleft {2001}{\em b}\harvardyearright , `{paper2}', {\em {Journal 2}} {\bf
  {1}}({1}),~{3--67}.
\end{thebibliography}
\end{document}

引文内容为“blah(Auth 2001*a*, Auth 2001*b*)”,其中斜体为 *a* 和 *b*

或者

\documentclass[12pt,a4paper]{article}
\usepackage{natbib}

\begin{document}
blah\cite{paper1,paper2}

\begin{thebibliography}{xx}
\harvarditem{Auth}{2001{\em a}}{paper1}
Auth, P.~J.  \harvardyearleft {2001}{\em a}\harvardyearright , `{paper1}', {\em {Journal 1}} {\bf {11}}({5}),~{417--436}.

\harvarditem{Auth}{2001{\em b}}{paper2}
Auth, P.~J.  \harvardyearleft {2001}{\em b}\harvardyearright , `{paper2}', {\em {Journal 2}} {\bf
  {1}}({1}),~{3--67}.
\end{thebibliography}
\end{document}

引文内容为“blahAuth (2001*a*,*b*)”,其中 *a* 和 *b* 为斜体

答案2

首先,bbl 文件似乎有一些错误。我猜想这些错误是当有人(你?)手动对 bbl 文件的内容进行一些更改时出现的。(当然,这些错误似乎不是由 LaTeX 或natbib引文管理包生成的。)

例如,

\harvarditem{Auth}{{2001}{\em a}}{paper1}

是错误的。应该是

\harvarditem{Auth}{2001{\em a}}{paper1}

同样,你需要更换

\harvarditem{Auth}{{2001}{\em b}}{paper2} 

\harvarditem{Auth}{2001{\em b}}{paper2}

其次,将 bbl 文件的内容复制到 tex 文件中(并删除语句\bibliography)后,还应删除(或注释掉)指令\usepackage{natbib}\bibliographystyle{agsm}语句。最后,在新修改的 tex 文件上重新运行 LaTeX;它应该可以正确编译,并准备好上传到发布者的网站。


只是为了完整性,这里是产生上述 bbl 内容的代码。

\RequirePackage{filecontents}
\begin{filecontents}{mybib.bib}
@article{paper1,
  author = "Perri Jane Auth", title = "Amiable Thoughts",
  journal = "Circularity Today", year = 2001, volume = 1, number = 2, pages = "3-4",
}
@article{paper2,
  author = "Perri Jane Auth", title = "Darker Thoughts",
  journal= "Circularity Today", year = 2001, volume = 5, number = 6, pages = "7-8",
}
\end{filecontents}

\documentclass{article}
\usepackage{natbib}
\bibliographystyle{agsm}

\begin{document}
\cite{paper1,paper2}
\bibliography{mybib}
\end{document}

生成的 bbl 文件应包含以下内容:

\begin{thebibliography}{xx}

\harvarditem{Auth}{2001{\em a}}{paper1}
Auth, P.~J.  \harvardyearleft 2001{\em a}\harvardyearright , `Amiable
  thoughts', {\em Circularity Today} {\bf 1}(2),~3--4.

\harvarditem{Auth}{2001{\em b}}{paper2}
Auth, P.~J.  \harvardyearleft 2001{\em b}\harvardyearright , `Darker thoughts',
  {\em Circularity Today} {\bf 5}(6),~7--8.

\end{thebibliography}

排版后的参考书目应如下所示:

在此处输入图片描述

相关内容