
Momentan stelle ich Tensoren zweiter und vierter Ordnung folgendermaßen dar (von jemandem übernommen, und ich verstehe nicht wirklich, wie es funktioniert):
% tensor 2:
\newcommand{\tend}[1]{\oalign{\mbox{\boldmath$#1$}\crcr\hidewidth$\scriptscriptstyle\sim$\hidewidth}}
%tensor 4:
\newcommand{\tenq}[1]{\tend{\tend #1}\vphantom{#1}}
Und das sieht so aus:
Das Ergebnis gefällt mir überhaupt nicht: Fettdruck ist seltsam, mit schlechten Skalen, es gibt zu viel Abstand für den Tensor der vierten Ordnung ... Ich habe das Untertilde-Paket gefunden, das für die zweite Ordnung robuster aussieht, aber ich kann nicht erkennen, wie man daraus die vierte Ordnung machen kann. Ich habe auch dieses Thema gefunden,fett breittilde, die sich nicht mit der Symbolstapelung für die 4. Ordnung befassen.
Gibt es eine einfache, elegante Möglichkeit, dies zu tun? Mein Hauptanliegen ist hier eine einheitliche Fettschrift für die Tilde und den Buchstaben sowie ein korrekter vertikaler Abstand der 4. Ordnung.
Danke
Antwort1
Hier verwende ich Stapel, um rekursiv \sim
unter dem Argument zu platzieren, basierend auf dem Wert des optionalen Arguments. In der Definition [1pt]
ist dies die Unterlücke vom Argument und dies [0pt]
die vertikale Trennung zwischen \sim
Zeichen in einem Mehrfachstapel. Diese Werte können beliebig geändert werden (auch negativ gemacht werden).
Ich habe für den Tensor selbst keine fette Schriftart verwendet, obwohl diese bei Bedarf zur Definition oder zum Zeitpunkt des Aufrufs hinzugefügt werden könnte.
Die Spezifikation von \def\useanchorwidth{T}
besagt, dass die Breite des \sim
Untersatzes beim Festlegen des horizontalen Abstands ignoriert werden soll. Das einzige Mal, wenn dies ein Problem darstellen könnte, ist, wenn Sie beispielsweise nebeneinanderliegende Aufrufe für schmale Argumente verwenden, z. B. \tenq[2]{i}\tenq[3]{j}
. Die \useanchorwidth
Zeile könnte zwar entfernt werden, in welchem Fall \tenq
schmale Argumente immer mindestens die Breite von a einnehmen würden , aber mein erster Schritt wäre stattdessen , in diesen sehr seltenen Fällen, wenn es nötig ist, \scriptscriptstyle\sim
manuell Platz hinzuzufügen .\,
\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}
Antwort2
Wenn Ihnen die erste gefällt, können Sie die gleiche Definition für verwenden, aber anstelle von \tenq
verwenden .\approx
\sim
Verwenden Sie auch \bm
aus demselben Paket anstelle von \boldmath
.
MWE:
\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}
Antwort3
Nur zum Spaß.
\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}