从 Inkscape 中截取以下屏幕截图:
其中,字符串的“基线”Pa
与pa
黑线对齐。
这是图形转换后的 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};
请注意,我省略了above
和inner sep
选项。还有两个基线锚点:base west
和base 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}