我正在尝试在文档中包含未知数量且文件名未知的图像文件。 我的代码灵感来自此答案的评论: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。
编译按以下顺序进行:
- 编译 LaTeX 文件(例如在 TeXStudio 中)
- 使用在终端中导航到 LaTeX 文件的目录
cd
并使用pythontex documentname.tex
其中“documentname”是 LaTeX 文件的名称。 - 再次编译 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}
结果是: