在此评论
Bernard 声称insbox
如果我们添加一些命令,这在列表中确实有效。现在我想知道哪些命令可以让我们做到这一点。
\documentclass[]{article}
\input{insbox.tex}
\usepackage{lipsum}
\usepackage{caption}
\begin{document}
\begin{itemize}
\InsertBoxR{2}{\parbox{2cm}{\rule{2cm}{1cm}\captionof{figure}{foo}}}
\item \lipsum[2]
\end{itemize}
\end{document}
答案1
以下是我的做法:我定义了一个\wrapitem
命令,它用于修补\item
,以及一个\InsertListR
命令,修补\InsertBoxR
,以及必须紧随其后\wrapitem
。其他项目使用标准\item
命令。
只要插入的项目不会溢出到下一个项目,并且适应标签的标准右对齐,它就可以正常工作。我猜它可以适应左对齐的情况(例如使用选项wide
),但我没有这样做。它也可以轻松适应enumerate
环境。
如果图像溢出了下一个项目,解决方法是将 itemize 环境拆分为几个,使用resume*
和before
选项enumitem
。我在下面的代码中给出了一个例子:
\documentclass[]{article}
\usepackage[showframe]{geometry}
\usepackage[svgnames]{xcolor}
\usepackage{enumitem}
\input{insbox.tex}
\usepackage{lipsum}
\usepackage{caption}
\usepackage{etoolbox}
\newcommand*{\wrapitem}{\apptocmd{\labelitemi}{\hskip\leftmargin}{}{}\item\apptocmd{\labelitemi}{\hskip-\leftmargin}{}{}}
\newcommand{\InsertListR}[3][]{%
\mbox{}\vspace*{-\baselineskip}\setlength{\leftskip}{\leftmargin}%
\InsertBoxR{#2}{\hskip-\leftmargin#3\hskip\leftmargin}[#1]%
}%
\begin{document}
\begin{itemize}
\wrapitem%
\InsertListR{2}{~\parbox{2cm}{\color{WhiteSmoke}\rule{2cm}{1cm}\captionof{figure}{foo}}}%
Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi
auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ul-
tricies et, tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula
aliquet magna, vitae ornare odio metus a mi. Morbi ac orci et nisl hen-
drerit mollis. Suspendisse ut massa. Cras nec ante. Pellentesque a nulla.
Cum sociis natoque penatibus et magnis dis parturient montes, nascetur
ridiculus mus. Aliquam tincidunt urna. Nulla ullamcorper vestibulum
turpis. Pellentesque cursus luctus mauris.
\item \lipsum[3]
\end{itemize}
\begin{itemize}%[leftmargin =2cm]%
\wrapitem%
\InsertListR[7]{2}{~\parbox{2cm}{\color{Gold!50}\rule{2cm}{3cm}\captionof{figure}{foo}}}%
\lipsum[2]
\end{itemize}
%
\begin{itemize}[resume*, rightmargin = 2.5cm]
\item%
Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat at, tincidunt tristique, libero. Vivamus viverra fermentum felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper elit. Proin fermentum massa ac quam. Sed diam turpis, molestie vitae, placerat a, molestie nec, leo.
\end{itemize}
%
\begin{itemize}[resume*, before=\leavevmode\vspace*{-\dimexpr\baselineskip+2\topsep+\partopsep}]
\item[]%
Maecenas lacinia. Nam ipsum ligula, eleifend at, accumsan nec, suscipit a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat lorem. Sed lacinia nulla vitae enim. Pellentesque tincidunt purus vel magna. Integer non enim. Praesent euismod nunc eu purus. Donec bibendum quam in tellus. Nullam cursus pulvinar lectus. Donec et mi. Nam vulputate metus eu enim. Vestibulum pellentesque felis eu massa.
\end{itemize}
\end{document}