在下面的例子中,我已成功通过设置text height = \Aheight
单词(即让所有单词的高度等于字符A
)和text depth = 0pt
节点(即让所有节点的中心相同)将单词和它们上方的节点正确对齐到基线上。我不知道该怎么做的是调整单词和上方节点之间的垂直空间。我想将上方的节点提升到更合适的位置。
\documentclass{article}
\usepackage{tikz}
\newlength{\Aheight}
\setlength{\Aheight}{\fontcharht\font`A}
\newcommand{\phraselabel}[2]{%
\begin{tikzpicture}[%
baseline = (word.base),
txt/.style = {inner sep = 0pt, text height = \Aheight, draw},
above/.style = {inner sep = 0pt, text depth = 0pt, draw}%
]
\node[txt] (word) {#1};
\node[above] at (word.north) {\footnotesize{#2}};
\end{tikzpicture}%
}
\begin{document}
\phraselabel{gg}{xxxxx} \phraselabel{aa}{jjjjj} \phraselabel{tt}{xxxxx} \phraselabel{bb}{xxxxx}.
\end{document}
答案1
您可以为指定一个值above
:
\documentclass{article}
\usepackage{tikz}
\newlength{\Aheight}
\setlength{\Aheight}{\fontcharht\font`A}
\newcommand{\phraselabel}[2]{%
\begin{tikzpicture}[%
baseline = (word.base),%
txt/.style = {inner sep = 0pt, text height = \Aheight},%
tag/.style = {above=0.75ex, inner sep = 0pt, text depth = 0pt}% (tweak the above value as needed)
]%
\node[txt] (word) {#1};%
\node[tag] at (word.north) {\footnotesize{#2}};%
\end{tikzpicture}%
}
\begin{document}
\phraselabel{gg}{xxxxx} \phraselabel{aa}{jjjjj} \phraselabel{tt}{xxxxx} \phraselabel{bb}{xxxxx}.
\end{document}
答案2
覆盖 TiKZ 的默认值是个坏主意above
,因为这样你就不能用它来指定单词上方节点的相对位置!该positioning
库增强了这一点,但前提是你为你的样式使用了新名称。
以下将节点放置在单词上方指定距离处。默认情况下,这\jdepth
等于脚注大小文本中字母“j”的深度。但您可以使用可选的第一个参数覆盖它\phraselabel
。
\jdepth
显然,您通常不会希望在同一行上使用不同的距离 - 第二行只是为了说明添加到指定维度的效果。
\documentclass{article}
\usepackage{tikz,calc}
\usetikzlibrary{positioning}
\newlength{\Aheight}
\setlength{\Aheight}{\fontcharht\font`A}
\newlength{\jdepth}
\settodepth{\jdepth}{\footnotesize j}
\newcommand{\phraselabel}[3][\jdepth]{%
\begin{tikzpicture}[%
baseline = (word.base),
txt/.style = {inner sep = 0pt, text height = \Aheight, draw},
my above/.style = {inner sep = 0pt, text depth = 0pt, draw}%
]
\node[txt] (word) {#2};
\node [my above, above=#1 of word.north] {\footnotesize{#3}};
\end{tikzpicture}%
}
\begin{document}
\phraselabel{gg}{xxxxx} \phraselabel{aa}{jjjjj} \phraselabel{tt}{xxxxx} \phraselabel{bb}{xxxxx}.\bigskip
\phraselabel[5pt]{gg}{xxxxx} \phraselabel[\jdepth+5pt]{bb}{xxxxx}\bigskip
\phraselabel[-1pt]{aa}{jjjjj} \phraselabel[\jdepth-1pt]{tt}{xxxxx}
\end{document}
不过,我不得不怀疑,您是否在重新发明轮子。虽然我不清楚您要做什么,但我有点怀疑这是最有效或最高效的方法。