将 tcolorbox 中的第一行与周围文本垂直对齐(例如枚举标签)

将 tcolorbox 中的第一行与周围文本垂直对齐(例如枚举标签)

将列表和文本环绕在图形周围很麻烦。wrapfig例如,该包无法做到这一点。我现在正在尝试使用\tcbsidebyside带有选项的框blanker来实现它。

问题是:有没有一种干净的方法可以将左侧第一行的基线与周围基线精确对齐?在下面的 MNWE 中,我想让框内的第一行与enumerate标签对齐。

\documentclass{article}

\usepackage[most]{tcolorbox}
\usepackage{blindtext}

\begin{document}

\begin{enumerate}
\item First item
\item \tcbsidebyside[blanker, sidebyside adapt=right,
    halign upper=justify, halign lower=right, 
    sidebyside align=top seam]{\blindtext}{<Some image>}
\end{enumerate}

\end{document}

在此处输入图片描述

答案1

您可以使用普通的 TeX 宏包insboxenumitem包来实现这一点:后者允许您定义right margin列表,并具有stop and resume功能。前者定义\InsertBoxL\InsertBoxR命令,它们接受两个强制参数:插入框之前下一段开头未触及的行数,以及要插入的对象。此外,一个可选参数(将在末尾给出)是补充短行的数量,以防 TeX 计算出错误的短行数。

例子:

\documentclass{article}
\usepackage[showframe]{geometry}
\usepackage{graphicx}
\usepackage{enumitem}
\usepackage{blindtext}
\input{insbox}

\begin{document}

\InsertBoxR{4}{\fboxsep = 0pt\fbox{\includegraphics[width = 4cm]{lepursuit1}}}
\begin{enumerate}[rightmargin =4.5cm]
  \item First item
  \item \blindtext
\end{enumerate}
\begin{enumerate}[resume]
  \item \blindtext
\end{enumerate}

\end{document} 

在此处输入图片描述

相关内容