Quiero insertar una línea discontinua sobre los símbolos \bigwedge y \bigvee de tal manera que se vea exactamente como una línea continua sobre los mismos símbolos. Sé cómo insertar una línea continua sobre esos símbolos (por ejemplo, \overline{\bigwedge}). Desde que le pregunté apreguntaHace unos años, sobre cómo agregar una flecha discontinua sobre una letra, intenté usar el código desde allí. Código resultante:
\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}
Documento resultante:
Tengo los siguientes problemas:
- De alguna manera, en el modo en línea, el símbolo $\preclosure{\bigwedge}$ se hace más grande que solo $\bigwedge$.
- La línea discontinua no asigna espacio vertical y llega al texto.
- Me parece que cuando $\overline{\bigvee}$ está en línea, entonces la línea superior está demasiado cerca del símbolo V, lo que hace que parezca casi un triángulo. Si hago zoom, puedo ver que no es así, pero con un zoom del 100% parece demasiado cerca. ¿Cómo mover la línea un poco más arriba? ¿O crees que esto no es un problema?
No es necesario usar exactamente el mismo código que escribí, solo usé el que ya tenía, pero no con éxito :)
Respuesta1
Yo evitaría \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}
Probablemente quieras definir
\newcommand{\fbigvee}{\fillover{\bigvee}}
\newcommand{\dbigvee}{\dashover{\bigvee}}
Los comandos \fillover
y \dashover
tienen un argumento opcional que establece el tipo de objeto. El valor predeterminado es \mathop
, pero puede ser \mathrel
o \mathbin
, por lo que puedes usar
\newcommand{\dvee}{\dashover[\mathbin]{\vee}}
y $x\dvee y$
produciría
Es posible que desees ajustar el espacio de separación, el argumento \noalign
en el código para \df@@over
. Sin embargo, la macro no está optimizada para usos distintos a \mathop
, se debe hacer algo más en el caso de otros tipos.
Respuesta2
Esto puede tener el inconveniente de afectar ligeramente el interlineado, pero...
Lo sustituyo \Overline
por el que \overline
agrega un pequeño espacio de pila adicional.
Y para \preclosure
, lo modifiqué para que conserve el estilo matemático del argumento, usando la \ThisStyle{...\SavedStyle...}
construcción del scalerel
paquete.
Realmente no abordé la cuestión de la falta de espacio entre el \preclosure
y la línea superior. Sugeriría utilizar cuñas más pequeñas (si está permitido) o utilizar un interlineado más grande.
\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}