LaTeX表格灵活设置列宽

一些基本的插入表格的操作见:https://blog.csdn.net/gsgbgxp/article/details/129457872
遇到问题先查阅《IShort》和刘海洋老师的《LaTeX入门》。

设置表格列宽基础操作(不借助tabularx)

先从一个简单表格开始

\begin{table}[!h]
  \centering
  \begin{tabular}{cc}
    \hline
    {\textbf{System}} & {\textbf{TeX}} \\
    \hline
    All & TeX Live \\
    macOS & MacTeX \\
    Windows & MikTeX \\
    \hline
  \end{tabular}
\end{table}

显示效果为
在这里插入图片描述
如果我们想设置两列的宽度,可以采用的方案为设置{p{4cm}p{4cm}}

\begin{table}[!h]
  \centering
  \begin{tabular}{p{4cm}p{4cm}}
    \hline
    {\textbf{System}} & {\textbf{TeX}} \\
    \hline
    All & TeX Live \\
    macOS & MacTeX \\
    Windows & MikTeX \\
    \hline
  \end{tabular}
\end{table}

在这里插入图片描述

这里补充说明以下:

  • l/c/r :单元格内容左对齐/居中/右对齐,不折行
  • p{⟨width⟩} :单元格宽度固定为⟨width⟩,可自动折行

这些参数是可以不借助其他宏包直接使用的。

在上面的表格中,默认是左对齐。如果想要标题行居中,其他行仍左对齐,可以采用的方式为

\begin{table}[!h]
  \centering
  \begin{tabular}{p{4cm}p{4cm}}
    \hline
    \multicolumn{1}{c}{System} & \multicolumn{1}{c}{TeX} \\
    \hline
    All & TeX Live \\
    macOS & MacTeX \\
    Windows & MikTeX \\
    \hline
  \end{tabular}
\end{table}

显示效果为
在这里插入图片描述
这里的\multicolumn{1}{c}虽然没有合并多列表格,但是却可以借此实现居中。
如果想要所有行都是居中,可以采用下面的方式:

\begin{table}[!ht]
  \centering
  \begin{tabular}{
    >{\centering\arraybackslash}p{4cm}
    >{\centering\arraybackslash}p{4cm}
    }
    \hline
    {Column 1} & \multicolumn{1}{r}{Column 2} \\
    \hline
    All & TeX Live \\
    macOS & MacTeX \\
    Windows & MikTeX \\
    \hline
  \end{tabular}
\end{table}

显示效果为
在这里插入图片描述
这里关键在于定义了>{\centering\arraybackslash}p{4cm},但是这需要额外的array宏包,即

\usepackage{array}

借助tabularx宏包调整表格列宽

以下内容摘自《Ishort》

在这里插入图片描述

ragged 的意思是“参差不齐的”,raggedright 的意思就是“右侧参差不齐的”,即左对齐。

在这里插入图片描述

设置与页面同宽的表格

利用tabularx宏包可以轻松实现,可以看下面几个示例。

各列宽度不同

不借助tabularx宏包

下面先仅给出一个示例

\begin{table}[!ht]
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\centering 
\begin{tabular}{cC{2cm}C{3cm}}
  \toprule
  Column 1 & Column 2 & Column 3 \\
  \midrule
  Data 1 如果是文本较长会发生什么? & Data 2 如果是文本较长会发生什么? & Data 3 \\
  \bottomrule
\end{tabular}
\end{table}

显示效果为
在这里插入图片描述

借助tabularx宏包

示例1

\begin{table}[htb]
\centering
\begin{tabularx}{\textwidth}{>{\hsize=0.85\hsize}X>{\hsize=0.85\hsize}X>{\hsize=1.5\hsize}X>{\hsize=0.85\hsize}X>{\hsize=0.85\hsize}X}
\hline
列1 & 列2 & 列3 & 列4 & 列5 \\
\hline
内容... & 内容... & 内容... & 内容... & 内容... \\
\hline
\end{tabularx}
\caption{一个自适应宽度的表格示例}
\label{tab:example}
\end{table}

示例2【推荐】

\begin{table}[htb]
\centering
\newcolumntype{C}{>{\centering\arraybackslash}X} % 居中对齐的自动调整列宽类型
\newcolumntype{L}[1]{>{\centering\arraybackslash}p{#1}} % 指定宽度的左对齐列类型
\begin{tabularx}{\textwidth}{|C|L{4cm}|L{2cm}|C|}
  \hline
  列 1 & 列 2 & 列 3 & 列 4 \\
  \hline
  内容 & 内容 & 内容 & 内容 \\
  \hline
\end{tabularx}
\end{table}

设置列间距

\setlength{\tabcolsep}{3mm} 可用于设置表格中列之间的水平间距(列间距)。

在 LaTeX 的表格中,默认情况下,列之间的间距是由 \tabcolsep 参数控制的。该参数定义了列之间的额外空间。通过修改 \tabcolsep 的值,可以增加或减少列之间的间距。

\setlength{\tabcolsep}{3mm} 这个命令将 \tabcolsep 的值设置为 3mm。这意味着在使用该命令后,表格中的列之间的水平间距将增加到 3mm。这可以用于调整表格的外观,使其更加紧凑或稀疏。

以下是一个示例,展示了如何在表格中使用 \setlength{\tabcolsep}{3mm} 命令:

\begin{table}
\centering
\setlength{\tabcolsep}{3mm} % 设置列间距为 3mm
\begin{tabular}{|c|c|}
\hline
Header 1 & Header 2 \\
\hline
Data 1 & Data 2 \\
Data 3 & Data 4 \\
\hline
\end{tabular}
\caption{A table with increased column spacing}
\end{table}

在上面的示例中,\setlength{\tabcolsep}{3mm} 命令被放置在表格环境之前,使得整个表格内的列之间的间距增加到 3mm。这样可以使表格的列之间具有更宽的间距,增加可读性或美观性。可以根据需要调整列间距的数值。

其他问题

为什么设置表格总宽度为textwidth但结果却超出页面范围?

由于tabcolsep的存在,下面的表格虽然计算总和是textwidth,但会超出页面范围。
可以通过 @{} 的方式解决。
下面给出三个表格示例

\begin{table}[!ht]  
\centering  
\caption{表格宽度超出页面范围}  
\begin{tabular}{  
    >{\centering\arraybackslash}m{0.3\textwidth} 
    >{\centering\arraybackslash}p{0.5\textwidth}  
    >{\centering\arraybackslash}b{0.2\textwidth}  
}  
\toprule
列1 & 列2 & 列3 \\ 
\midrule
这是一个较长的文本,它将被换行显示,并居中对齐。 & 这是另一个较长的文本,它也将被换行显示,并居中对齐。 & 这是一个简短的文本,居中对齐。 \\ 
\bottomrule
\end{tabular}  
\end{table}  

%-------------------------------------------------
\begin{table}[!ht]  
\centering  
\caption{表格和页面同宽}   
\begin{tabular}{  @{}
    >{\centering\arraybackslash}m{0.3\textwidth} @{}
    >{\centering\arraybackslash}p{0.5\textwidth} @{}
    >{\centering\arraybackslash}b{0.2\textwidth} @{}
}  
\toprule
列1 & 列2 & 列3 \\ 
\midrule
这是一个较长的文本,它将被换行显示,并居中对齐。 & 这是另一个较长的文本,它也将被换行显示,并居中对齐。 & 这是一个简短的文本,居中对齐。 \\ 
\bottomrule
\end{tabular}  
\end{table}  

%-------------------------------------------------
\begin{table}[!ht]
\centering
\caption{表格和页面同宽}  
\begin{tabularx}{\textwidth}{@{}l@{}|@{}X@{}|@{}r@{}}
  \hline
  左列 & 中间列 & 右列 \\
  \hline
  内容1 & 这是一个很长的中间内容,它会自动换行以适应列宽。继续写作,看看效果如何。继续写作,看看效果如何。继续写作,看看效果如何。继续写作,看看效果如何。 & 内容3 \\
  内容2 & 中间内容 & 内容4 \\
  \hline
\end{tabularx}
\end{table}

显示效果为
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/773431.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python基础小知识问答系列-过滤列表元素

1. 问题: 如何根据单一条件过滤列表的元素? 如何根据复杂条件过滤列表的元素? 2. 解决方式: 可以使用推导式生成器,进行单一条件的列表元素过滤,尤其是列表内容较多时; 也可以使用filter函数进行列…

怎么看一家TPM管理咨询公司专不专业

在评估一家TPM管理咨询公司是否专业时,我们需要从多个维度进行深入的考量。TPM作为一种以提升设备综合效率为目标,以全系统的预防维修为过程,以全体人员参与为基础的设备保养和维修管理体系,其实施的成功与否直接关系到企业的生产…

二二复制模式,发展下属并形成一个销售网络体系来实现收入增长!

二二复制模式,又称为双轨制,是一种直销理念的营销模式,其核心在于通过发展下属并形成一个销售网络体系来实现收入增长。以下是对二二复制模式的详细讲解,包括其优势和玩法介绍,以及适合的行业。 一、二二复制模式的定…

刚办理的手机号被停用,你可能遇到这些问题了!

很多朋友都会遇到手机号被停用的情况,那么你知道你的手机号为什么会被停用吗?接下来,关于手机号被停用的问题,跟着小编一块来了解一下吧。 ​停机的两种形态: 1、第一个是局方停机,即语音、短信和流量都不…

opencv实现人脸检测功能----20240704

opencv实现人脸检测 早在 2017 年 8 月,OpenCV 3.3 正式发布,带来了高度改进的“深度神经网络”(dnn)模块。 该模块支持多种深度学习框架,包括 Caffe、TensorFlow 和 Torch/PyTorch。OpenCV 的官方版本中包含了一个更准确、基于深度学习的人脸检测器, 链接:基于深度学习…

Day04-SonarQube

Day04-SonarQube 1.SonarQube基本概述1.1 什么是SonarQube1.2 使用SonarQube前提环境要求 2. SonarQube服务安装-8.9 lts (PostgreSQL)2.1 环境准备2.2 安装Sonarqube依赖工具 -PSQL 2.SonarQube服务安装-7.7 (MySQL)故障与排查 3.Sonarqube插件管理4. 创建项目及分析1) 分析ja…

简历–求职信–通用

每个毕业生的简历首页大概都会是一封求职信。如果说对求职者的简历正文我们只是浮光掠影看上几眼的话,那么对求职信,简直连浮光掠影都称不上。说实话,我在看求职者简历的时候一般会把这一页翻过去,很少去看。为什么呢?…

springboot宠物领养系统-计算机毕业设计源码08373

目 录 摘要 1 绪论 1.1选题依据 1.2国内外研究现状 1.3相关技术介绍 1.4论文结构与章节安排 2 基于springboot宠物领养系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2经济可行性分析 2.1.3操作可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功…

java 常见错误问题

1.java中datetime数据类型如何定义 在Java中,可以使用java.time包中的DateTime类来定义DateTime数据类型。 要定义DateTime数据类型,你可以使用以下代码: public static void test() {// 获取当前日期和时间LocalDateTime datetime Local…

如何利用AI撰写短文案获客?分享6大平台和3大步骤!

从去年开始,很多大厂都在裁员,原因就是因为AI的火爆,替代了很多机械式的劳动力。以前很多人可以通过机械式的工作来摸鱼,现在AI完成的效率比人工的要高很多倍。 国内好用的AI平台非常多,有时候也可以使用几个AI平台结合…

RAG 工业落地方案框架(Qanything、RAGFlow、FastGPT、智谱RAG)细节比对!CVPR自动驾驶最in挑战赛赛道,全球冠军被算力选手夺走了

RAG 工业落地方案框架(Qanything、RAGFlow、FastGPT、智谱RAG)细节比对!CVPR自动驾驶最in挑战赛赛道,全球冠军被算力选手夺走了。 本文详细比较了四种 RAG 工业落地方案 ——Qanything、RAGFlow、FastGPT 和智谱 RAG,重…

后端之路——最规范、便捷的spring boot工程配置

一、参数配置化 上一篇我们学了阿里云OSS的使用,那么我们为了方便使用OSS来上传文件,就创建了一个【util】类,里面有一个【AliOSSUtils】类,虽然本人觉得没啥不方便的,但是黑马视频又说这样还是存在不便维护和管理问题…

Artificial Intelligence Self-study

Artificial Intelligence Self-study Traditional AI (Symbolic AI) 基于:符号表示 数理逻辑 搜索 - 有明确规则,依靠算力。Appliance : 数学难题(Heuristic Algorithm),棋牌对抗(围棋),专家系统(输入病症&#xf…

02-android studio实现下拉列表+单选框+年月日功能

一、下拉列表功能 1.效果图 2.实现过程 1&#xff09;添加组件 <LinearLayoutandroid:layout_width"match_parent"android:layout_height"wrap_content"android:layout_marginLeft"20dp"android:layout_marginRight"20dp"android…

使用Anaconda虚拟环境安装Opencv、pytorch、torchvision踩坑记录

电脑 python 环境版本过高与下载Opencv&#xff08;3.4以下&#xff09;不匹配&#xff0c;因为版本过高部分算法收米&#xff0c; 从而在虚拟环境重新下载python老版本 本文默认您的电脑上已经安装了Anaconda 我是按照这位博文安装的 安装Opencv (详解)安装3.4.1.15版本…

java数据结构集合复习之包装类和泛型

前言: 这是我最一年学习java的一部分的回顾总结 1.包装类 在Java中&#xff0c;由于基本类型不是继承自Object&#xff0c;为了在泛型代码中可以支持基本类型&#xff0c;Java给每个基本类型都对应了一个包装类型。 1.1基本数据类型和对应的包装类 ----—基本数据类型包装类…

14. Revit API: Selection(选择器)

前言 这篇写选择器&#xff0c;经过前面好些篇的讲解&#xff0c;总算把前置内容都写完了。 我们来回忆下都在哪里提到过… 算了&#xff0c;直接进入正文。 一、Selection 命名空间 选择器位于Autodesk.Revit.UI.Selection命名空间下&#xff0c;关系到交互嘛&#xff0c;所…

Dns被莫名篡改的逆向分析定位(笔记)

引言&#xff1a;最近发现用户的多台机器上出现了Dns被莫名修改的问题&#xff0c;从系统事件上看并未能正常确定到是那个具体软件所为&#xff0c;现在的需求就是确定和定位哪个软件具体所为。 解决思路&#xff1a; 首先到IPv4设置页面对Dns进行设置&#xff1a;通过ProcExp…

【Axure高保真原型】中继器表格——移入显示详情卡片案例

今天和大家分享中继器表格——移入显示详情卡片的原型模板&#xff0c;鼠标移入员工号或姓名会弹出员工卡片&#xff0c;可以查看更详细的信息。这个表格是用中继器制作的&#xff0c;所以使用也很方便&#xff0c;只需要维护中继器表格里的信息&#xff0c;即可自动生成交互效…

实操Nginx+Tomcat多实例部署,实现负载均衡和动静分离

192.168.10.10 192.168.10.20 192.168.10.30 location ~ \.jsp$ {proxy_pass http://192.168.10.50:8080;} location ~ \.(jsp|html)$ {root /usr/share/nginx/html;}192.168.10.40和192.168.10.50用脚本完成搭建此处安装附上脚本&#xff1a; #!/bin/bash# 定义变量 JDK_PACKA…