我可以同时使用 revtex、babel + BibTex 和 cleveref 吗?

我可以同时使用 revtex、babel + BibTex 和 cleveref 吗?

我正在尝试写一篇论文

  • revtex4-2文档类别(revtex4-2 2020/10/03 4.2e);
  • .biblanguage某些条目的文件指定字段;
  • 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因为languagebib 项中有字段。但您需要将语言传递给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}

另一方面,如果您只是使用(美式)英语,您可以删除languagebib 项目中的字段而不是加载babel

笔记。我使用filecontents*只是\jobname.bib为了不破坏我的文件。使用您自己的文件并删除filecontents*

相关内容