lua
我正在尝试编译包含代码的latex 文档tex4ht
。我也制作4小时用于将 latex 构建为 html。
根据make4ht
选项上的帮助--lua
可以使用lualatex进行编译。
编译工作正常,但当文档中包含 .png 图像时,就会出错。以下是 MWE
\documentclass{article}
\usepackage[utf8]{luainputenc} %is this needed? tried with and without
\usepackage{graphicx}
\begin{document}
test
\includegraphics{some_image.png}
\end{document}
当使用上述代码进行编译时make4ht -u foo5.tex
,编译成功。但当使用
make4ht --lua -u foo5.tex
然后失败了:
Compiler: dvilualatex
Latex options: -jobname=foo5
tex4ht.sty : xhtml,,charset=utf-8
(/usr/local/texlive/2015/texmf-dist/tex/generic/tex4ht/html4.4ht)
(/usr/local/texlive/2015/texmf-dist/tex/generic/tex4ht/html4-math.4ht))
(./foo5.aux)
! String contains an invalid utf-8 sequence.
<read 0>
�PNG
l.6 \includegraphics{some_image.png}
我也试过
make4ht --lua foo5.tex
仅当包含 .png 图像时才会出现此问题。
在 Linux mint 上使用 TL 2015 64 位。
答案1
此错误可能与 没有任何共同之处tex4ht
。尝试使用 编译以下文件dvilualatex
:
\documentclass{article}
\usepackage[]{graphicx}
\begin{document}
\includegraphics{someimage.png}
\end{document}
错误信息是一样的。
问题在于\includegraphics
尝试确定图像边界框并读取文件中的信息,这在旧的 8 位 TeX 引擎中有效,但它可能会混淆 unicode 引擎,因为图像内容可能包含不支持的 unicode 字符的值。每个不支持的字符代码都会显示错误,这很容易超出错误限制,导致编译失败。
因为模式png
中不支持图像dvi
,所以它实际上不应该工作,但是当您尝试png
在 LaTeX 中包含图像时,会显示一些更有意义的错误消息:
! LaTeX Error: Cannot determine size of graphic in someimage.png (no BoundingBox).
并且至少文档可以编译。也许这种行为也应该用于dvilualatex
。
要修复此问题,您可以使用两种方法:
使用图形规则。尝试以下配置文件:
\Preamble{xhtml} \DeclareGraphicsExtensions{.png,.jpg,.gif} \DeclareGraphicsRule{.png}{bmp}{.xbb}{} \DeclareGraphicsRule{.jpg}{bmp}{.xbb}{} \DeclareGraphicsRule{.gif}{bmp}{.xbb}{} \begin{document} \EndPreamble
如果你.xbb
为每个图像创建文件
ebb -x imagename
那么包含的图像将具有正确的尺寸。您也可以停止在 中使用图像扩展\includegraphics
,只需使用:
\includegraphics{some_image}
使用
dvipdfmx
驱动程序graphicx
包:\usepackage[dvipdfmx]{graphicx}
请注意,编译为时不能使用它pdf
。因此您应该有条件地包含它。或者更好的是,使用make4ht
功能在文档包含之前插入 LaTeX 代码。使用这个简单的mk4
文件:
Make:htlatex {packages = "\\RequirePackage[dvipdfmx]{graphicx}"}
所以您现在不必修改文档。我们必须使用\RequirePackage
而不是\usepackage
因为代码在 之前执行\documentclass
。
关于luainputenc
:如果您不需要unicode字符,则不必使用它。尝试在没有包的情况下编译文档,看看是否一切正常。