字母周围对齐圆圈 - tikz

字母周围对齐圆圈 - tikz

我正在使用以下基于 tikz 的命令在字母周围创建一个圆圈。

\newcommand*\circled[1]{\tikz[baseline=(char.base)]{
        \node[shape=circle,draw,minimum size=4mm, inner sep=0pt] (char)
        {#1};}}

它运行良好,但每当我在同一行使用多个字母时,它们就不会对齐。

圆圈未对齐

我猜这与基线有关,就像圆是参照重心创建的一样。请注意,b 和 d 比 a 和 c 高一点。我该如何解决这个问题?

更新

根据我从评论中得到的建议(感谢大家),我让圆圈彼此对齐(这是我想要的),但不幸的是没有与文本对齐:

排列

我看到另一篇帖子提出了这一点propnode(粉红色 a),并且我尝试使用第一个参数将其转移到各处,但没有效果。

\pgfmathsetmacro{\nodebasesize}{1} % A node with a value of one will have this diameter
\pgfmathsetmacro{\nodeinnersep}{0.05}
\newcommand{\propnode}[5]{% position, name, options, value, label
\begin{tikzpicture}
    \pgfmathsetmacro{\minimalwidth}{sqrt(#4*\nodebasesize)}
    \node[#3,minimum width=\minimalwidth*1cm,inner sep=\nodeinnersep*1cm,circle,draw] (#2) at (#1) {#5};
    \end{tikzpicture}
}

事实上,propnode有点太高了,而圆圈有点太低了。这是调用所有内容的代码:

(\circled{b},\circled{a},\circled{c},\circled{d},\propnode{0,4}{n05}{fill=pink,text=black}{0.15}{a}). 

答案1

下面是一个使用支柱的示例:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\newcommand*\circled[1]{\tikz[baseline=(char.base)]{
        \node[shape=circle,draw,minimum size=4mm, inner sep=0pt] (char)
        {\rule[-3pt]{0pt}{\dimexpr2ex+2pt}#1};}}


\begin{document}

\foreach \myn [count=\myc] in {a,b,c,d,e,p,q}
{%%
  \circled{\myn}\ifnum\myc<7\relax,\fi
}%%

\end{document}

在此处输入图片描述

答案2

这是使用平均算法:

\documentclass[]{article}\usepackage{amsmath,mathtools,amssymb,tikz}
\newlength\myheight
\newcommand*\ccircled[1]{\settowidth{\myheight}{#1}%
    \raisebox{-.1\myheight}{\tikz[baseline=(char.base)]{%
        \node[shape=circle,draw,minimum size=\myheight*\myheight*.4,inner sep=1pt](char){#1};}}}
\begin{document}
\ccircled{S}u\ccircled{z}u\ccircled{k}i
\end{document}

根据要进行的平方计算次数,可以使其更加平滑。

测试

相关内容