如何使 TikZ 节点在文本行内垂直居中?

如何使 TikZ 节点在文本行内垂直居中?

我的 MWE:

\documentclass{scrreprt}
\usepackage{tikz}

\begin{document}
  Text \tikz\filldraw [lightgray,radius = 1pt] (0,0) circle[anchor = north]; more Text \tikz\filldraw [black,radius = 1pt] (0,0) circle[anchor = north]; more Text.
\end{document}

产生以下结果

结果

如您所见,圆圈位于文本行的基线上。

如何使文本行内的圆圈垂直居中?垂直居中是指在小写字母的垂直中心画一条虚拟线,不包括高度“非标准”的字母:f、g、h、i、j、k、l、p、q、t、y。

提前感谢您的帮助和努力!

答案1

您可以将 tikzpicture 括进去\vcenter{\hbox{...}}以避免手动调整。

在此处输入图片描述

\documentclass{scrreprt}
\usepackage{tikz}

\begin{document}
  Text $\vcenter{\hbox{\tikz\filldraw [lightgray,radius = 1pt] (0,0) circle[anchor = north];}}$ more 
  Text $\vcenter{\hbox{\tikz\filldraw [black,radius = 1pt] (0,0) circle[anchor = north];}}$ more Text.
\end{document}

答案2

y = 0.5ex这是使用不同字体进行缩放的一种可能方法:

在此处输入图片描述

\documentclass{scrreprt}
\usepackage{tikz}

\begin{document}
  \noindent Text \tikz[baseline]\filldraw [lightgray,radius = 1pt] (0,0.5ex) circle;
  more Text \tikz[baseline]\filldraw [black,radius = 1pt] (0,0.5ex) circle;
  more Text.
\end{document}

您甚至可以创建一个命令来进一步简化文本:

\documentclass{scrreprt}
\usepackage{tikz}

\NewDocumentCommand{\MidDot}{O{black} O{1}}{%
  \tikz[baseline]\filldraw [#1, radius=#2pt] (0,0.5ex) circle;%
  }

\begin{document}
  \noindent Text \tikz[baseline]\filldraw [lightgray,radius = 1pt] (0,0.5ex) circle;
  more Text \tikz[baseline]\filldraw [black,radius = 1pt] (0,0.5ex) circle;
  more Text.\\
  Text \MidDot[lightgray]
  more Text \MidDot\
  more Text.
\end{document}

生成结果:

在此处输入图片描述

相关内容