축어적 블록의 시작 부분에 가상 문자를 추가하는 방법

축어적 블록의 시작 부분에 가상 문자를 추가하는 방법

나는 commandcharsfancyverb의 의미를 이해하려고 노력하고 있습니다 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}축어의 첫 번째 줄에 인쇄되어 있습니다. 세 가지 질문이 있습니다.

  1. 을 사용하면 왜 이것이 인쇄됩니까 \phantom?
  2. 왜 닫는 중괄호가 포함되어 있습니까?
  3. 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

\phantomcommandchars의 그룹 블록 아이디어와 호환되지 않는 등 많은 라텍스 명령에 문제가 있다는 것을 이해했습니다 . 여기서 해결 방법은 다음과 같이 매개변수 없는 도우미 명령을 정의하는 것입니다.

\newcommand{\worstLanguageEver}{\phantom{I}}
\begin{Verbatim}[commandchars=\\\$\$]
\worstLanguageEver
trait Sys[S <: Sys[S]] {
  type ID <: Ident[S#Tx]
  type Tx
}

관련 정보