двойной символ тильды под буквой

двойной символ тильды под буквой

В настоящее время я представляю тензор второго и четвертого порядка с помощью этого (взято у кого-то, и я не совсем понимаю, как это работает):

    % 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-го порядка.

Есть ли простой элегантный способ сделать это? Моя главная забота здесь - это единообразное жирное начертание для тильды и буквы, а также правильный вертикальный интервал 4-го порядка.

Спасибо

решение1

Здесь я использую стеки для рекурсивного размещения \simпод аргументом, основываясь на значении необязательного аргумента. В определении — [1pt]это зазор под аргументом, а [0pt]— это вертикальное разделение между \simсимволами в мультистеке. Эти значения можно изменять по своему усмотрению (в том числе делать отрицательными).

Я не использовал жирный шрифт для самого тензора, хотя при желании его можно добавить в определение или во время вызова.

Спецификация \def\useanchorwidth{T}говорит игнорировать ширину нижнего \simнабора при установке горизонтального интервала. Единственный случай, когда это может быть проблемой, это если вы, например, использовали смежные вызовы для узких аргументов, например, \tenq[2]{i}\tenq[3]{j}. Хотя \useanchorwidthстроку можно было бы удалить, и в этом случае \tenqс узкими аргументами она всегда будет занимать как минимум ширину a \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}

тройная тильда

Связанный контент