我想定义一个简单的形状并将其用作二进制数学运算符。这意味着它在用作下标时应该缩放(例如,与 的行为相同\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 变体表现不佳:在第一种情况下,形状小于操作数,而在第二种情况下,形状的高度几乎相同。删除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}