我正在尝试写一篇论文
revtex4-2
文档类别(revtex4-2 2020/10/03 4.2e
);.bib
language
某些条目的文件指定字段;cleveref
包裹;- 自定义定理(使用
\newtheorem
命令和\Crefname
参考才能cleveref
正常工作)。
但这会导致编译失败。这是一个简单示例:
min.tex
:
\documentclass{revtex4-2}
\usepackage{babel}
\usepackage{cleveref}
\newtheorem{myproposition}{Proposition}
\Crefname{myproposition}{Proposition}{Propositions}
\begin{document}
\cite{web:lang:stats}
\bibliography{myrefs}
\end{document}
myrefs.bib
:
@misc{web:lang:stats,
author = {W3Techs},
title = {Usage Statistics of Content Languages for Websites},
language = {English},
year = {2017},
note = {Last accessed 16 September 2017},
url = {http://w3techs.com/technologies/overview/content_language/all}
}
如果我将这两个文件放入同一目录中,其中没有其他任何内容(删除以前编译的所有临时文件以进行干净的实验)并运行
pdflatex min.tex && bibtex min.aux && pdflatex min.tex
我明白了
! TeX capacity exceeded, sorry [input stack size=5000].
\extrasenglish ->\extrasenglish
\crefname {myproposition}{\MakeLowercase Pro...
l.12 \babel@aux{english}{}
为什么?我做错了什么?
答案1
您需要,babel
因为language
bib 项中有字段。但您需要将语言传递给babel
。最好将语言添加到 的全局选项中\documentclass
,这样也会cleveref
选择它。
\begin{filecontents*}{\jobname.bib}
@misc{web:lang:stats,
author = {W3Techs},
title = {Usage Statistics of Content Languages for Websites},
language = {English},
year = {2017},
note = {Last accessed 16 September 2017},
url = {http://w3techs.com/technologies/overview/content_language/all}
}
\end{filecontents*}
\documentclass[english]{revtex4-2}
\usepackage{babel}
\usepackage{cleveref}
\newtheorem{myproposition}{Proposition}
\Crefname{myproposition}{Proposition}{Propositions}
\begin{document}
\cite{web:lang:stats}
\bibliography{\jobname}
\end{document}
另一方面,如果您只是使用(美式)英语,您可以删除language
bib 项目中的字段而不是加载babel
。
笔记。我使用filecontents*
只是\jobname.bib
为了不破坏我的文件。使用您自己的文件并删除filecontents*
。