包括目录中的许多数字

包括目录中的许多数字

我在一个名为“allimages”的文件夹中有大量图片(约 300 张)。这些图片的编号为 fig1.eps、fig2.eps、.....fig300.eps。我想将它们全部放入 latex 中,这样一页上就会出现 6 张图片。我知道该怎么做

\begin{figure}[h]
\caption{Write the caption here.}
\vspace{0.0cm} \centering
\includegraphics[height=5.4cm]{allimages/fig1.eps}
\includegraphics[height=5.4cm]{allimages/fig2.eps}
\includegraphics[height=5.4cm]{allimages/fig3.eps}
\includegraphics[height=5.4cm]{allimages/fig4.eps}
\includegraphics[height=5.4cm]{allimages/fig5.eps}
\includegraphics[height=5.4cm]{allimages/fig6.eps}
\end{figure}

但这样做会很耗时。是否有可能有一些循环语句使它更容易并帮助我跳过长图列表。谢谢!

答案1

\foreach使用捆绑包似乎最容易做到这一点pgf。要将所有内容放在单独的页面上,您可能需要几个循环:

\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{pgffor}
\usepackage{caption}
\begin{document}
\foreach\x in {0,1,...,49}{%
  \begin{center}
    \foreach\y in {1,2,...,6}{%
      \includegraphics[height=5.4cm]{allimages/fig\numexpr 6 * \x + \y\relax}
    }%
    \captionof{figure}{Images \number\numexpr 6 * \x + 1\relax\space to
      \number\numexpr 6 * \x + 6\relax.}
  \end{center}
}
\end{document}

使用浮点数进行所有这些操作会很快耗尽空间(没有中间的文本),因此我使用包\captionof中的命令caption来生成适当的文本。

答案2

我使用这个 shell 代码片段来生成我需要的行。

for f in ./images/*.png; do echo "\\includegraphics[width=0.9\\linewidth]{images/$f}\\\\"; done;

答案3

受@BenCrowell 的启发,我通过编写一个简短的 MATLAB 脚本来解决这个问题。希望未来的读者会觉得它有用,我把它发布在这里。

fileID = fopen('./incl_img_latex.txt', 'w');
fprintf(fileID, '\\begin{figure}[h!]\n\\centering\n');

files = dir('./*.png');
for file = files'
    str = file.name;
    fprintf(fileID, '\\begin{subfigure}[b]{0.2\\textwidth}\n\\includegraphics[trim=45 180 70 210,clip,width=\\textwidth]{%s}\n\\end{subfigure}\n', str);
end

fprintf(fileID, '\\caption{C.}\n\\label{fig:}\n\\end{figure}');
fclose(fileID);

相关内容