LaTeX
TeX中的长度
在TeX中,长度可以有以下几种形式:
-
一个浮动的数值后面跟着单位,单位后可选跟随一个拉伸值; 例如:
3.5pt plus 1pt minus 2pt
-
一个浮动的因子后跟着一个宏,这个宏展开为长度; 例如:
1.7\textwidth
单位
首先,我们介绍LaTeX中的度量单位。所有的LaTeX单位都是两个字母的缩写。你可以从多种单位中选择。以下是最常用的一些单位:
缩写 | 定义 | 值(点数pt) | 值(微米µm) |
---|---|---|---|
pt | 一个点是1/72.27英寸,约0.0138英寸 | 1 | 351.46 |
mm | 毫米 | 2.84 = 7227/2540 | 1000 |
cm | 厘米 | 28.4 = 7227/254 | 10000 |
in | 英寸 | 72.27 | 25400 |
ex | 约为当前字体中'x'的高度 | 未定义,取决于字体 | |
em | 约为当前字体中'M'(大写)的宽度 | 未定义,取决于字体 |
点(pt)是默认单位,1pt是默认长度。所有其他单位都会通过一个固定的比率转换为点。
以下是一些较少使用的单位:
缩写 | 定义 | 值(点数pt) | 值(微米µm) |
---|---|---|---|
bp | 大点,是1/72英寸,约0.0139英寸 | 1.00375 = 803/800 | 352 7/9 |
pc | pica | 12 | 4218 |
dd | didot | 1.070 = 1238/1157 | 376 |
cc | cicero(12 didot) | 12.84 = 14856/1157 | 4512 |
nd | 新didot | 1.067 = 685/642 | 375 |
nc | 新cicero(12新didot) | 12.80 = 1370/107 | 4500 |
sp | 缩放点 | 0.000015 = 1/65536 | 0.00536 |
盒子长度
在TeX中,一个盒子有三个特征:
-
深度(depth)
-
高度(height)
-
宽度(width)
长度操作
你可以通过以下两个命令更改定义页面布局的变量值:
-
使用此命令为现有长度变量设置新值:
\setlength{\mylength}{length}
-
使用另一个命令将值添加到现有长度:
\addtolength{\mylength}{length}
你还可以创建自己的长度变量,必须先创建新长度,然后再尝试设置它:
\newlength{\mylength}
你还可以使用以下命令根据文本大小设置长度:
\settowidth{\mylength}{some text}
\settoheight{\mylength}{some text}
\settodepth{\mylength}{some text}
calc包也提供了函数\settototalheight{\mylength}{some text}
。
使用这些命令时,如果你计划展示文本,你可以复制你希望作为参考的文本。但LaTeX也提供了\savebox
来避免文本的重复。请参见盒子部分了解更多细节。
拉伸值
你还可以定义拉伸值。拉伸值是一个长度值,前面有加号或减号,表示TeX可以在多大程度上改变该长度。例如:
\setlength{\parskip}{10pt plus 5pt minus 3pt}
这意味着TeX会尝试使用10pt的长度;如果长度不足,它将增加到最大15pt;如果长度过长,它将减少到最小7pt。
注意,不强制要求同时指定加号和减号的值,但如果指定了,它们必须按顺序排列,加号必须在减号之前。
打印长度
你可以使用\the
命令打印一个长度:
\the\textwidth
纯TeX
要创建新的长度:
\newdimen\mylength
设置长度:
\mylength=1.5in
查看长度的方式与LaTeX相同,使用\the
命令。
LaTeX默认长度
常见的长度宏如下:
-
\baselineskip
段落中行与行之间的正常垂直距离。 -
\baselinestretch
一个乘以\baselineskip的因子。必须使用\renewcommand{\baselinestretch}{factor}
来设置。 -
\columnsep
列与列之间的距离。 -
\columnwidth
列的宽度。 -
\evensidemargin
‘偶数’页的页边距(比如印刷的小册子)。 -
\linewidth
当前环境中的行宽。 -
\oddsidemargin
‘奇数’页的页边距(比如印刷的小册子)。 -
\paperwidth
页面的宽度。 -
\paperheight
页面的高度。 -
\parindent
正常的段落缩进。 -
\parskip
段落之间的额外垂直间距。 -
\tabcolsep
表格环境中列与列之间的默认间隔。 -
\textheight
页面上的文本高度。 -
\textwidth
页面上的文本宽度。 -
\topmargin
顶部页边距的大小。 -
\unitlength
图形环境中的长度单位。
固定长度空间
要插入固定长度的空间,可以使用:
\hspace{length}
\vspace{length}
其中,\hspace
代表水平空间,\vspace
代表垂直空间。
如果这种空间应该在行的开始或结束时仍然存在,请使用 \hspace*
或 \vspace*
来强制保留空间,即使它位于行的开始或结束。
如果要在文档开始时添加空间,且不在此之前写任何内容,则可以使用:
{ \vspace*{length} }
使用 \vspace*
命令比 \vspace
更为重要,否则 LaTeX 可能会默默忽略额外的空间。
TeX提供的一些固定长度空间宏:
-
\smallskip
在垂直模式下插入一个小间距(两个段落之间)。 -
\medskip
在垂直模式下插入一个中等间距(两个段落之间)。 -
\bigskip
在垂直模式下插入一个大间距(两个段落之间)。
垂直模式发生在构建“垂直”盒子(如段落)时;水平模式发生在构建“水平”盒子(如字母或单词)时。
由于它们是垂直模式命令,因此它们会在水平模式中被忽略(或失败),例如在段落中间。
拉伸/橡胶长度
命令:
\stretch{factor}
生成一个特殊的橡胶空间,其中 factor
是一个数字(可以是浮动数值)。它会拉伸,直到一行的剩余空间被填满。如果在同一行上发出两个 \hspace{\stretch{factor}}
命令,它们会根据拉伸因子增长。
x \hspace{\stretch{1}} x \hspace{\stretch{3}} x
你也可以进行垂直拉伸:
\maketitle
\vspace{\stretch{1}}
Some comments.
\vspace{\stretch{1}}
\tableofcontents
你还可以使用 \fill
代替 \stretch{1}
。
\stretch
命令与 \pagebreak
配合使用时,可以用于将文本排版到页面的最后一行,或将文本垂直居中于页面。
有一些“快捷命令”可以用于拉伸因子为1的情况(即 \stretch{1}
或 \fill
):\hfill
和 \vfill
。
示例
-
将图片大小调整为文本宽度的一半:
\includegraphics[width=0.5\textwidth]{mygraphic}
-
增加项目之间的距离(在
itemize
环境中):
\addtolength{\itemsep}{0.5\baselineskip}
-
使用
\savebox
将图片的高度调整为文本的高度:
% 创建我们需要的占位符
\newlength{\mytitleheight}
\newsavebox{\mytitletext}
% 创建参考文本
\savebox{\mytitletext}{%
\Large\bfseries This is our title%
}
\settoheight{\mytitleheight}{ \usebox{\mytitletext} }
% 创建实际对象
\framebox[\textwidth][l]{%
\includegraphics[height=\mytitleheight]{my_image}%
\hspace{2mm}%
\usebox{\mytitletext}%
}