帮助完成复杂的表格构建

帮助完成复杂的表格构建

我正在用 Latex 写我的本科项目,有几个表格要写。但是,它们不是简单的对齐表格。以下是一个例子:

在此处输入图片描述

我写了一个代码,可以产生类似的效果,但我想知道是否有更结构化的方法。这是代码:

\documentclass[11pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{array}
\usepackage{float}
\usepackage{lmodern}
\usepackage{caption}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}
\begin{document}
\begin{tabular}{cl}
\begin{tabular}{cl}
$a$&$a$\\
\hline
1\qquad 1 &\hspace{0.3cm} 1\\ 
2\qquad 2 &\hspace{0.3cm} 2\\ 
3\qquad 4 &\hspace{0.3cm} 3\\ 
4\qquad 3 &\hspace{0.3cm} 4\\ 
5\qquad 3 &\hspace{0.3cm} 5\\
6\qquad 3 &\hspace{0.3cm} 6\\ 
\end{tabular}
\end{document}

此外,如果我想知道如何在不同列中为两个元素加下划线。例如,在最后一行中,元素 3 和元素 6最后一列

我很想听听你的意见。谢谢。

答案1

编写此类表格的最简单方法可能是为标题设置单独的列。例如,像问题中的表格,但缺少一些条目,可以排版为:

\begin{tabular}{*5c}% 5 columns, all centered
    &a& &a& \\\hline
   1& &1& &1\\
   2& &2& &2\\
   3& &4& &3\\
   4& &3& &4\\
   5& & & &5\\
   6& & & &6\\
\end{tabular}

这将产生下面左侧的表格:

在此处输入图片描述

因为右边的表格完全相同,只是我使用了列规范{c*4{@{\space}c}}以使表格更紧凑(@{\space}表示列之间的空间是\space,并且*4表示列规范@{\space}c重复四次)。

完整代码如下:

\documentclass{article}

\begin{document}

  \begin{tabular}{*5c}% 5 columns, all centered
        &a& &a& \\\hline
       1& &1& &1\\
       2& &2& &2\\
       3& &4& &3\\
       4& &3& &4\\
       5& & & &5\\
       6& & & &6\\
  \end{tabular}
  \qquad
  \begin{tabular}{c*4{@{\space}c}}% more compact version
      &a& &a& \\\hline
     1& &1& &1\\
     2& &2& &2\\
     3& &4& &3\\
     4& &3& &4\\
     5& & & &5\\
     6& & & &6\\
  \end{tabular}

\end{document}

如果你想“全局”更改tabluar环境中列之间的间距,那么你可以添加命令

\renewcommand{\tabcolsep}{0.5mm}

到你的序言(是\begin{document})。上面的两个表格几乎完全相同。

最后,如果表中的条目是“数学”,那么您应该使用array环境instead oftabular`——语法相同,只是环境应该包含在数学模式中,并且输出会略有不同,因为表中的条目也将在数学模式下排版。事实上,由于您想给某些条目加下划线,那么这可能就是您想要的。例如,要生成

在此处输入图片描述

您可以使用

\documentclass{article}

\begin{document}

  \renewcommand{\arraycolsep}{0.5mm}
  \[
  \begin{array}{*7c}
      &a& &a& &b&\\\hline
     4& &3& &4& &4\\
     5& & & &5& &5\\
     6& & & &\underline{6}& &\underline{7}\\
  \end{array}
  \]

\end{document}

要使下划线跨越多列,您可以像评论中提到的那样使用\cline

\documentclass{article}

\begin{document}

  \renewcommand{\arraycolsep}{0.5mm}
  \[
  \begin{array}{*7c}
      &a& &a& &b&\\\hline
     4& &3& &4& &4\\
     5& & & &5& &5\\
     6& & & &6& &7\\\cline{5-7}
  \end{array}
  \]

\end{document}

得出的结果为:

在此处输入图片描述

这适用于arraytabular环境。请注意,由 生成的行\cline略低于由 生成的行,\underine{...}因此,例如,如果您只想为列中的条目加下划线5以保持一致性,最好使用\cline{5-5}- 这还可以减少输入量,并为您提供更好的输入表布局!此外,您可以\cline在一行上使用多个命令:\cline{1-3}\cline{5-7}将在第 1-3 列和第 5-7 列下添加两行。

相关内容