假设您有一些连续的文本,并且您希望能够将该文本的某些部分(例如单个单词)引用为 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}
在示例中,我已将其更改other
为otherg
以进行测试。
您可以在第 125 页 (pgfmanual 3.0) 找到更多信息