Latex中表格Table环境和Tabular环境

目录

一、Table和Tabular的区别

 二、一个简单的Table环境示例:

三、Latex的“自动换行”功能

四、Latex多行和多列

五、使用tablesgenerator快速将excel表格转换成tex代码

六、设置表格的宽度与页面宽度一致


说明:一至四内容来自Latex中使用Table(表格)和 常用参数解释_begin{tabular}_iioSnail的博客-程序员秘密 - 程序员秘密

五至六来源于原创。

一、Table和Tabular的区别

代码:

documentclass{article}

begin{document}


begin{table}[h!]
centering
begin{tabular}{||c c c c||} 
 hline
 Col1 & Col2 & Col2 & Col3 \ [0.5ex] 
 hlinehline
 1 & 6 & 87837 & 787 \ 
 2 & 7 & 78 & 5415 \
 3 & 545 & 778 & 7507 \
 4 & 545 & 18744 & 7560 \
 5 & 88 & 788 & 6344 \ [1ex] 
 hline
end{tabular}
caption{Table to test captions and labels.}
label{table:1}
end{table}



end{document}

注:如果看不懂代码可以借助Chatgpt,让它给解释每行的代码什么意思。具体操作,选中全部代码,点击浏览器chatgpt插件,如Sider,解释即可。

代码结果:

 二、一个简单的Table环境示例:

代码:

documentclass{article}
begin{document}
begin{tabular}{l|c}
Name&Salary\hline
Mark&$$250,000$\
Carly&$$80,000$\
Carter&$$25,000$\
Sam&$$50,000$
end{tabular}
end{document}

代码结果:

代码解释:

  • {l|c} :改参数表示列数和其对应的排版。l表示左对齐c表示居中对齐r表示右对齐。| 表示两列之间的分隔符,当不加|时,NameSalary 这两列之间就不会有竖线。
  • & :该符号表示一行中两个单元格之间的分隔符。比如,这个有两列,则每行有一个&符。如果有n列,则每行应该有 n-1 个 & 符
  • \:换行符,表示该行结束,换下一行
  • hlinehorizontal line,表示在该行下面应该增加一条水平线。比如上图中,第一行下面有横线,后面都没有

三、Latex的“自动换行”功能

Latex并不会自动换行,当文本太大时,它只会一直往后写,甚至会超出页面

两个表格的代码如下:

在输出的两个表中,上面的是没有格式化的,下面的是格式化之后的。

  • p{width} :可以使用 p{width}来指定列宽。例如,第一个表示没有指定列宽(c|lll,即第1列居中,第2-4列左对齐)。第二个表指定了列宽(c|lp{2in}p{1in},即第1列居中,第2列左对齐,第3列2英尺,第4列1英尺)。其中宽度可以使用的单位有cmptinem

这是一个LaTeX代码示例,用于创建两个表格。第一个表格使用了"lll"参数,表示有三列,每列都是左对齐的。第一个表格的第一行是表头,接着是四行数据。第一个表格中的数据包括姓名、薪水、爱好和子女信息。

第二个表格使用了"lp{2in}p{1in}"参数,表示有四列,第一列是左对齐的,第二列是段落对齐的,宽度为2英寸,第三列是段落对齐的,宽度为1英寸。第二个表格的数据与第一个表格相同。

这段代码可以在LaTeX环境中使用,用于生成两个带有不同格式的表格。

四、Latex多行和多列

documentclass{article}
usepackage{multirow}
begin{document}
begin{table}
begin{tabular}{c|lp{1.4in}lp{1.1in}}
Name&Salary&Likes&Children&Desires\hline
multirow{3}{*}{Mark}&multirow{3}{*}{$$250,000$}&windsurfing&Amy&multirow{3}{*}{own
	a cheese shop}\
~&~&jumping on&John&~\
~&~&a trampoline&Ray&~\hline
multirow{3}{*}{Carly}&$multirow{3}{*}{$80,000}$&heavy metal music&multirow{3}{*}{Tyra}
&tattoo a president\
~&~&Paris&~&multirow{2}{*}{of the united states}\
~&~&dancing in the rain&~&~\hline
multirow{3}{*}{Carter}&$multirow{3}{*}{$25,000}$&candy&multirow{3}{*}{None}&play the
	Ukelele\
~&~&fast cars that he cannot afford&~&multirow{2}{*}{ travel the world}\
~&~&Ramen&~&~\hline
multirow{3}{*}{Sam}&$multirow{3}{*}{$50,000}$&paintingit&Kyle&multirow{3}{*}{be in the
	circus}\
~&~&motorcycles&multirow{2}{*}{Sam Jr.}&~\
~&~&Reddit&~&~
end{tabular}
end{table}
end{document}

代码解释:

这是一个LaTeX代码段,用于创建一个表格。代码中使用了`multirow`宏包来合并单元格。

该表格具有5列,分别是Name(姓名),Salary(薪水),Likes(爱好),Children(子女),和Desires(愿望)。每一行表示一个人,每个人的信息分别填写在对应的列中。

`multirow`命令用于合并行中的单元格。在这个表格中,有多个行都使用了`multirow`命令。例如,第一行的"Mark"、"$$250,000$"和"own a cheese shop"都使用了`multirow`命令来合并三行。

`hline`命令用于画水平线,将表格分隔为不同的行。在这个表格中,有四个水平线。

该LaTeX代码可以通过编译器生成一个包含表格的PDF文档。表格将以指定的格式和内容出现在生成的文档中。

五、使用tablesgenerator快速将excel表格转换成tex代码

表格的多行和多列,即合并单元格这种需求,我们可以在excel中设计好我们想要的表格样式,将表格复制粘贴到新建标签页 (tablesgenerator.com) 中,然后点击生成tex代码,即可复制粘贴到我们的tex文件中。

或者在上述网站中,上传csv文件,也可以完成上述同样的结果。注意当表格非常长的时候,涉及到复杂的合并单元格时,上传csv文件效果更好。

六、设置表格的宽度与页面宽度一致

接下来,面临的问题是如何对表格的大小进行设置。

具体操作如下:

代码:

documentclass{article}
begin{document}
begin{table}
begin{tabular}{c|lll}
Name&Salary&Likes&Children\hline
Mark&$$250,000$&windsurfing and jumping on trampolines&Amy, John, and Ray\
Carly&$$80,000$&heavy metal music, Paris, and dancing in the rain&Tyra\
Carter&$$25,000$&candy, fast cars that he cannot afford and Ramen&None\
Sam&$$50,000$&painting, motorcycles, and Reddit&Kyle and Sam Jr.
end{tabular}
end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
begin{table}
begin{tabular*}{hsize}{@{}@{extracolsep{fill}}c|lll@{}}
Name&Salary&Likes&Children\hline
Mark&$$250,000$&windsurfing and jumping on trampolines&Amy, John, and Ray\
Carly&$$80,000$&heavy metal music, Paris, and dancing in the rain&Tyra\
Carter&$$25,000$&candy, fast cars that he cannot afford and Ramen&None\
Sam&$$50,000$&painting, motorcycles, and Reddit&Kyle and Sam Jr.
end{tabular*}
end{table}
end{document}

运行结果:

 注:这个例子可能找的不是很好,本质是想让第二章表格和整个页面的宽度是一样的,页面的宽度指的是去掉margin的区域,如果想达到这个目标,只需要在tabular环境后面加上上面那一连串的代码:begin{tabular*}{hsize}{@{}@{extracolsep{fill}}c|lll@{}} 只需要将c|lll换掉成自己表格需要的列划分和排版即可,比如我有个具有7列的表格,我想让它左对齐,我只需要将c|lll换成7个l,即lllllll即可,整体修改是这样的:begin{tabular*}{hsize}{@{}@{extracolsep{fill}}lllllll@{}}。

这段代码是用来创建两个表格的。第一个表格使用了tabular环境,其中包含了四列,分别是Name、Salary、Likes和Children。表格中使用了水平线来分隔表头和表格内容,每一行的内容用&符号分隔,每一行的结束用符号表示。表格的内容包括了四个人的信息,包括姓名、薪水、爱好和子女。

第二个表格使用了tabular*环境,与第一个表格相比,它的宽度是整个页面的宽度,通过hsize命令来设置。其他的设置和第一个表格相同。

 

参考:

Latex中使用Table(表格)和 常用参数解释_begin{tabular}_iioSnail的博客-程序员秘密 - 程序员秘密 (cxymm.net)