首页 > 其他分享 >使用Latex制作表格方法总结

使用Latex制作表格方法总结

时间:2023-05-12 14:56:58浏览次数:84  
标签:总结 Latex begin end 表格 tabular hline 格式

1. 前言

最近又开始写论文,记录一下使用Latex制作表格的方法

2.不同类型表格制作

2.1最基本的无线表格: tabbing

利用制表位进行表格的排版, 但是不会出现表线, 另外这个环境对于制表位比较灵活, 需要考虑很多因素(制表位的相对位置)才能制作出一个精美的表格. 一般来说不是很常用.

基本语法
\begin{tabbing} 
格式\hspace{3em} \= 作者 \\ 
Plain \TeX \> 高德纳 \\ 
\LaTeX \> Leslie Lamport 
\end{tabbing}

2.2 一般表格: tabular/array

其中tabular用于文本环境中, array用于数学环境中, 不过tabular也可以用于数学环境(但是如果表格中含有中文, 不加上\text{}的话不会完全显示).

基本语法
\begin{tabular}[<垂直对齐>]{<列格式说明>} 
<表项>&<表项>&...&<表项>\\
......
\end{tabular}

下面是一个具体的例子

\begin{tabular}{|c|r@{.}l|}
    \hline
    收入 & 12345&6 \\ 
    \hline 
    支出 & 765&43 \\ 
    \hline 
    节余 & 11580&17 \\ 
    \hline
\end{tabular}

在上面这个例子中, 我们采用tabular环境进行表格的设计, 这里要注意的是列格式的选取, 除了最为常用的c,l,r分别代表居中对齐, 左对齐和右对齐外, 还有|用来加上表列分割线, 以及@{}用来自定义格式, 本例中使用了小数点(.)来进行分割, 用来将表项内容按小数点对齐(同时消除了表项之间的默认间距), 其他列格式如下:

*{<计数>}{<列格式说明>}: 重复多个表列的列格式说明;
p{<列宽>}: 用于指定列宽, 可以换行.
对于tabular/array环境, 其列格式说明还可以进行自定义, 这一功能极大地方便了表格的制作.

例如, 如果我想对某一列输入公式, 一般的做法是直接在每一个cell中加上$$,但是这是很重复机械的工作, 下面我们来看如何自定义列格式, 使得公式输入变得简单1.

% 下面这条命令加入导言区
\newcolumntype{C}{>{$}c<{$}}
% --------------------------
\begin{table}[H]
\centering
\begin{tabular}{|c|C|C|} % 这里还可以用上面提到的*{<计数>}{<列格式说明>}进行简化: {|c|*{2}{C|}}
    \hline
    新的横坐标&\cos \theta & -\sin \theta \\
    \hline
    新的纵坐标&\sin \theta & \cos \theta \\
    \hline
\end{tabular}
\caption{坐标旋转变换}
\end{table}

同样地, 对于刘海洋老师书中的这个例子, 也可以用列格式定制来简化表格的实现:

 \[
\begin{array}{|c|*{3}{r@{.}l|}} % 相当于 |c|r@{.}l|r@{.}l|r@{.}l| 
   \hline
   \text{收入} & 12345&6 & 5000&0 & 1020&55 \\ 
   \hline
   \text{支出} & 765&43 & 5120&5 & 98760&0 \\ 
   \hline 
   \text{节余} & 11580&17 & -120&5 & -97739&45 \\ 
   \hline 
\end{array}
\

采用下面的简化命令:

% 下面两行放入导言区
\newcolumntype{L}{>{$}l<{$}}
\newcolumntype{R}{>{$}r<{$}}
% --------------------------
\begin{table}[H]
\centering
\begin{tabular}{|c|*{3}{R@{.}L|}} 
   \hline
   收入 & 12345&6 & 5000&0 & 1020&55 \\ 
   \hline
   支出 & 765&43 & 5120&5 & 98760&0 \\ 
   \hline 
   节余 & 11580&17 & -120&5 & -97739&45 \\ 
   \hline 
\end{tabular}
\end{table}

可以达到一样的效果. 更多的列格式定制方法, 还请参考1.

基本调整命令
修改行高:\renewcommand\arraystretch{2}这条命令将默认的行高(1)调整为2, 使表项看起来更为宽松;
使用makecell宏包定制行的高度, 使用\Gape[<高度>]{内容}进行调整;
使用\multicolumn进行表格的合并, 使用\vline进行竖直拆分;
...

2.3 科研论文: 三线表(toprule)

在科技文档中,数据表经常被表现为一种只有三种横线的形式,即三线表。为了美观,三线表顶部和底部的两条横线比较粗,而中间分隔表头与数据的线则较细2.
需要用到booktabs宏包, 进行三根不同粗细表线(\toprule, \midrule, \bottomrule)的绘制. 具体还有很多微调定制的方法, 不过一般来说用不到的.

基本语法

% \usepackage{booktabs}
\begin{tabular}{ccccc}
\toprule
序号 & 性别 & 年龄 & 身高/cm& 体重/kg\\
\midrule
1 & F & 14 & 156 & 42 \\
2 & F & 16 & 158 & 45 \\
3 & M & 14 & 162 & 48 \\
4 & M & 15 & 163 & 50 \\
\bottomrule
\end{tabular}

这 里 需 要 注 意 一 点 , 在 三 线 表 中 最 后 一 行 一 定 要 加 上 \ , 否 则 会 出 现 报 错 . \color{red}这里需要注意一点, 在三线表中最后一行一定要加上\verb=\=,否则会出现报错.
这里需要注意一点,在三线表中最后一行一定要加上\,否则会出现报错.

2.4 广泛应用: 定宽表(tabularx)

简单介绍
这个表格除了排版行看起来比较长的表格之外, 还可以实现很多意想不到的功能, 例如制作复杂的论文封面等. 我本科时候就用这个环境做了一个跟Word模板一模一样的

基本语法

\begin{tabularx}{<宽度>}[<垂直对齐>]{<列格式说明>} 
<表项>&<表项>&...&<表项>\\
......
\end{tabularx}

这里的宽度参数主要采用\textwidth来设置, 就是一页的宽度, 对于很多宽度较大的表格, 采用定宽表格搭配三线表能有很好的显示效果. 参数中的列格式说明可以采用默认的X列格式说明符, 即弹性宽度,

X列格式说明符表示自动延伸的表列, 可以与其他列说明符一起使用. X 列格式很好地处理了间距问题,表项内容会按一个定宽的 \parbox 盒子排版,可以自动换行,内部默认是左对齐的2.
下面是一个调用示例

\begin{tabularx}{\textwidth}{|c|X|X|X|X|X|}
    \hline
    数字 &1&2&3&4&5\\
    \hline 
    字母 &A&B&C&D&E\\
    \hline 
    天干 & 甲 & 乙 & 丙 & 丁 & 戊 \\
    \hline
\end{tabularx}

如果想要将内容设置为居中对齐, 那么就需要自己定义一个列格式, 由于tabularx环境包含array环境(array环境的二次开发), 这里我们就可以采用array中自定义列格式的方法, 即

\newcolumntype{C}{>{\centering\arraybackslash}X}
1
一个例子2:

\begin{table}[H]
\centering
\begin{tabularx}{.7\textwidth}{|c|C|C|C|C|C|}
    \hline
    数字 &1&2&3&4&5\\
    \hline 
    字母 &A&B&C&D&E\\
    \hline 
    天干 & 甲 & 乙 & 丙 & 丁 & 戊 \\
    \hline
\end{tabularx}
\end{table}

2.5跨页长表格(longtable)

\endhead
<第一页表头>
    \endfirsthead
<表尾>
\endfoot
<最后一页表尾>
\endlastfoot <表项>&<表项>&...&<表项>\\ ......
\end{longtable}

3. 网页制作表格工具

直接使用网页在线制作表格,和excel的操作一样
http://tablesgenerator.com
image
image

标签:总结,Latex,begin,end,表格,tabular,hline,格式
From: https://www.cnblogs.com/Noiimplant/p/17394105.html

相关文章

  • vika维格表更名为vika维格云:再小的个体都有自己的多维表格
    怀着激动的心情,在此向各位关心我们的用户与伙伴宣布: vika维格表已正式更名为「vika维格云」。 顾名思义,「多维表格」进化成了「多维表格云」。这个新名字代表着我们的产品已经发展到了一个全新的阶段。我们将以此为契机,为用户带来更好、更多面的体验与服务,更好实现我们的......
  • python导出postgresql中的一个表到本地csv表格
     代码如下修改xxx即可:conn=psycopg2.connect(host=DB_SERVICES,user=DB_USERNAME,password=DB_PWD,database=DB_NAME)cur=conn.cursor(cursor_factory=psycopg2.extras.DictCursor)sql=f"select*fromxxx.xxx"cur.execute(sql)res=cur.fetchall()pand......
  • Latex-chemfig
    完成一个较复杂的图形的绘制,值得记录一下,如下图\chemfig{H_3C-[:30]?[cen]\chemmove{\draw(0,0)circle(10pt);}(-[:-30]OH)(-[:90]COOH)(-#(10pt,)[:30,1]OH)(-#(10pt,)[:150,1]OH)(-#(10pt,)[:-90,1]COOH)}......
  • 存下吧!Spring高频面试题总结
    Spring是什么?Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。Spring的优点通过控制反转和依赖注入实现松耦合。支持面向切面的编程,并且把应用业务逻辑和系统服务分开。通过切面和模板减少样板式代码。声明式事务的支持。可以从单调繁冗的事务管理代码中解脱......
  • Debug ( 自行跟踪集合全总结 )
    Debug自行回顾跟随源码所得理解能力有限,有问题还请求指正ListArrayList维护的是一个Object类型的数组elementData使用的几乎都是ArrayList内部类无参构造器起初构造器给一个空Object数组:this.elementData=DEFAULTCAPACITY_EMPTY_ELEMENTDATA;第一次添加......
  • 5.11每日总结
    今天学习了nextInt、nextFloat、nextDoublenext():用于读取String字符串数组,以空格划分(只读取输入直到空格),在读取后将光标指向本行nextLine():用于读取String字符串数组,读取包括单词之间的空格和除回车以外的所有符号,在读取后将光标指向下一行publicstaticvoidmain(String[]arg......
  • 5.11每日总结
    hasNextXxx():判断下一个输入是否是某种类型的元素如:hasNextInt(),hasNextFloat()、hasNextDouble()等hasNest():判断下一个输入是否是字符串nextXxx():用于获取下一个输入项如:nextInt、nextFloat、nextDouble等next():用于读取String字符串数组,以空格划分(只读取输入直到空格),在读取后将光......
  • 2023.5.11每日总结
    packageget;importorg.apache.commons.fileupload.FileItem;importorg.apache.commons.fileupload.FileUploadException;importorg.apache.commons.fileupload.disk.DiskFileItemFactory;importorg.apache.commons.fileupload.servlet.ServletFileUpload;importj......
  • 每日总结-23.5.11
    <%@pageimport="wangzhan.Thesql"%><%@pageimport="wangzhan.Pd_P_assignment"%><%@pageimport="wangzhan.Pd_S_assignment"%><%@pageimport="wangzhan.Pd_lesson"%><%@pagelanguage=&......
  • Java关键字总结
    finalfinal在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。final变量对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象,但是可以改变实例的属性。凡......