
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 newfloat
paquete prueba si \c@float@type
está definido con \ifdefined
y esto es incorrecto: debería usar \@ifundefined
. El problema surge cuando listings
se carga, porque este paquetehaceuse \@ifundefined{c@float@type}
, que deja \c@float@type
equivalente a \relax
y luego \ifdefined\c@float@type
devuelve 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 pythontex
ylistings
(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 pythontex
antes listings
resuelve el problema (o no cargar listados en absoluto :).
Así que ponlo pythontex
antes listings
y listo.
Respuesta3
el mensaje de error sugiere que un contador float@type
no está definido
grep 'newcounter.*float@type' /usr/local/texlive/2017/texmf-dist/tex/latex/*/*.*
aparece float.sty
y 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@type
debido \relax
a una característica curiosa del \csname
primitivo.
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@type
a 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}