如何将包含 Tikz/Pgf 图像和 Latexmk 的乳胶文档转换为 HTML?

如何将包含 Tikz/Pgf 图像和 Latexmk 的乳胶文档转换为 HTML?

我希望这不是重复的,但是我在谷歌上搜索了太多次,以至于我记不清从哪里开始。

tikz但是我有一个包含一些图片的 latex 文档pgf。我通常latexmk将文件编译为 pdf。现在,我想看看是否可以将此文件编译为 HTML,以便可以tikz在网络上显示图片等。但我不确定如何做到这一点或什么有效。

我尝试使用make4ht,但那只是部分渲染了我的 tikz 图像。我设置的某些宏在最终输出中无法正确渲染。我使用的代码是:

make4ht -d html -f html5+latexmk_build+mjcli myfile.tex "mathjax"

我还尝试了pandoc,并从 latex --> markdown 转换,然后从 markdown --> HTML。这也无法正确呈现 tikz 块。我确实添加了标志--mathjax,但我认为 mathjax 现在不支持 tikz。

pandoc -s myfile.tex -o test.md 
pandoc -s --katex test.md -o test.html

有人能建议他们发现的将带有 tikz 图表的 tex 文档转换为 HTML 网页的最佳方法吗?

更新

根据@michel.ht 的评论,我尝试了不同的驱动程序。这有帮助,但我仍然遇到输出格式问题。我发布了一个简单神经网络的具体示例。也许我需要改变代码的编写方式以更好地适应 Tikz 驱动程序?

\usepackage{tikz}
\usetikzlibrary{shapes.multipart, positioning, decorations.markings,
  arrows.meta, calc, fit}

  \begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep]
    \tikzstyle{every pin edge}=[<-,shorten <=1pt]
    \tikzstyle{neuron}=[circle,fill=black!25,minimum size=25pt,inner sep=0pt]
    \tikzstyle{input neuron}=[neuron, fill=red!50];
    \tikzstyle{output neuron}=[neuron, fill=orange!50];
    \tikzstyle{hidden neuron}=[neuron, fill=green!50];

    % Draw the input layer nodes
    \foreach \name / \y in {1,...,3}
    % This is the same as writing \foreach \name / \y in {1/1,2/2,3/3,4/4}
    \node[input neuron] (I-\name) at (0,-\y) {$x_{\y}$};

    % Draw the output layer node
    \node[output neuron,pin={[pin edge={->}]right:$\hat{y}$}, right of=I-2] (O) {$\sigma$};
    % Connect every node in the hidden layer with the output layer
    \foreach \source in {1,...,3}
    \path (I-\source) edge node[above]{$w_{\source}$} (O) ;
  \end{tikzpicture}

这是对应的图片。节点中的文本缺失,如 $x_1$ 等。

简单网络

一些 tikz 宏还存在其他问题,但我可以在后续的文章中解决这些问题。

答案1

这是使用 MWE 的修改版本TeX4ht 的替代 TikZ 驱动程序

\documentclass{article}
\ifdefined\HCode
  \def\pgfsysdriver{pgfsys-dvisvgm4ht.def}
\fi 
\def\layersep{2cm}
\usepackage{tikz}
\usetikzlibrary{shapes.multipart, positioning, decorations.markings,
  arrows.meta, calc, fit}

  \begin{document}
  \begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep]
    \tikzstyle{every pin edge}=[<-,shorten <=1pt]
    \tikzstyle{neuron}=[circle,fill=black!25,minimum size=25pt,inner sep=0pt]
    \tikzstyle{input neuron}=[neuron, fill=red!50];
    \tikzstyle{output neuron}=[neuron, fill=orange!50];
    \tikzstyle{hidden neuron}=[neuron, fill=green!50];

    % Draw the input layer nodes
    \foreach \name / \y in {1,...,3}
    % This is the same as writing \foreach \name / \y in {1/1,2/2,3/3,4/4}
    \node[input neuron] (I-\name) at (0,-\y) {$x_{\y}$};

    % Draw the output layer node
    \node[output neuron,pin={[pin edge={->}]right:$\hat{y}$}, right of=I-2] (O) {$\sigma$};
    % Connect every node in the hidden layer with the output layer
    \foreach \source in {1,...,3}
    \path (I-\source) edge node[above]{$w_{\source}$} (O) ;
  \end{tikzpicture}
  \end{document}

使用该\ifdefined\HCode条件是为了确保此驱动程序仅与 TeX4ht 一起使用。您不想在 PDF 输出中使用它。我必须定义宏\layersep,因为它在您的 MWE 中未定义。它用于节点距离,因此您可能需要根据需要更改它。

我已经编译了它,仅使用

 make4ht -m draft sample.tex

结果如下:

在此处输入图片描述

相关内容