我有时会使用 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}