pythontex と siam .cls ファイル間の非互換性の診断

pythontex と siam .cls ファイル間の非互換性の診断

私は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\@ifundefinedlistingsするを使用する\@ifundefined{c@float@type}と、\c@float@typeと同等になり\relax\ifdefined\c@float@typetrue が返されます。使用している 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}

関連情報