epub 中数学的最佳方式 - 字体还是 SVG?(tex4ebook)

epub 中数学的最佳方式 - 字体还是 SVG?(tex4ebook)

一些数学公式以 HTML 格式显示时,在某些阅读器上显示效果不佳。我该如何为这些显示效果不佳的数学公式添加特定字体到 epub 中?或者有没有转换选项全部数学转图片(SVG)?

提前致谢 :-)

答案1

至于数学,总有一些读者做得不好。还有其他事情。有些读者可能不支持svg(我希望只是真的很老)。有些读者支持得不好css

图像数学总是错误的,因为使用了与普通文本不同的字体(即使添加自定义字体,用户也可能不支持或关闭它们),它们可能有不同的大小、错误的基线等。正确的解决方案是epub3使用mathml

 tex4ebook -f epub3 filename "mathml"

问题是据我所知,没有电子墨水阅读器支持epub3,只有 Ipad 和一些 Android 应用支持。这是先有鸡还是先有蛋的问题,epub3 数学电子书很少,所以对 epub3 阅读器的需求不大,而且 epub3 电子书也很少,因为你读不了。

如果你真的想用数学作为 svg 图像制作 epub,你可以从中获取灵感这个问题

制作配置文件myconfig.cfg

 \Preamble{xhtml,pic-align,pic-m,}
  \Configure{Picture}{.svg}  
  \makeatletter
  \Configure{graphics*}
  {svg}
  {
    {\Configure{Needs}{File: \[email protected]}\Needs{}}
    \Picture[\csname a:GraphicsAlt\endcsname]{\csname Gin@base\endcsname.svg
            \csname a:Gin-dim\endcsname}
  }
  \begin{document}
  \EndPreamble

然后是一个用于高效svg创建的构建文件,其名称与您的 TeX 文件相同,但带有.mk4后缀:

Make:add("dvisvgm","dvisvgm -n -TS1.25,1.25 -c 1.2,1.2 -p 1- ${input}.idv")

local max_count = 5
local image_format = "${input}-${zeroes}${page}.${ext}"
local oneimage_format = "${input}.${ext}"


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 locate_file(par,ext, count)
  local count = count or 0
  par.ext = ext
  local zeroes = string.rep("0",count)
  par.zeroes = zeroes
  if count > max_count then 
        local one = oneimage_format % par
        if file_exists(one) then
            return one
        else
          return false, "max_count exceeded" 
        end
    end
  local fn = image_format % par
  if file_exists(fn) then 
    return fn
  else 
    return locate_file(par, ext, count+1)
  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
)

构建文件的描述在这里我的答案

现在编译:

tex4ebook -c myconfig.cfg filename

相关内容