如何使用“for”循环在一页上显示 50 张图片?

如何使用“for”循环在一页上显示 50 张图片?

我想在一页(或几页)上显示 50 张图片,图片下方有从 1 到 50 的数字。因此基本上是一个带有数字以识别它们的图像列表。

我试过:

\documentclass{article}
\usepackage{graphicx}
\usepackage{pgffor}

\begin{document}
\foreach \x in {1,...,\numimages}{
    \begin{figure}
            \includegraphics[width=.2\columnwidht]{./img/img_\x}
            \caption{\x}
    \end{figure}
\fi
\end{document}

这些图像被命名为“img_1”至“img_50”。它们位于 img 文件夹中。

问题

  1. 名称为“图 1: 1”,并且只能为“1”
  2. 图像以新行开始,不会并排显示

现在的样子:

在此处输入图片描述

它看起来应该是什么样的(只是安排和标题,而不是论文):

在此处输入图片描述

答案1

使用图形环境的唯一优点是它会浮动到文档中的合适位置,并且能够添加带有“图 42:...”的适当标题 - 这两件事在您的情况下似乎是不受欢迎的,所以不要使用图形环境。

如果没有它,您可以将图像像文本中的普通字母一样放在一起:

\documentclass{article}
\usepackage{graphicx}
\usepackage{pgffor}

\begin{document}

{%
\noindent%
\raggedright%
\foreach \x in {1,...,50}{%
  \parbox{.18\textwidth}{\centering\includegraphics[width=\linewidth]{example-image-duck}\par \x}\space%
}%

\end{document}

在此处输入图片描述

答案2

抽象似乎是最好的策略。我\multipleimages用语法定义命令

\multipleimages
  {<file name pattern>}
  {<number of images per line>}[<correction>]
  {<total number>}

在你的情况下,呼叫应该是

\multipleimages{./img/img_#1}{5}{50}

或者可能

\multipleimages{./img/img_#1}{5}[0.8]{50}

可选的校正因子可以通过尝试排版减少它直到浮动可以在页面中找到位置来确定。在下面的例子中,我得到了

LaTeX Warning: Float too large for page by 11.14352pt on input line 45.

当校正因子设置为 时0.8,但没有这样的警告0.79。正确的因子取决于图像的垂直尺寸,图像应该具有相同的高度。

第二个示例显示如何改变每行的图像数量。

示例 1 和示例 2 中的第一个参数没有,#1因为我不想创建 50 个不同的名称。因此,对于第三个示例,我复制了四个example-image.pdf名为img1.pdfimg2.pdf和的副本img3.pdfimg4.pdf以显示第一个参数正确地解释了给定的模式。

\documentclass{article}
\usepackage{graphicx}

\ExplSyntaxOn

\NewDocumentCommand{\multipleimages}{mmO{1}m}
 {% #1 = pattern for the image names
  % #2 = number of images per line
  % #3 = reduction factor (default 1)
  % #4 = total number of images
  \curious_multimg:nnnn { #1 } { #2 } { #3 } { #4 }
 }

\int_new:N \l__curious_multimg_idx_int

\cs_new_protected:Nn \curious_multimg:nnnn
 {
  \cs_set:Nn \__curious_multimg_name:n { #1 }
  \int_zero:N \l__curious_multimg_idx_int
  \int_step_inline:nn { #4 }
   {
    \group_begin:
    \renewcommand{\arraystretch}{0}
    \begin{tabular}[t]{@{}c@{}}
    \includegraphics[width=\fpeval{(#3)/(#2)}\columnwidth]{\__curious_multimg_name:n { ##1 }}
    \\
    \footnotesize\strut ##1
    \end{tabular}
    \group_end:
    \int_compare:nT{\int_mod:nn{##1}{#2}==0}{\par\vspace{0.3ex}}
   }
 }

\ExplSyntaxOff

\begin{document}

\begin{figure}[p]
\centering

\multipleimages{example-image}{5}[0.79]{50}

\caption{Fifty images}

\end{figure}

\begin{figure}[p]
\centering

\multipleimages{example-image}{7}{50}

\caption{Fifty images}

\end{figure}

\begin{figure}[p]
\centering

\multipleimages{img#1}{2}{4}

\caption{Four images}

\end{figure}

\end{document}

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

相关内容