具有固定宽度列和多列的表格中的问题

具有固定宽度列和多列的表格中的问题

我想按照以下想法制作一个图表如何创建带有文本“raggedright/centered/raggedleft”的固定宽度表格列?. 使用代码

\documentclass{article}

\usepackage{array}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}

\begin{document}

\begin{tabular}{| C{2cm} | C{2cm} | C{2cm} | C{2cm} | C{2cm} | C{2cm} |}
\hline
$f(x)$   & \multicolumn{5}{c|}{+}\\
\hline
$f'(x)$  & \multicolumn{2}{c|}{+} & \multicolumn{2}{c|}{-} & +\\
\hline
$f''(x)$ & - & \multicolumn{2}{c|}{-} & \multicolumn{2}{c|}{+}\\
\hline
\end{tabular}

\end{document}

宽度被忽略:

宽度不好

但添加一个无多列的行:

\documentclass{article}

\usepackage{array}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}

\begin{document}

\begin{table}[h]
\begin{tabular}{| C{2cm} | C{2cm} | C{2cm} | C{2cm} | C{2cm} | C{2cm} |}
\hline
$f(x)$   & \multicolumn{5}{c|}{+}\\
\hline
$f'(x)$  & \multicolumn{2}{c|}{+} & \multicolumn{2}{c|}{-} & +\\
\hline
$f''(x)$ & + & \multicolumn{2}{c|}{-} & \multicolumn{2}{c|}{+}\\
\hline
U & V & W & X & Y & Z\\
\hline
\end{tabular}
\end{table}

\end{document}

宽度合适:

良好的宽度

我遗漏了什么?

答案1

我建议你使用 (a) 环境array而不是tabular环境 (因为表格的内容都是数学模式) 和 (b) 使用w列类型来指定列宽,因为列内不需要或不需要换行。由于看起来乏味的

\multicolumn{2}{w{c}{\dimexpr2\mylen+2\arraycolsep+\arrayrulewidth\relax}|}

表达式出现的次数不少于四次,我进一步建议将其替换为一个名为的快捷宏,比如说\mycol

在此处输入图片描述

\documentclass{article}
\usepackage{array}  % for 'w' column type
\newlength\mylen
\setlength\mylen{1cm} % <-- set the desired usable column width (2cm seems excessive)
% handy shortcut macro:
\newcommand\mycol[1]{%
   \multicolumn{2}{w{c}{\dimexpr2\mylen+2\arraycolsep+\arrayrulewidth\relax}|}{#1}} 
\begin{document}
\[ % start an unnumbered display-math group
\begin{array}{| *{6}{w{c}{\mylen}|} }
\hline
f(x)   & \multicolumn{5}{c|}{+}    \\
\hline
f'(x)  & \mycol{+} & \mycol{-} & + \\
\hline
f''(x) & - & \mycol{-} & \mycol{+} \\
\hline
\end{array}
\]
\end{document}

答案2

{NiceMatrix}您可以使用of轻松构建该数组nicematrix。该环境类似于{nicematrix}(of amsmath),但具有附加功能:

  • 您可以使用键指定列的宽度columns-width
  • 您可以使用命令合并单元格(垂直和水平)\Block
  • 该键hvlines绘制所有规则(由 创建的块除外\Block)。

这是代码。

\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\[\begin{NiceMatrix}[columns-width=1cm,hvlines]
f(x)   & \Block{1-5}{+} \\
f'(x)  & \Block{1-2}{+} && \Block{1-2}{+} && + \\
f''(x) & - & \Block{1-2}{-} && \Block{1-2}{+} \\
\end{NiceMatrix}\]
\end{document}

上述代码的输出

相关内容