
Estoy luchando con el problema de los guiones bajos en una fuente monocromática. Parece que es más corto que otros símbolos. Por ejemplo:
\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}
El resultado:
Como puede ver, la última línea (con guiones bajos) se desplaza hacia la izquierda. ¿Cómo puedo hacer el
PD: No, no puedo usar una tabla nativa; esta es una pieza generada por el usuario que tengo que insertar tal cual. PSS El verbatim
no es una opción porque no funciona por dentro.multicolumn
Respuesta1
En lugar de \_
, puedes 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}
Respuesta2
La forma más natural es utilizar verbatim
(ver más abajo). Pero expliquemos un poco qué pasa primero.
En OT1
la codificación, \textunderscore
, en el que \_
se basa, se falsifica utilizando una regla (no es un carácter de la fuente actual). Cambiar a T1
codificación agregando \usepackage[T1]{fontenc}
utiliza \_
un carácter real de la fuente seleccionada 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}
Los guiones bajos ahora tienen el mismo tamaño que el resto de caracteres. Sin embargo, como señaló Barbara Beeton, los guiones consecutivos en modo no textual se combinan en ligaduras (en el guión con --
, en el guión con ---
). Si desactivamos las ligaduras (que es una de las cosas que verbatim
lo hacen), entonces todas las líneas tendrán la longitud esperada:
\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}
Sin embargo , en la práctica, usarlo verbatim
en tales situaciones es más natural. Los ejemplos anteriores fueron solo para ayudar a comprender lo que sucede detrás de escena. Por lo tanto, lo que haría aquí es esto:
\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}
Tenga en cuenta que, dado que "Prueba" está dentro del verbatim
entorno, en este caso no obtiene sangría de párrafo.
Detalles técnicos
Para aquellos interesados, la implementación de la codificación \textunderscore
in OT1
, obtenida con \tracingmacros=1\tracingonline=1
, hace:
\leavevmode \kern .06em\vbox{\hrule width .3em}
mientras que en T1
codificación, al final, es simple \char"5F
(por lo tanto, un comando que agrega a la lista actual un cuadro de caracteres que contiene el carácter con código hexadecimal 5F en la fuente actual).
Respuesta3
Yo usaría 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}