Qual é a diferença entre \ underline e \ underbar?

Oct 23 2020

Esses dois comandos parecem idênticos e não encontrei materiais suficientes no \underbar.

  • Qual é a diferença?
  • e qual documento / livro abordou isso?

Respostas

15 campa Oct 23 2020 at 09:36

Plain TeX

O comando TeX \underlineé um modo matemático primitivo que coloca uma linha sob um caractere ou subfórmula sem alterar o estilo matemático; no modo de texto, ele gera um Missing $ insertederro. Além disso, o TeX simples define

\def\underbar#1{$\setbox\z@\hbox{#1}\dp\z@\z@
  \m@th \underline{\box\z@}$}

que é basicamente a versão "modo texto" de \underline, mas define a profundidade de seu argumento a zero, o que significa que o sublinhado irá interferir com letras com descendentes ( g, p, q, y...). O trecho

$\underline{abpq}$ % \underline{abpq} % gives `Missing $ inserted.' error.
\underbar{abpq}
% $\underbar{abpq}$ % gives `Missing $ inserted.' error.
\bye

rendimentos


Látex

LaTeX muda um pouco as coisas: primeiro ele faz uma cópia do primitivo original com o nome \@@underlinee, em seguida, \underlineé redefinido como um invólucro em torno deste primitivo salvo que entra em modo matemático se necessário, de modo que funciona tanto em modo texto quanto em modo matemático:

\let\@@underline\underline
\def\underline#1{%
  \relax
  \ifmmode\@@underline{#1}%
  \else $\@@underline{\hbox{#1}}\m@th$\relax\fi}

Portanto, no modo matemático você obterá o resultado normal, mas a macro agora funcionará também no modo texto, desenhando uma linha abaixo de todas as letras.

A macro \underbaré definida para ter um efeito semelhante a sua variante TeX simples, mas mantendo a modificação de \underlineem mente

\def\underbar#1{\underline{\sbox\tw@{#1}\dp\tw@\z@\box\tw@}}

Citando de source2e

Devido à redefinição do LaTeX de TeXs \underlinesimples, \underbarpode ser feita de uma forma mais simples (mas será que precisamos disso?).

e na verdade é um comando bastante indocumentado.

Como no TeX simples, \underbardefine a profundidade da caixa como zero e entrará em conflito com os descendentes. \underbarpode ser usado tanto no modo de texto quanto no modo matemático, mas coloca seu conteúdo em uma caixa, portanto, no modo horizontal restrito. Se você quiser usar \underbarcom, por exemplo \gamma(e, claro, eles vão colidir) é necessário introduzir explicitamente o modo de matemática novamente: \underbar{$\gamma$}.

\documentclass{article}

\begin{document}

\underline{abpq} vs \underbar{abpq}

$\underline{abpq}$ vs $\underbar{abpq}$ % both the following work: $\underline{\gamma}$ or \underline{$\gamma$} % this works \underbar{$\gamma$} % this givese a `Missing $ inserted' error
%$\underbar{\gamma}$

\end{document}

9 Mico Oct 23 2020 at 09:40
  • \underbar:

    • Seu argumento é processado em modo de texto por padrão. Você precisa entrar no modo matemático explicitamente para processar, digamos ,.\underbar{$\alpha$}
    • A linha horizontal é definida muito perto da linha de base e, portanto, cruzará todas as partes de letras e símbolos que têm descendentes, ou seja, porções que caem abaixo da linha de base (por exemplo, ge$\gamma$)
  • \underline:

    • Seu argumento respeita o modo circundante (texto ou matemático)
    • A linha horizontal é deslocada para baixo, conforme necessário, para evitar colisões com porções descendentes de quaisquer caracteres

\documentclass{article}
\begin{document}
$\underline{\alpha\beta\gamma}$ \underbar{$\alpha\beta\gamma$}

$\underline{effg}$ $\underbar{effg}$
\end{document}