我想按照以下想法制作一个图表如何创建带有文本“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}