似たような質問をいくつか見たことがありますここそしてここ、しかし、\subcaptionbox
コマンドについては誰も言及していません。これが私の 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}
これはエラーでコンパイルに失敗しますParagraph ended before \FV@BeginScanning was complete. }
。
minipage
代わりに環境とコマンドを使用することもできます\subcaption
が、\subcaptionbox
使用したい利点がいくつかあります。
これら 2 つを連携させる方法はありますか?
答え1
\subcaptionbox
以下は、 (オプションの引数なしの)標準形式のみを使用した大まかな実装です。
\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}
BVerbatim
サブフロート内でリストを全幅に表示したいということはほとんどないため、これを使用しました。
構文のより完全なサポート
\begin{mintedsubcaptionbox}[<list entry>]{<heading>}[<minted options>]{<language>}
できる
\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}