summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-12-04 22:37:44 +0000
committerKarl Berry <karl@freefriends.org>2014-12-04 22:37:44 +0000
commitabb6e2789713c85e45a992d2d88f8257a1330e03 (patch)
tree02c6ca6da98a9177015d5ddfd014af3929c5f60c /Master
parenta5c117f20afd3cbdf479eaed4aa5a0b7221029b7 (diff)
animate (4dec14)
git-svn-id: svn://tug.org/texlive/trunk@35739 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/latex/animate/ChangeLog8
-rw-r--r--Master/texmf-dist/doc/latex/animate/animate.pdfbin3729164 -> 3740554 bytes
-rw-r--r--Master/texmf-dist/doc/latex/animate/animate.tex22
-rw-r--r--Master/texmf-dist/tex/latex/animate/animate.sty914
-rw-r--r--Master/tlpkg/tlpsrc/tlperl.win32.tlpsrc2
5 files changed, 635 insertions, 311 deletions
diff --git a/Master/texmf-dist/doc/latex/animate/ChangeLog b/Master/texmf-dist/doc/latex/animate/ChangeLog
index 0d1ceccf40e..9b26fb721a0 100644
--- a/Master/texmf-dist/doc/latex/animate/ChangeLog
+++ b/Master/texmf-dist/doc/latex/animate/ChangeLog
@@ -1,3 +1,8 @@
+2014-12-04
+ * New: option `type=<file ext>' to force animation of image sequence with
+ file name extension <file ext>
+ * Fix: rotated buttons in landscape (package geometry) documents
+
2014-11-27
* Fix: Animations with a particular combination of command options
(poster=last, loop=false) did not play when clicked.
@@ -218,3 +223,6 @@
2008-07-14
* New: \multiframe command for building loops around parameterized
pictures
+
+2007-03-16
+ * New: everything (initial release)
diff --git a/Master/texmf-dist/doc/latex/animate/animate.pdf b/Master/texmf-dist/doc/latex/animate/animate.pdf
index f14f730b9b0..3711841c7e2 100644
--- a/Master/texmf-dist/doc/latex/animate/animate.pdf
+++ b/Master/texmf-dist/doc/latex/animate/animate.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/animate/animate.tex b/Master/texmf-dist/doc/latex/animate/animate.tex
index aae75b95f3a..c8fe9956c7c 100644
--- a/Master/texmf-dist/doc/latex/animate/animate.tex
+++ b/Master/texmf-dist/doc/latex/animate/animate.tex
@@ -80,6 +80,7 @@
}
\hyphenation{Ja-va-Script}
+
\begin{document}
\title{The {\sffamily animate} Package}
\begingroup
@@ -156,6 +157,7 @@ buttonbg=<colour>
buttonfg=<colour>
step
nomouse
+type=<file ext>
method=icon | widget | ocg
poster[=first | <num> | last | none]
\end{verbatim}
@@ -205,17 +207,19 @@ By default, the animation is built frame by frame in the order of inclusion of t
\myparagraph*{Sets of graphics files}
All files of the sequence should exist and be consecutively numbered. (Exception to this rule is allowed in connection with the `\verb+every+' option, see below.) {\tt <file base\-name>} is the leftmost part of the file name that is common to all members of the sequence. \verb+<first>+ is the number of the first and \verb+<last>+ the number of the last file in the set. If \verb+<first>+ is greater than \verb+<last>+, files are embedded in reverse order. File names may be simply numbered, such as $0\dots99$. If there are leading zeros, make sure that all file numbers have the same number of digits, such as $0000\dots0099$, and that the \verb+<first>+ and \verb+<last>+ arguments are filled in accordingly.
-Command \verb+\graphicspath{}+ from the `graphicx' package can be used to specify directories to be browsed for graphics files.
-
-No file name extension may be specified as a parameter. The possible file formats depend on the output driver being used. In the case of \LaTeX{}+\verb+dvips+, files with the `eps' extension are at first searched for, followed by `mps' (\MP-generated Postscript) and `ps'. With pdf\LaTeX{} and Lua\LaTeX{} the searching order is: (1)~`pdf', (2)~`mps', (3)~`png', (4)~`jpg', (5)~`jpeg', (6)~`jbig2', (7)~`jb2', (8)~`jp2'\footnotemark[1], (9)~`j2k'\footnotemark[1], (10)~`jpx'\footnotemark[1]\footnotetext[1]{Only Lua\LaTeX{} currently supports JPEG2000.} and with \XeLaTeX{} or \LaTeX{}+\verb+dvipdfmx+: (1)~`pdf', (2)~`mps', (3)~`eps', (4)~`ps', (5)~`png', (6)~`jpg', (7)~`jpeg', (8)~`bmp'. That is, files capable of storing vector graphics are found first. Make sure that all file names have \emph{lower case} extensions.
-
For example, given the sequence `frame\_5.png' through `frame\_50.png' from a possibly larger set that shall be used to build an animation running at 12 frames per second, the correct inclusion command would read
\begin{verbatim}
\animategraphics{12}{frame_}{5}{50}
\end{verbatim}
+The possible file formats depend on the output driver being used. In the case of \LaTeX{}+\verb+dvips+, files with the `eps' extension are at first searched for, followed by `mps' (\MP-generated Postscript) and `ps'. With pdf\LaTeX{} and Lua\LaTeX{} the searching order is: (1)~`pdf', (2)~`mps', (3)~`png', (4)~`jpg', (5)~`jpeg', (6)~`jbig2', (7)~`jb2', (8)~`jp2'\footnotemark[1], (9)~`j2k'\footnotemark[1], (10)~`jpx'\footnotemark[1]\footnotetext[1]{Only Lua\LaTeX{} currently supports JPEG2000.} and with \XeLaTeX{} or \LaTeX{}+\verb+dvipdfmx+: (1)~`pdf', (2)~`mps', (3)~`eps', (4)~`ps', (5)~`png', (6)~`jpg', (7)~`jpeg', (8)~`bmp'. That is, files capable of storing vector graphics are found first. Make sure that all file names have \emph{lower case} extensions.
+
+This searching procedure can be skipped thanks to the package and command option `\verb+type=<file ext>+'. It enforces the embedding of files with the given file name extension \verb+<file ext>+.
+
+Command \verb+\graphicspath{}+ from the `graphicx' package can be used to specify directories to be browsed for graphics files.
+
\myparagraph*{Multipage PDF {\rm(pdf\LaTeX, \XeLaTeX)} and JBIG2 {\rm(pdf\LaTeX)} inclusion}
-If the file `\verb+<file basename>+.(pdf|jbig2|jb2)' exists (again, no file name extension may be specified), it is taken as a multipage document where each page represents one frame of the animation. In this case, the last two arguments, \verb+<first>+ \& \verb+<last>+, are interpreted differently from above; they specify a zero-based range of pages to be included in the animation. Either or both of them may be omitted, `\verb+{}+', in which case they default to $0$ and $n-1$, where $n$ is the total number of available pages. Arguments that fall outside this range are automatically corrected to the actual limits. If \verb+<first>+ is greater than \verb+<last>+, pages are embedded in reverse order.
+If the file `\verb+<file basename>+.(pdf|jbig2|jb2)' exists, it is taken as a multipage document where each page represents one frame of the animation. In this case, the last two arguments, \verb+<first>+ \& \verb+<last>+, are interpreted differently from above; they specify a zero-based range of pages to be included in the animation. Either or both of them may be omitted, `\verb+{}+', in which case they default to $0$ and $n-1$, where $n$ is the total number of available pages. Arguments that fall outside this range are automatically corrected to the actual limits. If \verb+<first>+ is greater than \verb+<last>+, pages are embedded in reverse order. Again, option `\verb+type=<file ext>+' can be used to enforce a particular file type.
For example, the line
\begin{verbatim}
@@ -231,6 +235,10 @@ label=<label text>
\end{verbatim}
The animation is given a label, \verb+<label text>+, which should be unique. Labelling an animation enables its JavaScript programming interface by defining \verb+anim['<label text>']+, which is a JavaScript reference to the animation object. The animation object provides a number of properties and methods that can be used for controlling the animation playback from within user defined JavaScript. For details, see Sect.~\ref{sect:api}.
\begin{verbatim}
+type=[<file ext>]
+\end{verbatim}
+Overrides the searching procedure for graphics files explained in the previous section and forces files with extension \verb+<file ext>+ to be used. Given with an empty argument as in `\verb+type=+', this option locally reinstates the default searching procedure if it was globally disabled through the package option.
+\begin{verbatim}
poster[=first | <num> | last | none]
\end{verbatim}
Specifies which frame to display and print if the animation is not activated. The first frame is shown by default. Thus `\verb+poster+' or `\verb+poster=first+' need not be explicitly set. A frame number \verb+<num>+ may as well be given; \verb+<num>+ is zero-based, that is, the first frame has number `0'.
@@ -366,7 +374,7 @@ The letter `\verb+c+', if put into \verb+<transparencies>+, clears an animation
\myparagraph*{Timeline example with a single animation stack}
Table~\ref{tab:single} is an example of a single-stack animation. It lists the contents of a timeline file together with the resulting stack of transparencies. Note how the stack is strictly built from the bottom up as transparency specifications are read from left to right and line by line from the timeline file. In frame No. 4, the stack is first cleared before new transparencies are deposited on it. Also note that the stack is viewed from above and transparencies in higher stack position overprint the lower ones.
-\begin{table}[t]\centering
+\begin{table}[h]\centering
\caption{Timeline example of a single-stack animation}\label{tab:single}
\begin{tabular}[t]{c|l|c}\hline
frame No. & timeline file & transparency stack\\\hline\hline
@@ -512,7 +520,7 @@ name & description\\\hline\hline
\end{tabularx}
\end{table}
-%\clearpage
+\clearpage
\section{Examples}
\subsection[Animations from sets of files, using `animategraphics' command]{Animations from sets of files, using {\tt \string\animategraphics} command}\label{sect:examples}
Animations in this section are made from graphics files that were prepared with \MP. Run `\verb+mpost --tex=latex+' on the files ending in `.mp' in the `files' directory to generate the graphics files. Both examples make use of the `\verb+timeline+' option to reduce the resulting PDF file size.
diff --git a/Master/texmf-dist/tex/latex/animate/animate.sty b/Master/texmf-dist/tex/latex/animate/animate.sty
index 4a74ebf8010..0c76a2a872e 100644
--- a/Master/texmf-dist/tex/latex/animate/animate.sty
+++ b/Master/texmf-dist/tex/latex/animate/animate.sty
@@ -13,7 +13,7 @@
\NeedsTeXFormat{LaTeX2e}
-\def\@anim@version{2014/11/27}
+\def\@anim@version{2014/12/04}
\ProvidesPackage{animate}
[\@anim@version\space PDF animations from files and inline graphics]
@@ -686,14 +686,14 @@
\@anim@newkey{origin:{@anm@obj\the\@anim@objnum}}{origin@\the\@anim@objnum}%
\special{ps:
gsave
- %keep record of lower left corner coordinates
+ %keep a record of lower left corner coordinates
true setglobal globaldict
/origin@\the\@anim@objnum [currentpoint] cvx put false setglobal
%translate graphics to upper left page corner
\if@anim@powerdot\else%
{%
frame@llx neg frame@ury neg translate
- one@inch@x DVImag div neg one@inch@y DVImag div neg translate%
+ one@inch@x DVImag div neg one@inch@y DVImag div neg translate
}?pdfmark
\fi%
%distill graphics into XObject
@@ -933,274 +933,490 @@
}
%create XObjects of all button faces
-%stroking commands
-\def\@anim@btnend{%
- \@anim@bg\space
- 2.5 w
- 1 J
- 1 j
- \@anim@fg\space
- 10 10 130 130 re
- S
- 10 w
- 45 40 m
- 95 75 l
- 45 110 l
- S
- 0 j
- 105 44 m
- 105 106 l
- S
-}
-\def\@anim@btnstep{%
- \@anim@bg\space
- 2.5 w
- 1 J
- 1 j
- \@anim@fg\space
- 10 10 130 130 re
- S
- 10 w
- 50 40 m
- 100 75 l
- 50 110 l
- S
-}
-\def\@anim@btnplay{%
- \@anim@bg\space
- 2.5 w
- 1 J
- 1 j
- \@anim@fg\space
- 10 10 130 130 re
- S
- 10 w
- 50 40 m
- 50 110 l
- 100 75 l
- h
- S
-}
-\def\@anim@btnpause{%
- \@anim@bg\space
- 2.5 w
- 1 j
- \@anim@fg\space
- 0 10 m
- 140 10 l
- 140 140 l
- 0 140 l
- S
- 20 w
- 22 40 m
- 22 110 l
- S
-}
-\def\@anim@btnminus{%
- \@anim@bg\space
- 2.5 w
- 1 J
- 1 j
- \@anim@fg\space
- 10 10 130 130 re
- S
- 10 w
- 0 J
- 40 75 m
- 110 75 l
- S
-}
-\def\@anim@btnplus{%
- \@anim@bg\space
- 2.5 w
- 1 J
- 1 j
- \@anim@fg\space
- 10 10 130 130 re
- S
- 10 w
- 0 J
- 40 75 m
- 110 75 l
- 75 40 m
- 75 110 l
- S
-}
-\def\@anim@btnreset{%
- \@anim@bg\space
- 2.5 w
- 1 J
- 1 j
- \@anim@fg\space
- 10 10 130 130 re
- S
- 10 w
- 75 40 m
- 75 110 l
- S
- \@anim@@@fg\space
- 35 50 m
- 70 75 l
- 35 100 l
- f
- 115 50 m
- 80 75 l
- 115 100 l
- f
- 2 J
- 0 j
- 30 75 m
- 35 75 l
- 120 75 m
- 115 75 l
- S
-}
-\def\@anim@makebuttons#1{%
- \@anim@xbutton{EndLeft}{%
- q -0.1 0 0 0.1 15 0 cm
- \@anim@btnend\space Q%
- }{#1}%
- \@anim@xbutton{EndRight}{%
- q 0.1 0 0 0.1 0 0 cm
- \@anim@btnend\space Q%
- }{#1}%
- \@anim@xbutton{Minus}{%
- q 0.1 0 0 0.1 0 0 cm
- \@anim@btnminus\space Q%
- }{#1}%
- \@anim@xbutton{PauseLeft}{%
- q -0.1 0 0 0.1 15 0 cm
- \@anim@btnpause\space Q%
- }{#1}%
- \@anim@xbutton{PauseRight}{%
- q 0.1 0 0 0.1 0 0 cm
- \@anim@btnpause\space Q%
- }{#1}%
- \@anim@xbutton{PlayLeft}{%
- q -0.1 0 0 0.1 15 0 cm
- \@anim@btnplay\space Q%
- }{#1}%
- \@anim@xbutton{PlayRight}{%
- q 0.1 0 0 0.1 0 0 cm
- \@anim@btnplay\space Q%
- }{#1}%
- \@anim@xbutton{Plus}{%
- q 0.1 0 0 0.1 0 0 cm
- \@anim@btnplus\space Q%
- }{#1}%
- \@anim@xbutton{Reset}{%
- q 0.1 0 0 0.1 0 0 cm
- \@anim@btnreset\space Q%
- }{#1}%
- \@anim@xbutton{StepLeft}{%
- q -0.1 0 0 0.1 15 0 cm
- \@anim@btnstep\space Q%
- }{#1}%
- \@anim@xbutton{StepRight}{%
- q 0.1 0 0 0.1 0 0 cm
- \@anim@btnstep\space Q%
- }{#1}%
-}
-%XObject creation
-\def\@anim@xbutton#1#2#3{% #1 name, #2 stroking commands, #3 @anim@num
- \@anim@streamobj{/Type/XObject/Subtype/Form/BBox [0 0 15 15]}{#2}%
- \@anim@newkey{btn#1:#3}{\@anim@lastobj}%
-}
+\if@anim@dvips
+ %stroking commands
+ \def\@anim@btnend{%
+ \@anim@bg\space
+ \@anim@fg\space
+ 0.25 setlinewidth
+ 1 setlinecap
+ 1 setlinejoin
+ 1 1 moveto
+ 14 1 lineto
+ 14 14 lineto
+ 1 14 lineto
+ closepath
+ stroke
+ 1 setlinewidth
+ 4.5 4 moveto
+ 9.5 7.5 lineto
+ 4.5 11 lineto
+ stroke
+ 0 setlinejoin
+ 10.5 4.4 moveto
+ 10.5 10.6 lineto
+ stroke
+ }
+ \def\@anim@btnstep{%
+ \@anim@bg\space
+ \@anim@fg\space
+ 0.25 setlinewidth
+ 1 setlinecap
+ 1 setlinejoin
+ 1 1 moveto
+ 14 1 lineto
+ 14 14 lineto
+ 1 14 lineto
+ closepath
+ stroke
+ 1 setlinewidth
+ 5 4 moveto
+ 10 7.5 lineto
+ 5 11 lineto
+ stroke
+ }
+ \def\@anim@btnplay{%
+ \@anim@bg\space
+ \@anim@fg\space
+ 0.25 setlinewidth
+ 1 setlinecap
+ 1 setlinejoin
+ 1 1 moveto
+ 14 1 lineto
+ 14 14 lineto
+ 1 14 lineto
+ closepath
+ stroke
+ 1 setlinewidth
+ 5 4 moveto
+ 5 11 lineto
+ 10 7.5 lineto
+ closepath
+ stroke
+ }
+ \def\@anim@btnpause{%
+ \@anim@bg\space
+ \@anim@fg\space
+ 0.25 setlinewidth
+ 0 setlinecap
+ 1 setlinejoin
+ 0 1 moveto
+ 14 1 lineto
+ 14 14 lineto
+ 0 14 lineto
+ stroke
+ 2 setlinewidth
+ 2.2 4 moveto
+ 2.2 11 lineto
+ stroke
+ }
+ \def\@anim@btnminus{%
+ \@anim@bg\space
+ \@anim@fg\space
+ 0.25 setlinewidth
+ 1 setlinecap
+ 1 setlinejoin
+ 1 1 moveto
+ 14 1 lineto
+ 14 14 lineto
+ 1 14 lineto
+ closepath
+ stroke
+ 1.0 setlinewidth
+ 0 setlinecap
+ 4 7.5 moveto
+ 11 7.5 lineto
+ stroke
+ }
+ \def\@anim@btnplus{%
+ \@anim@bg\space
+ \@anim@fg\space
+ 0.25 setlinewidth
+ 1 setlinecap
+ 1 setlinejoin
+ 1 1 moveto
+ 14 1 lineto
+ 14 14 lineto
+ 1 14 lineto
+ closepath
+ stroke
+ 1.0 setlinewidth
+ 0 setlinecap
+ 4 7.5 moveto
+ 11 7.5 lineto
+ 7.5 4 moveto
+ 7.5 11 lineto
+ stroke
+ }
+ \def\@anim@btnreset{%
+ \@anim@bg\space
+ \@anim@fg\space
+ 0.25 setlinewidth
+ 1 setlinecap
+ 1 setlinejoin
+ 1 1 moveto
+ 14 1 lineto
+ 14 14 lineto
+ 1 14 lineto
+ closepath
+ stroke
+ 1 setlinewidth
+ 7.5 4 moveto
+ 7.5 11 lineto
+ stroke
+ 0 setlinejoin
+ 3.5 5 moveto
+ 7 7.5 lineto
+ 3.5 10 lineto
+ closepath
+ fill
+ 11.5 5 moveto
+ 8 7.5 lineto
+ 11.5 10 lineto
+ closepath
+ fill
+ 1 setlinewidth
+ 2 setlinecap
+ 3 7.5 moveto
+ 3.5 7.5 lineto
+ 12 7.5 moveto
+ 11.5 7.5 lineto
+ stroke
+ }
+ \def\@anim@makebuttons#1{% #1: @anim@num
+ \@anim@xbutton{EndLeft}{[-1 0 0 1 15 0] concat \@anim@btnend}{#1}%
+ \@anim@xbutton{EndRight}{\@anim@btnend}{#1}%
+ \@anim@xbutton{Minus}{\@anim@btnminus}{#1}%
+ \@anim@xbutton{PauseLeft}{[-1 0 0 1 15 0] concat \@anim@btnpause}{#1}%
+ \@anim@xbutton{PauseRight}{\@anim@btnpause}{#1}%
+ \@anim@xbutton{PlayLeft}{[-1 0 0 1 15 0] concat \@anim@btnplay}{#1}%
+ \@anim@xbutton{PlayRight}{\@anim@btnplay}{#1}%
+ \@anim@xbutton{Plus}{\@anim@btnplus}{#1}%
+ \@anim@xbutton{Reset}{\@anim@btnreset}{#1}%
+ \@anim@xbutton{StepLeft}{[-1 0 0 1 15 0] concat \@anim@btnstep}{#1}%
+ \@anim@xbutton{StepRight}{\@anim@btnstep}{#1}%
+ }
+ \def\@anim@xbutton#1#2#3{% #1: name; #2: stroking commands, #3 @anim@num
+ \special{ps:
+ gsave [1 0 0 1 0 0] setmatrix
+ mark
+ /_objdef {@anm@obj\the\@anim@objnum}
+ /BBox [0 0 15 15]
+ /BP pdfmark
+ {%
+ %landscape mode (powerdot, geometry /w landscape option)
+ isls{%
+ [0 -1 1 0 0 15] concat % rotate by 270 degrees
+ [-1 0 0 1 15 0] concat% flip around vertical axis
+ }if
+ #2
+ }?pdfmark mark /EP pdfmark
+ grestore
+ }%
+ \xdef\@anim@lastobj{{@anm@obj\the\@anim@objnum}}%
+ \global\advance\@anim@objnum by \@ne%
+ \@anim@newkey{btn#1:#3}{\@anim@lastobj}%
+ }
+\else %pdftex/dvipdfmx/xetex
+ %stroking commands
+ \def\@anim@btnend{%
+ \@anim@bg\space
+ 2.5 w
+ 1 J
+ 1 j
+ \@anim@fg\space
+ 10 10 130 130 re
+ S
+ 10 w
+ 45 40 m
+ 95 75 l
+ 45 110 l
+ S
+ 0 j
+ 105 44 m
+ 105 106 l
+ S
+ }
+ \def\@anim@btnstep{%
+ \@anim@bg\space
+ 2.5 w
+ 1 J
+ 1 j
+ \@anim@fg\space
+ 10 10 130 130 re
+ S
+ 10 w
+ 50 40 m
+ 100 75 l
+ 50 110 l
+ S
+ }
+ \def\@anim@btnplay{%
+ \@anim@bg\space
+ 2.5 w
+ 1 J
+ 1 j
+ \@anim@fg\space
+ 10 10 130 130 re
+ S
+ 10 w
+ 50 40 m
+ 50 110 l
+ 100 75 l
+ h
+ S
+ }
+ \def\@anim@btnpause{%
+ \@anim@bg\space
+ 2.5 w
+ 1 j
+ \@anim@fg\space
+ 0 10 m
+ 140 10 l
+ 140 140 l
+ 0 140 l
+ S
+ 20 w
+ 22 40 m
+ 22 110 l
+ S
+ }
+ \def\@anim@btnminus{%
+ \@anim@bg\space
+ 2.5 w
+ 1 J
+ 1 j
+ \@anim@fg\space
+ 10 10 130 130 re
+ S
+ 10 w
+ 0 J
+ 40 75 m
+ 110 75 l
+ S
+ }
+ \def\@anim@btnplus{%
+ \@anim@bg\space
+ 2.5 w
+ 1 J
+ 1 j
+ \@anim@fg\space
+ 10 10 130 130 re
+ S
+ 10 w
+ 0 J
+ 40 75 m
+ 110 75 l
+ 75 40 m
+ 75 110 l
+ S
+ }
+ \def\@anim@btnreset{%
+ \@anim@bg\space
+ 2.5 w
+ 1 J
+ 1 j
+ \@anim@fg\space
+ 10 10 130 130 re
+ S
+ 10 w
+ 75 40 m
+ 75 110 l
+ S
+ \@anim@@@fg\space
+ 35 50 m
+ 70 75 l
+ 35 100 l
+ f
+ 115 50 m
+ 80 75 l
+ 115 100 l
+ f
+ 2 J
+ 0 j
+ 30 75 m
+ 35 75 l
+ 120 75 m
+ 115 75 l
+ S
+ }
+ \def\@anim@makebuttons#1{%
+ \@anim@xbutton{EndLeft}{%
+ q -0.1 0 0 0.1 15 0 cm
+ \@anim@btnend\space Q%
+ }{#1}%
+ \@anim@xbutton{EndRight}{%
+ q 0.1 0 0 0.1 0 0 cm
+ \@anim@btnend\space Q%
+ }{#1}%
+ \@anim@xbutton{Minus}{%
+ q 0.1 0 0 0.1 0 0 cm
+ \@anim@btnminus\space Q%
+ }{#1}%
+ \@anim@xbutton{PauseLeft}{%
+ q -0.1 0 0 0.1 15 0 cm
+ \@anim@btnpause\space Q%
+ }{#1}%
+ \@anim@xbutton{PauseRight}{%
+ q 0.1 0 0 0.1 0 0 cm
+ \@anim@btnpause\space Q%
+ }{#1}%
+ \@anim@xbutton{PlayLeft}{%
+ q -0.1 0 0 0.1 15 0 cm
+ \@anim@btnplay\space Q%
+ }{#1}%
+ \@anim@xbutton{PlayRight}{%
+ q 0.1 0 0 0.1 0 0 cm
+ \@anim@btnplay\space Q%
+ }{#1}%
+ \@anim@xbutton{Plus}{%
+ q 0.1 0 0 0.1 0 0 cm
+ \@anim@btnplus\space Q%
+ }{#1}%
+ \@anim@xbutton{Reset}{%
+ q 0.1 0 0 0.1 0 0 cm
+ \@anim@btnreset\space Q%
+ }{#1}%
+ \@anim@xbutton{StepLeft}{%
+ q -0.1 0 0 0.1 15 0 cm
+ \@anim@btnstep\space Q%
+ }{#1}%
+ \@anim@xbutton{StepRight}{%
+ q 0.1 0 0 0.1 0 0 cm
+ \@anim@btnstep\space Q%
+ }{#1}%
+ }
+ %XObject creation
+ \def\@anim@xbutton#1#2#3{% #1 name, #2 stroking commands, #3 @anim@num
+ \@anim@streamobj{/Type/XObject/Subtype/Form/BBox [0 0 15 15]}{#2}%
+ \@anim@newkey{btn#1:#3}{\@anim@lastobj}%
+ }
+\fi
%determines file type of the sequence
\def\zap@finalspace#1 \@nil{#1}
\ifpdf
- \def\@anim@getpath#1{%
- \gdef\@anim@ext{.pdf}% we start with `pdf'
- \IfFileExists{#1\@anim@ext}{}{%
- \gdef\@anim@ext{.mps}%
- \IfFileExists{#1\@anim@ext}{}{%
- \gdef\@anim@ext{.png}%
- \IfFileExists{#1\@anim@ext}{}{%
- \gdef\@anim@ext{.jpg}%
- \IfFileExists{#1\@anim@ext}{}{%
- \gdef\@anim@ext{.jpeg}%
- \IfFileExists{#1\@anim@ext}{}{%
- \gdef\@anim@ext{.jbig2}%
- \IfFileExists{#1\@anim@ext}{}{%
- \gdef\@anim@ext{.jb2}%
- \IfFileExists{#1\@anim@ext}{}{%
- \gdef\@anim@ext{.jp2}%
- \IfFileExists{#1\@anim@ext}{}{%
- \gdef\@anim@ext{.j2k}%
- \IfFileExists{#1\@anim@ext}{}{%
- \gdef\@anim@ext{.jpx}%
- \IfFileExists{#1\@anim@ext}{}{%
- \PackageError{animate}{%
- None of the files\MessageBreak%
- `#1.pdf',\MessageBreak%
- `#1.mps',\MessageBreak%
- `#1.png',\MessageBreak%
- `#1.jpg',\MessageBreak%
- `#1.jpeg',\MessageBreak%
- `#1.jbig2',\MessageBreak%
- `#1.jb2',\MessageBreak%
- `#1.jp2',\MessageBreak%
- `#1.j2k' or\MessageBreak%
- `#1.jpx',\MessageBreak%
- could be found.\MessageBreak%
- Wrong file type? Mis-spelled file name?%
- }{}%
- }}}}}}}}}}%
- \xdef\@anim@pathtofile{\expandafter\zap@finalspace\@filef@und\@nil}%
- }%
-\else
- \if@anim@dvipdfmx %XeLaTeX, dvipdfmx
- \def\@anim@getpath#1{%
+ \def\@anim@getpath#1#2{% #2: empty | user provided file extension
+ \ifx\@empty#2\@empty%
\gdef\@anim@ext{.pdf}% we start with `pdf'
\IfFileExists{#1\@anim@ext}{}{%
\gdef\@anim@ext{.mps}%
\IfFileExists{#1\@anim@ext}{}{%
- \gdef\@anim@ext{.eps}%
- \IfFileExists{#1\@anim@ext}{}{%
- \gdef\@anim@ext{.ps}%
- \IfFileExists{#1\@anim@ext}{}{%
\gdef\@anim@ext{.png}%
\IfFileExists{#1\@anim@ext}{}{%
\gdef\@anim@ext{.jpg}%
\IfFileExists{#1\@anim@ext}{}{%
\gdef\@anim@ext{.jpeg}%
\IfFileExists{#1\@anim@ext}{}{%
- \gdef\@anim@ext{.bmp}%
+ \gdef\@anim@ext{.jbig2}%
+ \IfFileExists{#1\@anim@ext}{}{%
+ \gdef\@anim@ext{.jb2}%
+ \IfFileExists{#1\@anim@ext}{}{%
+ \gdef\@anim@ext{.jp2}%
+ \IfFileExists{#1\@anim@ext}{}{%
+ \gdef\@anim@ext{.j2k}%
+ \IfFileExists{#1\@anim@ext}{}{%
+ \gdef\@anim@ext{.jpx}%
\IfFileExists{#1\@anim@ext}{}{%
\PackageError{animate}{%
None of the files\MessageBreak%
`#1.pdf',\MessageBreak%
`#1.mps',\MessageBreak%
- `#1.eps',\MessageBreak%
- `#1.ps',\MessageBreak%
`#1.png',\MessageBreak%
`#1.jpg',\MessageBreak%
- `#1.jpeg' or\MessageBreak%
- `#1.bmp'\MessageBreak%
+ `#1.jpeg',\MessageBreak%
+ `#1.jbig2',\MessageBreak%
+ `#1.jb2',\MessageBreak%
+ `#1.jp2',\MessageBreak%
+ `#1.j2k' or\MessageBreak%
+ `#1.jpx',\MessageBreak%
could be found.\MessageBreak%
Wrong file type? Mis-spelled file name?%
}{}%
- }}}}}}}}%
- \xdef\@anim@pathtofile{\expandafter\zap@finalspace\@filef@und\@nil}%
- }%
- \else %dvips
- \def\@anim@getpath#1{%
- \gdef\@anim@ext{.eps}% we start with `eps'
- \IfFileExists{#1\@anim@ext}{}{%
- \gdef\@anim@ext{.mps}%
- \IfFileExists{#1\@anim@ext}{}{%
- \gdef\@anim@ext{.ps}%
+ }}}}}}}}}}%
+ \else%
+ \gdef\@anim@ext{.#2}%
\IfFileExists{#1\@anim@ext}{}{%
\PackageError{animate}{%
- None of the files\MessageBreak%
- `#1.eps',\MessageBreak%
- `#1.mps' or\MessageBreak%
- `#1.ps'\MessageBreak%
- could be found.\MessageBreak%
+ File `#1.#2' could not be found.\MessageBreak%
Wrong file type? Mis-spelled file name?%
}{}%
- }}}%
+ }%
+ \fi%
+ \xdef\@anim@pathtofile{\expandafter\zap@finalspace\@filef@und\@nil}%
+ }%
+\else
+ \if@anim@dvipdfmx %XeLaTeX, dvipdfmx
+ \def\@anim@getpath#1#2{%
+ \ifx\@empty#2\@empty%
+ \gdef\@anim@ext{.pdf}% we start with `pdf'
+ \IfFileExists{#1\@anim@ext}{}{%
+ \gdef\@anim@ext{.mps}%
+ \IfFileExists{#1\@anim@ext}{}{%
+ \gdef\@anim@ext{.eps}%
+ \IfFileExists{#1\@anim@ext}{}{%
+ \gdef\@anim@ext{.ps}%
+ \IfFileExists{#1\@anim@ext}{}{%
+ \gdef\@anim@ext{.png}%
+ \IfFileExists{#1\@anim@ext}{}{%
+ \gdef\@anim@ext{.jpg}%
+ \IfFileExists{#1\@anim@ext}{}{%
+ \gdef\@anim@ext{.jpeg}%
+ \IfFileExists{#1\@anim@ext}{}{%
+ \gdef\@anim@ext{.bmp}%
+ \IfFileExists{#1\@anim@ext}{}{%
+ \PackageError{animate}{%
+ None of the files\MessageBreak%
+ `#1.pdf',\MessageBreak%
+ `#1.mps',\MessageBreak%
+ `#1.eps',\MessageBreak%
+ `#1.ps',\MessageBreak%
+ `#1.png',\MessageBreak%
+ `#1.jpg',\MessageBreak%
+ `#1.jpeg' or\MessageBreak%
+ `#1.bmp'\MessageBreak%
+ could be found.\MessageBreak%
+ Wrong file type? Mis-spelled file name?%
+ }{}%
+ }}}}}}}}%
+ \else%
+ \gdef\@anim@ext{.#2}%
+ \IfFileExists{#1\@anim@ext}{}{%
+ \PackageError{animate}{%
+ File `#1.#2' could not be found.\MessageBreak%
+ Wrong file type? Mis-spelled file name?%
+ }{}%
+ }%
+ \fi%
+ \xdef\@anim@pathtofile{\expandafter\zap@finalspace\@filef@und\@nil}%
+ }%
+ \else %dvips
+ \def\@anim@getpath#1#2{%
+ \ifx\@empty#2\@empty%
+ \gdef\@anim@ext{.eps}% we start with `eps'
+ \IfFileExists{#1\@anim@ext}{}{%
+ \gdef\@anim@ext{.mps}%
+ \IfFileExists{#1\@anim@ext}{}{%
+ \gdef\@anim@ext{.ps}%
+ \IfFileExists{#1\@anim@ext}{}{%
+ \PackageError{animate}{%
+ None of the files\MessageBreak%
+ `#1.eps',\MessageBreak%
+ `#1.mps' or\MessageBreak%
+ `#1.ps'\MessageBreak%
+ could be found.\MessageBreak%
+ Wrong file type? Mis-spelled file name?%
+ }{}%
+ }}}%
+ \else%
+ \gdef\@anim@ext{.#2}%
+ \IfFileExists{#1\@anim@ext}{}{%
+ \PackageError{animate}{%
+ File `#1.#2' could not be found.\MessageBreak%
+ Wrong file type? Mis-spelled file name?%
+ }{}%
+ }%
+ \fi%
\xdef\@anim@pathtofile{\expandafter\zap@finalspace\@filef@und\@nil}%
}%
\fi
@@ -1279,21 +1495,28 @@
\ifpdf
%detects multipage PDF and corrects user supplied page range
- \def\@anim@checkmultipage#1{% #1: file base name
- \IfFileExists{#1.pdf}{%
- \setboolean{@anim@multipage}{true}%
- \gdef\@anim@ext{.pdf}%
- }{%
- \IfFileExists{#1.jbig2}{%
+ \def\@anim@checkmultipage#1#2{% #1: file base name, #2 user provided file ext
+ \ifx\@empty#2\@empty%
+ \IfFileExists{#1.pdf}{%
\setboolean{@anim@multipage}{true}%
- \gdef\@anim@ext{.jbig2}%
+ \gdef\@anim@ext{.pdf}%
}{%
- \IfFileExists{#1.jb2}{%
+ \IfFileExists{#1.jbig2}{%
\setboolean{@anim@multipage}{true}%
- \gdef\@anim@ext{.jb2}%
- }{}%
+ \gdef\@anim@ext{.jbig2}%
+ }{%
+ \IfFileExists{#1.jb2}{%
+ \setboolean{@anim@multipage}{true}%
+ \gdef\@anim@ext{.jb2}%
+ }{}%
+ }%
}%
- }%
+ \else%
+ \IfFileExists{#1.#2}{%
+ \setboolean{@anim@multipage}{true}%
+ \gdef\@anim@ext{.#2}%
+ }{}%
+ \fi%
\if@anim@multipage%
\xdef\@anim@pathtofile{\expandafter\zap@finalspace\@filef@und\@nil}%
\@anim@filebox{\@anim@pathtofile}{1}%
@@ -1326,11 +1549,18 @@
}%
\else
\if@anim@xetex
- \def\@anim@checkmultipage#1{% #1: file base name
- \IfFileExists{#1.pdf}{%
- \setboolean{@anim@multipage}{true}%
- \gdef\@anim@ext{.pdf}%
- }{}%
+ \def\@anim@checkmultipage#1#2{%
+ \ifx\@empty#2\@empty%
+ \IfFileExists{#1.pdf}{%
+ \setboolean{@anim@multipage}{true}%
+ \gdef\@anim@ext{.pdf}%
+ }{}%
+ \else%
+ \IfFileExists{#1.#2}{%
+ \setboolean{@anim@multipage}{true}%
+ \gdef\@anim@ext{.#2}%
+ }{}%
+ \fi%
\if@anim@multipage%
\xdef\@anim@pathtofile{\expandafter\zap@finalspace\@filef@und\@nil}%
\@anim@curframe=\XeTeXpdfpagecount "\@anim@pathtofile"%
@@ -1415,7 +1645,7 @@
\def\@anim@first{#4}%
\def\@anim@last{#5}%
%
- \@anim@checkmultipage{\@anim@base}%test for multipage file
+ \@anim@checkmultipage{\@anim@base}{\@anim@ftype}%test for multipage file
\if@anim@multipage\else% cope with wrong user input
\ifthenelse{\equal{#4}{}\OR\equal{#5}{}}{%
\PackageError{animate}{%
@@ -1444,7 +1674,7 @@
\@anim@filebox{\@anim@pathtofile}{\@anim@first}%
\else%
%get file name extension
- \@anim@getpath{\@anim@base\@anim@first}%
+ \@anim@getpath{\@anim@base\@anim@first}{\@anim@ftype}%
\@anim@filebox{\@anim@pathtofile}{1}%
\fi%
\@anim@scale{\@anim@box}%
@@ -1478,7 +1708,7 @@
%get path to current file end its extension
\@anim@getpath{%
\@anim@base\@anim@pad{\@anim@numtemplate}{\the\@anim@curframe}%
- }%
+ }{\@anim@ftype}%
%embed graphics
\@anim@ximage{\the\@anim@num}{\the\@anim@curframe@zb}{%
\@anim@pathtofile}{1}%
@@ -2482,24 +2712,50 @@
\@anim@colours#2\@nil%
}%
}
-\def\@anim@@@bg{%
- 0 j
- 0 0 150 150 re
- f%
-}
+\if@anim@dvips %background frame of buttons
+ \def\@anim@@@bg{%
+ 0 setlinejoin
+ 0 0 moveto
+ 15 0 lineto
+ 15 15 lineto
+ 0 15 lineto
+ closepath
+ fill%
+ }
+\else% pdftex and dvipdfmx
+ \def\@anim@@@bg{%
+ 0 j
+ 0 0 150 150 re
+ f%
+ }
+\fi
\define@key{anim@user}{buttonbg}{%background colour of buttons
\global\@anim@tmpcnt=\@ne%
\gdef\@anim@colour{}%
\@anim@colours#1:\@nil%
\xdef\@anim@bgcolour{\@anim@colour}%
- \ifnum\@anim@tmpcnt=\@ne%
- \xdef\@anim@bg{\@anim@colour\space g\space\@anim@@@bg}%
- \else%
- \ifnum\@anim@tmpcnt=3\relax%
- \xdef\@anim@bg{\@anim@colour\space rg\space\@anim@@@bg}%
+ \if@anim@dvips
+ \ifnum\@anim@tmpcnt=\@ne%
+ \xdef\@anim@bg{\@anim@colour\space setgray\space\@anim@@@bg}%
+ \else%
+ \ifnum\@anim@tmpcnt=3\relax%
+ \xdef\@anim@bg{\@anim@colour\space setrgbcolor\space\@anim@@@bg}%
+ \else%
+ \ifnum\@anim@tmpcnt=4\relax%
+ \xdef\@anim@bg{\@anim@colour\space setcmykcolor\space\@anim@@@bg}%
+ \fi%
+ \fi%
+ \fi%
+ \else% pdftex and dvipdfmx
+ \ifnum\@anim@tmpcnt=\@ne%
+ \xdef\@anim@bg{\@anim@colour\space g\space\@anim@@@bg}%
\else%
- \ifnum\@anim@tmpcnt=4\relax%
- \xdef\@anim@bg{\@anim@colour\space k\space\@anim@@@bg}%
+ \ifnum\@anim@tmpcnt=3\relax%
+ \xdef\@anim@bg{\@anim@colour\space rg\space\@anim@@@bg}%
+ \else%
+ \ifnum\@anim@tmpcnt=4\relax%
+ \xdef\@anim@bg{\@anim@colour\space k\space\@anim@@@bg}%
+ \fi%
\fi%
\fi%
\fi%
@@ -2509,17 +2765,31 @@
\gdef\@anim@colour{}%
\@anim@colours#1:\@nil%
\xdef\@anim@fgcolour{\@anim@colour}%
- \ifnum\@anim@tmpcnt=\@ne%
- \xdef\@anim@fg{\@anim@colour\space G}%
- \xdef\@anim@@@fg{\@anim@colour\space g}%
- \else%
- \ifnum\@anim@tmpcnt=3\relax%
- \xdef\@anim@fg{\@anim@colour\space RG}%
- \xdef\@anim@@@fg{\@anim@colour\space rg}%
+ \if@anim@dvips
+ \ifnum\@anim@tmpcnt=\@ne%
+ \xdef\@anim@fg{\@anim@colour\space setgray}%
+ \else%
+ \ifnum\@anim@tmpcnt=3\relax%
+ \xdef\@anim@fg{\@anim@colour\space setrgbcolor}%
+ \else%
+ \ifnum\@anim@tmpcnt=4\relax%
+ \xdef\@anim@fg{\@anim@colour\space setcmykcolor}%
+ \fi%
+ \fi%
+ \fi%
+ \else% pdftex and dvipdfmx
+ \ifnum\@anim@tmpcnt=\@ne%
+ \xdef\@anim@fg{\@anim@colour\space G}%
+ \xdef\@anim@@@fg{\@anim@colour\space g}%
\else%
- \ifnum\@anim@tmpcnt=4\relax%
- \xdef\@anim@fg{\@anim@colour\space K}%
- \xdef\@anim@@@fg{\@anim@colour\space k}%
+ \ifnum\@anim@tmpcnt=3\relax%
+ \xdef\@anim@fg{\@anim@colour\space RG}%
+ \xdef\@anim@@@fg{\@anim@colour\space rg}%
+ \else%
+ \ifnum\@anim@tmpcnt=4\relax%
+ \xdef\@anim@fg{\@anim@colour\space K}%
+ \xdef\@anim@@@fg{\@anim@colour\space k}%
+ \fi%
\fi%
\fi%
\fi%
@@ -2665,6 +2935,8 @@
}{}%
}
+\define@key{anim@user}{type}{\gdef\@anim@ftype{#1}}%
+
%macro to reset macros and booleans
\def\@anim@reset{%
\gdef\@anim@label{}%
@@ -2712,6 +2984,7 @@
\setboolean{@anim@meas}{false}%
\setboolean{@anim@autoplayorresume}{false}%
\setboolean{@anim@morejs}{false}%
+ \xdef\@anim@ftype{\@anim@@ftype}%
}
%package options
@@ -2743,36 +3016,68 @@
\gdef\@anim@colour{}%
\@anim@colours#1:\@nil%
\xdef\@anim@@bgcolour{\@anim@colour}%
- \ifnum\@anim@tmpcnt=\@ne%
- \xdef\@anim@@bg{\@anim@colour\space g\space\@anim@@@bg}%
- \else%
- \ifnum\@anim@tmpcnt=3\relax%
- \xdef\@anim@@bg{\@anim@colour\space rg\space\@anim@@@bg}%
+ \if@anim@dvips
+ \ifnum\@anim@tmpcnt=\@ne%
+ \xdef\@anim@@bg{\@anim@colour\space setgray\space\@anim@@@bg}%
\else%
- \ifnum\@anim@tmpcnt=4\relax%
- \xdef\@anim@@bg{\@anim@colour\space k\space\@anim@@@bg}%
+ \ifnum\@anim@tmpcnt=3\relax%
+ \xdef\@anim@@bg{\@anim@colour\space setrgbcolor\space\@anim@@@bg}%
+ \else%
+ \ifnum\@anim@tmpcnt=4\relax%
+ \xdef\@anim@@bg{\@anim@colour\space setcmykcolor\space\@anim@@@bg}%
+ \fi%
+ \fi%
+ \fi%
+ \else% pdftex and dvipdfmx
+ \ifnum\@anim@tmpcnt=\@ne%
+ \xdef\@anim@@bg{\@anim@colour\space g\space\@anim@@@bg}%
+ \else%
+ \ifnum\@anim@tmpcnt=3\relax%
+ \xdef\@anim@@bg{\@anim@colour\space rg\space\@anim@@@bg}%
+ \else%
+ \ifnum\@anim@tmpcnt=4\relax%
+ \xdef\@anim@@bg{\@anim@colour\space k\space\@anim@@@bg}%
+ \fi%
\fi%
\fi%
\fi%
}
-\def\@anim@@fg{0 G}\def\@anim@@@@fg{0 g}%
+\if@anim@dvips
+ \def\@anim@@fg{0 setgray}\def\@anim@@@@fg{}%
+\else% pdftex and dvipdfmx
+ \def\@anim@@fg{0 G}\def\@anim@@@@fg{0 g}%
+\fi
\def\@anim@@fgcolour{}
\define@key{anim@pkg}{buttonfg}{%stroking colour of buttons
\global\@anim@tmpcnt=\@ne%
\gdef\@anim@colour{}%
\@anim@colours#1:\@nil%
\xdef\@anim@@fgcolour{\@anim@colour}%
- \ifnum\@anim@tmpcnt=\@ne%
- \xdef\@anim@@fg{\@anim@colour\space G}%
- \xdef\@anim@@@@fg{\@anim@colour\space g}%
- \else%
- \ifnum\@anim@tmpcnt=3\relax%
- \xdef\@anim@@fg{\@anim@colour\space RG}%
- \xdef\@anim@@@@fg{\@anim@colour\space rg}%
+ \if@anim@dvips%
+ \ifnum\@anim@tmpcnt=\@ne%
+ \xdef\@anim@@fg{\@anim@colour\space setgray}%
\else%
- \ifnum\@anim@tmpcnt=4\relax%
- \xdef\@anim@@fg{\@anim@colour\space K}%
- \xdef\@anim@@@@fg{\@anim@colour\space k}%
+ \ifnum\@anim@tmpcnt=3\relax%
+ \xdef\@anim@@fg{\@anim@colour\space setrgbcolor}%
+ \else%
+ \ifnum\@anim@tmpcnt=4\relax%
+ \xdef\@anim@@fg{\@anim@colour\space setcmykcolor}%
+ \fi%
+ \fi%
+ \fi%
+ \else% pdftex and dvipdfmx
+ \ifnum\@anim@tmpcnt=\@ne%
+ \xdef\@anim@@fg{\@anim@colour\space G}%
+ \xdef\@anim@@@@fg{\@anim@colour\space g}%
+ \else%
+ \ifnum\@anim@tmpcnt=3\relax%
+ \xdef\@anim@@fg{\@anim@colour\space RG}%
+ \xdef\@anim@@@@fg{\@anim@colour\space rg}%
+ \else%
+ \ifnum\@anim@tmpcnt=4\relax%
+ \xdef\@anim@@fg{\@anim@colour\space K}%
+ \xdef\@anim@@@@fg{\@anim@colour\space k}%
+ \fi%
\fi%
\fi%
\fi%
@@ -2903,6 +3208,10 @@
}{}%
}
+%file type (extension) of graphics files to be embedded
+\def\@anim@@ftype{}%
+\define@key{anim@pkg}{type}{\def\@anim@@ftype{#1}}%
+
% animation method: icon vs. widget vs. ocg based
\define@key{anim@pkg}{method}{%
\ifthenelse{\equal{#1}{icon}}{%
@@ -3320,7 +3629,6 @@
a#1.idx=\ifnum\@anim@method>\z@ a#1.on=\fi\@anim@maxframe;%
\fi%
}%
- %curdoc.dirty=false;%
\if@anim@step\else%
\if@anim@autoplayorresume%
\if@anim@autoresume
diff --git a/Master/tlpkg/tlpsrc/tlperl.win32.tlpsrc b/Master/tlpkg/tlpsrc/tlperl.win32.tlpsrc
index 178f3bbd90c..6f3d319c271 100644
--- a/Master/tlpkg/tlpsrc/tlperl.win32.tlpsrc
+++ b/Master/tlpkg/tlpsrc/tlperl.win32.tlpsrc
@@ -2,7 +2,7 @@ category TLCore
shortdesc Internal Perl for Windows.
longdesc TeX Live includes Perl for Windows, but it is intended only for
longdesc internal use by TeX Live programs, and should not be used
-longdesc as a general system program. Installing your own Perl for
+longdesc as a general system program. Install your own Perl for
longdesc that. See http://perl.org.
runpattern f tlpkg/tlperl/README.TEXLIVE