在回忆录中将列表和数字并列

在回忆录中将列表和数字并列

我正在使用 memoir 类编写文档,我想将和并排放置listings(使用 listings 包) 。我的第一个方法是将 保存在 中,然后使用将两个元素并排放置:figureslistingboxsubbottom

\documentclass[12pt,oneside,a4paper]{memoir}

\usepackage{graphicx}
\usepackage{listings}
\usepackage{color}
\usepackage{calc}
\usepackage{caption}

\newsubfloat{figure}
\definecolor{lgrey}{RGB}{223,223,223,0}
\lstset{
    basicstyle=\footnotesize\ttfamily,
    frame=lines,                                    % environment border
    rulecolor=\color[cmyk]{0.43, 0.35, 0.35, 0.01}, % top rule color
    xleftmargin=17pt,                               % left margin
    framexleftmargin=17pt,                          % frame left margin
    framextopmargin=2pt,                            % frame top margin
    backgroundcolor=\color{lgrey},                  % background color
    showstringspaces=false                          % show spaces in strings
}

\DeclareCaptionFont{white}{\color{white}}
\DeclareCaptionFormat{listing}
    {\colorbox[cmyk]{0.43, 0.35, 0.35, 0.01}
    {\parbox{\textwidth-6pt}{\hspace{15pt}#1#2#3}}}
\captionsetup[lstlisting]{
    format=listing,
    labelfont=white,
    textfont=white,
    font={sf,bf,footnotesize}}


\begin{document}

% Example that does not work as intended
% --------------------------------------
\newsavebox{\firstlisting}
\begin{lrbox}{\firstlisting}
\begin{lstlisting}[linewidth=0.45\textwidth,caption=Hello,language=python]
echo("Hello World!")
\end{lstlisting}
\end{lrbox}

\begin{figure}[htbp]
    \centering
    \subbottom{
        \usebox{\firstlisting}}
    \subbottom{
        \includegraphics[width=0.45\textwidth]{philosoraptor}
        \label{fig:c}}
    \caption{Example}
\end{figure}

% How the listing environment normally looks like
% -----------------------------------------------
\begin{lstlisting}[caption=Hello,language=python]
echo("Hello World!")
\end{lstlisting}

\end{document}

但是,这会弄乱位置,因为我已将列表环境格式化为如下所示:https://stackoverflow.com/a/742069/1809175

它在文档中的表现如下:

列表和图形子浮点数并排

我还在图形环境中尝试了两个小页面,但这导致了神秘的错误消息。

在回忆录类中,是否有将列表和图形等不同环境并排放置的最佳做法?

答案1

谢谢@daleif我找到了解决方案:minipage必须将 包裹在 周围box,从而封装listings environment。在上次尝试中,我没有box在 内部使用minipage

以下是工作代码(序言保持不变):

\begin{document}

\newsavebox{\firstlisting}
\begin{lrbox}{\firstlisting}
\begin{minipage}[c]{0.45\textwidth}
\begin{lstlisting}[caption=Hello,language=python]
echo("Hello World!")
\end{lstlisting}
\end{minipage}
\end{lrbox}

\begin{figure}[htbp]
    \centering
    \subbottom{
        \usebox{\firstlisting}}
    \subbottom{
        \begin{minipage}[c]{0.45\textwidth}
        \includegraphics[width=0.95\textwidth]{philosoraptor}
        \end{minipage}
        \label{fig:c}}
    \caption{Example}
\end{figure}
\end{document}

结果

相关内容