更新: 感谢下面的评论。使用下面 Michal 的链接,似乎这是一个已知错误,但修复程序并未在 2014 年进行。按照下面链接中指出的进行更改,似乎已经解决了问题
>diff pgfsys-tex4ht.def pgfsys-tex4ht.def_ORIGINAL
89c89
< \def\pgfsys@svg@newline{{?nl}}
---
> \def\pgfsys@svg@newline{\Hnewline}
上述文件位于
/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/systemlayer
我不再收到错误,并且我得到了与 texlive 2013 上的 tex4ht 相同的输出
原始问题
我刚刚在虚拟机上安装了全新的 Linux。安装了新的 texlive 2014。
从以下位置下载 .gz 文件
http://ctan.math.washington.edu/tex-_archive/systems/texlive/tlnet/
install-tl-unx.tar.gz 16-Jun-2014 18:26 3.2M
然后提取
gunzip install-tl-unx.tar.gz
tar -xvf install-tl-unx.tar
然后移动到上面创建的文件夹并执行
sudo ./install-tl
尝试了我的一个测试文件,但失败了。同一个文件在 texlive 2013 上可以正常工作(不同的虚拟机,因此安装之间没有交互)。
仅使用 tex4ht 无法构建此文件。使用 pdflatex 可以成功构建。我原本以为它可以立即使用,因为 tex4ht 是 texlive 的一部分。
\documentclass{article}
\ifdefined\HCode
\def\pgfsysdriver{pgfsys-tex4ht.def}
\fi
\usepackage{tikz,graphicx}
%
\usetikzlibrary{trees}
\begin{document}
\begin{tikzpicture}
\node {root}
child {node {$\frac{a}{b}$}};
\end{tikzpicture}
\end{document}
使用 texlive 2014:
>latex --version
pdfTeX 3.14159265-2.6-1.40.15 (TeX Live 2014)
kpathsea version 6.2.0
htlatex foo.tex
给出
(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.
tex)
(/usr/local/texlive/2014/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version
-0-65.sty
! Undefined control sequence.
\pgfsys@svg@newline ->\Hnewline
l.190 \pgfusepathqfill}
?
在 texlive 2013 PC 上
>latex --version
pdfTeX 3.1415926-2.5-1.40.14 (TeX Live 2013)
kpathsea version 6.1.1
相同的命令运行时没有问题,没有错误,并且可以正常生成带有图像的 HTML。
tex4ht 和pgfsys-tex4ht.def
texlive 2014 有什么变化吗?
答案1
这个问题仍然没有答案,尽管评论和问题本身都回答了这个问题。我会在这里发布答案,因为今天发布了重复的问题,只要这个问题没有被接受或被点赞的答案,它就不能被关闭为重复。
这个问题已经报道在 PGF 问题跟踪器上,即使有建议的补丁,但它仍然没有被接受,因此错误仍然存在。在问题解决之前,您可能需要手动修复文件pgfsys-tex4ht.def
。我不建议直接编辑 TeX 安装分发的文件,我宁愿将其复制到文档的目录中并在副本上进行更改。您可以使用以下方法轻松复制:
cp `kpsewhich pgfsys-tex4ht.def` .
在类 UNIX 系统上。现在找到错误的行:
\def\pgfsys@svg@newline{\Hnewline}
\Hnewline
命令只能在内部使用\HCode{}
,但如果我们将其更改为
\def\pgfsys@svg@newline{\HCode{\Hnewline}}
出现了新的错误消息,看来我们应该使用其他方法。正确的解决方案是使用:
\def\pgfsys@svg@newline{^^J}
这将插入换行符。