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