[Tex/LaTex] Preferred method for inline code samples

inline()listingsminted

I tend to use the minted package for including code samples within my documents, which produces very nice output. However, because Pygments always produces a verbatim environment there's no way to inline the code if I need to discuss particular features of it. What is the best way to typeset inline code to go alongside code produced by minted?

Using the listings package just for \lstinline is one option I've considered, but it seems a bit odd to use both minted and listings together. I've used listings in the past, but (in my opinion and with the samples I've tried) I don't think the output is as nice as that produced with minted. Are there any other means of producing inline code that I'm unaware of?

Best Answer

You can do it with minted if you are willing to patch it:

\documentclass{minimal}
\usepackage{ifplatform}
\ifwindows\else
\newcommand*{\TestAppExists}[1]{% there is no `which -s` on Linux
  \immediate\write18{which -- '#1' > /dev/null && touch -- '\jobname.aex'}%
  \IfFileExists{\jobname.aex}{%
    \AppExiststrue
    \DeleteFile{\jobname.aex}%
  }{%
    \AppExistsfalse
  }
}
\fi
\usepackage{minted}
\makeatletter
% avoid space tokens since we're in horizontal mode
\renewcommand\mint[3][]{%
  \DefineShortVerb{#3}%
  \minted@resetoptions
  \setkeys{minted@opt}{#1}%
  \SaveVerb[aftersave={%
    \UndefineShortVerb{#3}%
    \minted@savecode{\FV@SV@minted@verb}%
    \minted@pygmentize{#2}%
    \DeleteFile{\jobname.pyg}}]{minted@verb}#3}
\renewcommand\minted@savecode[1]{%
  \immediate\openout\minted@code\jobname.pyg\relax
  \immediate\write\minted@code{#1}%
  \immediate\closeout\minted@code}
\renewcommand\minted@pygmentize[2][\jobname.pyg]{%
  \def\minted@cmd{pygmentize -l #2 -f latex -F tokenmerge
    \minted@opt{gobble} \minted@opt{texcl} \minted@opt{mathescape}
    \minted@opt{linenos} -P "verboptions=\minted@opt{extra}"
    -o \jobname.out.pyg #1}%
  \immediate\write18{\minted@cmd}%
  \ifthenelse{\equal{\minted@opt@bgcolor}{}}%
   {}%
   {\begin{minted@colorbg}{\minted@opt@bgcolor}}%
  \input{\jobname.out.pyg}%
  \ifthenelse{\equal{\minted@opt@bgcolor}{}}%
   {}%
   {\end{minted@colorbg}}%
  \DeleteFile{\jobname.out.pyg}}
\makeatother
\RecustomVerbatimEnvironment{Verbatim}{BVerbatim}{}
\begin{document}
This is some inline code \mint{c++}|for i=1;i<20;i++| and more \ldots
\end{document}
Related Question