如何将正在运行的文本中的单词引用为 TikZ 坐标?

如何将正在运行的文本中的单词引用为 TikZ 坐标?

假设您有一些连续的文本,并且您希望能够将该文本的某些部分(例如单个单词)引用为 TikZ 坐标,以便例如绘制该单词的边缘。实现此目的的最佳方法是什么?

我尝试了以下操作:

\documentclass{article}
\usepackage{tikz}

\newcommand{\mkTikzCoord}[2]{%
  \tikz[remember picture]{\node [inner sep=0, outer sep=0] (#1) {#2};}%
}

\begin{document}
  Some text where I want to be able to draw an edge to
  \mkTikzCoord{word1}{\textbf{this}} word, without affecting its appearance.

  The edge shall come from this \mkTikzCoord{word2}{\textbf{other}} word.
  \tikz[overlay, remember picture]{\draw (word1) -- (word2);}

  Without and with mkTikzCoord: \underline{\textbf{\#}
    \mkTikzCoord{nothing}{\textbf{\#}}}
\end{document}

这将导致以下结果:

在此处输入图片描述

我们发现有时它工作得很好,有时却不尽如人意。主要是,根据使用该\mkTikzCoord命令包装的内容,基线似乎变得混乱。

我怎样才能修复我的命令,使得无论包装的内容是什么,都没有高度差异?

答案1

您认为可行的方法实际上并没有奏效。您偶然选择了两个不带 的单词depth,而#带有 。尝试使用:

\documentclass{article}
\usepackage{tikz}

\newcommand{\mkTikzCoord}[2]{%
  \tikz[remember picture, baseline=(#1.base)]{\node [inner sep=0, outer sep=0, text depth=.25ex, text height=1.5ex] (#1) {#2};}%
}

\begin{document}
  Some text where I want to be able to draw an edge to
  \mkTikzCoord{word1}{\textbf{this}} word, without affecting its appearance. \#

  The edge shall come from this \underline{\mkTikzCoord{word2}{\textbf{otherg}}} word.
  \tikz[overlay, remember picture]{\draw (word1) -- (word2);}

Without and with mkTikzCoord: \underline{\textbf{\#}
    \mkTikzCoord{nothing}{\textbf{\#}}}

    \end{document}

在此处输入图片描述

在示例中,我已将其更改otherotherg以进行测试。

您可以在第 125 页 (pgfmanual 3.0) 找到更多信息

相关内容