通过 TikZ 从 Inkscape 导出到 LaTeX

通过 TikZ 从 Inkscape 导出到 LaTeX

我对 TikZ 的了解非常有限,只用它为我的一个文档制作了一个漂亮的流程图。我最近了解到,你可以使用 Inkscape 并导出到 TikZ。

Inkscape->TikZ 工作流程的局限性是什么?是否有一些令人信服的理由让您花时间学习 TikZ(我听说它的学习曲线相当陡峭),而不是简单地从 Inkscape 导出到 TikZ?

答案1

编辑:@XiaodongQi 在下面评论道

新版 Inkscape 中不再提供相同选项。但保存 PDF 时仍有类似选项。

您可以将 Inkscape 图形另存为 PDF,然后将其放入文档中\includegraphics。如果图形中有文本,您可以从 Inkscape 另存为 PDF 菜单中选择 PDF+LaTeX 选项。这将创建一个 pdf_tex 文件。您输入\input该文件,然后 TeX 进行排版。

在 Inkscape 中:

在此处输入图片描述

选择另存为 pdf 后从 inkscape 保存。Inkscape 写入文件topview.pdf_tex

在此处输入图片描述

在文档中:

\begin{figure}[h]
\centering{
\resizebox{75mm}{!}{\input{images/topview.pdf_tex}}
\caption{Top view.}
\label{fig:topView}
}
\end{figure}

输出:

在此处输入图片描述

这显然是一张可以用 tikz 绘制的图片,但我选择不这样做,原因你在回复 @HarishKumar 时已经说明了 - tikz 的学习曲线较长,而且我更喜欢偶尔使用所见即所得。如果你确实需要精确的放置(线条确实在角落处相交),你也许可以使用 inkscape 的对齐功能来实现。我还没有尝试过这些功能。

答案2

导出后(由 Ethan Bolker 描述)使用以下代码片段嵌入 Inscape 生成的图像:

\begin{figure}
\def\svgwidth{\linewidth}
\input{img/filename.pdf_tex}
\caption{}
\end{figure}

使用\def\svgwidth{desired width}而不是\resizebox不是将保留字体大小。这是生成文件头部描述的推荐方式:

%% Creator: Inkscape 0.91_64bit, www.inkscape.org
%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010
%% Accompanies image file '_masks.pdf' (pdf, eps, ps)
%%
%% To include the image in your LaTeX document, write
%%   \input{<filename>.pdf_tex}
%%  instead of
%%   \includegraphics{<filename>.pdf}
%% To scale the image, write
%%   \def\svgwidth{<desired width>}
%%   \input{<filename>.pdf_tex}
%%  instead of
%%   \includegraphics[width=<desired width>]{<filename>.pdf}
%%
%% Images with a different path to the parent latex file can
%% be accessed with the `import' package (which may need to be
%% installed) using
%%   \usepackage{import}
%% in the preamble, and then including the image with
%%   \import{<path to file>}{<filename>.pdf_tex}
%% Alternatively, one can specify
%%   \graphicspath{{<path to file>/}}
%% 
%% For more information, please see info/svg-inkscape on CTAN:
%%   http://tug.ctan.org/tex-archive/info/svg-inkscape
%%

答案3

另一种选择是使用一个工具SVG2TikZ(以前是Inkscape2TikZ),可用于生成TikZ代码。

如果您从 GitHub 存储库安装 Python 包,则可以使用 TikZ 将 SVG(可以从 Inkscape 导出)转换为 TeX 源代码,如下所示:

svg2tikz a.svg > a.tex

它也可以作为 Inkscape 扩展安装。

相关内容