旧版 TeX 发行版的 revtex4-2.cls 错误

旧版 TeX 发行版的 revtex4-2.cls 错误

revtex4-2我第一次使用类文件来编译我的.tex文件。但是,我收到以下编译错误:

! Undefined control sequence.
<argument> \AddToHook 
                      {begindocument/before}{\document@inithook }
l.211   }

这是一个最小的工作示例。

\documentclass[aps,prl]{revtex4-2}
\begin{document}
This is APS RevTex 4.2 document class.
\end{document}

我之前使用过revtex4-0,没有revtex4-1任何问题。我最近revtex4.2e在系统中安装了它。但是,我无法弄清楚我在使用最新的 RevTeX 类时遇到的问题。

以下是日志文件。

This is XeTeX, Version 3.1415926-2.5-0.9999.3 (TeX Live 2013/Debian) (format=xelatex 2019.1.4)  19 DEC 2020 19:38
entering extended mode
 restricted \write18 enabled.
 %&-line parsing enabled.
**main
(./main.tex
LaTeX2e <2011/06/27>
Babel <3.9h> and hyphenation patterns for 78 languages loaded.
(./revtex4-2.cls
Document Class: revtex4-2 2020/10/03 4.2e (https://journals.aps.org/revtex/ for
 documentation)
 Copyright (c) 2019 American Physical Society.
 mailto:[email protected]
 Licensed under the LPPL:
http://www.ctan.org/tex-archive/macros/latex/base/lppl.txt
 Arthur Ogawa <arthur_ogawa at sbcglobal dot net>
 Based on work by David Carlisle <david at dcarlisle.demon.co.uk>
 Version (4.2d,4.2e): Modified by Mark Doyle and Phelype Oleinik
 .
ltxutil[2020/10/03 4.2e utilities package (portions licensed from W. E. Baxter 
web at superscript.com)]
! Undefined control sequence.
<argument> \AddToHook 
                      {begindocument/before}{\document@inithook }
l.211   }
         
? x
 
Here is how much of TeX's memory you used:
 78 strings out of 493918
 768 string characters out of 6150564
 52172 words of memory out of 5000000
 3498 multiletter control sequences out of 15000+600000
 3640 words of font info for 14 fonts, out of 8000000 for 9000
 1144 hyphenation exceptions out of 8191
 14i,0n,10p,147b,10s stack positions out of 5000i,500n,10000p,200000b,80000s
No pages of output.

答案1

发生这种情况的原因是 RevTeX 中检查 LaTeX 版本的行:

\rvtx@ifformat@geq{2020-10-01}%
  {<code for new LaTeX>}
  {<code for old LaTeX>}

使用 格式的日期yyyy-mm-dd,但此日期格式于 2017 年才添加到 LaTeX 中,但您的版本是 2013 年的,并且它仅支持 格式的日期yyyy/mm/dd,因此上述测试失败并尝试执行<code for new LaTeX>

虽然 RevTeX 不会再次更新以使用旧的日期格式,但可以使用此补丁来教你的 LaTeX 版本使用新的日期格式(并且更新你的 TeX 系统!必须添加补丁以下\documentclass行:

% Patch to make old LaTeX understand dates in yyyy-mm-dd format
\makeatletter
\@ifundefined{@parse@version@dash}{%
\def\@parse@version#1{\@parse@version@0#1}
\def\@parse@version@#1/#2/#3#4#5\@nil{%
\@parse@version@dash#1-#2-#3#4\@nil}
\def\@parse@version@dash#1-#2-#3#4#5\@nil{%
  \if\relax#2\relax\else#1\fi#2#3#4 }
}{}
\makeatother

% document
\documentclass[aps,prl]{revtex4-2}
\begin{document}
This is APS RevTex 4.2 document class.
\end{document}

相关内容