
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:
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 verbatim
não é uma opção porque não está funcionando por dentromulticolumn
Responder1
Em vez de \_
, você pode usar \string_
:
\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 OT1
codificação, \textunderscore
, que \_
depende, é falsificado usando uma regra (não é um caractere da fonte atual). Mudar para T1
codificaçã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}
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 verbatim
fazem 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}
Na prática, usar verbatim
em 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}
Observe que como “Test” está dentro do verbatim
ambiente, ele não recebe recuo de parágrafo neste caso.
Detalhes técnicos
Para os interessados, a implementação de \textunderscore
na OT1
codificação, obtida com \tracingmacros=1\tracingonline=1
, faz:
\leavevmode \kern .06em\vbox{\hrule width .3em}
enquanto na T1
codificaçã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
:
\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}