我在使用 PythonTeX 和 Beamer 时遇到了问题:我不明白为什么下面的代码不起作用:\stdoutpythontex
应该打印最后一段 python 指令的最后输出,但这里却没有。
此外,当您调用 时 \stderrpythontex
,即使使用了 选项,行号也是错误的fragile=singleslide
。
你能帮我一下吗?
\documentclass{beamer}
\usepackage[french]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[framemethod=TikZ]{mdframed}
\usepackage[makestderr]{pythontex}
\usepackage{multicol}
\begin{document}
\begin{frame}[fragile]
\frametitle{Affichage à l'écran: Commande \pyv{print()} }
\begin{itemize}
\item En mode console: résultats automatiquement affichés.
\item Dans l'éditeur: utiliser \pyv{print()}
\end{itemize}
%
\begin{pyblock}[][numbers=left]
a, b = 2, 3
print(a, 'hello', a+b)
\end{pyblock}
%
a pour résultat
\stdoutpythontex
De plus,
\begin{pyblock}[][numbers=left]
a = 5
print('a vaut ' a)
\end{pyblock}
donne
\stderrpythontex
\end{frame}
\end{document}
答案1
在您当前的配置中,一切都在单身的Python 会话。第二段代码触发语法错误,该错误被捕获前任何代码都会被执行。语法错误会阻止任何代码运行,因此第一个块永远不会被打印。
错误 ( 4
) 中显示的行号是正确的,因为语法错误位于代码的第 4 行(再次强调,所有内容都在一个会话中)。但这与幻灯片中显示的行号不一致,因为您没有使用firstnumber=last
。
如果您希望两个示例独立运行,则应将它们放在单独的会话中。也许\begin{pyblock}[stdout][numbers=left]
对第一个使用,\begin{pyblock}[stderr][numbers=left]
对第二个使用。