Latex论文表格画法

2022-09-02 22:11:41 浏览数 (3)

1、基本表格画法

 begin{table}[htbp] 表示表格的开始。中括号中的 htbp 表示的是表格的浮动格式。当然这个基本参数不仅仅只是对表格有用。需要注意的是,一般使用 [htb] 这样的组合,这样组合的意思就是Latex会尽量满足排在前面的浮动格式,就是 h-t-b 这个顺序,让排版的效果尽量好。         [h] 表示将表格放在当前位置。         [t] 表示将表格放置在页面的顶部。         [b] 表示将表格放置在页面的底部。         [p] 将表格放置在一只允许有浮动对象的页面上。     caption{my table} 表示表格的标题,该设置可以放在 begin{tabular} end{tabular} 环境的前后,使得表格的标题显示在表格的上面或下面。label{table1} 表示表格名字,用于正文中引用表格。     若要插入跨栏图表, 可以用浮动环境 table* 。begin{table}[htbp] 变成 begin{table*}[htbp] ,end{table} 变成 end{table*} 。     begin{tabular}[位置]{列} 和 begin{tabular*}{宽度}[位置]{列} 设置表格环境参数格式。         begin{tabular}{|c|c|c|} 。一个 c 表示有一列,格式为居中显示,这是列必选参数。通过添加 | 来表示是否需要绘制竖线。|| 表示画二条紧相邻的竖直线。             l 表示该列左对齐。             c 表示该列居中对齐。             r 表示该列右对齐。         如果只需要某几列的宽度发生改变,可以使用 p{宽度} (以 cm 为单位或以 pt 为单位或 0.2textwidth)来代替 c 参数,但是表格中的文字是默认左对齐的。因此此时可以添加 p{宽度}<{centering} 来改变文本对齐方式,但此时需要添加包 usepackage{array} 。在这里 centering 参数可以被 raggedleft 和 raggedright 替换,分别表示为左对齐和右对齐。         也可以使用 tabular* (begin{tabular*}{宽度}[位置]{列})环境参数,如上的 {宽度} 可以设置为 {10cm},表示整个表格的宽度为 10cm。但由于设置了表格的整体宽度,为了使表格对齐,需要使用表达式 @{extracolsep{fill}} ,但画正式表格一般 不推荐 使用这种表格方式(比较复杂,感觉一般用于画类似三线表格的图表中),可以通过命令调整整个表格的缩放。         begin{tabular}[位置]{cc}。[位置] 中的参数是位置可选参数,该参数表示表格相对于外部文本行基线的位置,又称为垂直定位参数。一般为默认不设置,表示表格按照外部文本行的基线垂直居中。t表示表格顶部与当前外部文本行的基线重合。b 表示表格底部与当前外部文本行的基线重合。     可用 setlength{tabcolsep}{1pt} 来调整表格的列间距离 (十分推荐) 。     可用 renewcommandarraystretch{1.5} 来调整表格行间距,意思是将每一行的高度变为原来的1.5倍 (十分推荐) 。     如果表格太大,可以使用 scalebox{1.5} 来对表格进行缩放,意思是将表格的大小变为原来的1.5倍 (十分推荐),使用的时候需要添加包 usepackage{graphicx} 。

基本表格画法如下:

代码语言:javascript复制
documentclass{article}

begin{document}
begin{table}[htbp]
caption{my table}
label{table1}  %表格名字,用于正文中引用表格
centering  
begin{tabular}{|c|c|c|}
hline
(1,1) & (1,2) & (1,3) \
hline
(2,1) & (2,2) & (2,3) \
hline
(3,1) & (3,2) & (3,3) \
hline
(4,1) & (4,2) & (4,3) \
hline
end{tabular}
end{table}
end{document}

其实现效果如下:

使用 **setlength{tabcolsep}{1pt}{表格}**来调整表格的列间距离,如下所示:

代码语言:javascript复制
documentclass{article}

begin{document}

begin{table}[htbp]
caption{my table}
centering
setlength{tabcolsep}{5mm}{
begin{tabular}{|c|c|c|}
hline
(1,1) & (1,2) & (1,3) \
hline
(2,1) & (2,2) & (2,3) \
hline
(3,1) & (3,2) & (3,3) \
hline
(4,1) & (4,2) & (4,3) \
hline
end{tabular}}
end{table}

end{document}

其实现效果如下:

使用 renewcommandarraystretch{1.5} 来调整表格行间距,如下所示:

代码语言:javascript复制
documentclass{article}

begin{document}

begin{table}[htbp]
caption{my table}
centering
renewcommandarraystretch{1.5}{
setlength{tabcolsep}{5mm}{
begin{tabular}{|c|c|c|}
hline
(1,1) & (1,2) & (1,3) \
hline
(2,1) & (2,2) & (2,3) \
hline
(3,1) & (3,2) & (3,3) \
hline
(4,1) & (4,2) & (4,3) \
hline
end{tabular}}}
end{table}

end{document}

其实现效果如下:

使用 scalebox{1.5} 来对表格进行缩放,如下所示:

代码语言:javascript复制
documentclass{article}
usepackage{graphicx} %需要添加的包

begin{document}

begin{table}[htbp]
caption{my table}
centering
scalebox{1.5}{
renewcommandarraystretch{1.5}{
setlength{tabcolsep}{5mm}{
begin{tabular}{|c|c|c|}
hline
(1,1) & (1,2) & (1,3) \
hline
(2,1) & (2,2) & (2,3) \
hline
(3,1) & (3,2) & (3,3) \
hline
(4,1) & (4,2) & (4,3) \
hline
end{tabular}}}}
end{table}

end{document}

其实现效果如下:

使用 p{宽度}<{centering} 情况如下所示:

代码语言:javascript复制
documentclass{article}
usepackage{array} %需要添加的包

begin{document}

begin{table}[htbp]
caption{my table}
centering  
begin{tabular}{|p{1cm}<{centering}|p{2cm}<{centering}|p{3cm}<{centering}|}
hline
(1,1) & (1,2) & (1,3) \
hline
(2,1) & (2,2) & (2,3) \
hline
(3,1) & (3,2) & (3,3) \
hline
(4,1) & (4,2) & (4,3) \
hline
end{tabular}
end{table}

end{document}

其实现效果如下:

使用 begin{tabular*}{宽度}[位置]{列} 情况如下所示:

代码语言:javascript复制
documentclass{article}
usepackage{array} %需要添加的包

begin{document}

begin{table}[htbp]
caption{my table}
centering
deftemptablewidth{0.6textwidth}
{rule{temptablewidth}{1pt}}  %根据使用情况灵活设置,线的粗细
begin{tabular*}{temptablewidth}{@{extracolsep{fill}}ccccc}
hline
&(1,1)&(1,2)&(1,3)&\
hline
&(2,1)&(2,2)&(2,3)&\
hline
&(3,1)&(3,2)&(3,3)&\
hline
&(4,1)&(4,2)&(4,3)&\
hline
end{tabular*}
{rule{temptablewidth}{1pt}}
end{table}

end{document}

其实现效果如下:

2 合并表格画法

如下是表格中一些横线的画法(Tips: 如下表格中的(1,1)代表该格子在整个表格中的位置,有助于我们画表格):

    hline:这条命令只能位于第一行前面或紧接在行结束命令的后面,表示在刚结束的那一行画一根水平的直线,横线的宽度与表格的宽度相同,放在一起的两条水平hline命令就会画出两条间隔很小的水平线。     cline{n-m}:这条命令在一行中可以出现多次。该命令从第n列的左边开始,画一条到第m列右边结束的水平线,对应前面的列数。

代码语言:javascript复制
documentclass{article}
begin{document}

begin{table}[htbp]
caption{my table}
centering
renewcommandarraystretch{1.5}{
setlength{tabcolsep}{5mm}{
begin{tabular}{|c|c|c|}
hline
(1,1) & (1,2) & (1,3) \
hline
(2,1) & (2,2) & (2,3) \
cline{2-3}
(3,1) & (3,2) & (3,3) \
cline{1-1} cline{3-3}
(4,1) & (4,2) & (4,3) \
hline
end{tabular}}}
end{table}

end{document}

其实现效果如下所示:

为了得到合并的格子,可以通过命令 multicolumn 和 multirow 进行合并单元格。需要引入包 usepackage{multirow} 。其一般的参数使用方法如下。更详细可以参考LaTex表格绘制的小技巧。

    multicolumn{参数1}{参数2}{参数3}         参数1 表示要将整个单元格分成多少列         参数2 表示对齐方式         参数3 表示这个单元格的内容     multirow{参数1}{参数2}{参数3}         参数1 表示要将整个单元格分成多少行         参数2 表示对齐方式         参数3 表示这个单元格的内容

multicolumn{2}{|c|}{multi col} 指的是这个单元格占两列,表格中的内容居中表示,填充内容为multi col,并在该单元格左右画俩条竖线(原始的 tabular 中设置的 |c| 的两边的竖线会消失)。 multirow{2}*{multi row} 指的是这个单元格占两行,填充内容为multi row,参数2 是文本所在列的宽度。它可以用*取代,表示用文本的自然宽度作为列的宽度,当使用*的时候不需要打括号。 multicolumn{2}{c|}{multirow{2}{*}{multi col row}} 指的是这个单元格占两行,同时也占两列。如果 multirow 前面没有 multicolumn 的话,默认就是只占一列。注意:对应未填入的格子需要进行填充。若为多行单列,只需要把该位置空出来即可。当为多行多列的时候,下一行需要使用类似 multicolumn{2}{c}{} 的语句对多列进行填充。

代码语言:javascript复制
documentclass{article}
usepackage{multirow}
begin{document}

begin{table}[htbp]
caption{my table}
centering
renewcommandarraystretch{1.5}{
setlength{tabcolsep}{5mm}{
begin{tabular}{|c|c|c|c|c|c|}
hline
multicolumn{2}{|c|}{multirow{2}*{multi col row}} &multicolumn{3}{|c|}{multi col} & multirow{2}{*}{multi row}\
cline{3-5}
multicolumn{2}{|c|}{} & (2,3) & (2,4) & (2,5) & \
hline
multirow{3}{*}{multi row} & (3,2) & (3,3) & (3,4) & (3,5) & (3,6)\
cline{2-6}
 & (4,2) & (4,3) & (4,4) & (4,5) & (4,6)\
cline{2-6}
 & (5,2) & (5,3) & (5,4) & (5,5) & (5,6)\
hline
end{tabular}}}
end{table}

end{document}

其实现效果如下:

若要使用斜线表头,需要使用 diagbox 命令,需要添加包 usepackage{diagbox},diagbox[innerwidth=3.3cm]{A}{B}} 中的 [innerwidth=3.3cm] 取决于列宽度的大小。

代码语言:javascript复制
documentclass{article}
usepackage{multirow}
usepackage{diagbox}
begin{document}

begin{table}[htbp]
caption{my table}
centering
renewcommandarraystretch{1.5}{
setlength{tabcolsep}{5mm}{
begin{tabular}{|c|c|c|c|c|c|}
hline
multicolumn{2}{|c|}{multirow{2}*{diagbox[innerwidth=3.3cm]{A}{B}}} &multicolumn{3}{c|}{multi col} & multirow{2}{*}{multi row}\
cline{3-5}
multicolumn{2}{|c|}{} & (2,3) & (2,4) & (2,5) & \
hline
multirow{3}{*}{multi row} & (3,2) & (3,3) & (3,4) & (3,5) & (3,6)\
cline{2-6}
 & (4,2) & (4,3) & (4,4) & (4,5) & (4,6)\
cline{2-6}
 & (5,2) & (5,3) & (5,4) & (5,5) & (5,6)\
hline
end{tabular}}}
end{table}

end{document}

其实现效果如下所示:

3 灵活实现表格

因为有些需求,需要在论文模板中灵活实现一个表格,但能实现就行。~~~ / / / ( ^ v ^ ) ~~~。

代码语言:javascript复制
documentclass{article}
usepackage{multirow}
usepackage{diagbox}
usepackage{graphicx}
usepackage{booktabs}

begin{table*}[t]
    setlength{abovecaptionskip}{0.cm}
    setlength{belowcaptionskip}{-0.cm}
    caption{Average search time (s)}
    label{TAB1}
    centering
    scalebox{0.85}{
        begin{tabular}{c|c|c|c|c|c|c|c|c|c|c|c|c|c}
            cline{2-13}
            multirow{2}*{}&multicolumn{2}{c|}{multirow{2}*{# of people}}& multicolumn{10}{c|}{Date}& \
            cline{4-13}
            &multicolumn{2}{c|}{}&2016/2/8&2016/2/16&2016/3/10&2016/3/18&2016/4/6&2016/4/22&2016/5/11&2016/5/15&2016/6/2&2016/6/25\
            cline{2-13}
            &multirow{2}*{5000}&Random&0&0&0&0&0&0&0&0&0&0\
            cline{3-13}
            &multicolumn{1}{c|}{}&Our&0&0&0&0&0&0&0&0&0&0\
            cline{2-13}
            &multirow{2}*{6000}&Random&0&0&0&0&0&0&0&0&0&0\
            cline{3-13}
            &multicolumn{1}{c|}{}&Our&0&0&0&0&0&0&0&0&0&0\
            cline{2-13}
            &multirow{2}*{7000}&Random&0&0&0&0&0&0&0&0&0&0\
            cline{3-13}
            &multicolumn{1}{c|}{}&Our&0&0&0&0&0&0&0&0&0&0\
            cline{2-13}
            specialrule{0em}{1pt}{2pt}
            hline
            specialrule{0em}{1pt}{1pt}
            cline{2-13}
            &multirow{2}*{8000}&Random&0&0&0&0&0&0&0&0&0&0\
            cline{3-13}
            &multicolumn{1}{c|}{}&Our&0&0&0&0&0&0&0&0&0&0\
            cline{2-13}
            &multirow{2}*{9000}&Random&0&0&0&0&0&0&0&0&0&0\
            cline{3-13}
            &multicolumn{1}{c|}{}&Our&0&0&0&0&0&0&0&0&0&0\
            cline{2-13}
            &multirow{2}*{10000}&Random&0&0&0&0&0&0&0&0&0&0\
            cline{3-13}
            &multicolumn{1}{c|}{}&Our&0&0&0&0&0&0&0&0&0&0\
            cline{2-13}
        end{tabular}
    }
end{table*}

其实现效果如下:             

0 人点赞