diagnosticar una incompatibilidad entre pythontex y un archivo siam .cls

diagnosticar una incompatibilidad entre pythontex y un archivo siam .cls

Estoy usando pythontex dentro de una clase de documento proporcionada por SIAM (verhttp://www.siam.org/meetings/ns14/siam-wns-article.cls- menos de 100 líneas para la versión 2014 que tiene el mismo problema que la versión 2018).

cuando compilo

\documentclass{siam-wns-article}
\usepackage{pythontex}


\begin{document}
test
\end{document}

Recibo un error:

\c@listado=\count122

./tmp.tex:5: No puedes usar `\relax' después de \the.

\c@flotador@tipo

El resultado de mi ejemplo real está bien. Pero el error persiste y los organizadores de la conferencia han dicho que querrán archivos tex originales para las actuaciones finales. Así que me gustaría asegurarme de poder decirles qué se debe arreglar en la clase de documento. Pero no he podido resolverlo.

¿Alguna sugerencia?

Respuesta1

El problema es como se describe enhttps://github.com/gpoore/pythontex/issues/61yhttps://github.com/axelsommerfeldt/caption/issues/5

Solución alternativa: use un nombre diferente para los flotantes PythonTeX (independientemente de si los usa o no).

\documentclass{siam-wns-article}
\usepackage{pythontex}

\setpythontexlistingenv{pylisting}

\begin{document}
test
\end{document}

Explicación del problema. El newfloatpaquete prueba si \c@float@typeestá definido con \ifdefinedy esto es incorrecto: debería usar \@ifundefined. El problema surge cuando listingsse carga, porque este paquetehaceuse \@ifundefined{c@float@type}, que deja \c@float@typeequivalente a \relaxy luego \ifdefined\c@float@typedevuelve verdadero. La clase SIAM que estás usando se carga listings.

Un error en newfloat.

Respuesta2

Como alternativa a la respuesta de David, si puede modificar el archivo de clase.

El problema parece provenir de unincompatibilidad entre pythontexylistings(este último, que se carga en su archivo de clase).

Como se indica en uno de los comentarios de la página de GitHub sobre el problema, cargar pythontexantes listingsresuelve el problema (o no cargar listados en absoluto :).

Así que ponlo pythontexantes listingsy listo.

Respuesta3

el mensaje de error sugiere que un contador float@typeno está definido

grep 'newcounter.*float@type' /usr/local/texlive/2017/texmf-dist/tex/latex/*/*.*

aparece float.styy por lo tanto hay una posible solución

\documentclass{siam-wns-article}
\usepackage{float}
\usepackage{pythontex}


\begin{document}
test
\end{document}

se ejecuta sin errores.

Sin embargo, observo que pythontex carga newfloat, por lo que quizás esta no sea la mejor solución, ya que probablemente no desee que float y newfloat estén cargados y la otra respuesta apunta a una pista y luego un poco de seguimiento revela que este es el problema común de la prueba del látex \@ifundefined{c@float@typ}tiene el efecto secundario de definirse \c@float@typedebido \relaxa una característica curiosa del \csnameprimitivo.

Da la casualidad de que la próxima versión de látex probablemente tendrá un código para evitar este problema, pero mientras tanto puedes volver \c@float@typea estar indefinido.

\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}

información relacionada