Inkscapes pdf+LaTeX 导出的图片在节点中定位错误

Inkscapes pdf+LaTeX 导出的图片在节点中定位错误

有时我会使用 Inkscape 为图片添加一些图形元素和文本。Inkscape 允许将其导出为 pdf+LaTeX,其中 pdf 包含图片和所有图形元素,而 LaTeX 文件包含文本。

然后就可以\input{latex-file-from-inkscape}在文档字体中看到图片和叠加的文本。

内部使用一个picture-environment。

我现在尝试将图片放入 tikz 节点并添加阴影。结果不正确,因为图片似乎以某种方式缩进。我发现如果\fbox添加简单节点也会发生这种情况。

\documentclass{scrartcl}
\usepackage{tikz}
\usetikzlibrary{shadows}

\begin{document}

\def\svgwidth{.5\textwidth}
\input{drawing.pdf_tex}

\def\svgwidth{.5\textwidth}
\setlength{\fboxsep}{0pt}
\fbox{\input{drawing.pdf_tex}}

\begin{tikzpicture}
\def\svgwidth{.5\textwidth}
  \node[drop shadow={shadow xshift=.8ex,shadow yshift=-.8ex,opacity=0.5},
inner sep=0,
] at (0,0) {\input{drawing.pdf_tex}};
\end{tikzpicture}

\end{document}

下图显示结果 1)只需输入文件 2)使用\fbox 3)使用 tikz 阴影

在此处输入图片描述

文件可以在这里获取: 图片 tex 文件

答案1

我不确定你想要什么效果,但生成的 tex 文件%在行尾缺少几处,在某些情况下会导致输出中出现空格。

\noindent\begin{tikzpicture}
\def\svgwidth{.5\textwidth}
  \node[drop shadow={shadow xshift=.8ex,shadow yshift=-.8ex,opacity=0.5},
inner sep=0,
] at (0,0) {{\let\zzz\begin\def\begin{\unskip\let\begin\zzz\begin}\input{drawing.pdf_tex}}};
\end{tikzpicture}

肯定会在阴影内移动图片,希望它更接近您想要的效果。


在此处输入图片描述

实际上,您可能需要更多额外的空白\unskip,但与其让文本更加模糊,不如修复包含的文件,这似乎更简单。如果我将您的 MWE 恢复到原来的状态,但修复文件,_tex我会得到如图所示的图像,右侧和底部有一个阴影。

所有更改都涉及%在行尾放置<原始>行和更正版本,如该差异行所示。

$ diff  drawing.pdf_tex1 drawing.pdf_tex2
30c30
<     \errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}
---
>     \errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}%
32c32
<   }
---
>   }%
34c34
<     \errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}
---
>     \errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}%
36,37c36,37
<   }
<   \providecommand\rotatebox[2]{#2}
---
>   }%
>   \providecommand\rotatebox[2]{#2}%
39c39
<     \setlength{\unitlength}{360pt}
---
>     \setlength{\unitlength}{360pt}%
41c41
<     \setlength{\unitlength}{\svgwidth}
---
>     \setlength{\unitlength}{\svgwidth}%

相关内容