latex如何绘制标准三线表 & lllegal charactor in array arg& 如何合并单元格?

tabular环境提供了最简单的表格功能,此时还不需要调用任何宏包。下面我们画出一个最基本的表格。
latex如何绘制标准三线表 & lllegal charactor in array arg& 如何合并单元格?_第1张图片
其中\hline命令表示横线,表示竖线;&用来分列,\\用来换行,l、c、r分别表示居左、居中、居右。

正如图形浮动环境figure一样,表格也有一种类似的浮动环境table,其标题和交叉引用的方法和图形浮动环境类似。

科研文献总常用的三线表,采用的是booktabs宏包,三条线分别用\toprulemidrulebottomrule等命令表示。

latex如何绘制标准三线表 & lllegal charactor in array arg& 如何合并单元格?_第2张图片

\documentclass{ctexart}
\usepackage{booktabs} % 三线表宏包
\begin{document}
\begin{table}
    \centering
    \begin{tabular}{lll} %全部居中
    \toprule
    操作系统 & 发行版 & 编译器\\
    \midrule
    Windows & MikTeX & TexMakerX\\
    Unix/Linux & texTeX & Kile \\
    MacOS & MacTex & TeXShop\\
    \bottomrule
    \end{tabular}
\end{table}
\end{document}

tabular环境中的行可以采用居顶、居中、居底等纵向对齐方式,分别用t、c、b来表示,缺省的是居中对齐。列之间的分隔符也可以改用其他符号,比如||来画双竖线。

语法:[纵向对齐]{横向对齐和分隔符}

如果我们要扩大或者缩小某一列的宽度怎么办?我们可以将对齐方式参数从l、c、r改为p{宽度},这时的纵向对齐方式是居顶,t、c、b等参数失效。

latex如何绘制标准三线表 & lllegal charactor in array arg& 如何合并单元格?_第3张图片
可以看出,在控制参数之后,表格内容缺省居左对齐。我们可以用列前置命令>{}配合\centering\raggedleft命令来把横向对齐方式改为居中或者居右。列前置命令仅对紧邻其后的一列有效。我加上之后就报错了:lllegal character in array arg.

latex如何绘制标准三线表 & lllegal charactor in array arg& 如何合并单元格?_第4张图片
于是,我参考文章LaTeX中的那些坑
原来少了一个\arraybackslash,只需要对最后一列的参数加上\arraybackslash命令即可, 之后我在导言区调用array宏包,就可以实现三线表的居中对齐了。
latex如何绘制标准三线表 & lllegal charactor in array arg& 如何合并单元格?_第5张图片

\documentclass{ctexart}
\usepackage{booktabs} % 三线表宏包
\usepackage{array}
\begin{document}
\begin{table}[htbp]
    \centering
    \begin{tabular}{p{60pt}>{\centering}p{60pt}>{\raggedleft\arraybackslash}p{60pt}} 
    \toprule[1.5pt] %控制线的粗细
    操作系统 & 发行版 & 编译器\\
    \midrule[1pt]
    Windows & MikTeX & TexMakerX\\
    Unix/Linux & texTeX & Kile \\
    MacOS & MacTex & TeXShop\\
    \bottomrule[1.5pt]
    \end{tabular}
\end{table}
\end{document}

至于为什么这样做,反正是换行的意思,避免冲突,具体参考LaTeX中的那些坑

array宏包还提供另外两种对齐方式参数:

m{width}:与p{width}类似,文字垂直居中,水平居左;
b{width}:与p{width}类似,文字靠底部,水平居左;

有时候表格的某单元需要横跨几列,我们使用\multicolumn命令,同时使用booktabs宏包的\cmidrule命令来画横跨几列的横线。

\multicolumn{横跨列数}{对齐方式}{内容}
\cmidrule{起始列-结束列}
latex如何绘制标准三线表 & lllegal charactor in array arg& 如何合并单元格?_第6张图片

\documentclass{ctexart}
\usepackage{booktabs} % 三线表宏包
\usepackage{array}
\usepackage{multirow} %合并单元格
\begin{document}
\begin{table}[htbp]
    \centering
    \begin{tabular}{ccccc} 
    \toprule
    & \multirow{2}{*}{Re-SSD} & \multirow{2}{*}{MFN}&\multicolumn{2}{c}{程序运行时长(s)}\\
    \cmidrule{4-5}
  & & &追赶法&逆矩阵法\\
   \midrule%[1pt]
   字母数据A&0.0740 & 0  & 2.191141 &14.049576 \\
   字母数据R&0.0672 & 0 &4.449666& 40.723701 \\
   脑部MRI数据&0.0628 & 0 & 3.310251 & 27.489843\\
   肺部CT数据& 0.0460 & 0 & 2.072329 & 14.016090\\
    \bottomrule
    \end{tabular}
\end{table}
\end{document}

你可能感兴趣的:(阅读笔记,html,latex)