通过 Python 代码从文件目录包含多个图像文件的简单方法?

通过 Python 代码从文件目录包含多个图像文件的简单方法?

我正在尝试在文档中包含未知数量且文件名未知的图像文件。 我的代码灵感来自此答案的评论:https://tex.stackexchange.com/a/53465/206040

\documentclass[12pt]{article}
    
\usepackage{graphicx}

\usepackage{pythontex}

\begin{document}
    Pictures:
    \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 %s}" % file
            print r"\label{Serie}"
            print r"\end{figure}"
        \end{pycode}
    
\end{document}

代码可以运行,但图片未包含在我的 pdf 中。我该如何解决这个问题,或者有没有更好/更简单的方法来解决?

顺便说一句:我一直想使用该pythontex包,因为它不需要使用该--enable-write18选项?但我也不知道是否有更好的方法。

答案1

这是我想出的解决方案。我擅自对您的代码做了一些细微的更改:

\documentclass[12pt]{article}
    
\usepackage{graphicx}
\usepackage{pythontex}

\begin{document}
 
    Pictures:
 
\begin{pycode}
import os
import textwrap

directory = '.'
extension = '.png'

files = [fn for fn in os.listdir(directory) if fn.lower().endswith(extension)]

figs = []      
for count, filename in enumerate(files, 1):
    fixedfn = filename.replace(r'_', r'\_')
    fig = fr'''
            \begin{{figure}}[!ht]
            \centering
            \includegraphics[height=4cm]{{{filename}}}
            \caption{{File {fixedfn}}}
            \label{{Serie{count}}}
            \end{{figure}}
            '''
    figs.append(textwrap.dedent(fig))
    
print(''.join(figs))
\end{pycode}
    
\end{document}

要使用此代码,请pip install pygments在您的 Python 环境中安装 pygments。

编译按以下顺序进行:

  1. 编译 LaTeX 文件(例如在 TeXStudio 中)
  2. 使用在终端中导航到 LaTeX 文件的目录cd并使用pythontex documentname.tex其中“documentname”是 LaTeX 文件的名称。
  3. 再次编译 LaTeX 文件(例如在 TeXStudio 中),图片现在应该可见了!

或者,您也可以使用以下命令作为 TeXStudio 中的标准编译器:

txs:///pdflatex | pythontex %.tex | txs:///pdflatex

当在我的计算机上运行时,Python 代码生成以下 LaTeX 源代码:

\begin{figure}[!ht]
\centering
\includegraphics[height=4cm]{1200px-LaTeX_project_logo_bird.svg.png}
\caption{File 1200px-LaTeX\_project\_logo\_bird.svg.png}
\label{Serie1}
\end{figure}

\begin{figure}[!ht]
\centering
\includegraphics[height=4cm]{campusVigo_vistas01.png}
\caption{File campusVigo\_vistas01.png}
\label{Serie2}
\end{figure}

\begin{figure}[!ht]
\centering
\includegraphics[height=4cm]{opengraph-icon-200x200.png}
\caption{File opengraph-icon-200x200.png}
\label{Serie3}
\end{figure}

结果是:

pdf

相关内容