![使用 natbib 提供大量引用列表](https://linux22.com/image/339372/%E4%BD%BF%E7%94%A8%20natbib%20%E6%8F%90%E4%BE%9B%E5%A4%A7%E9%87%8F%E5%BC%95%E7%94%A8%E5%88%97%E8%A1%A8.png)
\cite{}
我的参考资料非常丰富,大约有 6000 个条目。
编译时这并不顺利。
在 Windows 上,它会抱怨有超过 2000 个条目。
在 Linux 上,它会抱怨缺少}
:
! Missing } inserted.
<inserted text>
}
l.31429 \end{thebibliography}
我用 WinEdt 检查了 bib 文件,发现所有括号都是匹配的。我stack_size = 5000
在 Linux 下也这样做过,但增加到 时也出现了同样的消息stack_size = 50000
。
我怎样才能正确引用每个人?
答案1
解决这个问题有几个方面:
拥有
stack_size
足够大的。默认值约为2000
,这里我需要大于的值6000
。在 Ubuntu 下我必须添加
stack_size = 10000
里面/usr/share/texlive/texmf.cnf
然后运行texhash
,两者都需要 root 权限。(Windows 和 Linux 说明这里)
拥有一个好的 bib 文件。检查非转义字符,如
&
,$
和%
或转义的右括号:\}
。这也有助于检查您是否拥有正确数量的左括号和右括号。您也可以查看这里。该键
\cite{6000 entries}
似乎无法处理那么多条目(永远无法完成,但也许我没有等待足够长的时间,但几个小时并不符合我的要求)。可能与sort&compress
我使用的选项有关。解决方案是使用\nocite{6000 entries}
。这会改变显示,但至少它会在合理的时间内完成。
正如@David Carlisle所建议的那样,另一种方法是使用比伯因为它没有那么多限制。