表格随内容增长并自动换行

表格随内容增长并自动换行

我想要一个tabular或类似的东西,其中一个单元格具有以下行为:

  • 单元格垂直和水平增长以适应单元格的内容,但不超过\linewidth
  • 行会断开,而不是超出单元格范围,或者单元格本身会变得比页面更大

到目前为止我只找到了两个部分解决方案:

  • 使用简单的表格来p{.?\textwidth}确保换行和垂直增长,但这并不能为我提供水平增长的框
  • 使用简单的表格lrc确保自动水平增长

如果你想知道我为什么想要一个单元格表,那是因为我需要某种可以有边框和背景颜色的“框”。

答案1

您可以在环境中设置单元格内容varwidth(从varwidth包裹)这是一个最小的例子:

在此处输入图片描述

\documentclass{article}
\usepackage{varwidth}% http://ctan.org/pkg/varwidth
\setlength{\parindent}{0pt}% Just for this example
\begin{document}
\begin{tabular}{|l|}
  \hline
  \begin{varwidth}{\dimexpr\linewidth-2\tabcolsep}
  \strut some text.
  \end{varwidth} \\
  \hline
\end{tabular}

\begin{tabular}{|l|}
  \hline
  \begin{varwidth}{\dimexpr\linewidth-2\tabcolsep}
  \strut Quite a lot more text than in the first table.
  \end{varwidth} \\
  \hline
\end{tabular}

\begin{tabular}{|l|}
  \hline
  \begin{varwidth}{\dimexpr\linewidth-2\tabcolsep}
    \strut Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur non eros in sem blandit 
    scelerisque vitae ac velit. Etiam turpis mi, tincidunt adipiscing tincidunt nec, laoreet quis 
    metus. Nulla ut est eu odio tempus vulputate. Donec blandit tincidunt leo sit amet ultricies. 
    Maecenas commodo nunc in felis pulvinar elementum. In sapien metus, adipiscing dictum sollicitudin 
    ac, interdum et leo. Phasellus suscipit mi sed purus euismod molestie. Class aptent taciti sociosqu 
    ad litora torquent per conubia nostra, per inceptos himenaeos.\strut
  \end{varwidth} \\
  \hline
\end{tabular}
\end{document}​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

\strut鼓励使用,因为minipages 倾向于剥离文本块最后一行/第一行的适当深度/高度。

答案2

\documentclass{article}

\newcommand\mybox[1]{%
  \setbox0\hbox{#1}%
  \ifdim\wd0<\textwidth
    \usebox0
  \else
    \noindent\parbox\textwidth{#1}
  \fi}

\def\x{a b c d e f g h i j k l m}
\begin{document}

\parindent0pt

\fbox{\mybox{a b c}}

\fbox{\mybox{\x. \x \x}}

\fbox{\mybox{\x. \x \x. \x \x

\x\x\x\x\x\x\x\x\x\x\x\x\x}}

\end{document}

在此处输入图片描述

答案3

对于具有彩色背景和框架的框,使用\fcolorbox

\documentclass{article}
\usepackage[svgnames]{xcolor}
\usepackage{varwidth}

\newcommand{\mycolorbox}[1]{{%
    \fboxrule 2pt
    \fcolorbox{Navy!80}{DarkKhaki}{%
        \begin{varwidth}{0.8\linewidth}%
                \strut#1%
        \end{varwidth}%
    }}}

\begin{document}
\mycolorbox{Hello, world!}
\end{document}

相关内容