带有 svg 图形的 siunitx

带有 svg 图形的 siunitx

我正在使用 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 中进行转换)。适用于siunitxv2.5c 和最新版本。

相关内容