一些数学公式以 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