pythontex와 siam .cls 파일 간의 비호환성 진단

pythontex와 siam .cls 파일 간의 비호환성 진단

저는 SIAM에서 제공하는 문서 클래스 내에서 pythontex를 사용하고 있습니다(참조http://www.siam.org/meetings/ns14/siam-wns-article.cls- 2018버전과 동일한 문제가 있는 2014버전의 경우 100줄 미만입니다.

내가 컴파일할 때

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


\begin{document}
test
\end{document}

오류가 발생합니다.

\c@listing=\count122

./tmp.tex:5: \the 뒤에 `\relax'를 사용할 수 없습니다.

\c@float@유형

실제 예제의 출력은 괜찮습니다. 그러나 오류가 계속 발생하고 회의 주최자는 최종 진행을 위해 원본 텍스트 파일을 원할 것이라고 말했습니다. 그래서 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\@ifundefinedlistings하다use \@ifundefined{c@float@type}, 이는 \c@float@type와 동일하게 유지된 \relax다음 \ifdefined\c@float@typetrue를 반환합니다. 사용 중인 SIAM 클래스가 로드됩니다 listings.

.newfloat

답변2

David의 대답 대신 클래스 파일을 수정할 수 있습니다.

문제는 다음에서 발생한 것 같습니다.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가 모두 로드되는 것을 원하지 않고 다른 답변이 단서를 가리키고 약간의 추적을 통해 이것이 일반적인 문제라는 것을 알 수 있기 때문에 아마도 최선의 수정이 아닐 것입니다. 프리미티브 의 묘한 특징 때문 이라고 \@ifundefined{c@float@typ}정의하는 부작용이 있는 라텍스 테스트 .\c@float@type\relax\csname

공교롭게도 다음 라텍스 릴리스에는 이 문제를 방지하기 위한 코드가 있을 것이지만 그동안 \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}

관련 정보