Latex 中的空格汇总

article/2025/11/7 8:25:19

讲讲 Latex 让人头疼的地方

为什么科学文献通常要求用 LaTeX \LaTeX LATEX 书写呢?当然是因为好看呀。

LaTeX \LaTeX LATEX 美观的排版背后是一个庞杂的符号和排版系统,光是看看就知道这根本不是一两天能全部掌握的,就连 LaTeX \LaTeX LATEX 这个标题也有专门的特殊排版(看着有点奇怪,后面还是直接用 Latex 好了)。有很多符号看上去一样,但是又有十分细微的差别,比如下面的两个单词,你能看出差异吗:
M i c r o s o f t M i c r ο s ο f t Microsoft \qquad Micr\omicron s\omicron ft MicrosoftMicrοsοft
说实话我自己也看不出来(或者我用的这个字体本身就没有区别),但上面那一行的的源码是:

Microsoft \qquad Micr\omicron s\omicron ft

后一个微软里面的 ο \omicron ο 其实是希腊字母欧米克荣,而不是英文字母 o o o

冷知识:我们用来表示高阶无穷小的符号 ο \omicron ο 是希腊字母。

Latex 的精确性让它更适应于公式的排版,光是空格有多少种,就足够我写一篇了。空字符可以在我们排版时帮助我们对齐一些难以对齐的行或列,在不失 latex 美观的前提下,在细节上实现 word 一样的随意调整。~~不过遇到这种情况时,我并不推荐将空字符作为首选方案。~~了解一下 latex 的空字符还是有必要的。

各种长度的空格

Latex 的空格种类繁多,看过来让人眼花缭乱。如果按照长度分类的话,大致可以分为下面三类。即:“只要不换字体,我一直是这么长” 的相对字体长度固定的空格,“你让我多长我就多长” 的自定义长度空格,和 “我多长取决于你把我放在哪里” 的自适应长度空格。

相对字体长度固定

先看相对字体长度固定的空格,这类空格最简单粗暴,你把它敲出来,它给你一段固定的留白。Latex 本身就有的这类空格并不多,amsmath 包则将这类空格变得更加丰富。

在往下讲之前,先说明一个长度单位: em.

这个单位,常用 latex 的小伙伴肯定不陌生,但是具体含义其实众说纷纭。它并不严格地等于字体中 M 的宽度,也并不严格等于字体本身的大小,只需要知道这个单位会随着字体变化就行了。

常用的这类空格,以及它们各自的长度如下表所示:
在这里插入图片描述

有几个需要注意的点:

  1. **转义符 + 标点 的组合,原则上不要在前后加空格。**相比于标准的a\,b,加入了空格的 a\, b 表现出来的空字符其实是 \, 加上一个常规空格。而常规空格是会适应排版进行调整的,这就导致生成的空格长度不但比想像的长,还不固定。
  2. \quad, \thinspace 这类转义符 + 字母的组合,需要在后面打空格。这时后面加入的空格不会被识别为常规空格,而是单纯作为一个命令结束的标志。但是如果空格加在了命令前面,就会被当做一个常规空格。
  3. 如果上面的字符没有达到想要的长度,可以进行组合。比如 \;\! 会生成一个 2/18 em 的空格。如果还达不到要求,可以试试下面的自定义长度命令。

自定义长度

自定义长度的命令会生成一个给定长度的空格,使用起来十分灵活。

常用的记住 \hspace\vspace 即可,前者用于水平方向,后者则用于垂直方向。这两个命令是 latex 原生的,不需要引入任何额外包。

具体使用很简单,语法是 \hspace{<space_width>}<space_width> 处填入你期望的长度。

下图演示了三个使用案例及其等效的预设空格组合。其中 \hspace{1em} 生成的空格和 \quad 等长,而 \hspace{0.11111em} 生成的空格和 \;\! 等长,这里面甚至可以塞进一个负值,同时也有等长的定长空格组合与之对应。关于长度单位其实有很多可以说道的地方,比如 Latex 中的最小单位 sp,以及各个单位分别等于多少个 sp 等等,详情见这篇 Stackexchange 上的问答。

在这里插入图片描述

而另一个 \vspace 可能更通用一些,通常用于行间距的微调,包括但不限于图表和标题之间、图表和正文之间、标题和正文之间的距离调整。

下面我们打一段文字:

  % ex 近似等于当前字体中 x 的高度楼下早上好啊!早……怎么这么挤啊!\vspace{-2ex}我要和三楼贴贴!\vspace{2ex}看我干嘛,我就在我该在的位置。

其效果就是这样

在这里插入图片描述

其实,无论 vspace 命令单独一行,还是和上下合并,其效果是一样的,都是在默认行距上进行加减。而相对于水平字距,行间距相对固定,因此不会带来很大的问题。

自适应长度

这类空格与上述不同,是以良好的排版效果作为第一优先级的。它们会随着期望的效果而改变自身的长度。

常规空格

这类空格中最典型的就是常规空格,敲一下键盘上那个最长的空格键,你就输入了一个常规空格。

中文文献书写中这种空格出场比较少,而英文书写中这个空格可以说是一篇文章中出现最频繁的字符了。为了排版美观,英文文献通常采用两端对齐的方式,但是英文单词又不一样长,经常出现到句尾长度不够,把下一行第一个单词拿到这一行长度又太长的情况。这时,Latex 会通过调整常规空格长度的方式来做到两端对齐。下图这句话出自《卖火柴的小女孩》。

在这里插入图片描述

hfill 和 hfil

顾名思义,这两个命令可以起到填充作用。填充效果是能延伸到的最大宽度。通常,如果我们有张图片要并列摆放,中间就可以加上 \hfill\hfil,可以把两个并排的物件中间撑开,达到一个左对齐,一个右对齐的效果。

这里用并排的 minipage 做个示范:

\noindent\begin{minipage}{0.3\textwidth}Most terribly cold it was; it snowed, and was nearly quite dark, and evening - the last evening of the year.
\end{minipage}
\hfill % 或 \hfil
\begin{minipage}{0.3\textwidth}In this cold and darkness there went along the street a poor little girl, bareheaded, and with naked feet.
\end{minipage}
\hfill % 或 \hfil
\begin{minipage}{0.3\textwidth}When she left home she had her slippers on, it is true;
\end{minipage}

运行效果如下。可以看到三个 minipage 中间被两处等长的空白分隔开了。

在这里插入图片描述

如果把上面两个 \hfill 都给换成 \hfil,编译出来的效果是完全一样的。但是,如果只改变其中一个,你就会发现 \hfil 那里的空格完全消失了。这是为什么呢?

从定义上讲,fillfil 都是符合排版规则下的无穷大。但是,fill 是比 fil 更为高阶的无穷大。如果 \hfill\hfil 同处一行,那么 \hfil 将会被 \hfill 给挤成什么都没有。这一点很好理解,即使是无穷大,在更高阶的无穷大面前也是0。而等阶的无穷大,在同一行时延展出来的空格长度就是相等的了。

这两条命令同样有垂直版本,即 \vfill\vfil,拓展的上限是一整页。同时,也有 \hfilll\vfilll,是比两个 lfill 更高阶的无穷大。这里就不多赘述了。

特殊空格

不折行的空格

有时我们需要空格前后的内容一定要在一行中显示,比如图表标题 Fig. 3Tab. 4 这类,如果断行就很奇怪。Latex 为这种情况提供了一种不折行的空格(Non-breaking space),即 ~。只需要写成 Fig.~3 即可。

命令后的空格

有些命令是会在文档中生成一段文字,有时候我们希望能在这段文字后面加个空格。然而无论你在命令后面打多少个空格,latex 都只会把它当成命令结束的标志,生成的文档中这段文字会和后面的文字紧紧贴在一起。

正确的解决方案是加一个转义符 \ 再打空格,或者用 {} 作为命令终结的标志,来使后面的空格被识别成一个常规空格。即:

The date is \today and it's raining heavily.
% 上面这句运行的结果:
% The date is February 24, 2021and it’s raining heavily.The date is \today \ and it's raining heavily.
The date is \today{} and it's raining heavily.
% 上面两句运行的结果是一样的,即:
% The date is February 24, 2021 and it’s raining heavily.

总结

Latex 里面的空白字符可谓琳琅满目,非一文可以穷尽。在这里我也只是汇总了一些常用的字符,基于我个人理解,有错误之处欢迎指出。

参考

  • Latex horizontal space: qquad,hspace, thinspace,enspace
  • What are the various units (ex, em, in, pt, bp, dd, pc) expressed in mm
  • Which measurement uints should one use in latex
  • Spaces and Boxes
  • What is the difference between ‘fil’ and ‘fill’ ?

http://chatgpt.dhexx.cn/article/PkXKnAKV.shtml

相关文章

latex中的空格的几种表示方法

1、latex公式中的空格的几种表示方法 代码空格长度a \qquad b2ema \quad b1ema\enspace b0.5ema\;b5/18ema\:b4/18ema\,b1/6emab无空格a\!b-1/6em 注&#xff1a;1em 当前字体尺寸中M的宽度 2、效果

latex如何打空格

一般用 \quad即可 参考文章&#xff1a; 关于LaTeX空格命令的心得分享 - 知乎 Latex 中的空格汇总_零度蛋花粥的博客-CSDN博客_latex空格

【转载】LaTeX中的空格汇总

讲讲 Latex 让人头疼的地方 为什么科学文献通常要求用 LaTeX \LaTeX LATE​X 书写呢&#xff1f;当然是因为好看呀。 LaTeX \LaTeX LATE​X 美观的排版背后是一个庞杂的符号和排版系统&#xff0c;光是看看就知道这根本不是一两天能全部掌握的&#xff0c;就连 LaTeX \LaTeX…

Latex中的空格

两个quad空格 a \qquad b 两个m的宽度 quad空格 a \quad b 一个m的宽度 大空格 a\ b 1/3m宽度 中等空格 a\;b 2/7m宽度 小空格 a\,b 1/6m宽度 没有空格 ab 紧贴 a\!b 缩进1/6m宽度 \quad、1em、em、m代表当前字体下接近字符‘M’的宽度。

linux下离线安装svn服务器并配置

linux下离线svn服务器安装并配置 一、SVN介绍二、SVN安装三、配置四、TortoiseSVN 安装五、问题解答&#xff1a; 一、SVN介绍 Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库(repository) 中。 …

Linux安装svn和配置使用

1. 安装SVN apt-get install subversion 2. 建立svn仓库 1). 建立svn目录&#xff1a;mkdir /home/.svn(使用隐藏目录&#xff09;   2). cd /home/.svn   3). mkdir astar   4). 创建仓库astar&#xff1a;svnadmin create /home/.svn/astar&#xff0c;执行完毕后…

linux安装svn服务器的两种方式(转载)

操作环境&#xff1a;CentOS 7.2 64位 第一种&#xff1a;采用压缩包安装&#xff1a;比如你们公司服务器上安装软件有自己的规定&#xff0c;一般会采用压缩包安装。 第一步&#xff1a;SVN服务器端压缩包下载 下载地址&#xff1a;http://mirrors.cnnic.cn/apache/subvers…

linux安装svn服务器

1、检查系统是否已经安装如果安装就卸载 检查&#xff1a;svnserve --version 卸载&#xff1a;yum remove subversion 2、安装 yum install subversion 3、建立SVN库&#xff08;文件位置可自由&#xff09; 创建仓库文件夹&#xff1a;mkdir -p /opt/svn/repository 用…

在linux服务器上搭建SVN服务器

收集了网上很多资料终于搭好啦。 系统环境&#xff1a;centOS7.0 一&#xff1a;卸载SVN&#xff08;如果你是一台新的系统机可以忽略这一步&#xff09; 1&#xff1a; rpm -qa subversion 查询SVN是否有过低版本SVN&#xff08;没有安装过则不显示&#xff09; 2&#xff1a;…

linux安装svn服务器的两种方式

操作环境&#xff1a;CentOS 7.2 64位 第一种&#xff1a;采用压缩包安装&#xff1a;比如你们公司服务器上安装软件有自己的规定&#xff0c;一般会采用压缩包安装。 第一步&#xff1a;SVN服务器端压缩包下载 下载地址&#xff1a;http://mirrors.cnnic.cn/apache/subvers…

Linux系统安装SVN

目录 一、检查是否有SVN 二、安装SVN 三、创建目录 1、创建目录 2、创建版本库 四、配置 1、创建用户及密码 2、权限配置 3、配置SVN服务配置文件svnserve.conf 五、启动与停止SVN服务 1、启动svn 2、查询svn是否在运行 3、停止 六、设置开机自启 七、验证 八、开启防火…

Linux离线安装SVN并配置

SVN是Subversion的简称&#xff0c;是一个开放源代码的版本控制系统&#xff0c;说得简单一点SVN就是用于多个人共同开发同一个项目&#xff0c;共用资源的目的。相信大家都已经使用过svn了&#xff0c;也明白它的方便性和强大的能力&#xff0c;可是如何搭建SVN的服务端呢&…

什么是SVN,Linux环境如何安装最新版Svn服务(yum安装1.14.1)

目录 前言1、安装及卸载2.1 查看安装情况2.2 直接安装(不推荐)2.3 最新版本安装(推荐)2.4 卸载 2、创建svn工作目录3、创建svn项目仓库4、为svn仓库设置用户权限4.1 新增用户4.2 配置用户权限 5、配置svnserve.conf6、启动7、新增仓库及用户8、配置开机自启9、配置http服务(非必…

Linux下安装SVN(图文详解)

Linux下安装SVN&#xff08;图文详解&#xff09; 本文以Centos6 x86_64&#xff0c;linux系统为例如果各位还需要了解Linux下安装其他软件&#xff0c;例如&#xff1a;MySQL&#xff0c;JDK&#xff0c;Nginx等&#xff0c;文章结尾处有小编的其他博文连接&#xff0c;谢谢关…

linux下安装svn服务

我的linux版本为centos 7.6&#xff0c;以此版本为例&#xff0c;进行svn服务的安装。 一、确认系统中是否已经安装svn&#xff0c;避免重复安装 svnservice --version 二、使用yum安装&#xff0c;一路确认即可 yum install subversion 三、创建svn目录&#xff0c;我是放…

Linux 安装SVN服务器 图解教程

前言&#xff1a; 现在主流企业常见的代码管理就是SVN,GIT&#xff0c;此文是在自己服务器上搭建仓库&#xff0c;其实远程仓库实际上和本地仓库没啥不同&#xff0c;纯粹为了7x24小时开机并交换大家的修改。如GitHub就是一个免费托管开源代码的远程仓库。但是对于某些视源代码…

Linux下SVN的安装与配置

简述 版本控制一直是项目开发中必不可少的&#xff0c;不仅有利于代码管理&#xff0c;而且对项目团队协作开发有很大的帮助。目前比较流行的版本控制管理有GIT和SVN&#xff0c;它们都有各自的优缺点&#xff0c;具体使用哪一个还是要看个人的喜好&#xff0c;它们功能也都是大…

Linux搭建SVN服务器详细教程

前言 本文讲解 Linux 系统下如何搭建 SVN 服务器&#xff0c;详细说明各配置项的功能&#xff0c;最终实现可管控多个项目的复杂配置。 SVN 是 subversion 的缩写&#xff0c;是一个开放源代码的版本控制系统&#xff0c;通过采用分支管理系统的高效管理&#xff0c;实现最终集…

Linux测试环境搭建步骤

Linux测试环境搭建步骤 准备工具&#xff1a; SecureCRT工具&#xff08;Linux工具&#xff0c;连接服务器&#xff09; FTP传输工具&#xff08;上传文件到服务器&#xff09; MySQL连接工具 安装包&#xff08;以下文件均为压缩包rpm格式和tar.gz&#xff09;&#xff1a…

测试环境服务器搭建

1.确定文件目录 主要通过df命令和du命令确定好磁盘大小以及磁盘使用情况&#xff0c;和磁盘剩余大小来判断项目以及软件安装到哪个目录 1.1df命令 df命令主要用来判断磁盘空间大小&#xff0c;使用情况、剩余情况&#xff0c;要看df的参数使用df --help查看即可&#xff0c;…