我正在尝试编译一些最小的test.tex
使用htlatex test.tex "xhtml,svg"
,但从 tikz 图片生成的 SVG 似乎不起作用。
\documentclass[11pt]{article}
\usepackage{tikz}
\title{Testing}
\begin{document}
\maketitle
Inline equation \(X_1 + X_2 = Y\), equation
\[\int^{X \in \mathbf{C}} \mathbf{C}(X,X).
\]
Tikz picture.
\begin{tikzpicture}
\draw [blue,fill] (0,0) rectangle (3,3);
\draw [red,fill] (0,0) rectangle (3,2);
\end{tikzpicture}
\end{document}
tikz 图片的 svg 文件的生成方式似乎与其他 SVG 不同(例如,它具有与其他 SVG 不同的名称方案),并且由于以下错误而无法显示。
XML Parsing Error: mismatched tag. Expected: </g>.
Location: file:///home/mario/testing-htlatex/test-1.svg
Line Number 5, Column 3:
</p><g stroke="#000" fill="#000">
确实,删除该冲突<p>
会使 SVG 再次显示。这是错误还是我遗漏了什么?我做错了什么,将其添加<p>
到 tikz 图片中?为什么生成的 tikz 图片不同?
最让我困惑的是,如果我决定尝试不用 svg,而只使用htlatex test.tex
,那么就会生成一个适用于 tikz 图片的正确 SVG(!)。
答案1
默认情况下,TikZ 使用 TeX4ht 的特殊驱动程序来创建 SVG 文件。它将低级 PGF 命令映射到 SVG,因此它不使用 TeX4ht 用于将 LaTeX 代码转换为 SVG 的机制。有时这种方法会失败。您可以使用TeX4ht 的替代 TikZ 驱动程序。它用于dvisvgm
转换为 SVG。在大多数情况下,它会产生更好的结果(但有些情况下它会完全失败)。它似乎对您的示例很有效:
\documentclass[11pt]{article}
\ifdefined\HCode
\def\pgfsysdriver{pgfsys-dvisvgm4ht.def}
\fi
\usepackage{tikz}
\title{Testing}
\begin{document}
\maketitle
Inline equation \(X_1 + X_2 = Y\), equation
\[\int^{X \in \mathbf{C}} \mathbf{C}(X,X).
\]
Tikz picture.
\begin{tikzpicture}
\draw [blue,fill] (0,0) rectangle (3,3);
\draw [red,fill] (0,0) rectangle (3,2);
\end{tikzpicture}
\end{document}
您可能还想使用制作4小时而不是htlatex
。它修复了很多问题htlatex
并提供了附加功能。
这是我使用以下方法编译你的文档的结果
make4ht filename.tex "svg"