我正在使用 pdfLaTeX (TeX Live 2011) 编译文档。不幸的是,它无法编译。同样,我的示例使用 TeX Live 2009 完美编译。我在下面添加了一个 SVG/PDF 图形本指南。为此,我首先在 SVG 文件中创建一个绘图,然后将其导出为 PDF 和pdf_tex
文件。
在 SVG 文件中我添加了一行如下文本:
\SI{6}{\arcsecond}
该图包括:
\begin{figure}[htbp]
\centering
\def \svgwidth{\columnwidth}
\includesvg{path-to-figure}
\caption{\SI{6}{\metre}}
\label{fig:label-of-figure}
\end{figure}
该 \includesvg
命令定义如下:
\newcommand{\executeiffilenewer}[3]{%
\ifnum\pdfstrcmp{\pdffilemoddate{#1}}%
{\pdffilemoddate{#2}}>0%
{\immediate\write18{#3}}\fi%
}
\newcommand{\includesvg}[1]{%
\executeiffilenewer{#1.svg}{#1.pdf}{%
inkscape -z -D --file=#1.svg %
--export-pdf=#1.pdf --export-latex}%
\input{#1.pdf_tex}%
}
生成pdf_tex
文件的部分内容。
\begin{picture}(1,0.44809873)%
\put(0,0){\includegraphics[width=\unitlength]{snifs_fov.pdf}}%
\put(0.47868192,0.06651686){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{c) foo + bar + baz }}}%
\put(0.47868192,0.17904892){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{b) bar + baz }}}%
\put(0.47868192,0.33397134){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{a) baz}}}%
\put(0.01018567,0.21107977){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{\SI{6}{\arcsecond}}}}%
\end{picture}%
\endgroup%
这就是导致的错误。
(./figs/graphics/snifs_fov.pdf_tex
<./figs/graphics/snifs_fov.pdf, id=104, 376.15532pt x 168.55472pt>
<use ./figs/graphics/snifs_fov.pdf>)
! Undefined control sequence.
\arcsecond ->\ERROR
更新: 我错误地认为 SVG 文件是错误的根源。事实上,SVG 文件中的相同文本位于图后的一段中。我通过更改 SVG 文件中的文本来调试此问题。编译后的错误消息没有改变。此外,JosephWright 确认可以在 MWE 中编译该文件,这也帮助我找到了原因。
答案1
(更多的是评论,但太长了。)对我来说,使用
\documentclass{article}
\listfiles
\usepackage{siunitx,graphicx}
\newcommand{\executeiffilenewer}[3]{%
\ifnum\pdfstrcmp{\pdffilemoddate{#1}}%
{\pdffilemoddate{#2}}>0%
{\immediate\write18{#3}}\fi%
}
\newcommand{\includesvg}[1]{%
%\executeiffilenewer{#1.svg}{#1.pdf}{%
%inkscape -z -D --file=#1.svg %
%--export-pdf=#1.pdf --export-latex}%
\input{#1.pdf_tex}%
}
\begin{document}
\begin{figure}
\includesvg{snifs_fov}
\end{figure}
\end{document}
使用 Inkscape 创建的文件.pdf_tex
可以正常工作(我的路径上没有它,所以在 GUI 中进行转换)。适用于siunitx
v2.5c 和最新版本。