[tex4ht] new problem with standalone conflicting with tex4ht after new TL refresh, svg math do not get produced

Nasser M. Abbasi nma at 12000.org
Fri Jan 1 08:05:38 CET 2016


Something seems to have changed in TL since I did a full
update 2 days ago. I am seeing too many new problems.

I just found out that standalone package no longer works
well with tex4ht. I am using a special patched standalone package
in order to make it work with tex4ht, else one gets a error
using the official TL standalone with tex4ht. Here is the relevent post:

http://tex.stackexchange.com/questions/95701/syntax-error-when-using-tex4ht-on-latex-file-that-uses-the-standalone-package

-------- from old post ----
When using standalone package, this error will show up with tex4ht only

   (/usr/local/texlive/2014/texmf-dist/tex/generic/xkeyval/xkeyval.tex
   (/usr/local/texlive/2014/texmf-dist/tex/generic/xkeyval/keyval.tex)))
   ! Extra \else.
   l.227     \else
   
   ? x
-----------------

Martin Scharrer was kind enough to patch standalone.sty so that it not
longer give the above syntax error with tex4ht. I have been using this
for last 2 years. Here is the patched package

https://bitbucket.org/martin_scharrer/standalone/raw/635aacfa0e8f2cba4f4086f4f15d57791b18bf64/standalone.sty

Without the above, I can't do anything, since I use standalone for everything
with tex4ht and I depend on it for everything to pull all the files
into one document.

Ok, here is the issue.

I  just found out, that including this package, now the math also
gets missed up! Here is a MWE (but must use the patched standalone.sty
in the above link, else it will not compile with tex4ht:

--------------------------------
\documentclass[11pt]{article}%
\usepackage{standalone}% use the patched package!
\usepackage{amsmath,mathtools}
\begin{document}
This is a test
\begin{align*}
x  &= r + 1
\end{align*}
\end{document}
------------------------

Compileed with

make4ht --lua   -u  -c ./nma.cfg -e ./main.mk4 foo.tex

And again, now the equation do not show up in the html file generated.

Commenting out the  standalone, bring the math back, and correct svg
image gets produced.

Similar problem with what happens when loading the animate package. Very strange.

I do not understand what is going on really. I hope someone can try to
reproduce this. To make this email self contained, I also include
the .cfg and main.mk4 below. But please remember to use the patched
standalone.sty file in the link above. It can go to the same folder
as the above MWE.

--- nma.cfg---
\Preamble{ext=htm,charset="utf-8",p-width,pic-align}

\begin{document}
\DeclareGraphicsExtensions{.svg,.png}
\Configure{Picture}{.svg}
\makeatletter
\newcommand\emwidth{10}
\newcommand\CalcRem[1]{\strip at pt\dimexpr(#1)/\emwidth}
\Configure{graphics*}
             {svg}
              {\Picture[pict]{\csname Gin at base\endcsname.svg
              \space style="width:\CalcRem{\Gin at req@width}em;"
              }%
              \special{t4ht+ at File: \csname Gin at base\endcsname.svg}
             }
\makeatother
\EndPreamble
--------------------------

--- main.mk4---
Make:add("dvisvgm","dvisvgm -v1 -n -c 1.15,1.15 -p 1- ${input}.idv")
Make:htlatex {packages = "\\RequirePackage[dvipdfmx]{graphicx}"}
local max_count = 5


local image_pattern

local function file_exists(fn)
    local f = io.open(fn,"r")
    if f ==  nil then return false else f:close() return true end
end

local function search_file(input, ext, count)
    local pattern = count > 0 and "%s-%0"..count.."i." or "%s."
    pattern = pattern .. ext
    local filename = string.format(pattern, input, 1)
    if file_exists(filename) then
      return pattern
    elseif count < 0 then return nil
    else
      return search_file(input, ext, count - 1)
    end
end

local img_count = 0
local function locate_file(par,ext)
    if  image_pattern then
      img_count = img_count + 1
      return string.format(image_pattern, par.input,  img_count)
    else
      image_pattern =  search_file(par.input, ext, max_count)
      if not image_pattern then
        print("Cannot locate output svg pattern")
        return nil
      end
      return locate_file(par, ext)
    end
end


Make:htlatex{}
Make:htlatex{}
Make:htlatex{}
Make:tex4ht{}
Make:t4ht{}

Make:dvisvgm{}
Make:image("svg$",function(arg)
    arg.input = arg.source:gsub(".idv$","")
    local fn,msg = locate_file(arg, "svg")
    if not fn then
      print("Image processing error: "..msg)
    else
      arg.filename = fn
      local cmd = "mv ${filename} ${output}" % arg
      print(cmd)
      os.execute(cmd)
    end
end
)
---------

thanks,

--Nasser


More information about the tex4ht mailing list