Utilice `shortvrb` sin necesidad de finalizar el comando manualmente

Utilice `shortvrb` sin necesidad de finalizar el comando manualmente

Actualmente, usando shortvrb, es posible definir un solo carácter para iniciar, por sí solo, un comando textual en línea:

\documentclass{article}
\usepackage{shortvrb}

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

o de manera similar, con fancyvrb,

\documentclass{article}
\usepackage{fancyvrb}

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

En ambos casos, como en el caso \verb!some verbatim text!, se requiere nuevamente el símbolo para finalizar la parte textual. Si se omite, se produce un error similar a "\verbo terminado al final de la línea".


¿Hay alguna forma de (re)definir \MakeShortVerbo algo similar, de modo que la nueva línea simplemente finalice el comando, en lugar de producir un error? Lo ideal sería escribir algo como:

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

Esto permitiría bloques (o líneas individuales) de texto palabra por palabra sin el desorden de

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

o

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

Respuesta1

Puedes, pero no deberías.

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

ingrese la descripción de la imagen aquí

información relacionada