\subsection{Examples} The following preamble should work for all of the examples in this section (except for the last one, which can be placed as is in the preamble since it loads all the packages it needs). \begin{ex}[no-tcb] \documentclass{article} \usepackage{enverb} \usepackage{color} \usepackage{multicol} \usepackage{listings} \end{ex} \subsubsection{A Boxed Verbatim Display} Defining a boxed verbatim macro is pretty simple, we just need to set up the |bol| and |eol| hooks such that line breaks are respected, the rest of the setup already works with \LaTeX's default definition for active spaces (and tabs). \begin{ex}[store,no-tcb] \newenvironment{myenv} {\enverb{bol=\strut, eol=\strut\par}} {% \par \medskip \noindent \fbox {% \parbox {\dimexpr\linewidth-2\fboxsep-2\fboxrule\relax} {% \raggedright\frenchspacing\ttfamily \enverbBody }% }% \par \medskip } \end{ex} The probably most complicated part there is the calculation of the |\parbox|'s width, which is just a line width compensated by the space taken up by |\fbox|. If we now use this environment we get a nice display of our verbatim contents (you might want to play with this and see what happens if your input lines are longer than a |\linewidth|; also note that the spaces after |\begin| and |\end| are optional just like within the normal category code regime, \envlogo\ will still find the end of its scope). \begin{ex}[restore] \begin {myenv} \This is a% \begin{environment} that looks \good \end {myenv} \end{ex} \subsubsection{A Page-Breakable Boxed Verbatim Display} The previous example was boxed, lets put that to the next level. We can also achieve page- (and column-)breakable boxed verbatim environments. The simple minded trick here is to draw only line segments at the start and end of each line using the |\vrule| primitive. As a result this will look horribly wrong for lines longer than a single output line, but that would require too much hassle (we just pay attention on our input formatting). As an added bonus this should have line counters at the start of each line. For that we first define a little helper. \begin{ex}[store,no-tcb] \newcount\myline \newcommand\linecounting {% \advance\myline1 \textcolor[gray]{.7}{\footnotesize\the\myline}% \quad } \end{ex} Next we can define our environment. The |bol| and |eol| hooks look similar to the previous example, but this time they got some added contents for the additional formatting. Also, we borrow some code from \LaTeX's starred \env{verbatim} to make spaces visible (since they are active in |\enverb| this is also pretty straight forward). \begin{ex}[store,no-tcb] \newenvironment{myenv} {% \enverb { bol=\noindent\strut\vrule\hskip\fboxsep\linecounting ,eol=\hfill\hskip\fboxsep\vrule\strut\par }% } {% \medskip \hrule \ttfamily\frenchspacing \UseName{@setupverbvisiblespace}\UseName{@vobeyspaces}% \enverbBody \hrule \medskip } \end{ex} The entire result can then be used with ease. \begin{ex}[restore,same-line=.38] \begin{multicols}{2} Text above \begin{myenv} This \is {an} $example$ ^of verbatim_ input\, being displayed boxed. \end{myenv} Text below \end{multicols} \end{ex} \subsubsection{The Real Deal -- Using the Body Twice} All of the above is just pretty playthings that are easily possible with \envlogo\ (and with relative few lines of code) though most likely better done by more full fledged packages like \pkg{listings} or similar. The original reason for all this was to gain control over both the listing and typeset result for code documentation. A simple example could be the following: \begin{ex}[store,no-tcb] \newenvironment{myenv} {\enverb{}} {% \par\noindent \begin{minipage}{0.48\linewidth} \enverbListing{lstlisting}{} \end{minipage}% \hfill \colorbox{yellow} {% \begin{minipage}{\dimexpr0.48\linewidth-2\fboxsep\relax} \enverbExecute \end{minipage}% }% \par } \end{ex} Which if used looks like the following (admittedly not that pretty): \begin{ex}[restore] \begin{myenv} This% is% great.% \end{myenv} \end{ex} \subsubsection{\envlogo's Style} And if you wondered, you guessed it, all examples in this documentation are typeset using an \envlogo\ derived environment with a few bells and whistles more (for instance collecting material, typesetting the verbatim listing, but executing it together with a later code block). The following is a complete listing of everything that sets up the looks of this documentation's example blocks. Note that the macros starting with |\enverb@ex@| are not internals of \envlogo\ but exclusive to the code formatting the examples. \begin{exwrap}{breakable} \footnotesize \lstinputlisting{preamble-examples.tex} \end{exwrap} And if we use that we can do all sorts of interesting things: \begingroup \NewEnvironmentCopy{ex2}{ex} \begin{ex2}[same-line=.4] We define a helper: \begin{ex}[store,no-tcb] \newcommand\foo{bar} \end{ex} And then can use it: \begin{ex}[restore] This is \foo \end{ex} A wider example: \begin{ex}[below] This is a wider example. \end{ex} \end{ex2} \endgroup