Ich habe einige ähnliche Fragen gesehenHierUndHier, aber keiner erwähnt den \subcaptionbox
Befehl. Hier ist mein 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}
Die Kompilierung schlägt fehl und es tritt ein Paragraph ended before \FV@BeginScanning was complete. }
Fehler auf.
Ich könnte stattdessen eine minipage
Umgebung und den \subcaption
Befehl verwenden, aber das \subcaptionbox
hat einige Vorteile, die ich gerne nutzen würde.
Gibt es eine Möglichkeit, diese beiden zusammenarbeiten zu lassen?
Antwort1
Hier ist eine grobe Implementierung, nur mit der Standardform für \subcaptionbox
(keine optionalen Argumente).
\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}
Ich habe es verwendet BVerbatim
, weil es ziemlich unwahrscheinlich ist, dass Sie möchten, dass eine Auflistung die volle Breite innerhalb eines Subfloats einnimmt.
Eine umfassendere Unterstützung bei der Syntax
\begin{mintedsubcaptionbox}[<list entry>]{<heading>}[<minted options>]{<language>}
kann sein
\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}