Pythontex

Pythontex

您好,由于文件夹中有一组数字,我想按顺序将其放入文档中,所以我正在尝试创建一个自动程序。

环顾四周,我发现了这篇旧帖子使用循环插入图形

我真的很喜欢使用 python 的想法,但是我对 python.sty 或 pythontex.sty 包有一些问题,我真的不明白它们是如何工作的。

我的代码是:

\documentclass{article}

\usepackage{python}
\usepackage{graphicx}

\begin{document}

\begin{python}
import os
directory = "."
extension = ".png"
files = [file for file in os.listdir(directory) if 
file.lower().endswith(extension)]

for file in files:
   print(r"\begin{figure}[!ht]")
   print(r"\centering")
   print(r"\includegraphics[width=10cm,height=10cm]{%s}" % file)
   print(r"\caption{File %s}" % file)
   print(r"\label{Serie}")
   print(r"\end{figure}")
\end{python}

\end{document}

它与另一篇文章中的完全相同,但是当我使用以下命令运行它时:

pdflatex.exe --enable-write18 .\test.tex

我收到错误:

pdflatex.exe:'cat' 未被识别为内部或外部命令,位于行:1 字符:1 + pdflatex.exe --enable-write18 .\test.tex + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:NotSpecified:('cat' 不是重新...外部命令,:String)[],RemoteException + FullyQualifiedErrorId:NativeCommandError

可运行的程序或批处理文件。(“C:\Program Files\MiKTeX 2.9\tex\generic\oberdiek\etexcmds.sty”)))!我找不到文件“test.py.out”。 \def l.21 \end{python}

当我使用 pythontex.sty 时,我不明白必须遵循的步骤。我修改代码以使用这个其他包,使用相同的命令运行,输出为:

没有文件 pythontex-files-test/test.pytxmcr。运行 PythonTeX 来创建它。 ("C:\Program Files\MiKTeX 2.9\tex\context\base\supp-pdf.mkii" [正在加载 MPS 到 PDF 转换器 (版本 2006.09.02)。]) ("C:\Program Files\MiKTeX 2.9\tex\generic\oberdiek\pdftexcmds.sty" ("C:\Program Files\MiKTeX 2.9\tex\generic\oberdiek\ifpdf.sty")) ("C:\Program Files\MiKTeX 2.9\tex\latex\oberdiek\epstopdf-base.sty" ("C:\Program Files\MiKTeX 2.9\tex\latex\oberdiek\grfext.sty" ("C:\Program Files\MiKTeX 2.9\tex\generic\oberdiek\kvdefinekeys.sty"))) (test.aux) ) 没有输出页面。记录在 test.log 上。

有人能给我一些建议吗?我使用的操作系统是 Windows 7。

多谢!

西乔

答案1

所有这些都应该可以工作。您发布的代码非常适合该python软件包。

这里我没有针对您收到的错误的解决方案,但也许可以解决您的图像问题。

以下是另外两种方法:

Pythontex

pthontex只需替换:

  1. \usepackage{python}经过\usepackage{pythontex}
  2. \begin{python}经过\begin{pycode}

然后使用以下命令进行编译:

pdflatex file.tex
pythontex file.tex
pdflatex file.tex

代码:

\documentclass{article}
\usepackage[T1]{fontenc}% Must include this to print the underscores

%\usepackage{python}
\usepackage{pythontex}
\usepackage{graphicx}

\begin{document}

%\begin{python}
\begin{pycode}
import os
directory = "."
extension = ".png"
files = [file for file in os.listdir(directory) if 
file.lower().endswith(extension)]

for file in files:
   print(r"\begin{figure}[!ht]")
   print(r"\centering")
   print(r"\includegraphics[width=10cm,height=10cm]{%s}" % file)
   print(r"\caption{File \detokenize{%s}}" % file)
   print(r"\label{Serie}")
   print(r"\end{figure}")
\end{pycode}
%\end{python}

\end{document}

For循环

如果你想要另一种方法,那么使用for循环包按顺序包含图像。我个人更喜欢这种方法 :)

\documentclass{article}

\usepackage{forloop}
\usepackage{graphicx}

\begin{document}

\newcounter{fig}% declare a counter

\forLoop{1}{3}{fig}{% loop from 1 to 3 with the counter defined above
% and execute this code in each iteration
  \begin{figure}[!ht]
  \centering
  \includegraphics[width=10cm,height=10cm]{./fig\the\value{fig}}
  \caption{File ./fig\the\value{fig}}
  \label{Serie}
  \end{figure}
}

相关内容