当文本太大时增加行大小的表格

当文本太大时增加行大小的表格

我有一个简单的表格:

    \begin{table}[]

        \begin{tabular}{c|c|c|c|c|c|c|c|}
            \cline{2-7} & 
            \multicolumn{1}{p{2.7cm}|}{RIGHT} & 
            \multicolumn{1}{c|}{LEFT}&   
            \multicolumn{1}{c|}{LEFT}&  
            \multicolumn{1}{c|}{LEFT}&
            \multicolumn{1}{c|}{LEFT}& 
            \multicolumn{1}{c|}{LEFT} \\ \hline

            \multicolumn{1}{|c|}{test1} & 1 & 1 &1 & 1 & 1 &1\\ \hline
            \multicolumn{1}{|c|}{test2} & 1 & 1 &1 & 1 & 1 &1\\ \hline
            \multicolumn{1}{|c|}{test2} & 1 & 1 &1 & 1 & 1 &1\\ \hline
        \end{tabular}

\end{table}

看起来像这样:

在此处输入图片描述

我试图使该表适合页面,并在文本太长时增加行大小,但我没能做到这一点。

在上表中,如果我在单元格中插入长文本,它将如下所示: 在此处输入图片描述

有人帮助我使用这个调整表格大小:

\newcommand*{\ResizeTableIfTooBig}[1]{%
%% #1 = table
\savebox{\MyTable}{#1}%
\ifdim\wd\MyTable<\linewidth
\usebox{\MyTable}%
\else
\resizebox{\textwidth}{!}{\usebox{\MyTable}}%
\fi
}%

问题是此快照只是缩放表格,并且当单元格中的文本太长时,字体就会变得非常小。

对我有帮助的是一个有 7 列的表格,它不会超出纸张,并且当每列的文本太长时会创建一个新行(不缩放字体)。像这样: 在此处输入图片描述

答案1

您可以使用 tabularx以使表格适合线宽:

\documentclass{article}
\usepackage{tabularx, lipsum}
\setlength{\extrarowheight}{2pt}

\begin{document}

\lipsum[11]
\begin{table}[!htb]
    \begin{tabularx}{\linewidth}{|c|>{\centering}p{2.7cm}|*{5}{>{\centering\arraybackslash}X|}}
        \cline{2-7}
      \multicolumn{1}{c|}{} & RIGHT & LEFT & LEFT & LEFT & LEFT & LEFT \\ 
       \hline
       test1 & 1 & 1 &1 & 1 & 1 & I vel II vel III vel \&c. \\ \hline
       test2 & 1 & 1 &1 & 1 & 1 &1 \\ \hline
       test2 & 1 & 1 &1 & 1 & 1 &1 \\ \hline
    \end{tabularx}
\end{table}

\end{document} 

在此处输入图片描述

答案2

那样可以吗?

\documentclass{article}
\usepackage{array}

\begin{document}

        \begin{tabular}{c|c|c|c|c|c|c|c|}
            \cline{2-7} &
            \multicolumn{1}{p{2.7cm}|}{RIGHT} &
            \multicolumn{1}{ >{\raggedright}p{2.5cm}<{} | }{LEFT LEFT LEFT LEFT LEFT LEFT LEFT LEFT }&
            \multicolumn{1}{c|}{LEFT}&
            \multicolumn{1}{c|}{LEFT}&
            \multicolumn{1}{c|}{LEFT}&
            \multicolumn{1}{c|}{LEFT} \\ \hline

            \multicolumn{1}{|c|}{test1} & 1 & 1 &1 & 1 & 1 &1\\ \hline
            \multicolumn{1}{|c|}{test2} & 1 & 1 &1 & 1 & 1 &1\\ \hline
            \multicolumn{1}{|c|}{test2} & 1 & 1 &1 & 1 & 1 &1\\ \hline
        \end{tabular}

\end{document}

在此处输入图片描述

编辑:看起来您希望表格的每个单元格都具有相同的行为,而不仅仅是在某些标题单元格中,就像我最初想的那样。在这种情况下,以下方法可能更方便:

\documentclass{article}
\usepackage{array}

\newcolumntype{C}{>{\raggedright\arraybackslash}p{1.5cm}<{}}

\begin{document}

\begin{tabular}{C|C|C|C|C|C|C}
1 & 2 & 3 & 4 & 5 & 6 & 7 \\ \hline
1 & 2 & LEFT LEFT LEFT LEFT LEFT LEFT LEFT LEFT & 4 & 5 & 6 & 7 test test test tes tt test  \\
\end{tabular}

\end{document}

在此处输入图片描述

相关内容