![哈佛书目,不正确的字母常数](https://linux22.com/image/380243/%E5%93%88%E4%BD%9B%E4%B9%A6%E7%9B%AE%EF%BC%8C%E4%B8%8D%E6%AD%A3%E7%A1%AE%E7%9A%84%E5%AD%97%E6%AF%8D%E5%B8%B8%E6%95%B0.png)
我正在尝试使用 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,但在线工具不允许我这样做,所以它只是失败了。我自己的系统重现了错误,所以这不是他们的工具的问题。我使用的是natbib
8.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}
或从 切换natbib
到harvard
。
在研究了 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}
或者
\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}
答案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}
排版后的参考书目应如下所示: