
나는 commandchars
fancyverb의 의미를 이해하려고 노력하고 있습니다 Verbatim
.
\documentclass{article}
\usepackage{fancyvrb}
\begin{document}
\phantom{foo}
\begin{Verbatim}[commandchars=\\\!\!]
\phantom{bar}
trait Sys[S <: Sys[S]] {
type ID <: Ident[S#Tx]
type Tx
}
\end{Verbatim}
\end{document}
이 내용은 bar}
축어의 첫 번째 줄에 인쇄되어 있습니다. 세 가지 질문이 있습니다.
- 을 사용하면 왜 이것이 인쇄됩니까
\phantom
? - 왜 닫는 중괄호가 포함되어 있습니까?
commandchars=\\\{\}
인쇄된 프로그래밍 언어의 중괄호와 충돌하기 때문에 사용할 수 없습니다 . 그래서 나는[commandchars=\\\!\!]
. 그러나 삽입하려고 하면\phantom!bar!
오류가 발생합니다\FancyVerbGetLine has an extra }
.
실제로 제가 원하는 것은 작동하지 않는 빈 줄을 인쇄하는 것입니다. 대신 높이가 절반인 줄이 나타납니다. 그래서 내 생각에는 유령 문자를 추가하여 첫 번째 줄의 높이를 강화하는 것이 가장 쉬운 것이라고 생각했습니다.
답변1
오류는 다음과 같습니다.
commandchars=\\\!\!
3개를 지정해야 합니다.별개의\<char>
; 형식의 문자 첫 번째는 백슬래시 대신에 사용되고, 두 번째는 여는 중괄호 대신에, 세 번째는 닫는 중괄호 대신에 사용됩니다. 따라서 다음과 같은 것
\documentclass{article}
\usepackage{fancyvrb}
\begin{document}
\begin{Verbatim}[commandchars=\\\!\?]
\phantom!bar?XYZ
trait Sys[S <: Sys[S]] {
type ID <: Ident[S#Tx]
type Tx
}
\end{Verbatim}
\end{document}
나는 XYZ
팬텀이 존경받는다는 것을 보여주기 위해 덧붙였습니다. 한 줄에 하나씩만 있으면 쓸모가 없습니다. 그냥 빈 줄로 남겨두세요.
귀하의 예에서 어떤 일이 일어나는지 봅시다. 백슬래시는 명령을 이스케이프하기 위해 블록에서도 작동하도록 정의됩니다 Verbatim
. 은 !
먼저 시작 그룹과 동일하게 만들어진 다음 즉시 그룹 닫기 {
와 동일하게 됩니다 . }
따라서 왼쪽 인수 구분 기호가 없기 때문에 멀티토큰 인수를 매크로에 전달할 수 없습니다.
\phantom{bar}
처리 되면 \phantom
정상적으로 실행되고(백슬래시는 일반적인 의미로 지정됨) {
앞에 왼쪽 인수 구분 기호가 없는 토큰을 찾습니다. 우리는 축어 모드에 있다는 것을 기억하세요! So는 {
인수로 간주되며 \phantom
문자와 동일한 공백이 생성됩니다. 그런 다음 bar}
그대로 인쇄됩니다.
당신의 시도
\phantom!bar!
작동하지 않습니다. 왜냐하면 외부와 동일하기 때문에 Verbatim
불법 \phantom}bar}
입니다. 와 함께
commandchars=\\\!\?
그리고
\phantom!bar?
우리는 일반적인 상황에서라면 할 일을 하고 있습니다 \phantom{bar}
.
답변2
\phantom
commandchars의 그룹 블록 아이디어와 호환되지 않는 등 많은 라텍스 명령에 문제가 있다는 것을 이해했습니다 . 여기서 해결 방법은 다음과 같이 매개변수 없는 도우미 명령을 정의하는 것입니다.
\newcommand{\worstLanguageEver}{\phantom{I}}
\begin{Verbatim}[commandchars=\\\$\$]
\worstLanguageEver
trait Sys[S <: Sys[S]] {
type ID <: Ident[S#Tx]
type Tx
}