inkscape2tikz:精确的文本定位

inkscape2tikz:精确的文本定位

从 Inkscape 中截取以下屏幕截图: 在此处输入图片描述

其中,字符串的“基线”Papa黑线对齐。

这是图形转换后的 LaTeX 输出inkscape2tikz在此处输入图片描述

如您所见,第二个文本框inkscape2tikz使用字母“p”的最低点来对齐文本框,而不是使用实际基线(字母“a”的最低点)。

有没有办法纠正这种行为,以便用 TikZ 编译的文本准确显示在 Inkscape 中的位置?

答案1

似乎这是 中的一个“错误” inkscape2tikz。我没有创建一个node使用正确的锚点创建 。请参阅https://code.google.com/p/inkscape2tikz/issues/detail?id=22

如果您想手动更正此问题,请尝试将anchor=base west选项添加到node在生成的 TikZ 代码中提供一个最小工作示例(MWE)

node关于s 的一些注释

TikZ 使用节点将文本添加到图片(并执行更多应该超出此答案范围的操作……)。添加节点的最短方法是

\node {Text};

节点

这将在 (0,0) 处添加“文本”,红点表示node用于将其对齐到特定点的锚点。节点也可以是路径的一部分(我假设您的情况就是如此)。

\draw (0,0) -- (10,0) node {Text};

路径上的节点

将在 (5,0) 处添加与节点中心对齐的“文本”。节点可以有多个选项,这里above(将节点放在线上方),pos(将节点移到线的起点和终点之间的某个位置):

\draw (0,0) -- (10,0) node [above,pos=0.7] {Text};

路径中途的节点

将在 (3.5,0) 上方添加“Text”。如您所见,TikZ 会自动将锚点从节点的中心移到南侧。线条和文本之间的间隙是由节点的内部分隔引起的,可以通过添加选项来显示draw

\draw (0,0) -- (5,0) node [above,pos=0.7,draw=blue] {Text};

有边框的节点

您可以使用它inner sep=0pt来使边框尽可能窄,但这对带有降部的文本没有帮助:

\draw (0,0) -- (5,0) node [above,pos=0.7,draw=blue,inner sep=0pt] {My Text};

带有下降部分的节点

在这种情况下,下降部分定义了南锚点的值。为了将 anode与其基线对齐,TikZ 提供了基锚点,可与选项一起使用anchor

\draw (0,0) -- (5,0) node (n) [above,pos=0.7,draw=blue,anchor=base] {My Text};

带基锚的节点

请注意,我省略了aboveinner sep选项。还有两个基线锚点:base westbase east

\draw (0,0) -- (5,0) node (w) [pos=0.1,anchor=base west,inner sep=0pt] {west}
    node (e) [pos=0.9,anchor=base east,inner sep=0pt] {east};

东、西基节点

完整示例

\documentclass{article}

\usepackage{tikz}

\begin{document}
\begin{tikzpicture}[anch/.style={red,radius=1pt}]
    \draw (0,0) -- (5,0) node (n) [pos=0.7,draw=blue,anchor=base] {My Text};
    \fill [anch] (n.base) circle;
    \draw (0,-2) -- (5,-2) node (w) [pos=0.1,anchor=base west,inner sep=0pt] {west}
        node (e) [pos=0.9,anchor=base east,inner sep=0pt] {east};
    \fill [anch] (w.base west) circle;
    \fill [anch] (e.base east) circle;
\end{tikzpicture}
\end{document}

相关内容