Latex 插入 svg 图片

文章目录

    • 前提
    • 方法一
    • 方法二
    • 方法三
    • 方法四

前提

以下几种方法均是基于对 inkscape 的调用,因此需要设置 inkscape 在环境变量中

可在命令行中输入 inkscape -V 进行测试是否设置成功

方法一

使用 svg 宏包

导言区:

\usepackage{svg}
\svgsetup{
    inkscapepath=i/svg-inkscape/
}
\svgpath{{svg/}}

正文区:

\includesvg{demo}

注意

编译开启 \write18, 即编译时需要加上 -shell-escape 参数

更多选项参数参见 svg 宏包文档

此方法对于 inkscape 1.0 已经失效

方法二

先利用 inkscape 导出 .pdf.pdf_tex 文件,然后在 latex 文档中插入,注意文件名不要有空格

导出 .pdf.pdf_tex 文件,在 cmd 中 执行

## inkscape version 为 1.0
inkscape -D --export-type=pdf --export-latex demo.svg

Latex 导言区

\usepackage{color}
\usepackage{transparent}
\usepackage{graphicx}
\usepackage{import}

\newcommand{\includesvg}[2]{%
\def\svgwidth{#1}%
\import{i}{#2.pdf_tex}%
}

正文区

\begin{figure}
\centering
\includesvg{0.8\columnwidth}{demo}
\caption{Figure}
\end{figure}

方法三

利用 latex 调用 inkscape (version = 1.0)

导言区:

\usepackage{color}
\usepackage{transparent}
\usepackage{graphicx}
\usepackage{import}

%% 注意图片途径为子目录 i
\newcommand{\executeiffilenewer}[3]{%
 \ifnum\pdfstrcmp{\pdffilemoddate{#1}}%
 {\pdffilemoddate{#2}}>0%
 {\immediate\write18{#3}}\fi%
}

\newcommand{\includesvg}[2]{%
\executeiffilenewer{i/#2.svg}{i/#2.pdf}%
{inkscape -D --export-filename=i/#2.pdf %
--export-latex i/#2.svg}%
\def\svgwidth{#1}%
\import{i}{#2.pdf_tex}%i
}

正文区:

\begin{figure}
    \centering
    \includesvg{0.8\columnwidth}{demo}
    \caption{Figure}
\end{figure}

注意:需开启 \write18, 即编译时需要加上 -shell-escape 参数

方法四

同样是利用 latex 调用 inkscape (version = 1.0) 完成 svg 到 pdf 的转化,但是不需要 latex 的文字处理

导言区:

\usepackage{graphicx}
\graphicspath{{i/}}

\newcommand{\executeiffilenewer}[3]{%
 \ifnum\pdfstrcmp{\pdffilemoddate{#1}}%
 {\pdffilemoddate{#2}}>0%
 {\immediate\write18{#3}}\fi%
}

\newcommand{\includesvg}[2]{%
\executeiffilenewer{i/#2.svg}{i/#2.pdf}%
{inkscape -D --export-filename=i/#2.pdf i/#2.svg}%
\includegraphics[width=#1]{#2.pdf}%
}

正文区:

\begin{figure}
    \centering
    \includesvg{0.8\columnwidth}{demo}
    \caption{Figure}
\end{figure}

注意:需开启 \write18, 即编译时需要加上 -shell-escape 参数

你可能感兴趣的:(Latex,Inkscape)