\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 ?
게다가 #
캐릭터도 2배가 됩니다.
다음과 같은 제한 사항을 알고 있다면 "가난한 사람의 축어"로 사용할 수 있습니다.
\texttt{\tl_to_str:n{some_verbatim}}
인쇄할 것이다
some_verbatim
기본 인코딩이 OT1인 경우에도 마찬가지입니다.