11

I want to create a new environment to transform this:

\begin{listing}
  \caption{some caption}
  \label{code:label}
  \begin{minted}[options]{language}
My code here
  \end{minted}
\end{listing}

into this:

\begin{mycode}{language}{some caption}{code:label}
My code here
\end{mycode}

I've tried the code from Using minted to define a new environment without success.

edit

This is what I've tried:

\newenvironment{mycode}[3]{%
  \VerbatimEnvironment
  \minted@resetoptions
  \setkeys{minted@opt}{linenos,fontfamily=courier, fontsize=\scriptsize, xleftmargin=21pt}
  \begin{listing}
    \caption{#2}
    \label{#3}
    % \centering
    \begin{VerbatimOut}{\jobname.pyg}}
{%
    \end{VerbatimOut}
    \minted@pygmentize{#1}
    \DeleteFile{\jobname.pyg}
  \end{listing}}
10
\documentclass[12pt]{article}
\usepackage{minted}    
\makeatletter
\newenvironment{mycode}[3]
 {\VerbatimEnvironment
  \minted@resetoptions
  \setkeys{minted@opt}{frame=single}% from fancyvrb
  \renewcommand{\minted@proglang}[1]{#1}
  \begin{figure}[htp]%% default placing
    \centering
    \caption{#2}\label{#3}
      \begin{VerbatimOut}{\jobname.pyg}}
 {\end{VerbatimOut}
  \minted@pygmentize{\minted@proglang{}}
  \DeleteFile{\jobname.pyg}
  \end{figure}}
\makeatother

\begin{document}
\begin{mycode}{latex}{some caption}{code:label}
My \code here
\end{mycode}

\end{document}

enter image description here

  • This worked like a charm. I just replace the figure by listing and remove the \centering. Thanks @Hebert. I didn't knew \makeatletter and \makeatother, but now I do. The \minted@proglang thing I can't get yet. – Hugo Maia Vieira Jan 27 '12 at 2:26
  • 1
    And I add an \floatstyle{ruled} at minted.sty. Exist an elegant way to do that? – Hugo Maia Vieira Jan 27 '12 at 2:55
  • look at the package floatrow how floating objects can be configured – user2478 Jan 27 '12 at 8:05
3

You don't need so complicated a code:

\documentclass[12pt]{article}
\usepackage{minted}

\newenvironment{mycode}[4][]
 {\VerbatimEnvironment
  \begin{listing}
  \caption{#3}\label{#4}
  \begin{minted}[
    linenos,
    fontfamily=courier,
    fontsize=\scriptsize,
    xleftmargin=21pt,
    #1]{#2}}
 {\end{minted}\end{listing}}

\begin{document}

\begin{mycode}{latex}{some caption}{code:label}
My \code here
\end{mycode}

\begin{mycode}[fontsize=\large]{latex}{some caption}{code:label2}
My \code here
\end{mycode}

\end{document}

enter image description here

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.