
Я использую pythontex в классе документа, предоставленном SIAM (см.http://www.siam.org/meetings/ns14/siam-wns-article.cls- менее 100 строк для версии 2014 года, в которой та же проблема, что и в версии 2018 года).
Когда я компилирую
\documentclass{siam-wns-article}
\usepackage{pythontex}
\begin{document}
test
\end{document}
Я получаю сообщение об ошибке:
\c@listing=\count122
./tmp.tex:5: Вы не можете использовать `\relax' после \the.
\c@float@тип
Вывод моего реального примера в порядке. Но ошибка сохраняется, и организаторы конференции заявили, что им понадобятся оригинальные файлы tex для финальных протоколов. Поэтому я хотел бы убедиться, что смогу сообщить им, что нужно исправить в documentclass. Но я не смог разобраться.
Какие-либо предложения?
решение1
Проблема описана вhttps://github.com/gpoore/pythontex/issues/61и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
В качестве альтернативы ответу Дэвида, если вы можете изменить файл класса.
Проблема, кажется, исходит изнесовместимость между pythontex
иlistings
(последний, который загружается вашим файлом класса).
Как отмечено в одном из комментариев на странице GitHub, загрузка 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
к состоянию undefined
\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}