wrapfig
enumerate
与和环境不兼容itemize
。是否有印刷方面的原因导致列表不能环绕图形,还是 LaTeX 的技术限制?如果是技术限制,目前是否有任何工作(新软件包或对 LaTeX 的更改)在将来消除此限制?
编辑:回应一些评论:我意识到有一些“技巧”可以做到这一点。我没有这个问题的例子。每当我遇到 wrapfig 问题时,因为它靠近枚举或逐项环境,我都会寻找一个简单的解决方案,找不到,然后将图形移到其他地方。在绝大多数情况下,学习复杂解决方案的成本不值得将图形保持在我想要的位置。
答案1
值得一提的是,wrapfigure 在 ConTeXt 中开箱即用。因此,这显然不是 TeX 的限制。
\setuppapersize[A5]
\useexternalfigure[ctanlion][http://www.ctan.org/lion/ctan_lion_350x350.png][width=3cm]
\starttext
\placefigure[left,2*hang]{Test}
{\externalfigure[ctanlion]}
\startitemize[n]
\item \input ward
\item \input ward
\item \input ward
\stopitemize
\stoptext
这使:
移除可2*hang
得\placefigure
:
答案2
这cutwin
包(和一些\parshape
体操)可以在这里使用:
\documentclass{article}
\usepackage{cutwin}
\usepackage{caption}
\usepackage{graphicx}
\usepackage{lipsum}
\begin{document}
\renewcommand\windowpagestuff{%
\hspace*{25pt}\includegraphics[height=4cm]{ctanlion}
\captionof{figure}{A test figure.}
}
\opencutleft
\begin{cutout}{2}{10pt}{0.5\linewidth}{12}
\begin{enumerate}
{%
\parshape 15 26pt \linewidth 26pt \linewidth 0.5\linewidth 0.5\linewidth
0.5\linewidth 0.5\linewidth 0.5\linewidth 0.5\linewidth 0.5\linewidth 0.5\linewidth
0.5\linewidth 0.5\linewidth 0.5\linewidth 0.5\linewidth 0.5\linewidth 0.5\linewidth
0.5\linewidth 0.5\linewidth 0.5\linewidth 0.5\linewidth 0.5\linewidth 0.5\linewidth
0.5\linewidth 0.5\linewidth 0.5\linewidth 0.5\linewidth 26 pt \linewidth
\item \lipsum[1]
}%
\item \lipsum[2]
\item \lipsum[2]
\end{enumerate}
\end{cutout}
\end{document}
CTAN 狮子绘画由 Duane Bibby 绘制。
答案3
通过将 wrapfigure 放入 或 中是可能的,parbox
正minipage
如此问题的一些重复中提到的那样。但是,这些方法通常通过手动插入\vspace
手动选择的值来解决垂直间距问题。此解决方案通过使用支柱自动工作。将strut
第一行文本的基线放置在距离 顶部的指定距离处minipage
。然后adjustbox
用于将 的顶部放置minipage
在外基线上方的精确距离处。
\documentclass{article}
\usepackage{calc}
\usepackage{adjustbox}
\usepackage{lipsum}
\usepackage{wrapfig}
\begin{document}
\newlength{\strutheight}
\settoheight{\strutheight}{\strut}
\begin{enumerate}
\item \lipsum[1]
\item
\begin{adjustbox}{valign=T,raise=\strutheight,minipage={\linewidth}}
\begin{wrapfigure}{l}{0pt}
\includegraphics[width=3cm]{example-image-a}
\end{wrapfigure}
\strut{}\lipsum[2]
\end{adjustbox}
\end{enumerate}
\end{document}
答案4
您可以创建一个新的包装环境。在下面的 MWE 中wrapr
,我的环境将图像放在页面的右侧,而wrapl
将其放在左侧。两个环境具有相同的结构:
wrapr{vertical adjustment of text}{number of lines}{horizontal space needed for the image}{vertical adjustment of image}{IMAGE}{TEXT}
我们可以在这里看到两种环境的使用情况
\documentclass[a4paper,11pt]{article}
\usepackage{graphicx}
\usepackage{tikz,pgfplots,tkz-euclide}
\tkzSetUpPoint[size=7,fill=white]
\usepackage{wrapfig}
\newenvironment{WrapText1}[3][r]
{\wrapfigure[#2]{#1}{#3}}
{\endwrapfigure}
\newenvironment{WrapText2}[3][l]
{\wrapfigure[#2]{#1}{#3}}
{\endwrapfigure}
\newcommand{\wrapr}[6]{
\begin{minipage}{\linewidth}\mbox{}\\
\vspace{#1}
\begin{WrapText1}{#2}{#3}
\vspace{#4}#5\end{WrapText1}#6
\end{minipage}}
\newcommand{\wrapl}[6]{
\begin{minipage}{\linewidth}\mbox{}\\
\vspace{#1}
\begin{WrapText2}{#2}{#3}
\vspace{#4}#5\end{WrapText2}#6
\end{minipage}}
\usepackage{lipsum}
\begin{document}
\wrapr{-4mm}{8}{4cm}{5mm}{\begin{tikzpicture}
\tkzDefPoint(3,0){C}
\tkzDefPoint(0,0){B}
\tkzDefPoint(1,2){A}
\tkzDefPoint(1.33,.66){G}
\tkzDefPoint(1.5,0){M}
\tkzDefPoint(.5,1){N}
\tkzDefPoint(2,1){P}
\draw(A)--(B)--(C)-- cycle;
\draw(A)--(M);
\draw(B)--(P);
\draw(C)--(N);
\tkzLabelPoint[left](B){$B$}
\tkzLabelPoint[below](M){$D$}
\tkzLabelPoint[right](P){$E$}
\tkzLabelPoint[left](N){$Z$}
\tkzLabelPoint[right](C){$C$}
\tkzLabelPoint[above](A){$A$}
\tkzLabelPoint[left,yshift=-3mm,xshift=1.7mm](G){$G$}
\tkzDrawPoints(A,B,C,M,N,P,G)
\end{tikzpicture}}{\begin{enumerate}
\item \lipsum[1]
\end{enumerate}}
\vspace{2cm}
\wrapl{-4mm}{8}{3cm}{5mm}{\begin{tikzpicture}
\tkzDefPoint(3,0){C}
\tkzDefPoint(0,0){B}
\tkzDefPoint(1,2){A}
\tkzDefPoint(1.33,.66){G}
\tkzDefPoint(1.5,0){M}
\tkzDefPoint(.5,1){N}
\tkzDefPoint(2,1){P}
\draw(A)--(B)--(C)-- cycle;
\draw(A)--(M);
\draw(B)--(P);
\draw(C)--(N);
\tkzLabelPoint[left](B){$B$}
\tkzLabelPoint[below](M){$D$}
\tkzLabelPoint[right](P){$E$}
\tkzLabelPoint[left](N){$Z$}
\tkzLabelPoint[right](C){$C$}
\tkzLabelPoint[above](A){$A$}
\tkzLabelPoint[left,yshift=-3mm,xshift=1.7mm](G){$G$}
\tkzDrawPoints(A,B,C,M,N,P,G)
\end{tikzpicture}}{\begin{enumerate}
\item \lipsum[1]
\end{enumerate}}
\end{document}