答案1
试试这个代码。不用5
输入您拥有的最大文件数。可选参数允许您根据需要输入特定文件。
\documentclass{article}
\usepackage{graphicx}
\makeatletter
\newcount\sk@vignette
\newcommand*\vignette[1][]{\begingroup
\ifx\@empty#1\@empty
\global\advance\sk@vignette by\@ne\relax
\else
\sk@vignette=#1\relax
\fi
\ifnum\sk@vignette>5\relax
\sk@vignette=\@ne\relax
\fi
\centering \includegraphics{vignette\the\[email protected]}\par\endgroup}
\makeatother
\begin{document}
\vignette
\vignette
\vignette
\vignette
\vignette
\vignette
\end{document}
答案2
一个 expl3 解决方案。
特定文件的可选参数,不会影响项目计数器;另外,位置宏(\mypath
)可以指向小插图(./vignettes/vignette
)或其他地方(例如,在一个组中:{\renewcommand\mypath{}\vignette[example-image-b]}
将扫描 texmf 树,然后\mypath
一旦退出该组,的原始定义就会再次可见)。
平均能量损失
\documentclass{article}
\newcommand\mypath{./vignettes/vignette}%folder/filename-prefix
\usepackage{graphicx}
%---------------------
\usepackage{xparse}
\ExplSyntaxOn
\int_new:N
\g_vignette_int
\int_new:N
\g_vignettemax_int
%---
\NewDocumentCommand { \setvignettemax } { m } {
\int_gset:Nn
\g_vignettemax_int
{ #1 }
}
%---
\NewDocumentCommand { \getvignette } { m } {
\tl_set:Nn \l_myparm_tl { #1 }
\par
\centering
\fbox{
\includegraphics[height=4em]{
\mypath \tl_use:N \l_myparm_tl
}
}
\par
}
\tl_new:N \l_myparm_tl
%---
\NewDocumentCommand { \vignette } { O{} } {
\tl_set:Nn \l_myparm_tl { #1 }
\tl_if_eq:NNTF
\c_empty_tl
\l_myparm_tl
{ % next item (in \mypath location)
\int_gincr:N
\g_vignette_int
\int_compare:nNnTF
{ \g_vignette_int } > { \g_vignettemax_int }
{ \int_gset:Nn \g_vignette_int {1} }
{ }
\getvignette { \int_use:N \g_vignette_int }
} % end true
{ % specific item in \mypath location
% (\mypath can be reset beforehand with \renewcommand)
\getvignette { #1 }
}% end false
}
\ExplSyntaxOff
%---------------------
%-----
\begin{document}
\setvignettemax{3}
\vignette
\vignette
\vignette[2a]
\vignette[1]
\vignette
{\renewcommand\mypath{}\vignette[example-image-b]}
\vignette
\end{document}