I don't know how to use catchfilebetweentags
. I would write a script to extract each code section into its own file, then use the mcode
package to include the file in the doc.
You might find mcode
useful anyway, since it does the matlab syntax highlighting for you.
\lstinputlisting{/SOME/PATH/FILENAME.M}
\lstinputlisting[firstline=6, lastline=15]{/SOME/PATH/FILENAME.M}
The main problem with using your definition of myverbatim
can be defined in terms of a combination of scope and macro replacement. That is, something that starts with
\begin{<some-env>}
is expected to end with
\end{<some-env>}
If it doesn't, there's a problem, since the scope is not clearly defined. In your case, you start it with
\begin{myverbatim}
which is internally replaced with (removing the font change to \tiny
for now)
\begin{verbatim}
Now, since you're in the verbatim
environment (that is, a successful call was made to \begin{verbatim}
), LaTeX starts gobbling up contents and printing them as-is until it arrives at a single line of code that resembles
\end{verbatim}
That's just how the verbatim
environment works. It it looking for the stopping point. However, this never happens since the replacement of \end{myverbatim}
(in your code) to \end{verbatim}
(as per your definition) never occurs within the verbatim
environment; verbatim
doesn't perform the replacement of macros with their definitions. As such, TeX just keeps on scanning, producing what is considered a "Runaway argument" error.
Taking the above into account, a broad view on the replacement leaves your MWE to resemble (I've added a comment):
\documentclass{article}
\newenvironment{myverbatim}{\tiny\begin{verbatim}}{\end{verbatim}}
\begin{document}
\tiny\begin{verbatim}% Replacement text for \begin{myverbatim}
test
\end{myverbatim}% No replacement since you're in the verbatim environment
\end{document}
Clearly the above doesn't start and end with the same environment.
If you want to have more flexibility with verbatim
, use the verbatim
package which allows you to do the following:

\documentclass{article}
\usepackage{verbatim}% http://ctan.org/pkg/verbatim
\newenvironment{myverbatim}%
{\endgraf\tiny\verbatim}%
{\endverbatim}
\begin{document}
Some text before.
\begin{myverbatim}
test
test
\end{myverbatim}
Some text after.
\end{document}
The verbatim
package is a means to obtain your desired solution, just like fancyvrb
and listings
would be. Of course, a more rudimentary implementation (specific to your case) would be to merely change the font used by verbatim
- stored in the macro \verbatim@font
:
\makeatletter
\renewcommand{\verbatim@font}{\tiny\ttfamily}
\makeatother
Sure you can just precede the verbatim
environment with \tiny
and it will work just as well, but \verbatim@font
is called within the verbatim
environment, and therefore is constrained to only function there, not outside of it.
Best Answer
To typeset inline verbatim-like material, it's best to use the macros
\verb
and\Verb
; the latter is provided by thefancyvrb
package. If that package is loaded and the instruction\VerbatimFootnotes
is executed, one can even have\Verb
instructions in footnotes. (One can't do this with\verb
.)Note that
\verb
and\Verb
don't use matching pairs of curly braces ({
and}
) to delimit their arguments; instead, use any non-letter symbol (except "*
") that doesn't occur in the verbatim material itself. (Even\verb{<p>{
is legal, though I'll be the first one to state that it looks positively weird.)If you prefer to render the inline verbatim material using the "regular" text font instead of a monospaced font, consider loading the
listings
package and writing "Paragraph element \lstinline{<p>}
".