邊距中列表的標題

邊距中列表的標題

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}

在此輸入影像描述

相關內容