错误的垂直间距 cutwin(清理解决方案文本换行图像)

错误的垂直间距 cutwin(清理解决方案文本换行图像)

cutwin 的垂直间距问题 我注意到该软件包的cutwin行距似乎存在问题(见上图)。搜索后,其他几个人也注意到了这一点: 使用 cutwin 调整行距与 cutwin 错位http://tug.org/mail-archives/texhax/2011-September/018163.html

https://tex.stackexchange.com/a/133691值得注意的是,包、、wrapfig等在垂直间距下并不总是能很好地工作。picinscutwin

我选择cutwin作为一种常用的解决方案来手动定位图像并让文本环绕在图像周围。特别是在列表中/附近,因为 wrapfig 经常在这里失败。我有点恼火,我花时间和精力去学习,cutwin却发现这个包有自己的问题。所以我的问题是:
(1)cutwin的错误垂直间距可以修复吗?
(2) 如果 (1) 的答案是否定的,那么 的解决方案是否可行?https://tex.stackexchange.com/a/59106/120150,使用cutwinparshape,能很好地处理垂直间距吗?
(3)如果(2)的答案是否定的,那么将文本环绕在图像周围的最干净的解决方案是什么?(图像不需要浮动)我已经看到了几种解决方案,但尚未就最佳方案达成共识。例如,参见 https://tex.stackexchange.com/a/208436是否有可能将 wrapfig 与 enumerate 或 itemize 环境一起使用?https://www.abhilashnair.com/troubleshooting/how-to-use-wrapfig-wrapfigure-in-an-enumerated-or-list-environment-in-latex/https://tex.stackexchange.com/a/232110

梅威瑟:

\documentclass[11pt, a4paper]{article}

\usepackage{lmodern}
\usepackage[T1]{fontenc}

\usepackage{mwe}
\usepackage{cutwin}


\begin{document}
\section*{Test}
\lipsum[2]

\renewcommand*{\windowpagestuff}{%
\centering\bfseries
Text \\ in \\ Window \par}

\opencutright
\begin{cutout}{2}{0.5\textwidth}{0pt}{7}
    \lipsum[1]
\end{cutout}

\lipsum[2]
\end{document}

答案1

有一个不常被提及的普通 TeX 宏包:insbox它做得很好。对于您的情况,我们可以\InsertBoxR在段落前使用该命令;它需要两个强制参数:段落开头正常长度的行数,以及您要插入的内容。它可以接受一个可选参数(与 LaTeX 用法相反,它是最后一个参数):补充短行的数量,以防 TeX 错误地计算所需的短行数。

同样也存在一个\InsertBoxL命令。

\documentclass[11pt, a4paper]{article}

\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[latin]{babel} 

\usepackage{mwe}
\input{insbox}

\begin{document}
\section*{Test}

\lipsum[2]

\InsertBoxR{2}{\parbox[b][6\baselineskip][c]{0.48\textwidth}{\bfseries\centering Text \\ in \\ Window }}
\lipsum[1]

\lipsum[2]

\end{document} 

在此处输入图片描述

编辑:要为图形或表格添加标题(因为它不再是浮点数),您必须使用包\captionof中定义的caption。整个内容必须包含在或\parboxminipage。以下是示例:

\documentclass[11pt, a4paper]{article}

\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[latin]{babel}
\usepackage{graphicx, caption}

\usepackage{mwe}
\input{insbox}

\begin{document}

\section*{Test}

\lipsum[2]

 \InsertBoxR{2}{\parbox[b][6\baselineskip][t]{0.48\textwidth}{\centering\includegraphics[scale=0.75]{pepe-le-pew2}
 \captionsetup{labelfont = bf, format= hang}\captionof{figure}{Pepe Le Pew in full action}}}[5]
\lipsum[1]

\lipsum[2]

\end{document} 

在此处输入图片描述

答案2

我将发布我的解决方案,其中 insbox 结合了列表。感谢 Bernard 提出这个解决方案。

Insbox 示例

如您所见,本例中最后一段处理得并不好。此外,使用 InsertBox 来处理包含常规宽度文本和需要环绕框的文本的项目也并非易事。您需要进行大量手动干预,从而导致代码冗长。Insbox 的最后一个可选参数对我来说也不完全清楚,它似乎在行中引入了额外的垂直间距。结论:Insbox 可以完成简单情况的工作,如果您想超越简单情况,adjustbox 包似乎更强大、更成熟。我说“似乎”,因为我还没有测试过这个包。我的看法:Latex 最好有一个不错的解决方案(/包)来解决文本环绕框的问题,而不是目前存在的大量非最优解决方案。至于浮动,即使是 wrapfig 文档也不建议启用其浮动功能。

\documentclass[11pt, a4paper]{article}

\usepackage{calc}

\usepackage{lmodern}
\usepackage[T1]{fontenc}

\usepackage[draft]{graphicx}

\usepackage{enumitem}

\input{insbox}

\usepackage{mwe}


\begin{document}
\section*{Test}
\InsertBoxR{2}{\parbox[b][2\baselineskip][t]{4cm}{
    \includegraphics[width=4cm]{image.png}
}}
Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi.
Morbi auctor lorem non justo. Nam lacus libero, pretium at, lobortis
vitae, ultricies et, tellus. Donec aliquet, tortor sed accumsan biben-
dum, erat ligula aliquet magna, vitae ornare odio metus a mi.
\newlength{\origTopsep}
\begin{enumerate}[rightmargin=4.2cm]
    \setlength{\origTopsep}{\topsep}
    \item \lipsum[2]
    \setlength{\topsep}{0pt}
\end{enumerate}
\begin{enumerate}[resume]
    \setlength{\topsep}{\origTopsep}
    \item \lipsum[2]
    \item \lipsum[2]
\end{enumerate}
\lipsum[2]
\end{document}

相关内容