LaTeX/盒子
此页面可能需要更新以反映当前知识。 您可以帮助更新它,讨论进度,或请求协助。 |
此模块可能需要完全重写才能适合其目标受众。 您可以帮助重写它。请参阅相关讨论。 |
盒子是 TeX 中用于表示一个不可见容器的术语,它可以容纳可见元素、空内容或其他盒子。胶水是 TeX 中用于表示连接盒子的不可见连接器的术语,它决定了连接盒子的相对位置。TeX 文档中包含的每个单独的可见元素都包含在一个盒子里。可见元素可以是字母、图像、几何形状等。TeX 通过根据默认的 TeX 规则、默认的 LaTeX 规则或文档命令将盒子粘合在一起构建页面。在一个典型的文档中,字母盒子粘合到其他字母盒子上形成单词,然后这些单词弹性地粘合到其他单词上形成句子。句子被分成行并放置在段落盒子里。弹性胶水被挤压或拉伸以使段落盒子内的行完全对齐。段落盒子粘合到图表盒子,依此类推。
虽然盒子可以容纳其他盒子,但并非所有可以生成盒子的命令都可以在所有其他可以生成盒子的命令中使用。对于这些限制,通常有解决方法。
盒子的尺寸通常与其内容的尺寸和位置相关,但并非必须如此。许多盒子命令都接受自定义宽度和/或高度,并且还有其他命令会影响盒子的形状和位置。盒子相对于其他盒子放置,而可见元素相对于包含它们的盒子放置。
关于盒子和胶水的更完整描述可以在 Donald E. Knuth 的《TeXbook》的第 11 章和第 12 章中找到。可以在 http://www.personal.ceu.hu/tex/spacebox.htm 找到基本的 LaTeX 盒子和胶水命令列表。
TeX 字符盒子具有三个维度属性
- 高度是基线到盒子顶部的长度。
- 深度是基线到盒子底部的长度。
- 宽度是盒子的宽度。
字符盒子在基线处粘合在一起。
\parbox
是一个以段落模式格式化的特定宽度盒子。在段落模式下,文本被分成行,行被分成页面。
\parbox[pos][height][contentpos]{width}{text}
width 定义段落盒子的宽度。文本将被分成行,以使其适合此宽度。除了固定长度,您还可以提供用户定义的长度宏或 TeX/LaTeX 定义的长度宏和基元,例如 \width
、\height
、\depth
和 \totalheight
。(有关深度和高度的解释,请参见上面的字符盒子。)
height 定义 \parbox
的高度。
pos 选择要连接的哪个基线。它可以是 top(顶部)、bottom(底部)或 center(中心)。此参数对于新手来说通常令人困惑!请参见下面的特殊说明。
contentpos 在盒子内定位盒子的内容。它可以是 center(中心)、top(顶部)、bottom(底部)或 spread(分散)。请注意,如果盒子的大小不超过其包含的文本,则 contentpos 无效。
\pbox
可在 pbox 包中使用。\pbox
具有与 \parbox
相同的参数,但如果用户提供的宽度参数大于 pbox 的实际内容,则 pbox 会缩小以适应内容。这仅在内容包含手动换行符并且您希望适应结果材料时才有用。
\pbox[pos][height]{width}{text}
minipage 环境采用与 \parbox
相同的参数,并且其行为与 \parbox
几乎相同。minipage 和 \parbox
之间的区别在于,\parbox
只能包含单个段落,并且您不能在其中使用所有命令和环境,而 minipage 可以包含多个段落,实际上,几乎可以包含任何内容。
\begin{minipage}[pos][height][contentpos]{width} text \end{minipage}
您可以使用 minipage、\parbox
和 \pbox
将段落嵌入到非段落盒子中。例如
\fbox{%
\parbox{\textwidth}{
Some very long text\\
that would not be allowed\\
in an fbox.
}%
}
|
当 contentpos 缺失或等于 pos,以及任何时候 pos= center 时,对齐参数 pos 并不指代 \parbox
的边界。在任何这些情况下,对齐参数都会选择 \parbox
内部的哪一行文本用于对齐段落框。 \parbox
会被放置,使得所选文本行的基线与 \parbox
粘贴到的框的基线对齐。因此,如果 pos 设置为 top,则 \parbox
中第一行的基线将与 \parbox
外部的基线对齐。在只有一个文本行的特殊情况下,该行文本同时是顶部、底部和中心行,并且更改 pos 似乎不会有任何作用,除非添加了其他文本。
如果 contentpos 存在且不等于 pos,并且 pos 不是 center,则 \parbox
将在其边界处对齐。
Makebox 创建一个单行框,可以选择固定宽度,否则足够容纳其内容。请注意,宽度不必大于内容:例如,将宽度设置为 0 会排版内容而不更改当前位置。(例如,这允许覆盖。)Makebox 通常用于防止连字符(参见 连字符)或仅用于防止属于一起的文本被放置在不同的行上。您不能在 Makebox 内放置换行符 (\\)。mbox 是 Makebox 的简写无选项版本。
\mbox{text}
\makebox[width][pos]{text}
|
pos 参数采用一个字母的值:center、flushleft、flushright 或将文本spread 以填充框。
\makebox[0pt]{Some text} over this text
\makebox[15ex][s]{Censored text}\hspace{-15ex}\makebox[15ex][s]{X X X X X}
Text \makebox[2\width][r]{running away}
|
命令 \framebox
的行为与 \makebox
完全相同,只是它还会在内容周围绘制一个框。
\fbox{text}
\framebox[width][pos]{text}
|
以下示例显示了您可以使用 \makebox
和 \framebox
命令执行的一些操作。
\makebox[\textwidth]{c e n t r a l} \par
\makebox[\textwidth][s]{s p r e a d} \par
\framebox[1.1\width]{Guess I'm framed now!} \par
\framebox[0.8\width][r]{Bummer, I am too wide} \par
\framebox[1cm][l]{never mind, so am I}
Can you read this?
|
您可以调整以下框架长度。
\fboxsep
:框架和内容之间的距离。\fboxrule
:规则的粗细。
这将打印一个较粗且距离较远的框架。
\setlength{\fboxsep}{10pt}
\setlength{\fboxrule}{5pt}
\fbox{A frame.}
|
这显示了字母的方框框架。
\setlength{\fboxsep}{0pt}
\fbox{A}
|
提供了 framed 包,它添加了 framed 环境,提供了一种在文档中轻松设置段落框架的方法。
\usepackage{framed}
% ...
\begin{framed}
This is an easy way to box text within a document!
\end{framed}
|
savebox 是一个未渲染的框,保存用于以后通过 usebox 命令重复渲染。
\newsavebox{\boxname}
\savebox{\boxname}{some content}
\usebox{\boxname}
|
命令 \newsavebox
创建一个用于存储内容的占位符;命令 \savebox
将指定的内容存储在占位符中,而不会在文档中渲染它;并且 \usebox
将占位符的内容渲染到文档中。
参见 颜色。 \fcolorbox
也可以使用 \fboxsep
和 \fboxrule
进行调整。
fancybox 包提供了其他框。
\doublebox
\ovalbox
\shadowbox
现在我们控制了水平方向,接下来的明显步骤是控制垂直方向。对于 LaTeX 来说这不成问题。
\raisebox{lift}[height][depth]{text}
|
命令允许您定义框的垂直属性。您可以在前三个参数中使用 \width
、\height
、\depth
和 \totalheight
,以作用于文本参数内框的大小。两个可选参数分别设置 raisebox 的高度和深度。例如,您可以观察嵌入 framebox 时它们的区别。
\raisebox{0pt}[0pt][0pt]{\Large%
\textbf{Aaaa\raisebox{-0.3ex}{a}%
\raisebox{-0.7ex}{aa}%
\raisebox{-1.2ex}{r}%
\raisebox{-2.2ex}{g}%
\raisebox{-4.5ex}{h}
}
}
he shouted but not even the next
one in line noticed that something
terrible had happened to him.
|
参见 旋转。
graphicx 包提供了其他框。
\resizebox{10ex}{2\baselineskip}{Dunhill style}
\scalebox{10}{Giant}
|