Wie fügt man eine gestrichelte Linie über ein Bigwedge-Symbol ein, sodass sich die gestrichelte Linie wie eine Überlinie verhält?

Wie fügt man eine gestrichelte Linie über ein Bigwedge-Symbol ein, sodass sich die gestrichelte Linie wie eine Überlinie verhält?

Ich möchte eine gestrichelte Linie über die Symbole \bigwedge und \bigvee einfügen, und zwar so, dass sie genau wie eine durchgezogene Linie über denselben Symbolen aussieht. Ich weiß, wie man eine durchgezogene Linie über diese Symbole einfügt (zum Beispiel \overline{\bigwedge}). Da ich eineFragevor ein paar Jahren habe ich versucht, den Code von dort zu verwenden. Der resultierende Code:

\documentclass[11pt,a4paper,draft]{amsart}
\pagestyle{plain}
\usepackage[a4paper]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{tikz} %for dash

\makeatletter

\newcommand{\preclosure}[1]{%
  \vbox {\m@th\ialign{##\crcr
  \preclosurefill \crcr
  \noalign{\kern-\p@\nointerlineskip}
  $\hfil\displaystyle{#1}\hfil$\crcr}}}

%% fill with (short) minus signs
\def\preclosurefill{%
  $\m@th%
  \xleaders\hbox{$\mkern0mu\shortbar\mkern0mu$}\hfill%
  \shortbar%
$}

%% make the minus shorter to fit \dashedleftarrow
\def\shortbar{%
  \smash{\scalebox{0.4}[1.0]{$-$}}}
\makeatother

\begin{document}

In order to distinguish between lattice operations $\bigvee, \bigwedge$ in structure A, we use the following symbols: $\overline{\bigvee}, \overline{\bigwedge}$. Similarly, to distinguish between operations $\bigvee, \bigwedge$ in structure B, we use the following symbols: $\preclosure{\bigvee}, \preclosure{\bigwedge}$.

Inline: $\overline{\bigvee}_{\alpha \in I}$, $\preclosure{\bigvee}_{\alpha \in I}$.

In separate line:
\[
\overline{\bigvee_{\alpha \in I}}, \preclosure{\bigvee_{\alpha \in I}}.
\]
\end{document}

Resultierendes Dokument:

Ergebnisdokument

Ich habe folgende Probleme:

  1. Im Inline-Modus wird das Symbol $\preclosure{\bigwedge}$ irgendwie größer gemacht als nur $\bigwedge$.
  2. Die gestrichelte Linie weist keinen vertikalen Raum zu und verläuft in den Text
  3. Mir scheint, wenn $\overline{\bigvee}$ inline ist, dann ist die Überlinie zu nah am V-Symbol, sodass es fast wie ein Dreieck aussieht. Wenn ich hineinzoome, sehe ich, dass das nicht so ist, aber bei 100 % Zoom sieht es zu nah aus. Wie kann ich die Überlinie etwas höher verschieben? Oder denken Sie, dass das kein Problem ist?

Es ist nicht notwendig, genau denselben Code zu verwenden, den ich geschrieben habe. Ich habe einfach verwendet, was ich bereits hatte, aber ohne Erfolg :)

Antwort1

Ich würde vermeiden \overline:

\documentclass{article}
\usepackage{amsmath}

\makeatletter
\newcommand{\dashover}[2][\mathop]{#1{\mathpalette\df@over{{\dashfill}{#2}}}}
\newcommand{\fillover}[2][\mathop]{#1{\mathpalette\df@over{{\solidfill}{#2}}}}
\newcommand{\df@over}[2]{\df@@over#1#2}
\newcommand\df@@over[3]{%
  \vbox{
    \offinterlineskip
    \ialign{##\cr
      #2{#1}\cr
      \noalign{\kern1pt}
      $\m@th#1#3$\cr
    }
  }%
}
\newcommand{\dashfill}[1]{%
  \kern-.5pt
  \xleaders\hbox{\kern.5pt\vrule height.4pt width \dash@width{#1}\kern.5pt}\hfill
  \kern-.5pt
}
\newcommand{\dash@width}[1]{%
  \ifx#1\displaystyle
    2pt
  \else
    \ifx#1\textstyle
      1.5pt
    \else
      \ifx#1\scriptstyle
        1.25pt
      \else
        \ifx#1\scriptscriptstyle
          1pt
        \fi
      \fi
    \fi
  \fi
}
\newcommand{\solidfill}[1]{\leaders\hrule\hfill}
\makeatother

\begin{document}

Text:
$\bigvee_{\alpha\in I}$,
$\fillover{\bigvee}_{\alpha \in I}$,
$\dashover{\bigvee}_{\alpha \in I}$.

Subscript:
$\scriptstyle\bigvee_{\alpha\in I}$,
$\scriptstyle\fillover{\bigvee}_{\alpha \in I}$,
$\scriptstyle\dashover{\bigvee}_{\alpha \in I}$.

Display:
\[
\bigvee_{\alpha \in I}
\fillover{\bigvee}_{\alpha \in I}
\dashover{\bigvee}_{\alpha \in I}.
\]
\end{document}

Bildbeschreibung hier eingeben

Sie möchten wahrscheinlich definieren

\newcommand{\fbigvee}{\fillover{\bigvee}}

    \newcommand{\dbigvee}{\dashover{\bigvee}}

Die Befehle \filloverund \dashoverhaben ein optionales Argument, das den Typ des Objekts festlegt. Der Standardwert ist \mathop, aber es kann auch \mathreloder sein \mathbin, Sie können also verwenden

\newcommand{\dvee}{\dashover[\mathbin]{\vee}}

und $x\dvee y$würde produzieren

Bildbeschreibung hier eingeben

Möglicherweise möchten Sie den Trennraum und das Argument \noalignim Code für anpassen \df@@over. Das Makro ist jedoch nicht für andere Verwendungen als optimiert \mathop. Bei anderen Typen sollte mehr getan werden.

Antwort2

Dies hat möglicherweise den Nachteil, dass der Zeilenabstand leicht beeinflusst wird, aber ...

Ich ersetze \Overlinees, indem ich \overlineeinen kleinen zusätzlichen Stapelabstand hinzufüge.

Und für \preclosurehabe ich es so geändert, dass der mathematische Stil des Arguments unter Verwendung der \ThisStyle{...\SavedStyle...}Konstruktion des scalerelPakets erhalten bleibt.

Ich habe das Problem des zu geringen Abstands zwischen der Zeile \preclosureund der darüber liegenden Zeile nicht wirklich angesprochen. Ich würde vorschlagen, entweder kleinere Keile zu verwenden (falls das erlaubt ist) oder einen größeren Zeilenabstand zu wählen.

\documentclass[11pt,a4paper,draft]{amsart}
\pagestyle{plain}
\usepackage[a4paper]{geometry}
\usepackage{scalerel,stackengine}
\stackMath
\usepackage[utf8]{inputenc}
\usepackage{tikz} %for dash
\def\Overline#1{\ThisStyle{\overline{\addstackgap[.4pt]{\SavedStyle#1}}}}

\makeatletter

\newcommand{\preclosure}[1]{%
  \ThisStyle{%
  \vbox {\m@th\ialign{##\crcr
  \preclosurefill \crcr
  \noalign{\kern-\p@\nointerlineskip}
  $\hfil\SavedStyle{#1}\hfil$\crcr}}}}

%% fill with (short) minus signs
\def\preclosurefill{%
  $\m@th%
  \xleaders\hbox{$\mkern0mu\shortbar\mkern0mu$}\hfill%
  \shortbar%
$}

%% make the minus shorter to fit \dashedleftarrow
\def\shortbar{%
  \smash{\scalebox{0.4}[1.0]{$-$}}}
\makeatother

\begin{document}

In order to distinguish between lattice operations $\bigvee, \bigwedge$ in structure A, we use the following symbols: $\Overline{\bigvee}, \Overline{\bigwedge}$. Similarly, to distinguish between operations $\bigvee, \bigwedge$ in structure B, we use the following symbols: $\preclosure{\bigvee}, \preclosure{\bigwedge}$.

Inline: $\Overline{\bigvee}_{\alpha \in I}$, $\preclosure{\bigvee}_{\alpha \in I}$.

In separate line:
\[
\Overline{\bigvee_{\alpha \in I}}, \preclosure{\bigvee_{\alpha \in I}}.
\]
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen