根据数学模式下的当前字体缩放 TikZ 图片

根据数学模式下的当前字体缩放 TikZ 图片

我想定义一个简单的形状并将其用作二进制数学运算符。这意味着它在用作下标时应该缩放(例如,与 的行为相同\bigcirc)。到目前为止,我的尝试让我走到了这里:

\documentclass{article}

\usepackage{tikz,amsmath}

\DeclareRobustCommand{\myop}{%
  \mathbin{\text{\tikz \node[circle,draw=black,scale=0.4] () {$r$};}}}

\begin{document}
$A \bigcirc B$ $_{A \bigcirc B}$

$A \myop B$ $_{A \myop B}$
\end{document}

Tikz 循环

可以看出,TikZ 变体表现不佳:在第一种情况下,形状小于操作数,而在第二种情况下,形状的高度几乎相同。删除scale、添加一些minimum size=0mm,inner sep=0mm等都不会改变问题。因此:

问题: 如何才能实现运算符的平滑扩展?

答案1

问题是和inner sep不会line width随字体而变化。解决方案是定义一个长度,与字体成比例变化。我选择了 的高度\mathstrut,但几乎任何高度都可以。此外,通过单独绘制圆圈,您可以分别调整其大小和内容的大小($r$)。

\documentclass{article}

\newlength{\tempdima}

\usepackage{tikz,amsmath}

\DeclareRobustCommand{\myop}{%
  \mathbin{\text{\settoheight{\tempdima}{\mathstrut}\raisebox{-.3\tempdima}{%
    \tikz{\draw[line width=0.05\tempdima] circle (0.6\tempdima);
    \node[scale=0.8] {$r$};}}}}}

\begin{document}
$A \bigcirc B$ $_{A \bigcirc B}$

$A \myop B$ $_{A \myop B}$
\end{document}

相关内容