Как вставить пунктирную линию поверх символа bigwedge, чтобы пунктирная линия вела себя как обычная линия?

Как вставить пунктирную линию поверх символа bigwedge, чтобы пунктирная линия вела себя как обычная линия?

Я хочу вставить пунктирную линию над символами \bigwedge и \bigvee таким образом, чтобы она выглядела точно так же, как сплошная линия над теми же символами. Я знаю, как вставить сплошную линию над этими символами (например, \overline{\bigwedge}). Поскольку я спросилвопросНесколько лет назад о том, как добавить пунктирную стрелку над буквой, я пытался использовать код оттуда. Результирующий код:

\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}

Итоговый документ:

Итоговый документ

У меня следующие проблемы:

  1. Каким-то образом во встроенном режиме символ $\preclosure{\bigwedge}$ становится больше, чем просто $\bigwedge$.
  2. Пунктирная линия не распределяет вертикальное пространство и врезается в текст.
  3. Мне кажется, что когда $\overline{\bigvee}$ инлайн, то верхняя линия слишком близко к символу V, делая его почти треугольным. Если я увеличиваю масштаб, то я вижу, что это не так, но при 100% увеличении она выглядит слишком близко. Как переместить верхнюю линию немного выше? Или вы думаете, что это не проблема?

Не обязательно использовать именно тот код, который я написал, я просто использовал то, что у меня уже было, но не успешно :)

решение1

Я бы избегал \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}

введите описание изображения здесь

Вы, вероятно, хотите определить

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

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

Команды \filloverи \dashoverимеют необязательный аргумент, который задает тип объекта. По умолчанию это \mathop, но это может быть \mathrelили \mathbin, поэтому вы можете использовать

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

и $x\dvee y$будет производить

введите описание изображения здесь

Возможно, вам захочется настроить разделительное пространство, аргумент \noalignв коде для \df@@over. Однако макрос не оптимизирован для использования, отличного от \mathop, в случае других типов следует сделать что-то еще.

решение2

Это может иметь недостаток в виде небольшого изменения межстрочного интервала, но...

Я заменяю \Overline, который делает , \overlineс добавлением небольшого дополнительного зазора в стеке.

А для \preclosureя модифицировал его так, чтобы он сохранил математический стиль аргумента, используя \ThisStyle{...\SavedStyle...}конструкцию пакета scalerel.

Я на самом деле не затронул вопрос недостаточного зазора между \preclosureи линией над ней. Я бы предложил либо использовать меньшие клинья (если это разрешено), либо перейти к большему интервалу между линиями.

\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}

введите описание изображения здесь

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