2

I try to capsule my listings to bound into a bigger project. If I run as stand alone, everything is fine:

%LISTINGS
\documentclass[a4paper, 12pt]{scrartcl}

%USINGS
\usepackage{xcolor}
\usepackage{minted}
\usemintedstyle{borland}

%FILL TEXT
\usepackage{lipsum}


%--------------------------------------------------------------- STANDARDAUFBAU EINES SKRIPTES
\begin{document}
\begin{listing}[H]
\caption{Standardaufbau eines Skriptes}
\label{listing:Aufbau}
\begin{minted}[frame=lines, framesep=2mm, baselinestretch=1.0, bgcolor=white, fontsize=\footnotesize, linenos]{csharp}
//benötigte Usings
using System;
using System.IO;

namespace MyNamespace
{
    public class MyClass //Klassen definition
    {
        //skriptweite Variablen
        int a = ...


        public MyClass() //Klassenkonstruktor
        {
            //lokale Variablen
            int x = ...

            //auszuführendes Skript
            ...
        }
    }
}
\end{minted}
\end{listing}  
\end{document}

But inside newcommand:

%LISTINGS
\documentclass[a4paper, 12pt]{scrartcl}

%USINGS
\usepackage{xcolor}
\usepackage{minted}
\usemintedstyle{borland}

%FILL TEXT
\usepackage{lipsum}


%--------------------------------------------------------------- STANDARDAUFBAU EINES SKRIPTES
\newcommand\listingAufbau{
\begin{listing}[H]
\caption{Standardaufbau eines Skriptes}
\label{listing:Aufbau}
\begin{minted}[frame=lines, framesep=2mm, baselinestretch=1.0, bgcolor=white, fontsize=\footnotesize, linenos]{csharp}
//benötigte Usings
using System;
using System.IO;

namespace MyNamespace
{
    public class MyClass //Klassen definition
    {
        //skriptweite Variablen
        int a = ...


        public MyClass() //Klassenkonstruktor
        {
            //lokale Variablen
            int x = ...

            //auszuführendes Skript
            ...
        }
    }
}
\end{minted}
\end{listing}
}

%--------------------------------------------------------------- DOCUMENT
\begin{document}
  \lipsum[1]  
  \listingAufbau
  \lipsum[2]
\end{document}

the Error ! Paragraph ended before \FV@BeginScanning was complete. occurs.

How could I workaround this issue?

Error Log:

Runaway argument?
 //benötigte Usings using System; using System.IO; 
! Paragraph ended before \FV@BeginScanning was complete.
<to be read again> 
                   \par 
l.66   \listingAufbau

I suspect you've forgotten a `}', causing me to apply this
control sequence to too much text. How can we recover?
My plan is to forget the whole thing and hope for the best.

! Bad space factor (0).
<recently read> \@savsf 

l.66   \listingAufbau

I allow only values in the range 1..32767 here.

(_minted-Listings/default-pyg-prefix.pygstyle)
(_minted-Listings/borland.pygstyle)
runsystem(pygmentize -l csharp -f latex -P commandprefix=PYG -F tokenmerge -o _
minted-Listings/D41D8CD98F00B204E9800998ECF8427EC151BAE480938F0991A0CCB99EA97B2
E.pygtex Listings.pyg)...executed.


(_minted-Listings/D41D8CD98F00B204E9800998ECF8427EC151BAE480938F0991A0CCB99EA97
B2E.pygtex

! LaTeX Error: Something's wrong--perhaps a missing \item.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.3 \end{Verbatim}

Try typing  <return>  to proceed.
If that doesn't work, type  X <return>  to quit.


! LaTeX Error: Something's wrong--perhaps a missing \item.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.3 \end{Verbatim}

Try typing  <return>  to proceed.
If that doesn't work, type  X <return>  to quit.

! Missing } inserted.
<inserted text> 
                }
l.3 \end{Verbatim}

I've inserted something that you may have forgotten.
(See the <inserted text> above.)
With luck, this will get me unwedged. But if you
really didn't forget anything, try typing `2' now; then
my insertion and my current dilemma will both disappear.

! Missing } inserted.
<inserted text> 
                }
l.3 \end{Verbatim}

I've inserted something that you may have forgotten.
(See the <inserted text> above.)
With luck, this will get me unwedged. But if you
really didn't forget anything, try typing `2' now; then
my insertion and my current dilemma will both disappear.


Underfull \hbox (badness 10000) detected at line 3
[][]
 []

! Missing } inserted.
<inserted text> 
                }
l.3 \end{Verbatim}

I've inserted something that you may have forgotten.
(See the <inserted text> above.)
With luck, this will get me unwedged. But if you
really didn't forget anything, try typing `2' now; then
my insertion and my current dilemma will both disappear.

! Extra }, or forgotten \endgroup.
\FV@ListProcessLine ...Frame \FV@RightListNumber }
                                                  \hss }
l.3 \end{Verbatim}

I've deleted a group-closing symbol because it seems to be
spurious, as in `$x}$'. But perhaps the } is legitimate and
you forgot something else, as in `\hbox{$x}'. In such cases
the way to recover is to insert both the forgotten and the
deleted material, e.g., by typing `I$}'.

! Extra }, or forgotten \endgroup.
\FV@ListProcessLine ...\FV@RightListNumber }\hss }

l.3 \end{Verbatim}

I've deleted a group-closing symbol because it seems to be
spurious, as in `$x}$'. But perhaps the } is legitimate and
you forgot something else, as in `\hbox{$x}'. In such cases
the way to recover is to insert both the forgotten and the
deleted material, e.g., by typing `I$}'.

)
Runaway argument?
! File ended while scanning use of \FancyVerbGetLine.
<inserted text> 
                \par 
l.66   \listingAufbau

I suspect you have forgotten a `}', causing me
to read past where you wanted me to stop.
I'll try to recover; but if the error is serious,
you'd better type `E' or `X' now and fix your file.

! FancyVerb Error:
  Couldn't find `\end{minted}' to end a verbatim environment on input line 66.
.
\FV@Error ... {FancyVerb Error:
\space \space #1
}

l.66   \listingAufbau

Probably you mistyped the environment name or included an extraneous 
space, or are using an improperly defined verbatim environment. 
Hit return and I will try to terminate this job.


! LaTeX Error: \begin{minted@colorbg} on input line 66 ended by \end{VerbatimOu
t}.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.66   \listingAufbau

Your command was ignored.
Type  I <command> <return>  to replace it with another command,
or  <return>  to continue without it.

runsystem(pygmentize -l csharp -f latex -P commandprefix=PYG -F tokenmerge -o _
minted-Listings/D41D8CD98F00B204E9800998ECF8427E57E4147185E2DF96167E69AACD75483
B.pygtex Listings.pyg)...executed.

! Infinite glue shrinkage found in a paragraph.
\MakeFramed #1->\par 
                     \ifdim \OuterFrameSep =\maxdimen \OuterFrameSep \topsep...
l.66   \listingAufbau

The paragraph just ended includes some glue that has
infinite shrinkability, e.g., `\hskip 0pt minus 1fil'.
Such glue doesn't belong there---it allows a paragraph
of any length to fit on one line. But it's safe to proceed,
since the offensive shrinkability has been made finite.


(_minted-Listings/D41D8CD98F00B204E9800998ECF8427E57E4147185E2DF96167E69AACD754
83B.pygtex)
runsystem(del _minted-Listings\9244FD39800C89051BC398AC05508E1BC151BAE480938F09
91A0CCB99EA97B2E.pygtex)...executed.



! LaTeX Error: \begin{listing} on input line 66 ended by \end{document}.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.66   \listingAufbau

Your command was ignored.
Type  I <command> <return>  to replace it with another command,
or  <return>  to continue without it.

(Listings.aux)
runsystem(del Listings.pyg)...executed.


! You can't use `\end' in internal vertical mode.
\enddocument ...cumenthook \deadcycles \z@ \@@end 

l.66   \listingAufbau

Sorry, but I'm not programmed to handle this case;
I'll just pretend that you didn't ask for it.
If you're in the wrong mode, you might be able to
return to the right one by typing `I}' or `I$' or `I\par'.


! LaTeX Error: \begin{listing} on input line 66 ended by \end{document}.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.66   \listingAufbau

Your command was ignored.
Type  I <command> <return>  to replace it with another command,
or  <return>  to continue without it.

! Missing } inserted.
<inserted text> 
                }
l.66   \listingAufbau

I've inserted something that you may have forgotten.
(See the <inserted text> above.)
With luck, this will get me unwedged. But if you
really didn't forget anything, try typing `2' now; then
my insertion and my current dilemma will both disappear.


Package framed Warning: Boxa is void -- discard it.  on input line 66.

! You can't use `\prevdepth' in horizontal mode.
\nointerlineskip ->\prevdepth 
                              -\@m \p@ 
l.66   \listingAufbau

Sorry, but I'm not programmed to handle this case;
I'll just pretend that you didn't ask for it.
If you're in the wrong mode, you might be able to
return to the right one by typing `I}' or `I$' or `I\par'.

! Missing $ inserted.
<inserted text> 
                $
l.66   \listingAufbau

I've inserted a begin-math/end-math symbol since I think
you left one out. Proceed, with fingers crossed.

LaTeX Font Info:    External font `cmex10' loaded for size
(Font)              <12> on input line 66.
LaTeX Font Info:    External font `cmex10' loaded for size
(Font)              <8> on input line 66.
LaTeX Font Info:    External font `cmex10' loaded for size
(Font)              <6> on input line 66.
! Missing number, treated as zero.
<to be read again> 
                   \hbox 
l.66   \listingAufbau

A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)

! Illegal unit of measure (pt inserted).
<to be read again> 
                   \hbox 
l.66   \listingAufbau

Dimensions can be in units of em, ex, in, pt, pc,
cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one!
I'll assume that you meant to say pt, for printer's points.
To recover gracefully from this error, it's best to
delete the erroneous units; e.g., type `2' to delete
two letters. (See Chapter 27 of The TeXbook.)

! Missing $ inserted.
<inserted text> 
                $
l.66   \listingAufbau

I've inserted a begin-math/end-math symbol since I think
you left one out. Proceed, with fingers crossed.

Missing character: There is no è in font cmex10!

! LaTeX Error: \begin{listing} on input line 66 ended by \end{snugshade*}.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.66   \listingAufbau

Your command was ignored.
Type  I <command> <return>  to replace it with another command,
or  <return>  to continue without it.


! LaTeX Error: \begin{document} ended by \end{minted@colorbg}.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.66   \listingAufbau

Your command was ignored.
Type  I <command> <return>  to replace it with another command,
or  <return>  to continue without it.

! Extra \endgroup.
<recently read> \endgroup 

l.66   \listingAufbau

Things are pretty mixed up, but I think the worst is over.


! LaTeX Error: \begin{document} ended by \end{minted}.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.66   \listingAufbau

Your command was ignored.
Type  I <command> <return>  to replace it with another command,
or  <return>  to continue without it.

! Extra \endgroup.
<recently read> \endgroup 

l.66   \listingAufbau

Things are pretty mixed up, but I think the worst is over.

! Too many }'s.
\@endfloatbox ...pagefalse \outer@nobreak \egroup 
                                                  \color@endbox 
l.66   \listingAufbau

You've closed more groups than you opened.
Such booboos are generally harmless, so keep going.

[1

{C:/Users/Martin/AppData/Local/MiKTeX/2.9/pdftex/config/pdftex.map}]
! Extra \endgroup.
\color@endgroup ->\endgraf \endgroup 

l.66   \listingAufbau

Things are pretty mixed up, but I think the worst is over.

! Too many }'s.
\color@endbox ->\color@endgroup \egroup 

l.66   \listingAufbau

You've closed more groups than you opened.
Such booboos are generally harmless, so keep going.

! Undefined control sequence.
\endlisting ...floatbox \global \setbox \@currbox 
                                                  \float@makebox \columnwidt...
l.66   \listingAufbau

The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.

! Missing number, treated as zero.
<to be read again> 
                   \vbox 
l.66   \listingAufbau

A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)

! Undefined control sequence.
\float@makebox ...ze =#1 \@parboxrestore \@fs@pre 
                                                  \@fs@iftopcapt \ifvoid \@f...
l.66   \listingAufbau
  • minted is much like verbatim: it has to do several settings different from the standard before looking at the input. If you bury the minted environment in a new command, the text has already been looked at and so the changed settings don't apply to it. Errors follow. – egreg Feb 24 at 10:17
  • @egreg I understand the issue, thanks a lot. Is there a workaround to avoid the error and put the listing in a function? – Mar Tin Feb 24 at 10:25
  • Not really, sorry. You could write the text in a different file and input it. – egreg Feb 24 at 10:28
2

It's not really possible to embed verbatim-like environments in the argument to a command. You can obtain a very similar effect by storing the code in a filecontents* environment, that will write a file that's input with \inputminted.

\documentclass[a4paper, 12pt]{scrartcl}

\usepackage{xcolor}
\usepackage{minted}
\usemintedstyle{borland}

\usepackage{lipsum}


\newcommand\listingAufbau{%
  \begin{listing}[H]
  \caption{Standardaufbau eines Skriptes}
  \label{listing:Aufbau}
  \inputminted[
    frame=lines,
    framesep=2mm,
    baselinestretch=1.0,
    bgcolor=white,
    fontsize=\footnotesize, linenos
  ]{csharp}{aufbau.cs}
  \end{listing}
}
\begin{filecontents*}{aufbau.cs}
//benötigte Usings
using System;
using System.IO;

namespace MyNamespace
{
    public class MyClass //Klassen definition
    {
        //skriptweite Variablen
        int a = ...


        public MyClass() //Klassenkonstruktor
        {
            //lokale Variablen
            int x = ...

            //auszuführendes Skript
            ...
        }
    }
}
\end{filecontents*}

\begin{document}

\lipsum[1]  

\listingAufbau

\lipsum[2]

\end{document}

enter image description here

  • thanks a lot for you solution. I like the filecontents option and I really can use it for my project. – Mar Tin Feb 24 at 20:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.