自动旋转图像文件?

自动旋转图像文件?

注意:这与旋转图像无关本身

在我的书中,我有许多像这样的装饰小插图:

第一张图片

在此处输入图片描述

等等....

我为其创建了一个命令:

\newcommand*\vignette{\begin{center} \includegraphics{vignette1.jpg} \end{center}}

但我想自动旋转图像:

  • 小插图1.jpg
  • 小插图2.jpg
  • 小插图3.jpg
  • .... ETC

这样,每次我调用该命令时,它都会包含图像#1,然后是图像#2,然后是图像#3,……等等,最后再次循环回到图像#1。

我怎样才能做到这一点?

答案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}

相关内容