使用 multicol 包将 varwidth 设置为列宽

使用 multicol 包将 varwidth 设置为列宽

我在 multicol 包中使用了两列。我有一些文本,\colorbox如下所示,我将它们放在 a 中,并使用varwidth它使其包含换行符。

如果行数较短,框的宽度会扩展至刚好包含文本。有没有办法让框的宽度与列的宽度相同?

下面是我对该盒子使用的命令。

\newcommand{\songbox}[1]{
\colorbox{light-gray}{
\begin{varwidth}{\textwidth}
\textit{#1}
\end{varwidth}}}

我对乳胶还很陌生,因此希望能够简单一些。

样本

答案1

varwidth如果您的目的是让灰色框覆盖整个列宽,则想要使用。

其目的varwidth是使封闭盒足够宽,以容纳里面的材料。

\documentclass{article}
\usepackage{xcolor,multicol}

\usepackage{lipsum}

\definecolor{light-gray}{gray}{.85}

\newsavebox{\songboxbox}
\newenvironment{songbox}
 {\begin{lrbox}{\songboxbox}\begin{minipage}{\dimexpr\columnwidth-2\fboxsep}\itshape}
 {\end{minipage}\end{lrbox}%
  \par\medskip\noindent
  \colorbox{light-gray}{\usebox{\songboxbox}}%
  \par\medskip}

\begin{document}

\begin{multicols}{2}
Some text some text some text some text
some text some text some text some text
some text some text some text some text

\begin{songbox}
In this long line the box goes all the way
to the right margin. And it wraps nicely.
\end{songbox}

Some text some text some text some text
some text some text some text some text
some text some text some text some text

\begin{songbox}
This line ends here.

Another line.
\end{songbox}

Now we fill the columns. \lipsum[1-10]

\end{multicols}

\end{document}

在我看来,环境形式似乎更好。

在此处输入图片描述

相关内容