여백 목록에 대한 캡션

여백 목록에 대한 캡션

패키지 floatrow에서는 그림과 표에 여백 캡션을 넣을 수 있지만, 환경에 대해서는 패키지 lstlisting에서 동일한 기능을 수행할 가능성이 없는 것 같습니다 listings.

해결 방법은 을 lstlisting그림에 넣는 것입니다(샘플 참조). 그러나 이는 긴 코드 목록으로 인해 페이지 나누기를 유지하는 것을 허용하지 않습니다. lstlisting여백에 캡션을 넣을 수 있는 방법이 있나요 ? 연장이 가능한지 알아보기 위해 패키지 내부를 살펴봤지만 floatrow방법을 모르겠습니다.

\documentclass{memoir}
\usepackage{listings}
\usepackage{floatrow}
\floatsetup[figure]{margins=hangright,capposition=beside,capbesideposition={top,left},floatwidth=\textwidth}

\begin{document}
\begin{figure}
  \begin{lstlisting}

    This is a test
  \end{lstlisting}
  \caption{This is a test.}
\end{figure}
\end{document}

패키지 에는 여백 안에 caption넣는 방법이 있지만 (아래 참조) 세 번째 인수를 넣는 것이 작동하지 않는 것 같습니다.Fig X:llap

\DeclareCaptionFormat{llap}{\llap{#1#2}#3\par}
\captionsetup{lstlisting}{format=llap,labelsep=quad,singlelinecheck=no}

답변1

memoir그리고 floatrow잘 협조하지 마세요. 표와 그림에 대한 측면 캡션을 원할 경우 memoir'를 사용할 수 있습니다.\sidecap 명령을 사용할 수 있습니다(섹션 참조).10.10 측면 캡션매뉴얼의). 로 제작된 목록의 경우 lstlisting몇 가지 추가 작업을 수행해야 합니다.

개선을 허용하는 다음 코드는 한 가지 접근 방식을 보여줍니다. 캡션은 너비 상자에 저장된 \sidecapwidth다음 다음을 사용하여 여백에 배치됩니다 \sidepar.

\documentclass{memoir}
\usepackage{listings}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{marginnote}
\usepackage{lipsum}

\newsavebox\mycap
\newlength\mycapHt

\setlength\sidecapwidth{77pt}

\DeclareCaptionFormat{llap}{%
  \begin{lrbox}{\mycap}
  \begin{minipage}{\sidecapwidth}
  \raggedright#1:#2#3
  \end{minipage}%
  \end{lrbox}%
  \settoheight\mycapHt{\usebox\mycap}%
  \addtolength\mycapHt{.85\baselineskip}%
  \setlength\sideparvshift{\mycapHt}%
  \sidepar{\usebox\mycap}}
\captionsetup[lstlisting]{format=llap,labelsep=space,singlelinecheck=no}

\begin{document}

\begin{figure}
\begin{sidecaption}{An illustration}[fig:ill]
\centering
\includegraphics[height=4cm]{example-image-a}
\end{sidecaption}
\end{figure}
\lipsum[4]
\begin{lstlisting}[caption={test caption for a listing}]
This is a test
This is a test
This is a test
This is a test
This is a test
\end{lstlisting}
\lipsum[4]
\begin{lstlisting}[caption={test caption for a listing that will span several lines}]
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
\end{lstlisting}
\lipsum[4]

\end{document}

여기에 이미지 설명을 입력하세요

관련 정보