子文件,pythontex 和 \pyverbatim -> 独立 + pythontex

子文件,pythontex 和 \pyverbatim -> 独立 + pythontex

我想在我的某些章节中使用 pythontex 介绍一些 python。我使用包子文件来保存主文档和一些子文档,这对我来说非常方便,我想保留它。

这是我的最小(不)工作示例,包含 2 个文件。MWE-1.tex 是:

\documentclass[a4paper,10pt]{article}
\usepackage{subfiles}
\usepackage{fontspec}% Pour lua, gestion de l'encodage et des fontes
\usepackage{pythontex}

\begin{document}
This is a code:
\begin{pyverbatim}
print('spam and eggs')
\end{pyverbatim}

 just printing \pyc{print('spam and eggs')}
\end{document}

该文件编译后,lualatex/pythontex/lualatex 执行后给出预期结果:逐字代码出现丰富多彩,并且执行 \pyc{print('spam and eggs')}。

第二个文件是子文件,应该给出相同的结果:

\documentclass[./MWE-1.tex]{subfiles}


\begin{document}
This is a code:
\begin{pyverbatim}
print('spam and eggs')
\end{pyverbatim}

 just printing \pyc{print('spam and eggs')}

\end{document}

此文件返回一个警告:PythonTeX 包警告:输入行 8 上不存在 Pygments 内容。

\pyc{} 执行良好,代码也更复杂,但逐字代码被巨大而粗体的“?? PythonTeX ??”取代。

如果我手动将前言部分替换为 MWE-1.tex 的前言部分,则只需一次 lualatex 编译后,逐字部分就可以很好地显示:Pygments 内容在那里,但是在使用 \documentclass{subfiles} 前言​​时找不到。

据我所知,子文件 documentclass 只占用主文件(此处为 MWE-1.tex)的所有内容,因此两个文件应该呈现相同的效果...

编辑并回复:使用独立包效果更好。在我的例子中,设置起来有点复杂,但它可以正常工作。

我的主文件,添加子文件的导入:

\documentclass[10pt,a4paper]{article}
\usepackage[subpreambles=true]{standalone}
\usepackage{fontspec}% Pour lua, gestion de l'encodage et des fontes
\usepackage{pythontex}
\begin{document}
This is a code:
\begin{pyverbatim}
print('spam and eggs')
\end{pyverbatim}

 just printing \pyc{print('spam and eggs')}

 And with import:

 \input{MWE-2.tex}
\end{document}

以及包含 pythontex 代码的子文件:

\documentclass[class=article, crop=false]{standalone}
\usepackage[subpreambles=true]{standalone}
\usepackage{fontspec}% Pour lua, gestion de l'encodage et des fontes
\usepackage{pythontex}
\begin{document}
This is a code:
\begin{pyverbatim}
print('spam and eggs')
\end{pyverbatim}

 just printing \pyc{print('spam and eggs')}

\end{document}

答案1

您必须subfiles在序言中最后加载包(如文档所述),即在文件MWE-1.tex替换中

\usepackage{subfiles}
\usepackage{fontspec}% Pour lua, gestion de l'encodage et des fontes
\usepackage{pythontex}

经过

\usepackage{fontspec}% Pour lua, gestion de l'encodage et des fontes
\usepackage{pythontex}
\usepackage{subfiles}

原因是pythontex显然摆弄了\begin{document}命令,并且子文件包需要查看的最终版本\begin{document},包括的更改pythontex

相关内容