Qual è la differenza tra \ underline e \ underbar?
Questi due comandi sembrano identici e non ho trovato abbastanza materiale \underbar.
- Qual è la differenza?
- e quale documento / libro lo ha trattato?
Risposte
Plain TeX
Il comando TeX \underlineè una primitiva della modalità matematica che pone una linea sotto un carattere o una sottoformula senza cambiare lo stile matematico; in modalità testo genera un Missing $ insertederrore. Inoltre, plain TeX definisce
\def\underbar#1{$\setbox\z@\hbox{#1}\dp\z@\z@
\m@th \underline{\box\z@}$}
che è sostanzialmente la versione "modalità testo" del \underlinema imposta la profondità del suo argomento a zero, il che significa che la sottolineatura interferisca con lettere con discendenti ( g, p, q, y...). Lo snippet
$\underline{abpq}$ % \underline{abpq} % gives `Missing $ inserted.' error.
\underbar{abpq}
% $\underbar{abpq}$ % gives `Missing $ inserted.' error.
\bye
rendimenti
LaTeX
LaTeX cambia un po 'le cose: prima fa una copia della primitiva originale sotto il nome \@@underline, quindi \underlineviene ridefinito come un wrapper attorno a questa primitiva salvata che entra in modalità matematica se necessario, in modo tale che funzioni sia in modalità testo che in modalità matematica:
\let\@@underline\underline
\def\underline#1{%
\relax
\ifmmode\@@underline{#1}%
\else $\@@underline{\hbox{#1}}\m@th$\relax\fi}
Quindi in modalità matematica si otterrà il solito risultato, ma la macro ora funzionerà anche in modalità testo, disegnando una linea più bassa di tutte le lettere.
La macro \underbarviene definito per avere un effetto simile a sua variante plain TeX ma mantenendo la modifica \underlinein mente
\def\underbar#1{\underline{\sbox\tw@{#1}\dp\tw@\z@\box\tw@}}
Citando da source2e
Grazie alla ridefinizione di LaTeX dei
\underlinesemplici TeX\underbarpuò essere fatto in modo più semplice (ma ne abbiamo davvero bisogno?).
e in effetti è un comando piuttosto non documentato.
Come in TeX semplice, \underbarimposta la profondità del box a zero e si scontrerà con i discensori. \underbarpuò essere utilizzato sia in modalità testo che matematica ma mette il suo contenuto in un riquadro, quindi in modalità orizzontale ristretta. Se si desidera utilizzare \underbarcon ad esempio \gamma(e, naturalmente, faranno si scontrano) è necessario inserire esplicitamente modo matematico di nuovo: \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}
\underbar:- Il suo argomento viene elaborato in modalità testo per impostazione predefinita. È necessario entrare in modalità di matematica in modo esplicito al processo, per esempio, .
\underbar{$\alpha$} - La linea orizzontale è impostata molto vicino alla linea di base e quindi intersecherà tutte le parti di lettere e simboli che hanno discendenti, cioè parti che cadono sotto la linea di base (ad esempio,
ge$\gamma$).
- Il suo argomento viene elaborato in modalità testo per impostazione predefinita. È necessario entrare in modalità di matematica in modo esplicito al processo, per esempio, .
\underline:- Il suo argomento rispetta la modalità circostante (testo o matematica)
- La linea orizzontale viene spostata verso il basso, se necessario, per evitare collisioni con parti discendenti di qualsiasi carattere
\documentclass{article}
\begin{document}
$\underline{\alpha\beta\gamma}$ \underbar{$\alpha\beta\gamma$}
$\underline{effg}$ $\underbar{effg}$
\end{document}