하위 캡션 상자 내부의 생성된 환경이 작동하지 않습니다.

하위 캡션 상자 내부의 생성된 환경이 작동하지 않습니다.

비슷한 질문을 본 적이 있어요여기그리고여기, 그러나 아무도 \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}

관련 정보