He visto algunas preguntas similaresaquíyaquí, pero ninguno menciona el \subcaptionbox
comando. 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 minipage
entorno y el \subcaption
comando en su lugar, pero \subcaptionbox
tiene 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é BVerbatim
porque es bastante poco probable que quieras que una lista tenga el ancho completo dentro de un subflotante.
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}