我在 SIAM 提供的 documentclass 中使用 pythontex(请参阅http://www.siam.org/meetings/ns14/siam-wns-article.cls- 2014 版少于 100 行,与 2018 版存在同样的问题)。
当我编译时
\documentclass{siam-wns-article}
\usepackage{pythontex}
\begin{document}
test
\end{document}
我收到一个错误:
\c@listing=\count122
./tmp.tex:5: 不能在 \the 之后使用“\relax”。
\c@float@类型
我的实际示例的输出很好。但错误仍然存在,会议组织者表示他们希望原始 tex 文件用于最终会议记录。所以我想确保我可以告诉他们 documentclass 中需要修复什么。但我一直无法弄清楚。
有什么建议么?
答案1
该问题如下所述https://github.com/gpoore/pythontex/issues/61和https://github.com/axelsommerfeldt/caption/issues/5
解决方法:对 PythonTeX 浮点数使用不同的名称(无论是否使用它们)。
\documentclass{siam-wns-article}
\usepackage{pythontex}
\setpythontexlistingenv{pylisting}
\begin{document}
test
\end{document}
问题解释。newfloat
测试包是否\c@float@type
使用 定义\ifdefined
,这是错误的:它应该使用。加载\@ifundefined
时会出现问题,因为这个包listings
做使用\@ifundefined{c@float@type}
,这\c@float@type
相当于\relax
,然后\ifdefined\c@float@type
返回 true。您使用的 SIAM 类会加载listings
。
中的一个错误newfloat
。
答案2
作为 David 答案的替代,如果您可以修改类文件。
问题似乎来自于pythontex
和之间不兼容listings
(后者由您的类文件加载)。
正如该问题的 GitHub 页面上的一条评论所述,pythontex
之前加载listings
可以解决问题(或者根本不加载列表:)。
所以把它放在pythontex
前面listings
,你就可以开始了。
答案3
错误消息表明计数器float@type
未定义
grep 'newcounter.*float@type' /usr/local/texlive/2017/texmf-dist/tex/latex/*/*.*
float.sty
因此可能的解决办法是
\documentclass{siam-wns-article}
\usepackage{float}
\usepackage{pythontex}
\begin{document}
test
\end{document}
运行无错误。
然而我注意到 pythontex 加载了 newfloat,所以这可能不是最好的解决办法,因为你可能并不真的想同时加载 float 和 newfloat,而另一个答案指向一个线索,然后经过一点追踪发现这是 latex 测试的常见问题,它有一个定义为由于原始函数的一个奇怪特征而\@ifundefined{c@float@typ}
产生的副作用。\c@float@type
\relax
\csname
事实上,下一个版本的 latex 可能会有代码来避免这个问题,但同时你可以设置\c@float@type
回未定义
\documentclass{siam-wns-article}
\AtBeginDocument{%
\expandafter\ifx\csname c@float@type\endcsname\relax
\expandafter\let\csname c@float@type\endcsname\undefined
\fi
}
\usepackage{pythontex}
\begin{document}
test
\end{document}