Отображение дословного содержания с помощью \tl_to_str:*

Отображение дословного содержания с помощью \tl_to_str:*
\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}

дает странный результат ( testing ̇things). Как мне получить testing_things? Мне в основном нужно дословное содержание (с переносом строк).

решение1

В этом нет ничего странного: если я попробую простой пример

\documentclass{article}
\begin{document}
A\char`\_B
\end{document}

я получил

введите описание изображения здесь

потому что стандартные шрифты в кодировке OT1 имеют акцент в виде точки в слоте, который ASCII зарезервировал для подчеркивания. Просто добавьте

\usepackage[T1]{fontenc}

производит

введите описание изображения здесь

поскольку в шрифтах с кодировкой T1 все символы ASCII находятся на своих местах.

Функция \tl_to_str:nне предназначена для дословного ввода, а для преобразования входных данных в строку, состоящую из символов с кодом категории 12 (пробелы по-прежнему имеют код категории 10); она использует тот же механизм, который TeX использует для \string, в частности, после управляющих слов будет добавлен пробел, поэтому

\tl_to_str:n {\foo\baz?}

напечатает

\foo \baz ?

Более того, #персонажи будут дублироваться.

Вы можете использовать его как «дословный перевод для бедных», если вы знаете о следующих ограничениях:

\texttt{\tl_to_str:n{some_verbatim}}

напечатает

some_verbatim

также когда кодировка по умолчанию — OT1.

Связанный контент