尤其是在制作幻灯片时,我希望影响 LaTeX 放置我所写文本的方式。为了将布局和内容分开,我希望有某种环境,我可以在其中预定义 LaTeX 稍后将放置的每行的单独线宽。
最简单的用例是,我希望我的itemize
“环绕”图像,即三角形。我希望前两行的线宽为100 pt
,下一行的线宽可能仅为90 pt
,接下来的两行85 pt
、下一行80 pt
和所有后续行都应该很75 pt
宽。我希望相应 tex 文档的基本部分看起来像这样:
\begin{variablewidthpar}[90,85,85,80,75]
\begin{itemize}
\item foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
\item bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
\item baz baz baz baz baz baz baz baz baz baz baz baz baz baz baz baz baz baz
\end{itemize}
\end{variablewidthpar}
关键部分是,LaTeX 仍然决定哪些单词放在哪一行,我仍然可以自由地itemize
按照自己的喜好编写环境。我也不想/不需要填充行。我也不关心行与行之间的间距(目前)。我只想为每行提供单独的(最大)线宽。
如何实现?我有时会看到包含精美布局的文档,这让我认为已经有一些可用的解决方案,但我不知道要搜索什么。
答案1
您可以定义一个\parshape
。它会影响当前段落。但由于列表也设置了 \parshape,因此可能需要进行大量调整才能获得所需的输出:
\documentclass{article}
\usepackage{lipsum}
\begin{document}
\parshape 4 4cm 5cm 5cm 4cm 6cm 3cm 0cm \textwidth
\lipsum*[1]
\makeatletter
\begin{itemize}
\item \parshape 4 4cm 5cm 5cm 4cm 6cm 3cm \@totalleftmargin \linewidth \lipsum*[1]abc
\parshape \@ne \@totalleftmargin \linewidth
\item abc
\item abc
\end{itemize}
\end{document}