
Existe uma maneira no latex de alterar a espessura vertical (altura) da linha gerada pelo \overline
comando?
\[
\overline{\overline{A \vee B}} = \overline{\overline{A} \wedge \overline{B}}
\]
Responder1
TeX
A espessura da regra padrão θ é 0,4pt no TeX. Uma \overline
fó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}
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 \Umathoverbarrule
todos 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}
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 \ThisStyle
argumento, an \LMpt
é 1pt \displaystyle
e \textstyle
, mas proporcionalmente reduzido em \scriptstyle
e \scriptscriptstyle
, como mostrado no MWE.
Pode-se ou não querer empilhar um \mathop
em 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}
Por exemplo, aqui, alteramos o deslocamento para 1.4\LMpt
e a espessura para .6\LMpt
:
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}