Tikz 下标或指数

Tikz 下标或指数

我有时会使用 tikz 绘制特殊符号,然后将其用于方程式中。我不知道是否有更好的方法,但它相当简单,而且效果很好。举一个具体的例子:

\newcommand{\symb}{\tikz[baseline=(s.base)]{
        \node[inner sep=1pt,outer sep=0pt] (s) {$s$};
        \draw[-] (s.north east) -- (s.south east) -- (s.south west) -- (s.north west);
    }}

得到一个带有三个方框的数学样式的 s。它几乎在所有情况下都运行良好,但有一个例外:当用作下标或指数时,它无法正确缩放。

两个 s的$s$ vs $\symb$大小完全相同,即使它们出现在标题中或字体大小不同,{\Large $s$ vs $\symb$}它们仍然具有相同的大小。但是当涉及脚本时,即在 中$X_s$ vs $X_\symb$,第二个 $s$ 不是脚本大小。

那么,有没有办法修改上面的命令 $\symb$,以便在下标或指数中使用时,它可以像文本一样缩放?

我已经找到了一个可行的解决方案:创建在 scriptstyle 中使用的命令的第二个版本:

\newcommand{\symbsc}{\tikz[baseline=(s.base)]{
        \node[inner sep=1pt,outer sep=0pt] (s) {$\scriptstyle s$};
        \draw[-] (s.north east) -- (s.south east) -- (s.south west) -- (s.north west);
    }}

这在视觉上产生了所需的结果,但我发现根据我是否使用脚本风格有两个不同的函数有点烦人。我希望有人能建议我一个更好的方法来做到这一点?

最小示例:

\documentclass{article}
\usepackage{tikz}

\newcommand{\symb}{\tikz[baseline=(s.base)]{
        \node[inner sep=1pt,outer sep=0pt] (s) {$s$};
        \draw[-] (s.north east) -- (s.south east) -- (s.south west) -- (s.north west);
    }}

\begin{document}

In normale size: $\symb$ vs $s$.

In large scale, it scales well: {\Large $\symb$ vs $s$ }

But in subscript, it doesn't: $X_{\symb}$ vs $X_{s}$

It especially look bad if both appear in the same subscrit:

$X_{s \symb}$ vs $s \symb$

\end{document}

在此处输入图片描述

答案1

将整个东西包装在提供的包\tikz中即可。请注意,就像在文本模式下使用一样,在这种情况下不会造成任何损害。\text{...}amsmath\text\mbox

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}

\makeatletter
\newcommand{\symb}{%
  \text{%
    \tikz[baseline=(s.base)] {
      \node[inner sep=1pt, outer sep=0pt] (s) {$s$};
      \draw (s.north east) -- (s.south east) -- (s.south west) -- (s.north west);
    }%
  }%
}
\makeatother

\begin{document}

In normale size: $\symb$ vs $s$.

In large scale, it scales well: {\Large $\symb$ vs $s$ }

But in subscript, it doesn't: $X_{\symb}$ vs $X_{s}$

It especially look bad if both appear in the same subscrit:

$X_{s \symb}$ vs $s \symb$

\end{document}

在此处输入图片描述

相关内容