[tex4ht] tex4ht remove image id from HCode passed. Makes animation no longer work
Nasser M. Abbasi
nma at 12000.org
Wed Jan 31 03:57:13 CET 2024
I had this code working for many years.
Now for some reason when I compiled the page again using tex4ht
in TL 2023 animations on the page no longer run in HTML.
After much debugging, I found that <IMG id=...> losses the id=....
part when HTML is generated.
The code I use must use specific id name which is passed to it
for the image in order for the HTML animations to work.
I use external javascript library (libgif), which uses this image id
to add a stop/start/pause for the animation. (not shown in this example)
Below I show MWE and the resulting HTML. We see the id=... is missing
from the <IMG > tag.
--------------- A.tex-----
\documentclass[12pt]{book}
\ifdefined\HCode
\newcommand{\addGIFX}[4]
{
\HCode{
<img id=#4 src=#3 rel:animated_src=#1 rel:auto_play="0" width=#2 />\Hnewline
<br>
<script type="text/javascript">\Hnewline
var #4 = new SuperGif({ gif: document.getElementById('#4') } );\Hnewline
#4.load();\Hnewline
</script>\Hnewline
<a href="javascript:;" onmousedown="#4.pause(); return false;">Pause</a>\Hnewline
<a href="javascript:;" onmousedown="#4.play(); return false;">Play</a>\Hnewline
<a href="javascript:;" onmousedown="#4.move_to(0); return false;">Restart</a>\Hnewline
<a href="javascript:;" onmousedown="#4.move_relative(1); return false;">Step forward</a>\Hnewline
<a href="javascript:;" onmousedown="#4.move_relative(-1); return false;">Step back</a>\Hnewline
}
}
\fi
\begin{document}
\ifdefined\HCode
\addGIFX{"anim.gif"}{"750"}{"anim_COVER.png"}{codeperiodicanim}
\fi
\end{document}
---------------------------
Now when I compile the above using
make4ht -ulm default -a debug A.tex "mathjax,htm,fn-in,notoc*,p-width,nostyle"
This is the HTML
--------------------
<!DOCTYPE html>
<html lang='en-US' xml:lang='en-US'>
<head><title></title>
<meta charset='utf-8' />
<meta content='TeX4ht (https://tug.org/tex4ht/)' name='generator' />
<meta content='width=device-width,initial-scale=1' name='viewport' />
<link href='A.css' rel='stylesheet' type='text/css' />
<meta content='A.tex' name='src' />
<script>window.MathJax = { tex: { tags: "ams", }, }; </script>
<script async='async' id='MathJax-script' src='https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js' type='text/javascript'></script>
</head><body>
<!-- l. 25 --><p class='noindent'> <img rel:animated_src='anim.gif' rel:auto_play='0' src='anim_COVER.png' width='750' />
<br /> <script type='text/javascript'>
var codeperiodicanim = new SuperGif({ gif: document.getElementById('codeperiodicanim') } );
codeperiodicanim.load();
</script>
<a href='javascript:;' onmousedown='codeperiodicanim.pause(); return false;'>Pause</a>
<a href='javascript:;' onmousedown='codeperiodicanim.play(); return false;'>Play</a>
<a href='javascript:;' onmousedown='codeperiodicanim.move_to(0); return false;'>Restart</a>
<a href='javascript:;' onmousedown='codeperiodicanim.move_relative(1); return false;'>Step forward</a>
<a href='javascript:;' onmousedown='codeperiodicanim.move_relative(-1); return false;'>Step back</a>
</p>
</body>
</html>
-------------------------------------
The important part of all the above is this one line
<img rel:animated_src='anim.gif' rel:auto_play='0' src='anim_COVER.png' width='750' />
You see, the id is missing. When I change the above manually and add
the id=... so it becomes
<img id=codeperiodicanim rel:animated_src='anim.gif' rel:auto_play='0' src='anim_COVER.png' width='750' />
Now animation works (after loading external libgif on my end)
For some reason in current tex4ht the call
\addGIFX{"anim.gif"}{"750"}{"anim_COVER.png"}{codeperiodicanim}
Is not passing the 4th argument #4 which is the id to the javascript
code as it should using \newcommand given above.
Is there something I need to correct in the above newcommand
to make text4ht adds id= to the HTML <IMG> it generates using the 4th
argument as shown above?
TL 2023
>which tex4ht
/usr/local/texlive/2023/bin/x86_64-linux/tex4ht
>make4ht --version
make4ht version v0.3m
Thanks
--Nasser
More information about the tex4ht
mailing list.