我正在使用 memoir 类编写文档,我想将和并排放置listings
(使用 listings 包) 。我的第一个方法是将 保存在 中,然后使用将两个元素并排放置:figures
listing
box
subbottom
\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}