目前,我用这个来表示二阶和四阶张量(取自某人,但我不太明白它是如何工作的):
% tensor 2:
\newcommand{\tend}[1]{\oalign{\mbox{\boldmath$#1$}\crcr\hidewidth$\scriptscriptstyle\sim$\hidewidth}}
%tensor 4:
\newcommand{\tenq}[1]{\tend{\tend #1}\vphantom{#1}}
看起来像这样:
我非常不喜欢这个结果:粗体很奇怪,比例很差,四阶张量的间距太大……我发现了 untertilde 包,它看起来对二阶更稳健,但我看不出如何从中得到四阶。我还发现了这个主题,粗体宽波浪线,它没有解决 4 阶符号堆叠问题。
有没有一种简单优雅的方法?我主要关心的是波浪号和字母的一致粗体,以及第 4 阶的正确垂直间距。
谢谢
答案1
这里我使用堆栈\sim
根据可选参数的值递归地放置在参数下方。在定义中,[1pt]
是参数的下方间隙,是多堆栈中字符[0pt]
之间的垂直间隔。这些值可以根据需要进行更改(包括设为负数)。\sim
我没有对张量本身使用任何粗体字体,但如果需要,可以将其添加到定义中或调用时。
的规范规定在设置水平间距时\def\useanchorwidth{T}
忽略下划线的宽度\sim
。唯一可能出现问题的情况是,例如,如果您在窄参数上使用相邻调用,例如\tenq[2]{i}\tenq[3]{j}
。虽然\useanchorwidth
可以删除该行,在这种情况下,\tenq
窄参数将始终至少占用 的宽度\scriptscriptstyle\sim
,但我的第一步是\,
在极少数需要的情况下手动添加空间。
\documentclass{article}
\usepackage{stackengine}
\stackMath
\newcommand\tenq[2][1]{%
\def\useanchorwidth{T}%
\ifnum#1>1%
\stackunder[0pt]{\tenq[\numexpr#1-1\relax]{#2}}{\scriptscriptstyle\sim}%
\else%
\stackunder[1pt]{#2}{\scriptscriptstyle\sim}%
\fi%
}
\begin{document}
\[
\tenq{\sigma}\neq\tenq[2]{\Lambda}\neq\tenq[3]{\Delta}\neq\tenq[4]{\psi}
\]
\end{document}
答案2
如果您喜欢第一个,您可以使用相同的定义,\tenq
但使用\approx
而不是\sim
。
也可以使用\bm
来自同一个包的,而不是\boldmath
。
梅威瑟:
\documentclass{article}
\usepackage{amsmath,bm}
% tensor 2:
\newcommand{\tend}[1]{\hbox{\oalign{$\bm{#1}$\crcr\hidewidth$\scriptscriptstyle\bm{\sim}$\hidewidth}}}
%tensor 4:
\newcommand{\tenq}[1]{\hbox{\oalign{$\bm{#1}$\crcr\hidewidth$\scriptscriptstyle\bm{\approx}$\hidewidth}}}
\begin{document}
\[
\tend{\sigma}\neq\tenq{\Lambda}
\]
\end{document}
答案3
只是为了好玩。
\documentclass{standalone}
\usepackage{amsmath,bm}
\newlength{\fillwidth}
% creates a tilde which slightly overlaps what's above and below, centered in a space \fillwidth wide
\newcommand{\flatsim}{\hbox to \fillwidth{\hfil\raisebox{0pt}[.05ex][.05ex]{$\scriptscriptstyle\bm{\sim}$}\hfil}}
\newcommand{\triple}[1]{\settowidth{\fillwidth}{$\bm{#1}$}%
\vtop{\baselineskip=0pt\hbox{$\bm{#1}$}\hbox{\rule{0pt}{.2ex}}\flatsim\flatsim\flatsim}}
\begin{document}
\triple{\sigma}
\end{document}