¿Poner fragmentos de código en un marco gris redondeado?

¿Poner fragmentos de código en un marco gris redondeado?

Me gustaría resaltar fragmentos de código en un fondo grisáceo con un marco redondeado. Puedo lograr esto parcialmente con mdframed, pero el título está dentro del marco.

También probé con codebox:

\newtcblisting{codebox}[1]{
    arc=4pt,
    colback=GitHubGray,
    boxrule=0.5pt,
    breakable,
    listing only,
    listing options={
        caption={#1},
        label=lst:label
    }
}

Sin embargo, la solución no es muy bonita. Preferiría un título tradicional que pueda usar \listoflistingsmás adelante.

\documentclass{article}

\usepackage{lipsum}
\usepackage{color}
\usepackage{listings}
\usepackage[framemethod=tikz]{mdframed}

\definecolor{GitHubGray}{rgb}{0.9,0.9,0.9}

\lstset{
    language=c,
    breaklines=true,
    keywordstyle=\bfseries\color{black},
    basicstyle=\ttfamily\color{black}\fontsize{9pt}{10pt}\selectfont,
    emphstyle={\em \color{gray}},
    keepspaces=true,
    showspaces=false,
    showtabs=true,
    tabsize=2,
    upquote=true,
    aboveskip=2pt,
    belowskip=2pt,
    framexleftmargin=2pt,
    extendedchars=true,
    inputencoding=utf8,
}

\mdfsetup{%
  roundcorner=4pt,
  innerleftmargin=2mm,
  innertopmargin=4.5mm, % Magical value
  %linecolor=black!50,%
  innerbottommargin=1mm, % Magical value
  backgroundcolor=GitHubGray
}

\begin{document}
\section{Example}
\lipsum[1]

\begin{mdframed}
\begin{lstlisting}[caption={caption text},label=lst:label]
#include <stdio.h>

int main(int argc, char **argv) {
    printf("Hello, world!\n");
}
\end{lstlisting}
\end{mdframed}

\lipsum[2]
\end{document}

¿Hay alguna manera de lograr esto sin las constantes mágicas (margen superior/inferior) e idealmente menos texto repetitivo (sin nada adicional \beginantes \endy después del archivo lstlisting.

¿Es eso posible?

ingrese la descripción de la imagen aquí

información relacionada