我想包含文件名以零开头的图形。文件名为:
pic_001_测试.png pic_002_测试.png 。 。 。 图片028
我可以在 a 中输出前导零\forloop
,但不能在\includegraphics
命令中使用它们:
\documentclass{article}
\usepackage{forloop}
\usepackage{graphicx}
\usepackage{fmtcount}
\begin{document}
\newcommand{\filename}{}
\newcounter{i}
\forloop{i}{1}{\value{i} < 4}{
\begin{figure}
\renewcommand{\filename}{pic\_\padzeroes[3]{\decimal{i}}\_test.pdf}
\includegraphics[scale=0.6]{pic_00\arabic{i}_test.png}
\caption{Screenshot\_\arabic{i}}
\filename
\end{figure}
}
\end{document}
以下代码由于“!未定义的控制序列”而无法运行:
\newcommand{\filename}{}
\newcounter{i}
\forloop{i}{1}{\value{i} < 4}{
\begin{figure}
\renewcommand{\filename}{pic\_\padzeroes[3]{\decimal{i}}\_test.pdf}
\includegraphics[scale=0.6]{\filename}
\caption{Screenshot\_\arabic{i}}
\end{figure}
}
答案1
LaTeX 知道(可扩展)\two@digits
对于您的使用来说这似乎足够了(尽管如果需要也可以扩展):
\documentclass{article}
\usepackage{forloop}
\usepackage[draft]{graphicx}
\newcounter{filename}
\makeatletter
\newcommand{\twodigits}{\two@digits}
\makeatother
\begin{document}
\forloop{filename}{1}{\value{filename} < 4}{
\begin{figure}
\includegraphics[scale=0.6]{pic_0\twodigits{\value{filename}}_test.png}
\caption{Screenshot\_\thefilename: pic\_0\twodigits{\value{filename}}\_test.png}
\end{figure}
}
\end{document}
由于您在文件名中使用下划线,因此似乎进行了一些复制以避免打印和使用问题。
答案2
文件名必须是可扩展的:
\renewcommand*{\filename}{%
pic_%
\ifnum\value{i}<100 0\fi
\ifnum\value{i}<10 0\fi
\number\value{i}%
_.pdf%
}%
\includegraphics[scale=0.6]{\filename}
注意,带有隐藏扩展名的文件名的宏必须从 的文件名参数的开头开始\includegraphics
。
答案3
这也应该有效:
% in preamble:
\makeatletter
% notice this will use the value of i at the time of macro use
% not at the time of definition here
\newcommand*{\filename}{%
pic_%
\expandafter\@gobble\the\numexpr 1000+\value{i}%
_.pdf%
}%
\makeatother
% in body:
\includegraphics[scale=0.6]{\filename}
假设i
LaTeX 计数器的值不超过 999。