使用 tex4ht 和 .ps 以及 Tikz 图形转换为 html

使用 tex4ht 和 .ps 以及 Tikz 图形转换为 html

我正在尝试.tex使用以下方法将下面列出的文件转换为 htmltex4ht

\documentclass[12pt,a4paper]{book}
\usepackage[francais]{babel}
\usepackage[latin1]{inputenc}
\usepackage{lmodern}
\ifdefined\HCode
  \def\pgfsysdriver{pgfsys-dvisvgm4ht.def}
\fi
\newcommand\inputpstex[1]{\input{#1.pstex_t}}
\usepackage{tikz}       
\title{Test}
\author{S.~Oulhoussine}
\begin{document}
\chapter{Test}
\section{Test}
\begin{figure}
  % Requires \usepackage{graphicx}
  \begin{tikzpicture}[xscale=8]
\draw[-][draw=red, very thick] (0,0) -- (.5,0);
\draw[-][draw=green, very thick] (.5,0) -- (1,0);
\draw [thick] (0,-.1) node[below]{0} -- (0,0.1);
\draw [thick] (0.5,-.1) node[below]{$a=b=1/2$} -- (0.5,0.1);
\draw [thick] (1,-.1) node[below]{1} -- (1,0.1);
\end{tikzpicture}
  \caption{Test}\label{t}
\end{figure}
Autre
\begin{figure}[h]
\centering
\inputpstex{tunnel}
\caption{Circuit à diode tunnel.} \label{f:tunnel}
\end{figure}
\end{document} 

以下是.ps.pstex_t文件 隧道.ps 隧道.pstex_t 我使用这个命令

 make4ht -c my.cfg test.tex

有了这个配置文件my.cfg

\Preamble{xhtml,mathml,mathjax}
\Configure{@HEAD}{\HCode{<style type="text/css">\Hnewline
.MathJax_MathML {text-indent: 0;}\Hnewline
</style>\Hnewline}}
\let\originputpstex\inputpstex
\renewcommand\inputpstex[1]{\Picture+{}\originputpstex{#1}\EndPicture}
\tikzset{every node/.style={/pgf/tex4ht node/escape=true}}
\begin{document}
\EndPreamble

.html以下是获取文件 的截图在此处输入图片描述

如您所见,.ps图像.pstex_t没有出现。删除.tex文件中的图像转换器行时

\ifdefined\HCode
  \def\pgfsysdriver{pgfsys-dvisvgm4ht.def}
\fi

我获得了 .pstex_t 文件的图像和 tikz 图片的图像。但是,一些数学符号在 tikz 图片中以错误的方式出现。我需要帮助来解决这个问题。

答案1

TikZ 驱动程序pgfsys-dvisvgm4ht.def需要 SVG 输出选项,因为它依赖于dvisvgm。您也不需要文件\tikzset{every node/.style={/pgf/tex4ht node/escape=true}}中的行.cfg。您不使用使用此设置的 TikZ 驱动程序。因此您的.cfg文件可能看起来像这样:

\Preamble{xhtml,mathml,mathjax,svg}
\Configure{@HEAD}{\HCode{<style type="text/css">\Hnewline
.MathJax_MathML {text-indent: 0;}\Hnewline
</style>\Hnewline}}
\let\originputpstex\inputpstex
\makeatletter
\renewcommand\inputpstex[1]{ \Picture+{}\originputpstex{#1}\EndPicture}
\makeatother
%\tikzset{every node/.style={/pgf/tex4ht node/escape=true}}
\begin{document}
\EndPreamble

那么你的 PS 文件就存在问题。当我 make4ht在调试模式下使用以下命令运行时:

make4ht -a debug -c mycfg.cfg test.tex

我可以在终端输出中看到以下错误:

processing page 2                         
  PostScript error: undefined in run       
  Operand stack:                             
      --nostringval-- 

这意味着你的pstex_t文件无法使用 进行转换dvisvgm。它可以使用 进行转换dvipng,但你的 TikZ 图像将无法工作。

dvisvgm似乎可以与我尝试过的其他示例 PS 文件配合使用,但无法与你的文件配合使用。因此,我尝试修复 PS 文件本身,我使用以下脚本成功使其正常工作:

#!/bin/sh
ps2eps -f $1
epstopdf ${1%.ps}.eps
pdftops ${1%.ps}.pdf

基本上,需要先将 PS 文件转换为 EPS,然后将 EPS 转换为 PDF,然后再转换为 PS。使用修复后的 PS 文件,我得到了正确的结果:

在此处输入图片描述

相关内容