感谢 Jasper Habicht 提供的解决方案 - 相关主题: 简化重复相同图像的代码
如何在每个图像下添加编号和名称(来自我的 data.tex 文件)(也许使用该datatool
包)?
当前代码:
\documentclass{article}
\usepackage{graphicx}
\usepackage{showframe}
\usepackage{datatool}
\newcounter{repeatcount}
\newcommand{\repeatthis}[3][]{%
\setcounter{repeatcount}{0}%
\loop%
{#3}%
\stepcounter{repeatcount}%
\ifnum\value{repeatcount}<#2%
{#1}%
\repeat%
}
%\DTLsetseparator{|}
%\DTLsetdelimiter{"}
%\DTLloaddb[autokeys=false]{data}{data.tex}
\begin{document}
\begin{center}
\repeatthis[\quad]{15}{\includegraphics[width=.3\linewidth]{example-image-a}}%
\end{center}
\end{document}
我的 TeX 文件 data.tex:
No|Name
1|AAA
2|BCA
3|DXY
答案1
我不确定我的其他答案的解决方案在这里是否有很大用处,因为您不想重复同样的事情,但您想迭代来自数据库的数据。
相反,您可能希望使用该datatool
包附带的功能:
\documentclass{article}
\usepackage{graphicx}
\usepackage{showframe}
\usepackage{datatool}
\begin{filecontents}{data.tex}
No|Name
1|AAA
2|BCA
3|DXY
\end{filecontents}
\DTLsetseparator{|}
\DTLsetdelimiter{"}
\DTLloaddb[autokeys=false]{data}{data.tex}
\begin{document}
\begin{center}
\DTLforeach{data}{\dataNo=No,\dataName=Name}{%
\begin{minipage}{.3\linewidth}
\centering
\includegraphics[width=\textwidth]{example-image-a} \\
\dataNo, \dataName
\end{minipage}\quad%
}
\end{center}
\end{document}
要获取更多带有编号和名称的图片,只需向文件添加更多行即可data.tex
。对于此文件中的每一行,都会有另一张带有标题的图像添加到页面。
如果你想一遍又一遍地重复这三行,你实际上可以将此datatool
方法与我的另一个答案的宏结合起来:
\documentclass{article}
\usepackage{graphicx}
\usepackage{showframe}
\usepackage{datatool}
\newcounter{repeatcount}
\newcommand{\repeatthis}[3][]{%
\setcounter{repeatcount}{0}%
\loop%
{#3}%
\stepcounter{repeatcount}%
\ifnum\value{repeatcount}<#2%
{#1}%
\repeat%
}
\begin{filecontents}{data.tex}
No|Name
1|AAA
2|BCA
3|DXY
\end{filecontents}
\DTLsetseparator{|}
\DTLsetdelimiter{"}
\DTLloaddb[autokeys=false]{data}{data.tex}
\begin{document}
\begin{center}
\repeatthis{5}{%
\DTLforeach{data}{\dataNo=No,\dataName=Name}{%
\begin{minipage}{.3\linewidth}
\centering
\includegraphics[width=\textwidth]{example-image-a} \\
\dataNo, \dataName
\end{minipage}\quad%
}%
}
\end{center}
\end{document}