我需要将包含大量 tikz 图片的 latex 文件转换为 MS word。为了使转换更加容易,转换器应该自动用 includegraphics 命令将 tikzpicture 块替换为图片的相应 pdf,并在转换之前进行转换。
是否有任何脚本或转换器可以做到这一点?
答案1
您可以使用tex4ht
将 LaTeX 转换为 OpenDocument 格式,然后可以使用 LibreOffice 轻松转换为 Word。它支持 TikZ 外部化,因此您可以先将绘图保存为合适的格式,然后在转换过程中使用它们。似乎最适合使用的图像格式是。像或这样png
的矢量格式会更好,但它们在格式中不受支持,所以这里没有运气,我们必须坚持使用位图。svg
pdf
odt
您没有提供mwe
,因此这是我的:
\documentclass[a4paper, 12pt, ngerman]{scrartcl}
\usepackage{graphicx}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{external}
\tikzset{
external/system call/.add={}
{; rungs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pngalpha -dGraphicsAlphaBits=4 -r110 -sOutputFile=\image.png \image.pdf }
}
\makeatletter
\@ifpackageloaded{tex4ht}{
}{
\tikzexternalize
}
\makeatother
\begin{document}
\begin{figure}[htb]
\centering
\begin{tikzpicture}
\begin{axis}[width=0.8\textwidth,
height=0.3\textheight,
scale only axis,
xmin=0,
xmax=1,
xlabel={Dimensionless number $\zeta$ (-)},
xlabel style={fill=white,fill opacity=0.9},
ymin=0,
ymax=2000,
ylabel={Resulting pressure $\Sigma p$ (bar)},
ylabel style={fill=white,fill opacity=0.9},
axis background/.style={fill=white},
legend style={at={(0.71,0.96)},anchor=north west,draw=black,fill=white,legend cell align=left}
]
%% Formula 1
\addplot[blue, domain=0:1, samples=101]
{1998*(1 - x^2)};
\addlegendentry{Formula 1};
\end{axis}
\end{tikzpicture}
\caption{Resulting pressure $\Sigma p$ as a function of $\zeta$ \label{fig:spz}}
\end{figure}
\begin{tikzpicture}
\draw (2,2) ellipse (3cm and 1cm);
\node (2,2) {Hello};
\end{tikzpicture}
\end{document}
您可以使用以下方式编译文档:
pdflatex -shell-escape filename.tex
它将创建两幅png
图像。
这个 TeX 文件中有趣的部分是这些
\usetikzlibrary{external}
\tikzset{
external/system call/.add={}
{; rungs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pngalpha -dGraphicsAlphaBits=4 -r110 -sOutputFile=\image.png \image.pdf }
}
这是 TikZ 外部化的配置。rungs
命令是 TeX 发行版附带的 GhostScript 版本,因此它应该可以在任何地方使用。您可能需要调整参数,以获得最佳效果。
\@ifpackageloaded{tex4ht}{
}{
\tikzexternalize
}
这部分将确保仅当文档未使用编译时才使用上面的配置tex4ht
,因为在这种情况下我们需要使用特殊配置。
的配置tex4ht
在带有扩展名的文件中提供.cfg
,例如mycfg.cfg
:
\tikzset{
tex4ht inc/.style={
/pgf/images/include external/.code={%
\includegraphics[]{##1.png}%
}
}
}
\tikzexternalize[mode=only graphics]
\tikzset{tex4ht inc}
\Preamble{xhtml,mathml}
\begin{document}
\EndPreamble
这个配置基本上告诉 TikZ 不要生成图形图像,而是包含png
上一步创建的图像。
现在您可以使用编译该文档tex4ht
。命令如下:
mk4ht oolatex filename.tex mycfg
结果如下: