如何使用动画包中的多帧处理零填充?

如何使用动画包中的多帧处理零填充?

animate包中使用\multiframe,如何处理零填充?例如,如果我有 101 张图片,从pic0000.jpgpic0100.jpg,我想做这样的事情:

\documentclass{article}
\usepackage{animate}
\usepackage[demo]{graphicx}
\begin{document}
\begin{animateinline}[controls]{6}
\multiframe{101}{i=0+1}{
  The pic \i
  \includegraphics[height=.45\textheight]{pic\i}
 }
\end{animateinline}
\end{document}

但变量 I 从 0000 变化到 0100。

答案1

在内部,根据模板animate定义用于零填充数字的宏,该模板是所需宽度的任意数字的字符串。\@anim@pad{<template>}{<number>}

下面的例子中\i格式化(零填充)为四位数字宽度(0000 ... 0100):

\documentclass{article}
\usepackage{animate}
\usepackage[demo]{graphicx}

\makeatletter
\let\zeropad\@anim@pad
\makeatother

\begin{document}
\begin{animateinline}[controls]{6}
\multiframe{101}{i=0+1}{%
  The pic \i
  \includegraphics[height=.45\textheight]{pic\zeropad{1234}{\i}}%
}
\end{animateinline}
\end{document}

答案2

根据条件在前面添加零:

\multiframe{101}{i=1+1}{%
  \includegraphics[height=50pt]{pic0\ifnum\number\i<100 0\fi\ifnum\number\i<10 0\fi\i}%
}

第一个条件

\ifnum\number\i<100 0\fi

0如果\i小于 100,则插入一个。第二个条件

\ifnum\number\i<10 0\fi

0如果\i小于 10,则插入一个。这将为您的外部文件建立正确的格式。

答案3

这是一种填充数字以使其始终为四位数字的方法:

在此处输入图片描述


代码:测试\PadDigits宏:

\documentclass{article}
\usepackage{pgffor}

\newcommand*{\PadDigits}[1]{%
    % #1 = number to pad
    \ifnum#1<10 
        000#1%
    \else
        \ifnum#1<100
            00#1%
        \else
        \ifnum#1<1000
            0#1%
        \else
            #1%
    \fi\fi\fi
}%
\begin{document}

\foreach \x in {0,9,99,999,1000} {%
    \par\noindent
    Padding \x = "\PadDigits{\x}"
}
\end{document}

代码:使用\includegraphics

\documentclass{article}
\usepackage{animate}
\usepackage[demo]{graphicx}

\newcommand*{\PadDigits}[1]{%
    % #1 = number to pad
    \ifnum#1<10 
        000#1%
    \else
        \ifnum#1<100
            00#1%
        \else
        \ifnum#1<1000
            0#1%
        \else
            #1%
    \fi\fi\fi
}%

\begin{document}
\begin{animateinline}[controls]{6}
\multiframe{101}{i=0+1}{%
  The pic \i
  \includegraphics[height=.45\textheight]{pic\PadDigits{\i}}%
 }
\end{animateinline}

相关内容