包含 tikz 绘图的图形后,tex4ht 样式中断

包含 tikz 绘图的图形后,tex4ht 样式中断

\textbf在图形环境之前在 tex4ht 中有效,但之后无效:

\documentclass{book}
\usepackage{tikz}

\begin{document}
\textbf{this is bold}

\begin{figure}[h]
  \begin{tikzpicture}
    \draw[thick]  (0,0)   -- ++(4,0);  
  \end{tikzpicture}
\end{figure}

\textbf{this should be bold, but isn't}
\end{document}

我使用命令htlatex testfig.tex "xhtml"来编译它。

我希望有人能帮帮忙!

答案1

根据 @michal 的回复,我找到了一个解决方法。我获取了 tex4ht 生成的 .svg 文件并重命名了它们。我复制了 HTML 以从 tex4ht 的 .html 输出中插入 SVG。然后我使用条件手动输入 HTML。(我确实将尺寸四舍五入到最接近的像素,而不是 tex4ht 在其编写的 HTML 中输入的 4 位左右(!)小数。)

\begin{figure}[h]%
  \centering%
  \gpifpdf{
    \begin{tikzpicture}%
      \draw[thick] 
      (0,0) node[above=1pt]{\helv \textbf{Defense (D)}}
      -- ++(4,0) node[above=1pt]{\helv \textbf{Anxiety (A)}}
      -- ++(-120:4) node[below=1pt]{\helv \textbf{Feeling (F)}}
      -- (0,0);
    \end{tikzpicture}%
  }{
    \HCode{
    <object data="figs/toc.svg" width="235" height="181" type="image/svg+xml"><p>SVG-Viewer needed.</p></object>}
  }
  \caption{The Triangle of Conflict}%
  \label{fig:toc}%
\end{figure}%

其中\gpifpdf定义为:

\newcommand{\gpifpdf}[2]{\ifx\HCode\UnDef#1\else#2\fi}

很想知道是否有办法避免这种解决方法!

答案2

首先,我为原始示例添加了一个标题:

\begin{figure}[h]
  \begin{tikzpicture}
    \draw[thick]  (0,0)   -- ++(4,0);  
  \end{tikzpicture}
  \caption{Try \textbf{bold} here.}
\end{figure}

查看生成的 HTML,在 svg dance 之后,字体样式立即从 span 变为 tspan:

<!--l. 5--><p class="noindent" ><span 
class="cmbx-10">this is bold</span>
<!--l. 7--><p class="indent" >   <hr class="figure"><div class="figure" 
>

<a 
 id="x1-21"></a>

<!--l. 10--><p class="noindent" ><object data="font_issue-1.svg" width="153.81403 " height="2.33333 " type="image/svg+xml"><p>SVG-Viewer needed.</p></object>
<br /> <div class="caption" 
><span class="id">Figure&#x00A0;1: </span><span  
class="content">Try <tspan font-family="cmbx" font-size="10">bold </tspan>here.</span></div><!--tex4ht:label?: x1-21 -->

<!--l. 12--><p class="indent" >   </div><hr class="endfigure">
<!--l. 14--><p class="indent" >   <tspan font-family="cmbx" font-size="10">this should be bold, but isn&#8217;t </tspan> 

将 tspan 代码更改为适当的 span 代码可以解决问题,但问题应该在更根本的层面上得到解决。

相关内容