
Conheço várias maneiras de corrigir isso (por exemplo \usepackage[T1]{fontenc}
), mas quero entender o que está acontecendo no exemplo a seguir.
\documentclass{article}
\begin{document}
\noindent
\$ \% \& \{ \} \_ \# \textbackslash \\
\ttfamily \$ \% \& \{ \} \_ \# \textbackslash \\
\verb+$ % & { } _ # \ +
\end{document}
Por que a tentativa de obter uma
\ttfamily
chave, um sublinhado ou uma barra invertida resulta na substituição do símbolo romano comum? Os glifos claramente não estão faltando, porque o modo literal pode acessá-los.Como exatamente o modo literal está acessando esses glifos?
Excluir as chaves e a barra invertida, de modo que o sublinhado seja o único caractere de 'problema' restante, elimina os avisos de fonte, apesar do fato de que uma substituição ainda está ocorrendo. Por que é isso?
Responder1
\verb
e verbatim
suponha que a fonte tenha esses caracteres em suas posições ASCII e localmente faça com que os caracteres sejam catcode 12 (como pontuação) sem nenhuma definição especial.
\textbackslash
(e amigos) é definido como um comando específico de codificação e (para fingir um ar de sanidade sobre as codificações originais do TeX) o LaTeX assume que OT1
a codificação é a codificação cmr10
que não possui uma barra invertida. Portanto, na OT
definição padrão é usada (que usa as fontes matemáticas). \ttfamily
muda a família, mas não a codificação e, nesse caso, você obtém a definição OT1, mesmo que a cmtt
fonte seja codificada de maneira diferente.
As coisas funcionam melhor T1
porque as fontes rotuladas como codificadas em T1 têm, na verdade, a mesma codificação.
\_
é diferente porque \textunderscore
tem uma definição padrão que não usa fonte, mas uma regra horizontal.