Detalhes técnicos

Detalhes técnicos

Estou lutando com o problema dos sublinhados em uma fonte mono. Parece que é mais curto que outros símbolos. Por exemplo:

\documentclass{article}

\begin{document}
\ttfamily
Test \\
.------------.-------------.--------------.\\
\ |\ abcdefghig\ |\ klmnopqrstu\ |\ vwxyzabcdefg\ | \\
.------------.-------------.--------------.\\
\ |\ abc[e]ghig\ |\ klm[o]qrstu\ |\ vwxyza[c]efg\ | \\
.------------.-------------.--------------.\\
\ |\ dfi\_cke[x]\ |\ dfi\_cs\_n[x]\ |\ dfi\_act\_n[x]\ | \\
.------------.-------------.--------------.
\end{document}

O resultado:

O resultado

Como você pode ver, a última linha (com sublinhados) está deslocada para a esquerda. Como posso fazer o

PS Não, não posso usar uma tabela nativa - esta é uma peça gerada pelo usuário que preciso inserir como está. PSS The verbatimnão é uma opção porque não está funcionando por dentromulticolumn

Responder1

Em vez de \_, você pode usar \string_:

insira a descrição da imagem aqui

\documentclass{article}

\begin{document}

\ttfamily
Test \\
.------------.-------------.--------------.\\
\ |\ abcdefghig\ |\ klmnopqrstu\ |\ vwxyzabcdefg\ | \\
.------------.-------------.--------------.\\
\ |\ abc[e]ghig\ |\ klm[o]qrstu\ |\ vwxyza[c]efg\ | \\
.------------.-------------.--------------.\\
\ |\ dfi\string_cke[x]\ |\ dfi\string_cs\string_n[x]\ |\ dfi\string_act\string_n[x]\ | \\
.------------.-------------.--------------.

\end{document}

Responder2

A maneira mais natural é usar verbatim(veja abaixo). Mas vamos explicar um pouco o que acontece primeiro.

Na OT1codificação, \textunderscore, que \_depende, é falsificado usando uma regra (não é um caractere da fonte atual). Mudar para T1codificação adicionando \usepackage[T1]{fontenc}faz \_uso de um caractere real da fonte selecionada por \ttfamily:

\documentclass{article}
\usepackage[T1]{fontenc}

\begin{document}
\ttfamily
Test \\
.------------.-------------.--------------.\\
\ |\ abcdefghig\ |\ klmnopqrstu\ |\ vwxyzabcdefg\ | \\
.------------.-------------.--------------.\\
\ |\ abc[e]ghig\ |\ klm[o]qrstu\ |\ vwxyza[c]efg\ | \\
.------------.-------------.--------------.\\
\ |\ dfi\_cke[x]\ |\ dfi\_cs\_n[x]\ |\ dfi\_act\_n[x]\ | \\
.------------.-------------.--------------.
\end{document}

insira a descrição da imagem aqui

Os sublinhados agora têm o mesmo tamanho que outros caracteres. No entanto, como apontado por Barbara Beeton, hífens consecutivos no modo não literal combinam-se em ligaduras (traço com --, travessão com ---). Se desligarmos as ligaduras – que é uma das coisas que verbatimfazem isso – então todas as linhas terão o comprimento esperado:

\documentclass{article}
\usepackage[T1]{fontenc}

\begin{document}

\begingroup
\ttfamily\makeatletter\@noligs\makeatother
Test \\
.------------.-------------.--------------.\\
\ |\ abcdefghig\ |\ klmnopqrstu\ |\ vwxyzabcdefg\ | \\
.------------.-------------.--------------.\\
\ |\ abc[e]ghig\ |\ klm[o]qrstu\ |\ vwxyza[c]efg\ | \\
.------------.-------------.--------------.\\
\ |\ dfi\_cke[x]\ |\ dfi\_cs\_n[x]\ |\ dfi\_act\_n[x]\ | \\
.------------.-------------.--------------.
\endgroup

\end{document}

insira a descrição da imagem aqui

Na prática, usar verbatimem tais situações é mais natural. Os exemplos acima foram apenas para ajudar a entender o que acontece nos bastidores. Assim, o que eu faria aqui é o seguinte:

\documentclass{article}
\usepackage[T1]{fontenc}

\begin{document}

\begin{verbatim}
Test
.-------------.-------------.--------------.
 | abcdefghig | klmnopqrstu | vwxyzabcdefg |
.-------------.-------------.--------------.
 | abc[e]ghig | klm[o]qrstu | vwxyza[c]efg |
.-------------.-------------.--------------.
 | dfi_cke[x] | dfi_cs_n[x] | dfi_act_n[x] |
.-------------.-------------.--------------.
\end{verbatim}

\end{document}

Com literalmente

Observe que como “Test” está dentro do verbatimambiente, ele não recebe recuo de parágrafo neste caso.

Detalhes técnicos

Para os interessados, a implementação de \textunderscorena OT1codificação, obtida com \tracingmacros=1\tracingonline=1, faz:

\leavevmode \kern .06em\vbox{\hrule width .3em}

enquanto na T1codificação, no final das contas, é simples \char"5F(portanto, um comando que adiciona à lista atual uma caixa de caracteres contendo o caractere com código hexadecimal 5F na fonte atual).

Responder3

Eu usaria verbatim:

insira a descrição da imagem aqui

\documentclass{article}
\begin{document}
\begin{verbatim}
   Test
.------------.-------------.--------------.
| abcdefghig | klmnopqrstu | vwxyzabcdefg | 
.------------.-------------.--------------.
| abc[e]ghig | klm[o]qrstu | vwxyza[c]efg | 
.------------.-------------.--------------.
| dfi_cke[x] | dfi_cs_n[x] | dfi_act_n[x] | 
.------------.-------------.--------------.
\end{verbatim}
\end{document}

informação relacionada