LaTeX之双栏模板表格布局(单双栏满宽+不满宽)

引言

        跟Microsoft word一样,LaTex也是一套排版系统。二者的区别是前者排版属于富文本编辑,后者排版更像是写程序。LaTeX的使用者只要调用模板即可,完全不用去处理字体样大小、位置、目录生成和图片公式序号等诸多细节。这样,我们能够更专注地编辑内容。

        表格,又称为表,既是一种可视化交流模式,又是一种组织整理数据的手段。人们在通讯交流、科学研究以及数据分析活动当中广泛采用着形形色色的表格。各种表格常常会出现在印刷介质、手写记录、计算机软件、建筑装饰、交通标志等许许多多地方。随着上下文的不同,用来确切描述表格的惯例和术语也会有所变化。此外,在种类、结构、灵活性、标注法、表达方法以及使用方面,不同的表格之间也炯然各异。在各种书籍和技术文章当中,表格通常放在带有编号和标题的浮动区域内,以此区别于文章的正文部分。

        好了,废话不多说(主要是CSDN发文助手太不智能了,老是检测我文章质量不行)。直接上干货。论文中的表格排版是很重要的!每个科研人都希望弄出一个美观又使用的表格,这应该没有人反驳吧?

        博客中第一、二、三、四、五章节适用于Elsevier LaTeX模板(“cas-dc-template.tex”这个文件)。

        博客的第六章节适用于Elsevier和其他LaTeX论文模板,普适性更大。

一、使用两栏的LaTeX模板,表格占整页宽度

        实现整页宽度的思路是\begin{tabular*}{\linewidth}{@{}LLLL@{}}中的“\linewidth”,另外\begin{table*}中的“*”表示这个表格在两栏模板中使用一栏。

        LaTeX代码

\begin{table*}
\caption{This is a table with full width in single column.}
\label{tab_fwsc}
\begin{tabular*}{\linewidth}{@{}LLLL@{}}
\toprule
Col 1 & Col 2 & Col 3 & Col4\\
\midrule
12345 & 12345 & 123 & 12345 \\
12345 & 12345 & 123 & 12345 \\
12345 & 12345 & 123 & 12345 \\
12345 & 12345 & 123 & 12345 \\
12345 & 12345 & 123 & 12345 \\
\bottomrule
\end{tabular*}
\end{table*}

        生成的PDF效果(可以看到是整页宽度)

二、使用两栏的LaTeX模板,表格宽度自定义

        实现的思路:还是\begin{tabular*}{\linewidth}{@{}LLLL@{}}中的“\linewidth”,在“\linewidth”之前添加一个(0,1)的小数值可以自定义表格的宽度,例如,我在下面的代码中取了0.8。当然这个数值主要取决于你的表格内容,具体取多少、表格美观就可以。

        LaTeX代码

\begin{table*}
\caption{This is a table with diy width in single column.}
\label{tab_dwsc}
\begin{tabular*}{0.8\linewidth}{@{}LLLL@{}}
\toprule
Col 1 & Col 2 & Col 3 & Col4\\
\midrule
12345 & 12345 & 123 & 12345 \\
12345 & 12345 & 123 & 12345 \\
12345 & 12345 & 123 & 12345 \\
12345 & 12345 & 123 & 12345 \\
12345 & 12345 & 123 & 12345 \\
\bottomrule
\end{tabular*}
\end{table*}

        生成的PDF效果(可以看到比整页宽度要小20%)

三、使用两栏的LaTeX模板,表格宽度自适应

        实现的思路:其实上面的自定义宽度基本够用了。但是,如果不想调“\linewidth”前面的小数值,可以试试自适应的宽度。这会儿主要用\begin{tabular*}{\tblwidth}{@{}LLLL@{}}中的“\tblwidth”来实现这个需求。

        LaTeX代码

\begin{table*}
\caption{This is a table with adaptive width in single column.}
\label{tab_awsc}
\begin{tabular*}{\tblwidth}{@{}LLLL@{}}
\toprule
Col 1 & Col 2 & Col 3 & Col4\\
\midrule
12345 & 12345 & 123 & 12345 \\
12345 & 12345 & 123 & 12345 \\
12345 & 12345 & 123 & 12345 \\
12345 & 12345 & 123 & 12345 \\
12345 & 12345 & 123 & 12345 \\
\bottomrule
\end{tabular*}
\end{table*}

        生成的PDF效果(自适应的宽度,好像不是很明显,跟上面自定义的差不多)

四、使用两栏的模板,表格占满一栏宽度

        实现的思路:\begin{table}不带星号,然后在\begin{tabular*}{\linewidth}{@{}LLLL@{}}中使用“\linewidth”这个东西。

        LaTeX代码

\begin{table}
\caption{This is a table with full width in double column.}
\label{tab_fwdc}
\begin{tabular*}{\linewidth}{@{}LLLL@{}}
\toprule
Col 1 & Col 2 & Col 3 & Col4\\
\midrule
12345 & 12345 & 123 & 12345 \\
12345 & 12345 & 123 & 12345 \\
12345 & 12345 & 123 & 12345 \\
12345 & 12345 & 123 & 12345 \\
12345 & 12345 & 123 & 12345 \\
\bottomrule
\end{tabular*}
\end{table}

        生成的PDF效果(充满了一栏布局的宽度)

五、使用两栏的模板,表格占一栏宽度+自适应

        实现的思路:很简单,\begin{table}不带星号+\begin{tabular*}{\tblwidth}{@{}LLLL@{}}中的“\tblwidth”。

        LaTeX代码

\begin{table}
\caption{This is a table with adaptive width in double column.}
\label{tab_awdc}
\begin{tabular*}{\tblwidth}{@{}LLLL@{}}
\toprule
Col 1 & Col 2 & Col 3 & Col4\\
\midrule
12345 & 12345 & 123 & 12345 \\
12345 & 12345 & 123 & 12345 \\
12345 & 12345 & 123 & 12345 \\
12345 & 12345 & 123 & 12345 \\
12345 & 12345 & 123 & 12345 \\
\bottomrule
\end{tabular*}
\end{table}

        生成的PDF效果(跟占满宽度没啥区别...我也不知道为什么)

六、(更新) 针对其他LaTeX模板表格满宽和自定义宽度的设置

        很遗憾上述的方法仅适用于Elsevier的LaTeX模板,而对于其他模板,会出现下面的问题:右边空出空白,影响整个表格的美观性。

        上面对应的源代码是

\documentclass[twocolumn]{article}
\usepackage{multirow}

\title{A demo to DIY set the table width in double column template}
\author{See Chen}
\date{March 2023}

\begin{document}

\maketitle

\section{Introduction}
This is an introduction with a specific table \ref{tab_demo}.

\begin{table*}
\caption{A Table Demo}
\label{tab_demo}
\begin{tabular*}{0.99\linewidth}{@{}ccccccccc@{}}
\hline
\multirow{2}{*}{Animal} & \multicolumn{2}{c}{Sample 1} & \multicolumn{2}{c}{Sample 2} & \multicolumn{2}{c}{Sample 3} & \multicolumn{2}{c}{Sample 4} \\
& Weight & Color & Weight & Color & Weight & Color & Weight & Color \\
\hline
Dog  & 20.1 & White  & 18.0 & Gray  & 30.5 & Black & 25.2 & White \\
Cat  & 10.2 & Yellow & 11.2 & Black & 11.5 & White & 12.5 & White \\
Fox  & 15.5 & Gold   & 15.6 & Gold  & 16.5 & Gold  & 17.0 & Gold \\
Duck & 2.4  & White  & 3.0  & White & 4.0  & White & 3.8  & White \\
\hline
\end{tabular*}
\end{table*}

\end{document}

        解决办法:使用“\tabcolsep=len”命令,其中len是表格宽度大小,可以设置为具体长度,也可以通过\linewidth设置。通过这个方法,实现的表格宽度设置效果如下:可以看出表格内容已经居中显示了。

        相应的代码如下:

\documentclass[twocolumn]{article}
\usepackage{multirow}

\title{A demo to DIY set the table width in double column template}
\author{See Chen}
\date{March 2023}

\begin{document}

\maketitle

\section{Introduction}
This is an introduction with a specific table \ref{tab_demo}.

\begin{table*}
\caption{A Table Demo}
\label{tab_demo}
\centering
%\tabcolsep=0.35cm
\tabcolsep=0.016\linewidth
\begin{tabular}{ccccccccc}
\hline
\multirow{2}{*}{Animal} & \multicolumn{2}{c}{Sample 1} & \multicolumn{2}{c}{Sample 2} & \multicolumn{2}{c}{Sample 3} & \multicolumn{2}{c}{Sample 4} \\
& Weight & Color & Weight & Color & Weight & Color & Weight & Color \\
\hline
Dog  & 20.1 & White  & 18.0 & Gray  & 30.5 & Black & 25.2 & White \\
Cat  & 10.2 & Yellow & 11.2 & Black & 11.5 & White & 12.5 & White \\
Fox  & 15.5 & Gold   & 15.6 & Gold  & 16.5 & Gold  & 17.0 & Gold \\
Duck & 2.4  & White  & 3.0  & White & 4.0  & White & 3.8  & White \\
\hline
\end{tabular}
\end{table*}

\end{document}

        如果表格宽度太大怎么办?例如(已经超出双栏宽度,快到页面边界了)

        解决办法:使用\resizebox{1.0\linewidth}{!}命令(需要配合\usepackage{graphicx}同时使用),该命令可以使表格宽度缩小至LaTeX论文单行宽度,大的文字会变小,小的文字会变大。一般用在大的文字缩小这种情况,后面的情况不需要使用、只需要扩大表格宽度变得好看就好。下面是使用了该命令的效果:

        上面的代码如下:

\documentclass[twocolumn]{article}
\usepackage{multirow}
\usepackage{graphicx}

\title{A demo to DIY set the table width in double column template}
\author{See Chen}
\date{March 2023}

\begin{document}

\maketitle

\section{Introduction}
This is an introduction with a specific table \ref{tab_demo}.

\begin{table*}
\caption{A Table Demo}
\label{tab_demo}
\resizebox{1.0\linewidth}{!}{
\begin{tabular}{ccccccccccccc}
\hline
Animal & Weight & Color & Weight & Color & Weight & Color & Weight & Color & Weight & Color & Weight & Color\\
\hline
Dog  & 20.1 & White  & 18.0 & Gray  & 30.5 & Black & 25.2 & White & 25.2 & White & 25.2 & White\\
Cat  & 10.2 & Yellow & 11.2 & Black & 11.5 & White & 12.5 & White & 12.5 & White & 12.5 & White\\
Fox  & 15.5 & Gold   & 15.6 & Gold  & 16.5 & Gold  & 17.0 & Gold  & 16.5 & Gold  & 17.0 & Gold\\
Duck & 2.4  & White  & 3.0  & White & 4.0  & White & 3.8  & White & 4.0  & White & 3.8  & White\\
\hline
\end{tabular}
}
\end{table*}

        其实,resizebox也可以和tabcolsep同时配合使用,如果你想的话。前者使表格宽度自适应到LaTeX单栏一行宽度,而后者使表格列宽被设为等同大小。配合起来的效果在一定程度下是叠加的。

七、结束语

        上面的记录都是非常简单的思路,如果有更加简单有效(最好不要导包)的方式,敬请各位大神留言。我感觉最强大的功能是tabcolsep命令和resizebox命令。另外如果想调整表格行间距的话,可以看看LaTeX表格行高、列宽设置这篇博客。

  • 111
    点赞
  • 426
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 42
    评论
### 回答1: Overleaf 是一个在线的 LaTeX 编辑器,方便用户协作编辑和共享 LaTeX 文档。使用 Overleaf 进行中文 LaTeX 双栏排版,需要按照以下步骤进行操作: 1. 打开 Overleaf 的网站,并登录账号。 2. 创建一个新的项目,选择 LaTeX 文档类型。 3. 单击 "New Project",然后选择 "Blank Project"。 4. 在左侧的文件列表中,点击 "main.tex" 文档以打开它。 5. 在文档的前面添加以下代码,用于设置双栏排版: ```latex \documentclass[twocolumn]{article} \usepackage{xeCJK} % 导入中文支持包 \setCJKmainfont{宋体} % 设置中文字体为宋体 \begin{document} \end{document} ``` 6. 在 `\begin{document}` 和 `\end{document}` 之间输入你的文本内容和 LaTeX 命令。 7. 在 Overleaf 的左上角,点击 "编译" 按钮来生成 PDF 文件。 以上代码使用了 `twocolumn` 文档类选项,将文档分为两栏。使用 `xeCJK` 宏包导入中文支持,通过 `\setCJKmainfont{宋体}` 设置中文字体为宋体。你可以根据需要自行修改字体和其他样式设置。 在 Overleaf 的界面上,你可以直接在编辑器中进行编写和预览。如果需要多人协同编辑,只需邀请他人加入你的项目即可。 总而言之,Overleaf 是一个功能强大且易于使用的在线 LaTeX 编辑器,通过设置双栏和导入中文支持,你可以使用它来进行中文 LaTeX 文档的排版。 ### 回答2: 中文的LaTeX双栏格式在Overleaf编辑器中非常容易实现,下面我将介绍一下具体的步骤。 首先,我们需要创建一个新的LaTeX项目。在Overleaf网站上,点击右上角的"New Project"按钮,并选择"Blank Project"。这将创建一个空白的LaTeX项目。 接下来,在新创建的项目中,找到并打开`main.tex`文件。在该文件的头部,添加以下代码来定义双栏格式: ```latex \documentclass[twocolumn]{article} ``` 然后,我们需要正确设置中文环境。添加以下代码来调用中文相关的宏包: ```latex \usepackage{ctex} ``` 此外,你可能还需要设置字体。你可以根据自己的需求选择字体库。例如,添加下面的代码来设置华文宋体作为正文字体,黑体作为加粗字体: ```latex \setmainfont{STSong} \setCJKboldfont{SimHei} ``` 最后,你可以继续写下你的论文或报告内容。你可以使用常见的LaTeX命令和环境,如`section`、`figure`和`table`等来排版你的文档。 当你完成了你的文档之后,点击"Compile"按钮来生成PDF文件。在左侧的文件浏览器中,你可以双击`main.pdf`文件来预览你的文档。 总结起来,要在Overleaf中使用中文LaTeX双栏格式,你需要进行以下步骤:创建一个新的LaTeX项目,设置文档为双栏模式,调用中文宏包并设置字体,然后继续写你的文档内容。最后,编译文档并预览所得的PDF文件。 ### 回答3: Overleaf是一个基于云端的LaTeX编辑器,可以通过互联网进行创建、编辑和编译LaTeX文档。它提供了许多方便的功能和模板,可以轻松实现双栏排版。 使用Overleaf进行双栏排版非常简单。首先,我们需要在导言区使用`\documentclass`命令指定文档类为`twocolumn`,这样就实现了双栏设置。例如: ```latex \documentclass[twocolumn]{article} ``` 然后,在`\begin{document}`和`\end{document}`之间输入你的内容。Overleaf会自动根据双栏设置将你的内容分成两栏。如果你的内容过长,Overleaf会自动将其放置在下一栏或下一页。 另外,Overleaf还支持在文档中创建多个双栏节,以便于更灵活地控制排版。你可以使用`\twocolumn`命令将后续内容切换到双栏模式。例如: ```latex \section{第一节标题} 这是第一节正文。 \twocolumn \section{第二节标题} 这是第二节正文,放在第一节的下一栏进行排版。 ``` 需要注意的是,在双栏模式下,插入大型的单栏图片可能会导致排版问题。为了解决这个问题,你可以使用`figure*`环境,将图片跨越两栏进行排版。例如: ```latex \begin{figure*} \centering \includegraphics[width=\textwidth]{example-image} \caption{这是一个跨双栏的图片} \end{figure*} ``` 总之,通过Overleaf进行中文双栏排版非常方便。只需在导言区设置文档类为`twocolumn`,就可以自动实现双栏布局。另外,使用`\twocolumn`命令可以在文档中创建多个双栏节,使用`figure*`环境可以跨双栏排版图片。希望这些信息对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞机火车巴雷特

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值