Why is it not possible to define a new environment that extends a verbatim
environment?
Consider, e.g.:
\documentclass{article}
\newenvironment{myverbatim}{\tiny\begin{verbatim}}{\end{verbatim}}
\begin{document}
\begin{myverbatim}
test
\end{myverbatim}
\end{document}
Compiling with pdflatex
gives the error:
Runaway argument?
^^M test^^M\end{myverbatim}^^M\end{document}^^M^^M
! File ended while scanning use of \@xverbatim.
<inserted text>
\par
(A motivation for this question can be found here: "Format a verbatim paragraph". From which it should be clear that I cannot use the listings
or fancyvrb
packages)
It would be nice with a basic and perhaps more detailed explanation (for this particular case and the reason for the error message) than what is given in, for instance, this discussion: "Why doesn’t verbatim work within...", and if there could be workarounds for simple cases like the one in this example..
Edit1:
Based on the answers so far, I feel that I need to be more precise about my case: I am trying to get the following code to work somehow (Confer with "Format a verbatim paragraph" for more details)
\documentclass{article}
\makeatletter
\begingroup
\catcode`|=0
\catcode`[=1
\catcode`]=2
\catcode`\{=12
\catcode`\}=12
\catcode`\\=12
|gdef|myvr@xverbatim#1\end{myverbA}[#1|end[myverbA]]
|endgroup
\newenvironment{myverbA}{%
\let\@xverbatim=\myvr@xverbatim
\verbatim
}{%
}
\makeatother
\newenvironment{myverbB}{\tiny\begin{myverbA}}{\end{myverbA}}
\begin{document}
\begin{myverbB}
test
\end{myverbB}
\end{document}
Edit2:
Based on egreg
's answer, I tried the following:
\documentclass{article}
\usepackage{etoolbox}
\makeatletter
\begingroup
\catcode`|=0
\catcode`[=1
\catcode`]=2
\catcode`\{=12
\catcode`\}=12
\catcode`\\=12
|gdef|myvr@xverbatim#1\end{myverbA}[#1|end[myverbA]]
|endgroup
\newenvironment{myverbA}{%
\let\@xverbatim=\myvr@xverbatim
\verbatim
}{%
}
\newenvironment{myverbB}
{\preto\verbatim@font{\tiny}
\myverbA}
{\endmyverbA}
\makeatother
\begin{document}
\begin{myverbB}
test
\end{myverbB}
\end{document}
which produces the error:
Runaway argument?
^^M test^^M\end{myverbB}^^M\end{document}^^M^^M
! File ended while scanning use of \@xverbatim.
<inserted text>
\par
egreg
's solution, that would not fit into the comment under under his answer :) I don't feel it would be appropriate to post it as a follow-up question..