我希望这不是重复的,但是我在谷歌上搜索了太多次,以至于我记不清从哪里开始。
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
结果如下: