在animate
包中使用\multiframe
,如何处理零填充?例如,如果我有 101 张图片,从pic0000.jpg
到pic0100.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}