명령을 수동으로 종료할 필요 없이 `shortvrb`를 사용하세요.

명령을 수동으로 종료할 필요 없이 `shortvrb`를 사용하세요.

현재 를 사용하면 shortvrb단일 문자를 정의하여 자체적으로 인라인 축어 명령을 시작하는 것이 가능합니다.

\documentclass{article}
\usepackage{shortvrb}

\begin{document}
\MakeShortVerb{\|}
foo |this is verbatim|
\end{document}

또는 마찬가지로 fancyvrb,

\documentclass{article}
\usepackage{fancyvrb}

\begin{document}
\DefineShortVerb{\|}
foo |this is verbatim|
\end{document}

두 경우 모두에서와 마찬가지로 \verb!some verbatim text!축어적 부분을 끝내려면 기호가 다시 필요합니다. 생략하면 "\동사 끝 부분"과 유사한 오류가 생성됩니다.


\MakeShortVerb개행 문자가 오류를 생성하지 않고 단순히 명령을 종료하도록 (재)정의하거나 이와 유사한 방법이 있습니까 ? 이상적으로는 다음과 같이 작성할 수 있습니다.

\DefineAsymmetricVerb{\|}
This is some regular text.
Now some verbatim code that only needs a symbol at the start of the line, like:
| if 1 == 1
|     print 'All is well'

이렇게 하면 복잡하지 않은 그대로의 텍스트 블록(또는 한 줄)이 허용됩니다.

| if 1 == 1                |
|     print 'All is well'  |

또는

\begin{verbatim}
 if 1 == 1
     print 'All is well'
\end{verbatim}

답변1

할 수 있지만 그렇게해서는 안됩니다.

\documentclass{article}

\makeatletter
\catcode`|=\active
\def|{%
  \par
  \begingroup
  \parindent\z@\mbox{}%
  \owj@eol\catcode`\^^M=\active
  \let\do\@makeother\dospecials
  \verbatim@font\@noligs
  \@vobeyspaces\frenchspacing
}
\def\owj@par{\par\endgroup}
\begingroup\lccode`~=`\^^M\lowercase{\endgroup
  \def\owj@eol{\let~\owj@par}
}
\makeatother

\begin{document}

This is some regular text.
Now some verbatim code that only needs a symbol at the start of the line, like:
| if 1 == 1
|     print 'All is well'
|
| else
|     error
| fi
\noindent This is some regular text

\end{document}

여기에 이미지 설명을 입력하세요

관련 정보