tex4ebook:如何正确使用 dvisvgm_hashes?

tex4ebook:如何正确使用 dvisvgm_hashes?

我尝试编译一个包含大量数学公式的 tex 文件。我尝试

tex4ebook -c test.cfg -f epub+dvisvgm_hashes 测试

使用 test.tex

\documentclass{amsart}

\begin{document}
Two formulae displayed:
\[e^{i\pi}+1=0\]
and
\[\sum_{n=1}^\infty\frac1{n^2}=\frac{\pi^2}6\]
let's see the effect.
\end{document}

测试.mk4

if mode == "draft" then
  Make:htlatex {}
else
  -- Make:add("biber","biber ${input}")
  Make:htlatex {}
  -- Make:biber {}
  Make:htlatex {}
  Make:htlatex {}
end

Make:tex4ht{}
Make:t4ht{}

test.cfg

\Preamble{xhtml,pic-align}
 \Configure{Picture}{.svg}  
 \makeatletter
 \makeatother
 \DeclareRobustCommand{\[}{\begin{equation*}}
 \DeclareRobustCommand{\]}{\end{equation*}}
 \begin{document}
 \EndPreamble

其中扩展 dvisvgm 用于加速 svg 图像的生成,并且它抱怨

...texmf-dist/scripts/make4ht/extensions/dvisvgm_hashes.lua:251: 尝试连接字段“t4ht_par”(一个零值)

我查看了 dvisvgm_hashes.lua,并插入了代码

if v.params.t4ht_par == nil then
  v.params.t4ht_par = ""
end

进入

for _,v in ipairs(make.build_seq) do
  if v.params.t4ht_par == nil then
    v.params.t4ht_par = ""
  end
  if v.name == "t4ht" then
    v.params.t4ht_par = v.params.t4ht_par .. " -p"
  end
end

然后我编译,它抱怨了很多未找到的错误,Copy: cp test###x.svg test-epub/OEBPS/ ... 并且 content.opf 包含不存在的 test###x.svg。这似乎是由于 tex4ebook 和 dvisvgm_hashes 不兼容造成的。我正在寻找一种解决方法。

答案1

这似乎是dvisvgm_hashes扩展中的一个错误。修复版本可在制作4小时存储库。

无需更新扩展的快速修复方法是Make:t4ht {}从构建文件中删除该行。无论如何,这对你的情况没有用,因为它是由make4ht和自动执行的tex4ebook。只有在你想要传递一些自定义参数的情况下,你才应该将它包含在构建文件中。

此构建文件与您的原始文件相同,但不会遭受以下错误:

if mode == "draft" then
  Make:htlatex {}
else
  -- Make:add("biber","biber ${input}")
  Make:htlatex {}
  -- Make:biber {}
  Make:htlatex {}
  Make:htlatex {}
end

相关内容