!["Verbatim"에서 "commandchars"를 사용할 때 중괄호가 잘못 처리되는 이유는 무엇입니까?](https://rvso.com/image/472694/%22Verbatim%22%EC%97%90%EC%84%9C%20%22commandchars%22%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%A0%20%EB%95%8C%20%EC%A4%91%EA%B4%84%ED%98%B8%EA%B0%80%20%EC%9E%98%EB%AA%BB%20%EC%B2%98%EB%A6%AC%EB%90%98%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
이것이 내가 하는 일이다:
\documentclass{article}
\usepackage{fancyvrb}
\begin{document}
\begin{Verbatim}[commandchars=+\{\}]
Hello, \emph{world}!
Bye, +emph{world}!
\end{Verbatim}
\end{document}
첫 번째 줄은 로 렌더링되는데 Hello, \emphworld!
이는 올바르지 않습니다. 어떤 이유로 환경에서는 및 일반 축어 텍스트가 아닌 특수 문자로 Verbatim
처리됩니다 . 이 없으면 첫 번째 줄이 올바르게 렌더링됩니다.{
}
commandchars
답변1
를 사용하면 commandchars=+\{\}
환경 내부에서Verbatim
- 문자 의 범주 코드는 0(escape)이므로 토큰화 중에 일반 상황/환경 외부에서 백슬래시가 처리
+
되는 방식으로 처리됩니다 .Verbatim
\
- 캐릭터는
{
카테고리 코드 1(그룹 시작)을 가지므로 토큰화 중에 일반 상황/환경 외부에서 처리되는 방식으로 처리됩니다Verbatim
. - 캐릭터는
}
카테고리 코드 2(그룹 끝)를 가지므로 토큰화 중에 일반 상황/환경 외부에서 처리되는 방식으로 처리됩니다Verbatim
.
일반적으로 TeX에서 특수 기능을 갖는 다른 문자(예: 백슬래시 문자)는 이러한 특수 문자가 할당된 축어적 범주 코드 체계에 따라 토큰화됩니다.
- 카테고리 코드 12(기타)는 더 이상 특별한 기능을 갖지 않지만 조판 중에 글꼴의 일부 글리프를 조판하기 위한 지시문으로 사용됩니다.
- 또는 범주 코드 13(활성)을 사용하여 일부 명령으로 확장하도록 정의할 수 있습니다. 이 명령은 공백 문자와 같은 일부 기호의 조판을 생성하거나
␣
캐리지 리턴 문자에 대한 줄 바꿈을 수행합니다.
{
제어 기호 토큰을 생성하지 않는 동안 범주 1의 문자를 토큰화하면 범주 1(그룹 시작)의 명시적 문자 토큰이 생성됩니다. 제어 기호 토큰을 생성하지 않는 동안 카테고리 2의
문자를 토큰화 하면 카테고리 2(최종 그룹)의 명시적 문자 토큰이 생성됩니다.}
범주 11(문자) 및 12(기타)의 명시적 문자 토큰과 달리 조판 중 이러한 명시적 문자 토큰은 글꼴의 일부 글리프를 조판하기 위한 지시어가 아니라 그룹화에 영향을 미치는 지시어입니다. 범위를 지정하거나 토큰 세트를 구분하는 것입니다. 인수를 형성합니다.
Verbatim
-environment 내에서 이 commandchars=+\{\}
행은 으로
Hello, \emph{world}!
토큰화됩니다 .
H11e11l11l11o11,13space13\12e11m11p11h11{1w11o11r11l11d11}2!12carriage return13
\12\
범주 코드 12(기타)로 인해 LaTeX가 제어 시퀀스 토큰 생성을 시작하지 않기 때문에 발생합니다 .
{1범위 지정에 영향을 주지만 s.th를 생성하지는 않습니다. .pdf 파일에 표시됩니다.}2
Verbatim
-environment 내에서 이 commandchars=+\{\}
행은 으로
Bye, +emph{world}!
토큰화됩니다 .
B11y11e11,13space13\emph{1w11o11r11l11d11}2!12carriage return13
실제로 commandchars=+\{\}
당신은 할 수 있습니다 +string+{
/ +string+}
중괄호를 조판하기 위해. (당신은 또한 할 수 있습니다 +string{
/ 과 균형이 잡혀 있는 +string}
한 .){
}
답변2
다음은 사용자 가이드 16페이지에서 발췌한 내용입니다.fancyvrb패키지:
당신이 지정했기 때문에
\begin{Verbatim}[commandchars=+\{\}]
캐릭터 는 일반 환경에서처럼 +
행동하는 반면 TeX 그룹의 시작 및 마무리 역할을 합니다. 결과적으로 환경 내부에 "세계"를 이탤릭체로 렌더링합니다 .\
{
}
+emph{world}
Verbatim
대조적으로, 환경 \emph{world}
내부에서는 모든 글리프가 직립 모노스페이스 글꼴로 렌더링된 를 Verbatim
생성합니다 . \emphworld
결국, 당신이 TeX 그룹의 개시자 및 종결자 역할을 지정 {
하고 수행하기 때문에 그들은 특별한 의미를 가지며 수행합니다.}
~ 아니다인쇄해 보세요.