目录
一、Table和Tabular的区别
二、一个简单的Table环境示例:
三、Latex的“自动换行”功能
四、Latex多行和多列
五、使用tablesgenerator快速将excel表格转换成tex代码
六、设置表格的宽度与页面宽度一致
说明:一至四内容来自Latex中使用Table(表格)和 常用参数解释_\begin{tabular}_iioSnail的博客-程序员秘密 - 程序员秘密
五至六来源于原创。
代码:
\documentclass{article}
\begin{document}
\begin{table}[h!]
\centering
\begin{tabular}{||c c c c||}
\hline
Col1 & Col2 & Col2 & Col3 \\ [0.5ex]
\hline\hline
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,解释即可。
代码结果:
代码:
\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表示右对齐。|
表示两列之间的分隔符,当不加|
时,Name
和Salary
这两列之间就不会有竖线。&
:该符号表示一行中两个单元格之间的分隔符。比如,这个有两列,则每行有一个&
符。如果有n列,则每行应该有 n-1 个 &
符\\
:换行符,表示该行结束,换下一行hline
:horizontal line
,表示在该行下面应该增加一条水平线。比如上图中,第一行下面有横线,后面都没有Latex并不会自动换行,当文本太大时,它只会一直往后写,甚至会超出页面
两个表格的代码如下:
在输出的两个表中,上面的是没有格式化的,下面的是格式化之后的。
p{width}
:可以使用 p{width}
来指定列宽。例如,第一个表示没有指定列宽(c|lll
,即第1列居中,第2-4列左对齐)。第二个表指定了列宽(c|lp{2in}p{1in}
,即第1列居中,第2列左对齐,第3列2英尺,第4列1英尺)。其中宽度可以使用的单位有cm
、pt
、in
、em
等这是一个LaTeX代码示例,用于创建两个表格。第一个表格使用了"lll"参数,表示有三列,每列都是左对齐的。第一个表格的第一行是表头,接着是四行数据。第一个表格中的数据包括姓名、薪水、爱好和子女信息。
第二个表格使用了"lp{2in}p{1in}"参数,表示有四列,第一列是左对齐的,第二列是段落对齐的,宽度为2英寸,第三列是段落对齐的,宽度为1英寸。第二个表格的数据与第一个表格相同。
这段代码可以在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文档。表格将以指定的格式和内容出现在生成的文档中。
表格的多行和多列,即合并单元格这种需求,我们可以在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)