
Ich verwende Pythontex innerhalb einer von SIAM bereitgestellten Dokumentklasse (siehehttp://www.siam.org/meetings/ns14/siam-wns-article.cls- weniger als 100 Zeilen für die Version 2014, die dasselbe Problem aufweist wie die Version 2018).
Wenn ich kompiliere
\documentclass{siam-wns-article}
\usepackage{pythontex}
\begin{document}
test
\end{document}
Ich erhalte eine Fehlermeldung:
\c@listing=\count122
./tmp.tex:5: Sie können „\relax“ nicht nach \the verwenden.
\c@float@Typ
Die Ausgabe meines tatsächlichen Beispiels ist in Ordnung. Aber der Fehler besteht weiterhin und die Organisatoren der Konferenz haben gesagt, dass sie für die Abschlussveranstaltung die Original-Tex-Dateien benötigen. Daher möchte ich sicherstellen, dass ich ihnen sagen kann, was in der Dokumentklasse behoben werden muss. Aber ich konnte es nicht herausfinden.
Irgendwelche Vorschläge?
Antwort1
Das Problem ist wie beschrieben inhttps://github.com/gpoore/pythontex/issues/61Undhttps://github.com/axelsommerfeldt/caption/issues/5
Problemumgehung: Verwenden Sie einen anderen Namen für die PythonTeX-Floats (unabhängig davon, ob Sie sie verwenden oder nicht).
\documentclass{siam-wns-article}
\usepackage{pythontex}
\setpythontexlistingenv{pylisting}
\begin{document}
test
\end{document}
Erklärung des Problems. Das newfloat
Paket prüft, ob \c@float@type
es mit definiert ist \ifdefined
, und das ist falsch: Es sollte verwenden \@ifundefined
. Das Problem tritt auf, wenn listings
geladen wird, da dieses Pakettutverwenden \@ifundefined{c@float@type}
, was \c@float@type
ein Äquivalent zu hinterlässt \relax
und dann \ifdefined\c@float@type
true zurückgibt. Die von Ihnen verwendete SIAM-Klasse lädt listings
.
Ein Fehler in newfloat
.
Antwort2
Als Alternative zu Davids Antwort können Sie die Klassendatei ändern.
Das Problem scheint von einemInkompatibilität zwischen pythontex
undlistings
(Letzteres wird von Ihrer Klassendatei geladen).
Wie in einem der Kommentare auf der GitHub-Seite des Problems angemerkt, wird das Problem pythontex
durch vorheriges Laden listings
gelöst (oder durch gar kein Laden von Einträgen:).
Geben Sie es also pythontex
vorher ein listings
und schon kann es losgehen.
Antwort3
Die Fehlermeldung deutet darauf hin, dass ein Zähler float@type
nicht definiert ist
grep 'newcounter.*float@type' /usr/local/texlive/2017/texmf-dist/tex/latex/*/*.*
erscheint float.sty
und eine mögliche Lösung ist daher
\documentclass{siam-wns-article}
\usepackage{float}
\usepackage{pythontex}
\begin{document}
test
\end{document}
läuft ohne Fehler.
Ich stelle jedoch fest, dass Pythontex Newfloat lädt, sodass dies möglicherweise nicht die beste Lösung ist, da Sie wahrscheinlich nicht wirklich möchten, dass sowohl Float als auch Newfloat geladen werden. Die andere Antwort weist auf einen Hinweis hin. Ein wenig Nachverfolgung zeigt dann, dass dies das allgemeine Problem des Latextests ist, bei dem \@ifundefined{c@float@typ}
die Nebenwirkung auf eine merkwürdige Funktion des Primitivs zurückzuführen \c@float@type
ist .\relax
\csname
Zufällig wird die nächste Version von Latex wahrscheinlich Code enthalten, um dieses Problem zu vermeiden. In der Zwischenzeit können Sie jedoch den Zustand \c@float@type
wieder auf „undefiniert“ zurücksetzen.
\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}