Espessura sobreposta

Espessura sobreposta

Existe uma maneira no latex de alterar a espessura vertical (altura) da linha gerada pelo \overlinecomando?

\[
\overline{\overline{A \vee B}} = \overline{\overline{A} \wedge \overline{B}}
\]

Responder1

TeX

A espessura da regra padrão θ é 0,4pt no TeX. Uma \overlinefórmula é definida como \vbox:

  • No topo está um kernel de θ
  • A barra segue com espessura θ
  • A lacuna para a fórmula tem altura 3θ
  • A fórmula segue.

θ é retirado do fontdimen 8 da família de fontes matemáticas 3. Exemplo:

\documentclass{article}

\begin{document}
  $\overline{abc}$
  \fontdimen8\textfont3=5pt
  $\overline{abc}$
\end{document}

Resultado TeX

Como pode ser visto, também a distância entre a linha e a fórmula muda com a espessura da linha (mesmo com fator 3).

LuaTeX/LuaLaTeX

LuaTeX torna os parâmetros configuráveis:

  • \Umathoverbarkern: o espaço em branco acima da linha
  • \Umathoverbarrule: espessura da linha
  • \Umathoverbarvgap: a lacuna entre a linha e a fórmula

Esses valores podem ser definidos para todos os oito estilos matemáticos. LuaTeX também disponibiliza estilos restritos como:

  • \crampeddisplaystyle
  • \crampedtextstyle
  • \crampedscriptstyle
  • \crampedscriptscriptstyle

Em estilos restritos, usados ​​para fórmulas abaixo das barras ( \overline, \sqrt, denominador em frações), os expoentes são definidos mais baixos do que o normal.

LuaLaTeX adiciona um prefixo luatexàs novas primitivas do LuaTeX (para evitar conflitos de nomes). O exemplo a seguir define \Umathoverbarruletodos os oito estilos:

\documentclass{article}

\newcommand*{\setumath}[2]{%
  \csname luatexUmath#1\endcsname\displaystyle=#2\relax
  \csname luatexUmath#1\endcsname\luatexcrampeddisplaystyle=#2\relax
  \csname luatexUmath#1\endcsname\textstyle=#2\relax
  \csname luatexUmath#1\endcsname\luatexcrampedtextstyle=#2\relax
  \csname luatexUmath#1\endcsname\scriptstyle=#2\relax
  \csname luatexUmath#1\endcsname\luatexcrampedscriptstyle=#2\relax
  \csname luatexUmath#1\endcsname\scriptscriptstyle=#2\relax
  \csname luatexUmath#1\endcsname\luatexcrampedscriptscriptstyle=#2\relax
}

\begin{document}
  \newcommand*{\test}[1]{%
    \csname check@mathfonts\endcsname
    \setumath{overbarrule}{#1}%
    $\overline{abc}$ % additional space
  }
  \test{.1pt}
  \test{.4pt}
  \test{1.6pt}
  \test{6.4pt}
\end{document}

Resultado LuaLaTeX

Responder2

Em vez de tentar lidar com a definição existente, pode-se criar a sua própria definição, usando pilhas. Aqui 1.2\LMpté o deslocamento vertical acima do item da linha sobreposta e .4\LMpté a espessura da régua. Como parte de um \ThisStyleargumento, an \LMpté 1pt \displaystylee \textstyle, mas proporcionalmente reduzido em \scriptstylee \scriptscriptstyle, como mostrado no MWE.

Pode-se ou não querer empilhar um \mathopem torno da definição.

\documentclass{article}
\usepackage[usestackEOL]{stackengine}
\usepackage{scalerel}
\def\myoverline#1{\ThisStyle{%
  \setbox0=\hbox{$\SavedStyle#1$}%
  \stackengine{1.2\LMpt}{$\SavedStyle#1$}{\rule{\wd0}{.4\LMpt}}{O}{c}{F}{F}{S}%
}}
\begin{document}
\[
\myoverline{\myoverline{A \vee B}} = \myoverline{\myoverline{A} \wedge
\myoverline{B}}
\]\[
\scriptscriptstyle
\myoverline{\myoverline{A \vee B}} = \myoverline{\myoverline{A} \wedge
\myoverline{B}}
\]
\end{document}

insira a descrição da imagem aqui

Por exemplo, aqui, alteramos o deslocamento para 1.4\LMpte a espessura para .6\LMpt:

insira a descrição da imagem aqui

Responder3

A resposta a seguir não é uma solução, mas um truque fácil, adequado para alguns propósitos (enãopara todos os fins). O \overbracket{}comando no pacoteferramentas matemáticastem dois argumentos (espessura da régua e altura do colchete):

\overbracket[〈rule thickness〉] [〈bracket height〉]{〈arg〉}

Suponha que você defina uma espessura de lâmina menor quexponto. Se você definir a altura do suporte em-xpt então você obtém uma linha (valores entre 0 e menos a espessura da regra também produzem uma linha, mas pequenas anomalias podem ser visíveis em seus extremos).

A solução não é estritamente "correta", pois a linha resultante é um pouco mais curta que a de \overline{}e a distância entre as linhas não deve ser a mesma que em \overline{\overline{}}. Mas, para alguns propósitos, o resultado pode ser bastante semelhante.

No seguinte exemplo de trabalho mínimo são definidos dois comandos: na \myov{}espessura é definido no preâmbulo; há \myovline{}um argumento para isso. Defino a altura do colchete em -1pt porque todas as espessuras no MWE estão abaixo de 1pt:

\documentclass{article}
\usepackage{mathtools}
\newcommand*{\myov}[1]{\overbracket[0.65pt][-1pt]{#1}}
\newcommand*{\myovline}[2]{\overbracket[#2][-1pt]{#1}}
\begin{document}
$$\overline{A \vee B} = \overline{\overline{A} \wedge \overline{A}}$$ % Default thickness = 0.4 pt
$$\myovline{A \vee B}{0.4pt} = \myovline{\myovline{A}{0.4pt} \wedge \myovline{A}{0.4pt}}{0.4pt}$$
$$\myovline{A \vee B}{0.6pt} = \myovline{\myovline{A}{0.8pt} \wedge \myovline{A}{0.8pt}}{0.8pt}$$
$$\myov{A \vee B} = \myov{\myov{A} \wedge \myov{A}}$$
\end{document}

insira a descrição da imagem aqui

informação relacionada