Verwenden Sie `shortvrb`, ohne den Befehl manuell beenden zu müssen

Verwenden Sie `shortvrb`, ohne den Befehl manuell beenden zu müssen

Derzeit shortvrbist es mit möglich, ein einzelnes Zeichen so zu definieren, dass es allein einen Inline-Verbatim-Befehl startet:

\documentclass{article}
\usepackage{shortvrb}

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

oder ähnlich mit fancyvrb,

\documentclass{article}
\usepackage{fancyvrb}

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

In beiden Fällen \verb!some verbatim text!wird – wie bei – das Symbol erneut benötigt, um den Wortteil zu beenden. Wenn es weggelassen wird, entsteht ein Fehler ähnlich wie „\verb beendet durch Zeilenende“.


Gibt es eine Möglichkeit, dies (neu) zu definieren \MakeShortVerboder ähnliches, sodass die neue Zeile lediglich den Befehl beendet, anstatt einen Fehler zu erzeugen? Idealerweise könnte man dann etwas wie Folgendes schreiben:

\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'

Dies würde Blöcke (oder einzelne Zeilen) von wörtlichem Text ermöglichen, ohne die Unordnung von

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

oder

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

Antwort1

Sie können, aber Sie sollten nicht.

\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}

Bildbeschreibung hier eingeben

verwandte Informationen