\documentclass{article}
\usepackage{expl3}
\ExplSyntaxOn
\begin{document}
\tl_to_str:n { testing _ things }
\par
\tl_set:Nn \l_tmpa_tl { testing _ things }
\tl_to_str:N \l_tmpa_tl
\end{document}
da un resultado extraño ( testing ̇things
). Como puedo conseguir testing_things
? Básicamente quiero contenido textual (con saltos de línea).
Respuesta1
Esto no es nada extraño: si pruebo el sencillo ejemplo
\documentclass{article}
\begin{document}
A\char`\_B
\end{document}
yo obtengo
porque las fuentes estándar en codificación OT1 tienen el acento de punto en la ranura que ASCII reserva para el guión bajo. Solo agregando
\usepackage[T1]{fontenc}
produce
porque las fuentes codificadas T1 tienen todos los caracteres ASCII en su lugar adecuado.
La función \tl_to_str:n
no está pensada para palabra por palabra, sino para transformar la entrada en una cadena que consta de 12 caracteres del código de categoría (los espacios siguen siendo el código de categoría 10); utiliza el mismo mecanismo que usa TeX \string
, en particular, se agregará un espacio después de las palabras de control, por lo que
\tl_to_str:n {\foo\baz?}
imprimirá
\foo \baz ?
Además, #
los personajes se duplicarán.
Puedes utilizarlo como “texto literal de persona pobre”, si eres consciente de estas limitaciones:
\texttt{\tl_to_str:n{some_verbatim}}
imprimirá
some_verbatim
también cuando la codificación predeterminada es OT1.