% !TEX TS-program = LuaLaTeX
% !TEX encoding = UTF-8 Unicode 
% !TEX root = ../../mal-core.tex

\def\maltikz{Ti\textit{k}Z}
\def\balicek#1{\textsf{#1}}
\lstset{emptylines=0}
% basicstyle=\ttfamily\tiny, 

\gdef\mujnazevCS{Vítejte ve světě animací!}
\gdef\mujnazevEN{Welcome to the world of animations!}
\gdef\mujnazevPR{\mujnazevCS}
\gdef\mujnazevDR{\mujnazevEN}
\gdef\mujauthor{Pavel Stříž}

\bonushyper

\nazev{\mujnazevCS}

\nazev{\mujnazevEN}

\author{\mujauthor}

%\Adresa{}

\Email{pavel@striz.cz}

%\Abstrakt{}
%\smallskip
%\KlicovaSlova{}

%\Abstract{}
%\smallskip
%\KeyWords{}



\section{O animacích}

V dobách dřívějších se na webové stránky často dávaly animované gify. Tyto dny se složením jednotlivých obrázků a jejich extrakcí z gifů pomáhá 
ImageMagick či odnož 
GraphicsMagick.

Druhý oblíbený formát je Flash.
Firma Adobe však končí s podporou programu Flash Player v prosinci 2020.
Tedy například tyto animace

\noindent\hfil
\texttt{https://melusine.eu.org/syracuse/metapost/animations/}

\noindent
se nám hned tak v budoucnu nepodaří otevřít.
Na Linuxu lze na přehrání užít program \texttt{gnash}.
%či klash. chce qt4
%či plugin pro prohlížeč Chrome.

\begin{lstlisting}
$ sudo apt install gnash 
\end{lstlisting}
%swfdec-gnome

Co se týče zařazení animace do PDF, tak jednu z možností přes JavaScript zminili J.~Holeček a P.~Sojka v článku 
Animations in pdf\TeX-generated PDF ve sborníku
\textit{\TeX, XML, and Digital Typography}, Springer, 2004, str. 179--191. O rok později to zmiňuje i J.~Gilg v článku PDF-Animationen v časopisu \textit{Die \TeX nische Komödie}~\textbf{4}, 2005, str. 30--37. Podpůrný balíček 
\href{https://ctan.org/pkg/interactiveplot}{\balicek{interactiveplot}} vzniká roku 2014 a vzniká balík
\href{http://www.acrotex.net/}{\balicek{Acro\TeX}}, některé části jsou zadarmo, některé nabízené k prodeji.

Obecně se může animace uložit jako (audio)videostopa. K tomu nám slouží především balíky 
\texttt{ffmpeg}
a
ve starších linuxových distribucích \texttt{avconv}.
\begin{lstlisting}
$ sudo apt install ffmpeg
\end{lstlisting}


Ve světě open source software existuje nespočet nástrojů na přehrání videa, např. 
\texttt{mpv}, \texttt{vlc} a pro Raspberry Pi optimalizovaný
\texttt{omxplayer}.
\begin{lstlisting}
$ sudo apt install mpv vlc-bin
\end{lstlisting}

Zařazení audiovideo stop do pdf %komplexněji 
nabízel \TeX ový balíček 
\balicek{movie15} a nyní jeho nástupce balíček
\balicek{media9}.
Vedle toho umožňují zařadit soubory s Flash animacemi a 3D objekty (PRC, U3D).

%Setkáme se s tímto přístupem v Acro\TeX u i jinde.

\begin{lstlisting}
$ texdoc media9 movie15
\end{lstlisting}



\section{\balicek{animate} v2020-04-25}

Vrcholem v \TeX ovém světě je balíček 
\balicek{animate}, který umožňuje zařadit animace vznikající vrstvením obrázků na sebe, jejich případné časování a výběr kreslených částí, parametr \texttt{timeline} (to je výhodné u rozsáhlých obrázků skrz velikost výsledné animace) a nově pomáhá s generováním animovaných svg. Zkusme si prvně získat animace ve čtyřech základních nástrojích dostupných v \TeX Live u ukázek mimo \TeX Live.



\subsection{\MP{} v2.0}

Dokumentaci získáme přes
\begin{lstlisting}
$ texdoc metapost metafun-p
\end{lstlisting}

Jedna z nejstarších galerií je od Vincent Zoonekynd z roku 1999.

\noindent\hfil\url{http://zoonek.free.fr/LaTeX/Metapost/metapost.html}

\noindent\hfil
%Archivováno na: 
Archiv: \url{https://www.ctan.org/tex-archive/info/metapost/examples}

% další: https://ctan.org/tex-archive/graphics/metapost/contrib/macros

Jednoduchou ukázku vzniku animace přes sérii obrázku nalezneme zde:

%generování série obrázků:
\noindent\hfil
\url{https://adityam.github.io/context-blog/post/metapost-animation}

Pokročilé animace hledejte na:

\noindent\hfil
\url{http://www-math.univ-poitiers.fr/~phan/animations.html}

\noindent\hfil
\url{https://melusine.eu.org/syracuse/metapost/animations}
%featpost, m3d

Díky knihovně \balicek{luamplib} umíme psát kód \MP{}u přímo v \TeX ovém dokumentu, 
%jen u této ukázky s textem se mi to nepodařilo, podezřívám násobnou inicializaci proměnných. Z
zájemce nechť nahlédne na tuto ukázku:

\noindent\hfil
\url{https://melusine.eu.org/syracuse/luatex/luamplibAnimate}

Při problémech s písmy na úrovni \MP{}u se doporučuje užít v preambuli \texttt{prologues:=3}.
%
Ukážeme si animaci vykreslení celého odstavce ze zmíněné 
\href{https://melusine.eu.org/syracuse/metapost/animations}{galerie}.
%bezier+mplib
%kompletní vykreslení odstavce:
Jen se mi nepodařilo ji vygenerovat přes balíček \balicek{luamplib} přímo z \TeX ového dokumentu.

\noindent\hfil
\url{https://melusine.eu.org/syracuse/metapost/animations/mehats}

Soubor \texttt{010.mp} vypadá takto:

\lstinputlisting{zdrojaky/striz-svg/snippets/010.mp}

Pomocný soubor je \texttt{010-metapost.tex}:

\lstinputlisting{zdrojaky/striz-svg/snippets/010-metapost.tex}

Spouštíme:

\begin{lstlisting}
$ mpost 010.mp
$ lualatex 010-metapost.tex
$ lualatex 010-metapost.tex
\end{lstlisting}

\noindent\hfil
\animategraphics[width=0.75\textwidth, controls=all, poster=last]{10}{010-}{000}{124}



\subsection{PStricks v2.97 a nespočet jeho balíčků}

Galerie najdeme na stránkách programu:

\noindent\hfil
\url{http://tug.org/PSTricks/main.cgi?file=packages}

Na animace se častokrát používá pomocný balíček \balicek{multido}, ukázky ze světa PSTricks najdeme přímo v balíčku \balicek{animate}. Z galerií vypíchněme:

\noindent\hfil
\url{https://tug.org/PSTricks/main.cgi?file=Animation/gif/gif}

\noindent\hfil
\url{https://tug.org/PSTricks/main.cgi?file=Animation/basics}

\noindent\hfil
\href{https://melusine.eu.org/syracuse/pstricks/pst-solides3d/animations}{\url{melusine.eu.org/syracuse/pstricks/pst-solides3d/animations}}

\begin{lstlisting}
$ texdoc multido animate
\end{lstlisting}


Zvláštní kategorii tvoří server s blogy \url{http://pstricks.blogspot.com}.
%Nevím, jestli v tomto životě zvládnu projít všechny jejich příspěvky.
%Starší příspěvky: Articles plus anciens Accueil 
Narazil jsem na celou řadu zajímavých balíčků, např. \balicek{xint}. Na serveru je představena celá řada vznikajích a pracovních balíčků. Zmíním vybrané.

Dle vzoru \url{https://geargenerator.com} vzniká balíček \balicek{pst-gears}, v poslední verzi v0.6. Verze pro 2D je ke stažení na:

\noindent\hfil
\href{http://manuel.luque.free.fr/pst-gears-2020/pst-gear-2020-v0.6.zip}{\url{manuel.luque.free.fr/pst-gears-2020/pst-gear-2020-v0.6.zip}}

\noindent\hfil %nebo
\href{https://drive.google.com/drive/folders/1zyXX3w525m99YPM4wkSd3acJRbcCVs4o}{\small\url{drive.google.com/drive/folders/1zyXX3w525m99YPM4wkSd3acJRbcCVs4o}}

Verze pro 3D, \balicek{pst-gearsiiid}, ve verzi v3, je dostupná na:

\noindent\hfil
\url{http://manuel.luque.free.fr/gearsIIID/pst-gearsIIID-v3.zip}

\noindent\hfil
\href{https://drive.google.com/open?id=1sSIVv2rqbFHhCkyX_VvZ5oKLIMXxdrv2}{\url{drive.google.com/open?id=1sSIVv2rqbFHhCkyX_VvZ5oKLIMXxdrv2}}

Zaujal mě i balíček \balicek{pst-crayon}, v3.1, ze kterého si přebereme ukázku.

\noindent\hfil
\href{https://drive.google.com/open?id=0Bw5_RBu0n8-qbkhrVGN1REVRUGs}{\url{https://drive.google.com/open?id=0Bw5_RBu0n8-qbkhrVGN1REVRUGs}}

Soubor \texttt{020.tex} vypadá takto:

\lstinputlisting{zdrojaky/striz-svg/snippets/020.tex}

Pomocný soubor je \texttt{020-pstricks.tex}:

\lstinputlisting{zdrojaky/striz-svg/snippets/020-pstricks.tex}

Spouštíme:

\begin{lstlisting}
$ latex 020.tex
$ dvips 020.dvi
$ ps2pdf 020.ps
$ lualatex 020-pstricks.tex
$ lualatex 020-pstricks.tex
\end{lstlisting}

\noindent\hfil
\animategraphics[width=0.5\textwidth,controls=all,poster=last]{1}{020}{}{}










\subsection{Asymptote v2.65}

V galerie programu \url{https://asymptote.sourceforge.io/} je blok animací:

\noindent\hfil
\url{https://asymptote.sourceforge.io/gallery/animations}

%? http://www.marris.org/asymptote/
Zaujala mě galerie P. %Philippeho 
Ivaldiho na \url{http://asy.marris.fr/asymptote/} s~animacemi:
\url{http://asy.marris.fr/asymptote/animations/index.html}. 
Zde je ještě jedna galerii \url{http://www.piprime.fr/asymptote/} s animacemi:
\url{http://www.piprime.fr/developpeur/asymptote/animation-asy_asy}.

Vybral jsem následují ukázku.

\noindent\hfil
\url{http://www.piprime.fr/1208/animation_asymptote-fig0090/}

Dočasně jsem skrz generování gifů vyhodil bezpečnostní pravidla:

\begin{lstlisting}
$ cd /etc/ImageMagick-6/
$ sudo mv policy.xml policy-old.xml
\end{lstlisting}

%asy -vk 030.asy
Soubor \texttt{030.asy} vypadá takto:

\lstinputlisting{zdrojaky/striz-svg/snippets/030.asy}

Pomocný soubor je \texttt{030-asymptote.tex}:

\lstinputlisting{zdrojaky/striz-svg/snippets/030-asymptote.tex}

Spouštíme:

\begin{lstlisting}
$ asy -vk 030.asy
$ for soubor in `find -iname _030\*.eps`; do
> core=${soubor%.eps}
> echo $soubor; ps2pdf $soubor
> pdfcrop --hires $core; mv $core-crop.pdf $core.pdf
> done
$ lualatex 030-asymptote.tex
$ lualatex 030-asymptote.tex
\end{lstlisting}

\noindent\hfil
\animategraphics[width=0.5\textwidth,controls=all,poster=last]{1}{_030+}{0}{89}





\subsection{\maltikz{} v3.1.5b}

\maltikz{} si získal nemalou oblibu. Má rozsáhlou dokumentaci.

\begin{lstlisting}
$ texdoc tikz
\end{lstlisting}

Největší galerie, tzv. \TeX sample, se skládá z příspěvků mnoha uživatelů. 

\noindent\hfil
\url{http://www.texample.net/tikz/examples/tag/animations/}


Zde jsem vybral některé animace z oblasti matematiky a statistiky.


\noindent\hfil
\href{http://www.texample.net/tikz/examples/sine-and-cosine-functions-animation/}{\url{texample.net/tikz/examples/sine-and-cosine-functions-animation}}

\noindent\hfil
\href{http://www.texample.net/tikz/examples/animated-set-intersection/}{\url{www.texample.net/tikz/examples/animated-set-intersection}}

\noindent\hfil
\href{http://www.texample.net/tikz/examples/animated-definite-integral/}{\url{www.texample.net/tikz/examples/animated-definite-integral}}

\noindent\hfil
\href{http://www.texample.net/tikz/examples/convolution-of-two-functions/}{\url{www.texample.net/tikz/examples/convolution-of-two-functions}}

\noindent\hfil
\href{http://www.texample.net/tikz/examples/animated-distributions/}{\url{www.texample.net/tikz/examples/animated-distributions}}


\maltikz{} samotný však není vhodný nástroj na 3D grafy, neumí skrývat neviděné části, není na to primárně stavěný. S tím do velké míry pomáhá balíček \balicek{pgfplots}, aktuálně ve verzi v1.17, a pomocný balíček \balicek{pgfplotstable}.

\begin{lstlisting}
$ texdoc pgfplots pgfplotstable
\end{lstlisting}


%texample a pgfplots.net
Za zmínku stojí galerie, sourozenec \TeX ample, server \url{http://pgfplots.net}.
Spojil jsem tyto dvě ukázky, 3D graf a animaci.

\noindent\hfil
\href{http://pgfplots.net/tikz/examples/bivariate-normal-distribution/}{\url{pgfplots.net/tikz/examples/bivariate-normal-distribution}}

\noindent\hfil
\href{https://tex.stackexchange.com/questions/266125/animate-a-pgfplots-3d-plot}{\small\url{tex.stackexchange.com/questions/266125/animate-a-pgfplots-3d-plot}}

Soubor \texttt{040.tex} vypadá takto:

\lstinputlisting{zdrojaky/striz-svg/snippets/040.tex}

Pomocný soubor je \texttt{040-tikz.tex}:

\lstinputlisting{zdrojaky/striz-svg/snippets/040-tikz.tex}

Spouštíme:

\begin{lstlisting}
$ lualatex 040.tex
$ lualatex 040.tex
$ pdfcrop --hires 040.pdf
$ mv 040-crop.pdf 040.pdf
$ lualatex 040-tikz.tex
$ lualatex 040-tikz.tex
\end{lstlisting}

\noindent\hfil
\animategraphics[width=0.75\textwidth,controls=all,poster=last]{10}{040}{}{}






\section{Okular v20.04-1: zobrazení animace}

Vznik animace je jedna věc, jak je zobrazit v pdf je věc druhá.

Velký problém ve svobodném světě softwaru je, jak takové pdf s animacemi zobrazit. Adobe zrušilo podporu 
Readeru 
pro Linux v dubnu 2013 u verze 9.5.5 pro 32bitové počítače. 
\href{https://www.foxitsoftware.com/pdf-reader/}{FoxIt Reader} 
sice animace vzniklé z balíčku \balicek{animate} umí zobrazit, ale také jen mimo Linux. Prakticky stejně je na tom prohlížeč 
\href{https://www.pdfxchange.cz/produkty/pdf-xchange-viewer}{PDF-XChange Viewer}.

U odlehčených prohlížečů pdf (xpdfreader, mupdf, okular, evince) jsme neměli šanci. 
%Takže nezbývalo než nastartovat skutečný či virtuálním stroj s Microsoft Windows či Mac OS.
Uživatel Linuxu to musí obcházet: míchání 32 a 64bitových aplikací, Wine, přes virtuální stroj či zobrazením pdf na stroji bez Linuxu.

Poměrně velký mezník znamená Google Summer of Code 2019,
kdy Jo\=ao Netto rozšiřuje Okular a animace vzniklé přes \balicek{animate} lze spustit.

\noindent\hfil
{\small\url{https://community.kde.org/GSoC/2019/StatusReports/Jo%C3%A3oNetto}}

Ani po velkém úsilí, se mi nepodařilo ze zdrojových kódů 
\begin{lstlisting}
$ git clone https://cgit.kde.org/okular.git
\end{lstlisting}
dostat takovou verzi, která by si s tím poradila (Ubuntu 18.04, Ubuntu 20.04, Debian 10). 
Nepodařilo se mi to ani přes 
\begin{lstlisting}
$ sudo snap install --edge okular
\end{lstlisting}

Můj nejlepší odhad je, že je nevhodná verze knihovny programu Poppler.

Ovšem nahlédneme\z li na zařazení nové verze 20.04.1 u distribucí
\url{https://okular.kde.org/download.php}
máme vyhráno.
Nastartujeme\z li Ubuntu 20.10, Arch či Gentoo, vše běží jako po másle přímo z linuxového repozitáře.

\textbf{Opatrně!} 
Je zde však řešení i pro starší distribuce. Na Xubuntu 18.04 jsem
v \texttt{/etc/apt/sources.list} přidal

\noindent\hfil
\texttt{deb http://cz.archive.ubuntu.com/ubuntu/ groovy main universe}

\noindent
a ostatní vstupní body jsem si zakomentoval. Pak jsem si vzal na pomoc nástroj \texttt{aptitude} a po určité době hledání a řešení konfliktních balíčků se mi podařilo nainstalovat. Sledujte však pozorně, co chce nástroj odinstalovat, aby to nebyla většina linuxové distribuce.
%odstranil jsem python-gi
%  sudo apt remove python-gi

\begin{lstlisting}
$ sudo apt update
$ sudo aptitude install okular
\end{lstlisting}




%U Ubuntu však pozor na Microsoft.
%https://build5nines.com/microsoft-to-acquire-canonical-ubuntu-should-they/

Několik postřehů. Animace nejedou přes prezentační režim, ale dá se ze Settings skrýt Toolbar, Navigation Panel a Page Bar a přejít do celoobrazovkového režimu přes Ctrl+Shift+F.

Po nakliknutí Show Forms úvodní mávající smajlík balíčku \balicek{animate} se rozběhne až po zarolování na jinou stranu a zpět. Naopak při Hide Forms zůstává stále aktivní.

%Rád bych tuto kapitolu uzavřel pozitivně. 
Vylepšený Okular nabízí zobrazení pdf, ps, djvu, tiff, chm i formátu epub. Může se hodit i na zobrazení textových souborů, například datových, aux a log souborů při běžné práci. U svých experimentů jej používám i na zobrazení dvi souborů.

Na zobrazení swf či 3D objektů v prohlížeči pdf si ve svobodném softwarovém světě ještě počkáme, doporučuji prozatím Adobe Reader.




\section{Vstup do světa xml}

Formát xml jako rozšíření html asi netřeba blíž představovat. Vyřešil starší problém strukturování dat nad rámec dat v tabulce řádky
%{\renewcommand\rmdefault{lmr}\selectfont
krát %\,$\times$\,%}%
sloupce na straně jedné a relačních databází na straně druhé. 
S xml se potkáváme u MathML a především \ConTeXt{} tomu věnoval velkou pozornost. 

\noindent\hfil
\url{http://pragma-ade.com/show-man-7.htm}

\noindent\hfil
\url{http://pragma-ade.com/general/manuals/xml-mkiv.pdf}

Zájemce o tuto problematiku odkazuji na knihu Dana Lynche z roku 2020 \textit{The Art of Digital Publishing}, 
\url{https://mathapedia.com/books/31},
kapitolu~6 The Mathematical Web.

U grafiky přichází formát svg, textový formát pracující v mezích xml. 
Především program Inkscape zaznamenal velkou oblibu ve světě open source, svg používá jako nativní formát s možností importu a exportu do pdf, včetně možnosti přes příkazový řádek a parametr \texttt{--export-pdf}. 
Ve světě \TeX u byla grafika %v typografii 
vždy trochu pozadu a plní trochu jiné úkoly než na které jsou grafici a animátoři zvyklí.
\maltikz{} umí načíst svg. Jisté usnadnění dávají balíčky 
\balicek{svg}, 
\balicek{svg-extract},
starší balíček \balicek{svg-inkscape}
a
\href{https://github.com/GarkGarcia/tikztosvg}{\balicek{tikztosvg}},
v době psaní tohoto článku ještě nebyl zařazen do \TeX Live.

\begin{lstlisting}
$ texdoc svg svg-extract svg-inkscape
$ firefox https://ctan.org/pkg/tikztosvg
\end{lstlisting}

Nyní se nám podaří otevřít pdf přes Inkscape, nabídne nám možnosti přes knihovnu Poppler/Cairo či přes upravenou variantu knihovny Poppler.
Pokud navolíme Internal import a odškrtneme Replace PDF fonts by closest-named installed fonts, dá se s obrázkem pracovat, byť texty se nedají editovat, jsou z nich křivky.

Jaromír Antoch tuto cestu podrobněji zkoušel a u některých starších příspěvků se text jakoby rozsype. Dávám to za vinu starším písmům ještě v rastrovém formátu. Asi by si to zasloužilo ještě bádání.

\maltikz{} umí vygenerovat svg, viz kapitola~10.2.4 v manuálu verze 3.1.5b, závisí však na nástroji \texttt{dvisvgm}.

\begin{lstlisting}
$ texdoc tikz
\end{lstlisting}





\section{\texttt{dvisvgm} v2.9.1}

Na následující testy jsem si připravil zatěžkávací dokument, pracovně soubor \texttt{100-pisma.tex}. Znaky s diakritikou, rastrové emodži a kousek japonské básně jako zástupce jazyků ČJKV.

\font\ipaexm=IPAexGothic at 7pt
\begin{lstlisting}[escapechar=`]
\documentclass{article}
\usepackage{emoji}
\usepackage{luatexja}
\begin{document}\pagestyle{empty}
\huge\noindent
Ó, náhlý déšť již zvířil prach a čilá laň teď běží s houfcem gazel 
k úkrytům.\emoji{baby}\emoji{sparkling-heart}\emoji{speak-no-evil-monkey} 
`{\ipaexm 鳥啼く声す 夢覚ませ 見よ明け渡る 東を 空色栄えて 沖つ辺に 帆船群れゐぬ 靄の中}`
\end{document}
\end{lstlisting}

Jeden ze starších pokusů jak získat svg je nástroj \texttt{pdf2svg}. To bude pro mne srovnávací dokument.
\begin{lstlisting}
$ sudo apt install pdf2svg
\end{lstlisting}

Spouštíme a dostáváme první obrázek ze čtyř dále v textu.

\begin{lstlisting}
$ lualatex 100-pisma.tex
$ pdf2svg 100-pisma.pdf 100-pisma-pdf2svg.svg
\end{lstlisting}

Nástroj \texttt{dvisvgm} má domovskou stránku \url{https://dvisvgm.de}.

\begin{lstlisting}
$ man dvisvgm
$ info dvisvgm
\end{lstlisting}

U písem si musíme dát pozor a případně zvolit přepínač \texttt{-n} (bez zařazení písem). Zde je ukázka rozdílu při aplikaci na ukázkový dokument z \url{http://ctan.math.illinois.edu/macros/latex/contrib/media4svg/example/}.

\begin{lstlisting}
$ dvilualatex beamer-example.tex
$ dvilualatex beamer-example.tex
$ dvisvgm --bbox=papersize --font-format=woff2 --zoom=-1 --page=- beamer-example.dvi
#$ dvisvgm -n --bbox=papersize --font-format=woff2 --zoom=-1 --page=- beamer-example.dvi
\end{lstlisting}

Rozdíl mezi 3. a případným 4. příkazem je viditelný. Došlo k náhradě písem a umístění glyfů nesedí. I kdyby vše sedělo, zdrojový kód svg je prakticky ručně needitovatelný.

\noindent
\fbox{\includegraphics[width=0.49\textwidth]{pres-beamer-4a.png}}\hfill
\fbox{\includegraphics[width=0.49\textwidth]{pres-beamer-4b.png}}%



%  -- pozor u písma
%  dvisvgm -n (no fonts)
Kdyby nástroj nemohl dohledat písma GhostScriptu, užívá se parametr \texttt{--libgs}.
%--libgs=... pro ghostscript
Pokud užijeme náhradu písma, je dobré zvolit parametr \texttt{-e} na přesný výpočet bounding boxu glyfů. Je to podobné jako u nástroje \texttt{pdfcrop}.
%-e --exact-bbox bounding box
%Pokud zvolíme cestu tex$\rightarrow$dvi/xdv$\rightarrow$svg, vzniká vrstvené dvi/xvi se značkami pro nástroj \texttt{dvisvgm}. Můžeme převádět pdf a postscript.
Můžeme zvolit cestu tex$\rightarrow$dvi/xdv$\rightarrow$svg, ale i tex$\rightarrow$pdf/ps$\rightarrow$svg.

Dokumentace doporučuje užít další parametry: 
\texttt{--font-format=woff} nebo \texttt{woff2} na nastavení formátu písma,
%--exact
\texttt{--zoom=-1} aby se nezasahovalo do velikosti stran,
\texttt{--page=1,-} pro volbu všech stran, jinak se bere jen první strana,
\texttt{--optimize} pro optimalizaci výsledného svg, a případně i
\texttt{-z} / \texttt{--precision=1} na nastavení počtu desetinných míst.
Na zobrazení svg doporučují v prohlížeče Chrome, Chromium a Opera, Firefox se zdá být pomalejší.

U našeho zatěžkávacího dokumentu spouštíme:

\begin{lstlisting}
dvilualatex 100-pisma.tex
dvisvgm -n --zoom=-1 --page=- -o 100-pisma-prespdf1.svg --pdf 100-pisma.pdf
dvisvgm --font-format=woff2 --exact --zoom=-1 --page=- -o 100-pisma-spismy.svg 100-pisma.dvi
dvisvgm -n --zoom=-1 --page=- -o 100-pisma-prespdf2.svg --pdf --transform="R20,w/3,2h/5 T1cm,1cm S2,3" 100-pisma.pdf
\end{lstlisting}

\noindent
\fbox{\includegraphics[width=0.49\textwidth]{od-svg1.png}}\hfill
\fbox{\includegraphics[width=0.5\textwidth]{od-svg3.png}}%

\noindent
\fbox{\includegraphics[height=28.3mm]{od-svg2.png}}\hfill
\fbox{\includegraphics[height=28.3mm]{od-svg4.png}}%

První řádek nám vysází dokument do dvi (1. obrázek i identický výsledek nástrojem \texttt{pdf2svg}), 
druhý převodem písem do vektorových křivek,
třetí se pokusí o vysázení s náhradou písem 
a poslední příkaz je ukázka geometrické transformace celé stránky. Zde jsou náhledy.
Je vidět, že nástroj má nějakou závadu u pozadí rastrových emodži, jinak je výsledek uspokojivý při převodu písem do křivek.




\section{\balicek{animate} + \texttt{dvisvgm}}


Ve světě JavaScriptu se dějí neskutečné věci. 

Prezi

%https://en.wikipedia.org/wiki/SVG_animation
https://www.w3.org/TR/SVG11/animate.html
anime.js
svg.js
d3.js
https://css-tricks.com/animate-calligraphy-with-svg/

https://github.com/plexus/svg-slides
https://github.com/Moerphy/dizzy.js
https://sozi.baierouge.fr

%  nevrstvené, jedno svg na stranu

Za běžných okolností si lze pdf převést na rastrové obrázky a lze s nimi na webu dělat cokoliv. Ale jak přijde na užití hypertextových odkazů, vložení videí a animací, je lepší jít jinou cestou.

Rudolf Blaško se mne ptal, jestli by dokázal svou 2D animaci z Asymptote dostat do animovaného svg.
Není tedy na škodu podívat se na možnost vygenerovat animaci z \TeX u.
Představím vám jednu z možných cest spolupráce \TeX u a JavaScriptu.

%Rudův příklad
%získat pdf
%získat dvi / xdv
%získat svga
%-- animaci + mini html

Vezmeme druhý obrázek z článku Rudolfa Blaška, animace ve 2D připravená v Asymptote. Pracovně soubor \texttt{animacka.tex}, jakože součást knihy.

\lstinputlisting{zdrojaky/striz-svg/pro-blaska/animacka.tex}

Získáme soubor \texttt{animacka-1.asy}, když si zavoláme:

\begin{lstlisting}
$ lualatex animacka.tex
\end{lstlisting}

Tento soubor podsuneme Asymptote:

\begin{lstlisting}
$ asy -vv animacka-1.asy
\end{lstlisting}

Získáme především soubor \texttt{\_animacka-1.pdf}.

Připravíme si pomocný soubor \texttt{jadro.tex}. Ten nám pomůže s výrobou vrstveného dvi se značkami pro \texttt{dvisvgm}.

\lstinputlisting{zdrojaky/striz-svg/pro-blaska/jadro.tex}

Spustíme:

\begin{lstlisting}
$ dvilualatex jadro.tex # nebo: lualatex --output-format=dvi jadro.tex
$ dvilualatex jadro.tex 
\end{lstlisting}

Vzniká nám soubor \texttt{jadro.dvi}. Ten už převedeme do svg.

\begin{lstlisting}
$ dvisvgm --exact --zoom=-1 --page=- jadro.dvi
\end{lstlisting}

Ten již můžeme otevřít, např. přes 

\begin{lstlisting}
$ firefox jadro.svg
$ google-chrome jadro.svg
$ chromium jadro.svg
$ opera jadro.svg
\end{lstlisting}

Pokud bychom si naopak přáli zařadit \texttt{jadro.svg} na webovou stránku, mustr by vypadal jako v tomto pracovním souboru \texttt{webovka.html}:

\lstinputlisting{zdrojaky/striz-svg/pro-blaska/webovka.html}





\section{\texttt{svganimation}}

Je tu ještě jiná možnost. A to získat sérii nezávislých svg, jeden svg soubor vzniklý z jednoho snímku či jedné strany pdf dokumentu.
To bychom u naší ukázky předchozí kapitoly získali z mnohastránkového pdf takto:

\begin{lstlisting}
$ dvisvgm --pdf --exact --zoom=-1 -o "%f-%0p" --page=- _animacka-1.pdf
\end{lstlisting}

Parametr \texttt{-o} nám zajistí název souboru bez dodatečných nul. Nástrojů bychom našli nespočet, mě zaujal projekt %\texttt{svganimation} 
na Syracuse: 

\noindent\hfil
\url{https://melusine.eu.org/syracuse/G/svganimation}

Zde je několik ukázek:

\noindent\hfil
\url{https://melusine.eu.org/syracuse/G/svganimation-exemples}

První úkol je nástroj stáhnout. Lze to přes tlačítko \textit{tree snapshot} z 

\noindent\hfil
{\small\url{https://melusine.eu.org/syracuse/G/git/?p=svganimation.git;a=tree}}

Pro automatizéry z příkazového řádku:

\begin{lstlisting}
$ curl -o svganimation.tgz "https://melusine.eu.org/syracuse/G/git/\
  ?p=svganimation.git;a=snapshot;h=HEAD;sf=tgz" 
  # nebo místo curl -o užít wget -O
$ tar xvf svganimation.tgz
$ cd svganimation-HEAD-9fed6b5/ # v mém konkrétním případě
\end{lstlisting}
%  wget -O svganimation.tgz "https://melusine.eu.org/syracuse/G/git/?p=svganimation.git;a=snapshot;h=HEAD;sf=tgz"
%  tar xvf svganimation.tgz
%  cd svg...

Nahlédl jsem na ukázky, vytvořil potřebné složky a nakopíroval 91 souborů \texttt{\_animacka-1-*.svg}.

\begin{lstlisting}
$ cd ellipsographe/
$ mkdir animacka-1
$ cp animation.html animacka-1.html
$ cp <zdroj>/_animacka*.svg animacka-1/
\end{lstlisting}

V souboru \texttt{animacka-1.html} jsem upravil co bylo potřeba: popisky, otevření prvního souboru, rozsah animace, rychlost ap. Upravit popisky se dá v souboru \texttt{../SVGPlayerOne.js}. Zde je ukázka. Kvůli rozsahu zdrojový kód nepřikládám. Asi by stačila knihovna \texttt{jinja2} v Pythonu a obecná šablona by za chvíli byla hotová.

\noindent\hfil
\includegraphics[width=0.75\textwidth]{blaskuv.png}

Koho by tato oblast zajímala víc, nechť jsou takové osobě inspirací nápady na
\url{https://tex.stackexchange.com/questions/473936}.





\section{\textit{Hello, world!} od balíčku \balicek{media4svg} v0.4}

%\subsection{Ukázkový příklad}

Jeden z posledních experimentů v \TeX ovém světě je balíček \balicek{media4svg}, který umožňuje při exportu do svg uložit audio a videostopy. Dokumentace je ještě v textové formě, nikoliv v pdf.
Jedná se o jistý pokus generování snímků jako u pdf přes \balicek{beamer} nebo nástroj typu \texttt{powerline}.

%zdrojový kód:
%http://mirrors.ctan.org/macros/latex/contrib/media4svg/example/beamer-example.tex

%výsledek:
%http://ctan.mirrors.hoobly.com/macros/latex/contrib/media4svg/example/beamer-example-1.svg

%\subsection{Náše ukázka Ahoj, světe!}

% získání dvou klikatelných svg
\begin{lstlisting}
$ youtube-dl -o linus.mp4 https://www.youtube.com/watch?v=CYvJPra7Ebk
$ ffmpeg -i linus.mp4 -vn linus.mp3
\end{lstlisting}


deformace i s videem jako perlička
Perlička.
dvisvgm -n --transform="R20,w/3,2h/5 T1cm,1cm S2,3" export-media.dvi




%\section{Závěrem zamyšlení}
\section{Náhled na interaktivitu závěrem: latex2html5}

Když opomineme GeoGebru a další vhodné nástroje, zde je zajímavý experiment, na který bych rád poukázal.

https://tex.stackexchange.com/questions/145262/how-to-create-pstricks-animations-on-the-web-page-with-interactive-control-panel
https://github.com/pyramation/LaTeX2JS

Ono asi mělo dojít na nápad Petra Olšáka zmíněný na jedné konferenci \TeX perience, že by měl \TeX{} převést do C++ knihoven. Škoda, že se takový nápad a podobné pokusy neuchytily, pomohlo by programátorským polyglotům v přechodech mezi \TeX em a dalšími jazyky.



\endinput
cd okular
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/path/to/your/install/dir ..
  sudo apt install extra-cmake-modules
  sudo apt install libqt5svg5-dev
  libqt5texttospeech5-dev
  sudo apt-get install qtdeclarative5-dev qml-module-qtquick-controls
  sudo apt install libkf5archive-dev libkf5bookmarks-dev libkf5completion-dev libkf5config-dev libkf5configwidgets-dev libkf5coreaddons-dev libkf5crash-dev libkf5iconthemes-dev libkf5kio-dev libkf5parts-dev libkf5threadweaver-dev libkf5windowsystem-dev libkf5doctools-dev libkf5jsembed-dev libkf5wallet-dev
  sudo apt install libkf5config-bin libkf5configcore5 libkf5configgui5
  sudo apt install appstream
  libkf5activities-dev    libphonon4qt5-dev   libkf5purpose-dev   libkf5pty-dev  libspectre-dev  libkf5kexiv2-dev  libspectre-dev  libkf5khtml-dev  libdjvulibre-dev  libpoppler-dev  libpoppler-qt5-dev  kirigami2-dev  libqca-qt5-2-dev  libchm-dev  libtiff-dev libtiff5-dev  libepub-dev  libqmobipocket-dev  libqmobipocket-dev  discount  libzip-dev  libmarkdown2-dev   libgs-dev  kdoctools-dev
  kdoctools (přes aptitude)
  gettext
  libfreetype-dev
#cmake -DCMAKE_INSTALL_PREFIX=/usr ..  
cmake -DCMAKE_INSTALL_PREFIX=$KF5_PREFIX       -DCMAKE_BUILD_TYPE=Release               -DBUILD_TESTING=OFF                      -Wno-dev ..
make
sudo make install

