
私はSIAMが提供するドキュメントクラス内で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@浮動小数点数@型
実際の例の出力は問題ありません。しかし、エラーは解決せず、会議の主催者は最終議事録用にオリジナルの tex ファイルが必要だと言っています。そのため、ドキュメントクラスで修正する必要がある点を主催者に伝えられるようにしたいと思っています。しかし、まだ解決できていません。
助言がありますか?
答え1
問題は、pythontex の最新版は以下です。そして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 ページのコメントの 1 つに記載されているように、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}