![包含 tikz 绘图的图形后,tex4ht 样式中断](https://linux22.com/image/296974/%E5%8C%85%E5%90%AB%20tikz%20%E7%BB%98%E5%9B%BE%E7%9A%84%E5%9B%BE%E5%BD%A2%E5%90%8E%EF%BC%8Ctex4ht%20%E6%A0%B7%E5%BC%8F%E4%B8%AD%E6%96%AD.png)
\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 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’t </tspan>
将 tspan 代码更改为适当的 span 代码可以解决问题,但问题应该在更根本的层面上得到解决。