如何重复一段代码并且每次都将变量加一?

如何重复一段代码并且每次都将变量加一?

我有很多图像想要包含在乳胶文档中。

\begin{figure}[h]
\centering
\includegraphics[scale=0.15]{DSC_0001.jpg}
\end{figure}

此代码块仅在图像编号 0002 或 0003 等方面有所不同。有没有一种简单的方法可以循环执行,重复此代码块,但每次将变量编号增加 1。但我还希望每幅图像之间有不同的文本。因此,给出类似的东西,

\begin{figure}[h]
\centering
\includegraphics[scale=0.15]{DSC_0002.jpg}
\end{figure}
This is a pic of blah.
\begin{figure}[h]
\centering
\includegraphics[scale=0.15]{DSC_0003.jpg}
\end{figure}
And this pic is about ...
\begin{figure}[h]
\centering
\includegraphics[scale=0.15]{DSC_0004.jpg}
\end{figure}

答案1

我对以下问题的回答进行了修改创建循环浏览图像的文档

这并不是完全不重要的问题,所以我想它值得一个自己的答案。

请注意,您不需要环境figure,只需要一个整体\centering。使用 many\begin{figure}[h]只会将 LaTeX 扩展到极限,在这种情况下它真的不需要(如果您不想单独为每张图片添加标题)。

\documentclass{article}
\usepackage[demo]{graphicx} % the demo option is just for the example

\newcounter{image}
\newcommand{\placeimages}[2]{%
  \par{\centering
  \setcounter{image}{#1}\addtocounter{image}{-1}%
  \loop\ifnum\value{image}<#2\relax
    \stepcounter{image}%
    \vspace*{\fill}
    \edef\current{DSC\string_\fourdigits{image}}%
    \includegraphics{\current}%
    \\[12pt]\texttt{\current.jpg} % comment this line if you don't want the file name here
    \vfill
  \repeat
  \par}
}
\newcommand{\fourdigits}[1]{%
  \ifnum\value{#1}<1000 0\fi
  \ifnum\value{#1}<100 0\fi
  \ifnum\value{#1}<10 0\fi
  \arabic{#1}%
}
\begin{document}

\placeimages{1}{123} % start-end

\end{document}

如果你必须给每张图片添加文字,这样的快捷方式就行不通了。所以我建议定义一个不同的宏:

\documentclass{article}
\usepackage[demo]{graphicx} % the demo option is just for the example

\newcommand{\placeimage}[2]{% #1 = number, #2 = text
  \par{\centering
  \vspace*{\fill}
  \edef\current{DSC\string_\fourdigits{image}}%
  \includegraphics{\current}\\*[12pt]
  #2\par}
  \vfill
}
\newcommand{\fourdigits}[1]{%
  \ifnum\value{#1}<1000 0\fi
  \ifnum\value{#1}<100 0\fi
  \ifnum\value{#1}<10 0\fi
  \arabic{#1}%
}
\begin{document}

\placeimage{1}{This is some text}
\placeimage{2}{This is some different text}
\placeimage{3}{Other text}
\placeimage{4}{Again different}

\end{document}

如果每张图片都有不同的文本,那么简单的循环就无法工作。您必须在某个地方输入此文本,因此在文本前面添加\placeimage图像编号应该不会太难。

相关内容