使用 TeX4ht 维护 Tikz 图表的布局(转换为单张图片)

使用 TeX4ht 维护 Tikz 图表的布局(转换为单张图片)

Tikz 图表如下

\documentclass{article}
\usepackage{tikz}
\begin{document}
  \begin{tikzpicture}
    \path (0,0) node[draw] (A) {A};
    \path (2,0) node[draw] (B) {B};
    \draw (A) -- (B) node[midway,above = 0 em] {via};
\end{tikzpicture}
\end{document}

使用 (pdf)LaTeX 处理后

在此处输入图片描述

而使用 TeX4ht 仅提取文本,转换为

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
  "http://www.w3.org/TR/html4/loose.dtd">  
<html> 
<head><title></title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
<!-- html --> 
<meta name="src" content="test.tex"> 
<meta name="date" content="2011-11-17 09:21:00"> 
<link rel="stylesheet" type="text/css" href="test.css"> 
</head><body>
<!--l. 8--><p class="noindent" > ABvia

</body></html> 

通过更复杂的 Tikz 输入,TeX4ht 可以部分将图片分成单独的.png文件。让 TeX4ht 将整个 Tikz 环境转换为输出中的单个图形的最佳方法是什么?我已经尝试使用 Tikz 外部化库,但这无法成功编译。(注意:输出例如 SVG 也可以 - 关键是要保持布局。)


为了清楚起见,尝试使用 Tikz 外部化的结果是:

===== 'mode=convert with system call': Invoking 'latex -halt-on-error -interact
ion=batchmode -jobname "test-figure0" "\def\tikzexternalrealjob{test}\input{tes
t}" && dvips -o "test-figure0".ps "test-figure0".dvi' ========

! Package tikz Error: Sorry, the system call 'latex -halt-on-error -interaction
=batchmode -jobname "test-figure0" "\def\tikzexternalrealjob{test}\input{test}"
 && dvips -o "test-figure0".ps "test-figure0".dvi' did NOT result in a usable o
utput file 'test-figure0' (expected one of .epsi:.eps:.ps:). Please verify that
 you have enabled system calls. For pdflatex, this is 'pdflatex -shell-escape'.
 Sometimes it is also named 'write 18' or something like that. Or maybe the com
mand simply failed? Error messages can be found in 'test-figure0.log'. If you c
ontinue now, I'll try to typeset the picture.

See the tikz package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.11 \end{tikzpicture}

? 

该图表是较大页面的一部分,因此目的是正常处理文本部分,但以不同的方式处理 Tikz 部分(作为图片或 SVG:无论哪个更好)。

答案1

Tikz 中有专门用于 tex4ht 的输出驱动程序。使用它,图表可以保存为 SVG。

\documentclass{article}
\def\pgfsysdriver{pgfsys-tex4ht.def}
\usepackage{tikz}
\begin{document}
  \begin{tikzpicture}
    \path (0,0) node[draw] (A) {A};
    \path (2,0) node[draw] (B) {B};
    \draw (A) -- (B) node[midway,above = 0 em] {via};
\end{tikzpicture}
\end{document}

答案2

要将整个文件转换.tex为 SVG,请使用dvisvgm。与此不同,dvipng它了解 PStricks 和其他东西。它使用 PGF 在 TeX-Files 上做得非常出色。

latex file.tex
dvisvgm file.dvi

...并且您已做好准备file.svg

我无法得到tex4ht许多 PGF 文件示例,但dvisvgm可以正常工作。Ubuntu 16.04 中的过时版本 1.9.2 存在一些问题(“fi”和“ff”等连字符变成了中文),但 2.0.4 很棒。

相关内容