使用 \input 执行 Python 脚本或代码不起作用

使用 \input 执行 Python 脚本或代码不起作用

我尝试使用 \input 命令在 LaTeX 中执行 Python 脚本,但是出现了一个奇怪的错误,我无法理解。我按照从这里获取的工作示例进行操作回答但它根本不起作用。

示例 1\input{|python3 -c 'print(1+2)'}给出错误 ! LaTeX 错误:未找到文件 `|python3 -c 'print(1+2)'.tex'。请注意,在 | 之前有一个波浪符号

示例 2\input{|python3 test.py}出现错误!LaTeX 错误:未找到文件 `|python3 test.py'。

请再次注意,在 | 之前有一个波浪符号

我目前正在使用带有 --shell-escape 标志的 PDFLaTeX,但我无法真正使其工作。

我做错了什么?以下是完整代码:

\documentclass[10pt, export]{standalone}
\usepackage{tikz}
\usepackage{animate}
\usepackage{amsmath}
\usepackage[left=0cm, top=0cm, bottom=-2cm, right=0cm, paperwidth=12in, paperheight=6.75in]{geometry}
\usepackage{circuitikz}

\begin{document}

\input{|python3 -c 'print(1+2)'}
\input{|python3 test.py}

\end{document}

谨致以最诚挚的问候和感谢

更新:

尝试戴维的答案会产生以下输出:

! LaTeX Error: File `|python3 -c 'print(1+2)'.tex' not found.

Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: tex)

Enter file name: 
! Emergency stop.
<read *> 
         
l.10 1+2 = \input{|python3 -c 'print(1+2)'}
                                           ^^M
!  ==> Fatal error occurred, no output PDF file produced!

这些是我在 Kile 下使用 PDFLatex 的标志:

--shell-escape -synctex=1 -interaction=nonstopmode %source

从终端编译时输出也是一样,如下所示:

pdflatex --shell-escape -interaction=nonstopmode test.tex

答案1

如果您使用 TeX 的原语\input,它就会起作用,它在 LaTeX 中保存为\@@input

这是script.py

print("Number four: %d." % 4)

这有效:

\documentclass{article}

\makeatletter  % to use \@@input
\def\runshell#1{%
    \@@input"|#1"\relax
}
\makeatother


\begin{document}
a\runshell{python3 -c 'print(1+2)'}b

a\runshell{python3 script.py}b

\end{document}

在此处输入图片描述

答案2

您需要--shell-escape删除强制文本离开页面的几何设置;

\documentclass[10pt, export]{standalone}
\usepackage{tikz}
\usepackage{animate}
\usepackage{amsmath}
%\usepackage[left=0cm, top=0cm, bottom=-2cm, right=0cm, paperwidth=12in, paperheight=6.75in]{geometry}
\usepackage{circuitikz}

\begin{document}

1+2 = \input{|python3 -c 'print(1+2)'}


\end{document}

在此处输入图片描述

相关内容