Detalles técnicos

Detalles técnicos

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:

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 verbatimno es una opción porque no funciona por dentro.multicolumn

Respuesta1

En lugar de \_, puedes usar \string_:

ingrese la descripción de la imagen aquí

\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 OT1la codificación, \textunderscore, en el que \_se basa, se falsifica utilizando una regla (no es un carácter de la fuente actual). Cambiar a T1codificació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}

ingrese la descripción de la imagen aquí

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 verbatimlo 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}

ingrese la descripción de la imagen aquí

Sin embargo , en la práctica, usarlo verbatimen 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}

Con palabra por palabra

Tenga en cuenta que, dado que "Prueba" está dentro del verbatimentorno, en este caso no obtiene sangría de párrafo.

Detalles técnicos

Para aquellos interesados, la implementación de la codificación \textunderscorein OT1, obtenida con \tracingmacros=1\tracingonline=1, hace:

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

mientras que en T1codificació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:

ingrese la descripción de la imagen aquí

\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}

información relacionada