Dear Tomáš,

   can someone please explain what are pros and cons of using graphics in PNG or SVG for the LaTeX to HTML conversion? Naively I would guess SVG is better since it is vectorized format, but after playing with that I encounter the following issues:


Yes, SVG is better in general, unless you deal with EPS pictures that contain bitmap data, as you found (I didn't know about it)

[INFO]    make4ht-lib: executing: t4ht  "pictures_t4h.dvi"
GPL Ghostscript 9.53.3: Unrecoverable error, exit code 1
dvipng warning: No image output from inclusion of raw PostScript GPL Ghostscript 9.53.3: Unrecoverable error, exit code 1 dvipng warning: No image output from inclusion of raw PostScript GPL Ghostscript 9.53.3: Unrecoverable error, exit code 1

Is that a t4ht issue?

It is a dvipng issue. It seems that it sometimes fails due to unknown PostScript instructions. It is possible to configure make4ht to use different tool, see
https://www.kodymirus.cz/make4ht/make4ht-doc.html#x1-210005.4

but I don't think you can find any easier to use tool than dvipng for the bitmap conversion.


2. svg with make4ht -a debug -u pictures_t4h.tex "svg"

In this approach the 2nd picture comes out perfectly ok, but there are some non-vector EPS files that do not convert to SVG, like the third plot. The EPS -> PDF conversion proceeds well, but then pdf2svg results in an empty white picture of the corresponding size. I also tried to use inkscape for the latter conversion, with the same result.

I see. The generated SVG file contains some data, but they are not shown at all. I tried to convert the PDF and EPS files using ImageMagick and the resulting SVG file didn't work as well. So it seems like general issue.

The conversion to PNG works, so it seems like the way to go in this case. I got much better results using GhostScript:

gs -dSAFER -dBATCH -dNOPAUSE -dEPSCrop -r100 -sDEVICE=pngalpha -sOutputFile=street_stevenson_layout.png street_stevenson_layout.eps

than with ImageMagick.

As a possible workaround I can think of converting the problematic EPS files to PNG manually and account for that in the LaTeX code by e.g.

\ifpdf \includegraphics{myfigure.eps} \else \includegraphics{myfigure.png}\fi

But probably there is a smarter way to go?

Yes, don't use the image extension at all, LaTeX will choose best image automatically.


One more general question - with the "svg" option, all graphics (i.e. math, plots etc) are converted to SVG instead of PNG, right? There is no way to force e.g. plots to appear in PNG and math in SVG, or is there?

In general yes, but you can choose different extension for the included EPS files, for example with the following configuration file:

%%%%%%%%%%%%%%%%%%%%%%
\Configure{xhtml}
\makeatletter
\Configure{graphics*}
  {eps}
  {\openin15=\csname Gin@base\endcsname.png\relax
   \ifeof15
   % put command that converts EPS to PNG here:
      \Needs{"convert \csname Gin@base\endcsname.eps
                      \csname Gin@base\endcsname.png"}%
                           \fi
   \closein15
   \Picture[pict]{\csname Gin@base\endcsname.png}%
  }
\makeatletter
\begin{document}
\EndPreamble
%%%%%%%%%%%%%%%%%%%%%

Note that it converts the EPS file only if the destination PNG file doesn't exist yet, so remove the PNG file first when you change the conversion parameters.

Best regards,
Michal

Reply via email to