表格标题

表格标题

我对 LaTeX 还只是个初学者,我只用过 LaTeX 来完成概率与统计和物理课程的家庭作业。随着我尝试学习更多有用的命令,我的格式每周都在慢慢改进。现在,我想重新创建教授在本周的作业集中使用的表格。教授参考表

我的文档中目前有以下代码:

\renewcommand{\arraystretch}{1.5}
\begin{center}
    \begin{tabular}
    {|m{.75cm}|m{.75cm}|m{.75cm}|m{.75cm}|m{.75cm}|m{.75cm}|}
        \hline
        \multicolumn{5}{|c|}{$\mathbf{Toilet \ Paper}$}\\
        \hline
        & $\mathbf{0}$ & $\mathbf{1}$ & $\mathbf{2}$ & $\mathbf{3}$ \\
        \hline
        $\mathbf{0}$ &  0.31 & 0.22 & 0.09 & 0.04\\
        \hline
        $\mathbf{1}$ & 0.15 & 0.05 & 0.04 & 0.01\\
        \hline
        $\mathbf{2}$ & 0.04 & 0.03 & 0.01 & 0.01\\
        \hline
    \end{tabular}
\end{center}

我希望能够缩短包含“卫生纸”列标题的行,以便它不包含最左边的列。我还想为行标题添加“Wipes”,类似于参考图片中的“W”。有什么想法吗?我认为重要的是要注意,在输入的代码中,我使用了 longtable、a​​rray 和 amsmath 包。

编辑:这是我的第一篇帖子。我愿意听取关于如何格式化或在这类问题中还包含哪些内容的建议。谢谢!

答案1

我建议使用新包tabularray。有了它,表格定制就非常容易了:

\documentclass{article}
\usepackage{tabularray}
\begin{document}
\begin{center}
    \begin{tblr}{
        colspec={cQ[c,m,.75cm]Q[c,m,.75cm]Q[c,m,.75cm]Q[c,m,.75cm]Q[c,m,.75cm]}, 
        row{1-2} = {font=\bfseries},
        column{1-2} = {font=\bfseries},
        vline{2} = {3-5}{solid},
        vline{3-7} = {2-5}{solid},
        abovesep=4pt}
        & &\SetCell[c=4]{c}{\bfseries Toilet  Paper}\\
        \cline{3-6}
        & & 0 & 1&2 &3 \\
        \cline{2-6}
        \SetCell[r=3]{c}Wipes& 0 &  0.31 & 0.22 & 0.09 & 0.04\\
        \cline{2-6}
        & 1 & 0.15 & 0.05 & 0.04 & 0.01\\
        \cline{2-6}
        & 2 & 0.04 & 0.03 & 0.01 & 0.01\\
        \cline{2-6}
    \end{tblr}
\end{center}
\end{document}

在此处输入图片描述

答案2

这里有一个解决方案,它使用 (a) 环境array而不是tabular环境(这样我就不用使用大量$符号来启动和终止内联数学模式了)和 (b) 使用w列类型而不是m列类型。我选择了后者,因为似乎不需要自动换行符。

在此处输入图片描述

\textbf{T}(我把用\textbf{To...}\textbf{W}替换留给读者作为练习\textbf{Wi...}。)

\documentclass{article}
\usepackage{array} % for w column type 
% two handy shortcut macros:
\newcommand{\blank}{\multicolumn{1}{c}{}}   
\newcommand{\blankx}{\multicolumn{1}{c|}{}}

\begin{document}
\[
\renewcommand{\arraystretch}{1.75}
% your prof actually seems to have used "\setlength\extrarowheight{8pt}"
\begin{array}{ c | c | *{4}{wc{7.5mm}|} }
   \blank & \blank  & \multicolumn{4}{c}{\textbf{T}}\\
   \cline{3-6}
   \blank & \blankx & \mathbf{0} & \mathbf{1} & \mathbf{2} & \mathbf{3} \\
   \cline{2-6}
              & \mathbf{0} & 0.31 & 0.22 & 0.09 & 0.04\\
   \cline{2-6}
   \textbf{W} & \mathbf{1} & 0.15 & 0.05 & 0.04 & 0.01\\
   \cline{2-6}
              & \mathbf{2} & 0.04 & 0.03 & 0.01 & 0.01\\
   \cline{2-6}
\end{array}
\]
\end{document}

答案3

这是一个{NiceTabular}使用 的解决方案nicematrix

在该环境中,键hvlines会绘制所有规则,但“外部”行和列(由键first-row和指定)以及空角(使用first-col键时)除外。corners

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\begin{center}
    \renewcommand{\arraystretch}{1.3}
    \begin{NiceTabular}
      [first-row,first-col,hvlines,corners,columns-width=auto]
      {>{\bfseries}ccccc}
        & &\Block{1-4}{\bfseries Toilet  Paper}\\
        & & \RowStyle{\bfseries} 0 & 1 & 2 &3 \\
        & 0 &  0.31 & 0.22 & 0.09 & 0.04\\
        \bfseries Wipes & 1 & 0.15 & 0.05 & 0.04 & 0.01\\
        & 2 & 0.04 & 0.03 & 0.01 & 0.01\\
    \end{NiceTabular}
\end{center}

\end{document}

您需要进行多次编译(因为nicematrix在后台使用了 PGF/TikZ 节点)。

上述代码的输出

相关内容