
Conozco varias formas de solucionar este problema (p. ej. \usepackage[T1]{fontenc}
), pero quiero entender qué sucede en el siguiente ejemplo.
\documentclass{article}
\begin{document}
\noindent
\$ \% \& \{ \} \_ \# \textbackslash \\
\ttfamily \$ \% \& \{ \} \_ \# \textbackslash \\
\verb+$ % & { } _ # \ +
\end{document}
¿Por qué intentar obtener una
\ttfamily
llave, un guión bajo o una barra invertida da como resultado la sustitución del símbolo romano ordinario? Los glifos claramente no faltan, porque se puede acceder a ellos en modo textual.¿Cómo accede exactamente el modo palabra por palabra a estos glifos?
Al eliminar las llaves y la barra invertida, de modo que el guión bajo sea el único carácter "problemático" restante, se eliminan las advertencias de fuente, a pesar de que todavía se está realizando una sustitución. ¿Por qué es esto?
Respuesta1
\verb
y verbatim
supongamos que la fuente tiene estos caracteres en sus posiciones ascii y localmente hace que los caracteres sean catcode 12 (como puntuación) sin una definición especial.
\textbackslash
(y amigos) se define como un comando de codificación específica y (para fingir un aire de cordura sobre las codificaciones TeX originales) LaTeX asume que OT1
la codificación es cmr10
cuya codificación no tiene un carácter de barra invertida. Entonces, en OT
la definición predeterminada se usa (que usa las fuentes matemáticas). \ttfamily
cambia la familia pero no la codificación y, en ese caso, obtiene la definición OT1 aunque la cmtt
fuente esté realmente codificada de manera diferente.
Las cosas funcionan mejor T1
porque las fuentes etiquetadas como codificadas T1 de hecho tienen la misma codificación.
\_
es diferente porque \textunderscore
tiene una definición predeterminada que no usa ninguna fuente sino una regla horizontal.