비슷한 질문을 본 적이 있어요여기그리고여기, 그러나 아무도 \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
이 두 가지를 함께 작동시킬 수 있는 방법이 있나요?
답변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}