El entorno acuñado dentro de subcaptionbox no funciona

El entorno acuñado dentro de subcaptionbox no funciona

He visto algunas preguntas similaresaquíyaquí, pero ninguno menciona el \subcaptionboxcomando. Aquí está mi MWE:

\documentclass{article}
\usepackage{subcaption}
\usepackage{minted}

\begin{document}
    \begin{figure}[htb]
        \subcaptionbox{One subfigure.}{%
            \begin{minted}{c}
                printf("hello, world\n");
            \end{minted}
        }
    \end{figure}
\end{document}

Esto no se puede compilar con un Paragraph ended before \FV@BeginScanning was complete. }error.

Podría usar un minipageentorno y el \subcaptioncomando en su lugar, pero \subcaptionboxtiene algunas ventajas que me gustaría usar.

¿Hay alguna manera de hacer que estos dos funcionen juntos?

Respuesta1

Aquí hay una implementación cruda, con solo la forma estándar para \subcaptionbox(sin argumentos opcionales).

\documentclass{article}
\usepackage{subcaption}
\usepackage{minted}

\newsavebox{\mintedbox}
\newenvironment{mintedsubcaptionbox}[2]
 {%
  \VerbatimEnvironment
  \def\mscbcaption{#1}%
  \RecustomVerbatimEnvironment{Verbatim}{BVerbatim}{}%
  \begin{lrbox}{\mintedbox}%
  \begin{minted}{#2}%
 }
 {%
  \end{minted}%
  \end{lrbox}%
  \subcaptionbox{\mscbcaption}{\usebox{\mintedbox}}%
 }

\begin{document}

\begin{figure}[htb]

\begin{mintedsubcaptionbox}{One subfigure.}{c}
printf("hello, world\n");
\end{mintedsubcaptionbox}

\end{figure}

\end{document}

Lo usé BVerbatimporque es bastante poco probable que quieras que una lista tenga el ancho completo dentro de un subflotante.

ingrese la descripción de la imagen aquí

Un soporte más completo con sintaxis.

\begin{mintedsubcaptionbox}[<list entry>]{<heading>}[<minted options>]{<language>}

puede ser

\documentclass{article}
\usepackage{subcaption}
\usepackage{minted}
\usepackage{xparse}

\newsavebox{\mintedbox}

\NewDocumentEnvironment{mintedsubcaptionbox}{O{#2}mO{}m}
 {%
  \VerbatimEnvironment
  \RecustomVerbatimEnvironment{Verbatim}{BVerbatim}{}%
  \begin{lrbox}{\mintedbox}%
  \begin{minted}[#3]{#4}%
 }
 {%
  \end{minted}%
  \end{lrbox}%
  \subcaptionbox[#1]{#2}{\usebox{\mintedbox}}%
 }

\begin{document}

\begin{figure}[htb]

\begin{mintedsubcaptionbox}{One subfigure.}{c}
printf("hello, world\n");
\end{mintedsubcaptionbox}

\end{figure}

\end{document}

información relacionada