确保 Inkscape Graphic 中乳胶代码的位置?

确保 Inkscape Graphic 中乳胶代码的位置?

我使用 Inkscape 创建了一些矢量图形,但我希望该图形上的任何文本都由 Latex 编译。因此,我使用 Inkscape 的选项创建一个包含文本信息的单独 .pdf_tex 文件。

理论上,这种方法效果很好,但 Latex 中文本的位置似乎有点“随机”。在 Inkscape 中,我可以非常轻松地将文本正确放置(例如,置于圆圈内),但一旦我用 latex 编译它,文本就不再居中了……

避免此类问题的一般工作流程是什么?我真的希望 Latex 能够编译我的文本,因为它们包含很多数学符号,但是我不想用 \put(x,y) 手动放置它们只是为了让它们处于正确的位置。

任何帮助是极大的赞赏!

编辑:

附上一份 MWE:

\documentclass[a4paper]{scrartcl}

\usepackage{graphicx}
\usepackage{color}

\begin{document}

\begin{figure}[!htb]
\centering
\def\svgwidth{0.2\textwidth}
\input{graphic.pdf_tex}
\end{figure}

\end{document} 

其中 graphic.pdf_tex 是一个 Inkscape 图像,其中包含一个圆圈和一些乳胶数学公式。

答案1

在 Inkscape 中,至少有两种方法可以指定对齐方式。如果您使用文本工具从顶部工具栏设置对齐方式并选择一些文本,则对齐方式将应用于 XML 中的 tspan 节点,并且它不会在 LaTeX 中居中。

执行此操作的方法是使用选择器工具选择文本对象,因此您应该看到如下选择框:

选定的文本

然后,您可以在通过 shift-ctrl-T 出现的“文本和字体”检查器窗格中设置文本节点的居中属性。

尽管这没有解决垂直居中问题,但至少修复了水平居中问题。

答案2

要水平对齐文本,您应该使用文本对齐Inkscape 中的选项。对于您输入的每段文本,您都应该有意识地选择一种适合其在图形中定位的对齐方式。例如,要将文本(水平)居中在一个圆圈中,我通常的工作流程是:

  1. 使用文本工具输入一些文本。
  2. 单击align center按钮(用于文本)。
  3. 使用Align and Distribute面板将文本对齐到圆圈的中间。

对齐文本可以改善美观度的一些示例包括将折线图的 y 轴上的标签右对齐以及将 x 轴上的标签居中对齐。必要时请不要忘记左对齐。

此工作流程无法准确使文本居中垂直因为,正如评论所述,Inkscape 无法知道文本的大小。虽然这不是最理想的,但您应该能够相对轻松地调整垂直定位。

答案3

垂直居中文本的解决方法

将 Inkscape 中的文本锚点放置在垂直中心,并使用 raisebox 进行补偿

例子

我们希望将“Hello”放在一个框内居中。因此,我们\raisebox{-.5\height}{Hello}在 Inkscape 中书写,并将文本锚点垂直居中到框内

inkscape 中的 raisbox

结果

Latex 中的结果

答案4

我在生成 pdf_latex 文件时遇到了同样的问题,我不得不多次编译我的 latex 文件才能看到放置在 inkscape 中的文本最终在 latex 中的位置。

我犯的错误是使用的文本框相对于文本大小过大。文本最终会从文本框在 inkscape 中指定,而不是文本实际开始的位置。

例如,在 Inkscape 中,这两个示意图即使两个文本对齐,也会产生不同的结果。 文本框为紫色

在 latex 中编译后得到的 pdf 将给出 由于文本框大小不同导致错位

发生这种情况的原因是,对于右边的图片,在 Inksape 中添加文本时,默认字体大小设置为 30 ,而我将其更改为 12创建文本框。因此,文本框的字体大小设置为 30,而文本的大小为 12。为了防止这种情况,应该更改 Inkscape 中的默认字体大小事先的向您的原理图中添加一些文本。

相关内容