📄 custom.tex
字号:
\begin{verbatim}
Some text \ldots
\vspace{\stretch{1}}
这一行将出现在页的最后。\pagebreak
\end{verbatim}
\end{code}
同一段或同一个表格中两行之间的距离可以用如下命令来指定:
\begin{lscommand}
\ci{\bs}\verb|[|\emph{length}\verb|]|
\end{lscommand}
使用命令~\ci{bigskip}~和~\ci{smallskip}~你可以获得一个预定义的垂直距离。
\section{页面的布局}
\begin{figure}[!hp]
\begin{center}
\makeatletter\@layout\makeatother
\end{center}
\vspace*{1.8cm}
\caption{页面布局参数}
\label{fig:layout}
\end{figure}
\index{page layout}
\LaTeXe{}~允许你在~\verb|\documentclass|~命令中指定页面尺寸(\wi{paper size})。
然后它将自动的选择其它参数。但有些时候你可能不满意~\LaTeX{}~的预设值,这个
时候你可以自己改变这些参数。
%no idea why this is needed here ...
\thispagestyle{fancyplain}
图\nbs\ref{fig:layout}~中显示了所有能改变的页面参数。这个图是用~\pai{layout}~宏包
获得的\footnote{\texttt{CTAN:/tex-archive/macros/latex/required/tools}}。
\textbf{先等等!} \ldots~在你开始“让这个狭窄的页面看起来宽一点”之前,先花一些时间
想想。和~\LaTeX{}~中的大多数规定一样,缺省的页面布局是有其内在原因的。
确实,相对于你的MS\ Word页面来说,它看上去非常的狭窄。但是看看你喜欢的书籍
\footnote{我说的是卓有声誉的出版商正式出版的书籍}并且统计每个标准文本行的字符数目。
你会发现每行的字符不超过66个。现在你的~\LaTeX{}~页面也正是如此。经验显示,如果在
一行中塞入更多的字符,阅读将变得困难。这是因为眼睛从行的开始移动到行的结束变得困难了。
这也是报纸为何要排版成多栏形式的原因。
因此如果你决定增加文本的宽度,头脑中要明白你正在使你的作品变得难以阅读。警告已经
说的够多了,接下来我将告诉你如何去做。
\LaTeX{}~提供了两个命令来改变这些参数。他们通常在文章的导言部分使用。
第一个命令给某个参数一个固定的值:
\begin{lscommand}
\ci{setlength}\verb|{|\emph{parameter}\verb|}{|\emph{length}\verb|}|
\end{lscommand}
第二个命令给某个参数增加一个固定的大小。
\begin{lscommand}
\ci{addtolength}\verb|{|\emph{parameter}\verb|}{|\emph{length}\verb|}|
\end{lscommand}
第二个命令实际上比~\ci{setlength}~命令更为实用,因为你可以通过修改已有的设置来获得
所需的结果。为了给文本的宽度增加1厘米,我将如下的命令放置到导言部分。
\begin{code}
\verb|\addtolength{\hoffset}{-0.5cm}|\\
\verb|\addtolength{\textwidth}{1cm}|
\end{code}
在进行这个工作的时候,你可能会想要看看\pai{calc}包,它允许你在~setlength~的参数
中进行算术运算。它可以运用到任何用数值作为参数的函数中。
\section{关于长度的更详细的信息}
只要有可能,我通常都避免在~\LaTeX{}~文档中使用绝对长度。相反的,我一般通过页面
中其它元素的宽度或高度来指定长度。比如一个图形,我指定~\verb|\textwidth|~作为
它的宽度从而使得图形恰好充满整个页面。
下面的三个命令允许你获得一个文本串的宽度、高度以及深度。
\begin{lscommand}
\ci{settoheight}\verb|{|\emph{lscommand}\verb|}{|\emph{text}\verb|}|\\
\ci{settodepth}\verb|{|\emph{lscommand}\verb|}{|\emph{text}\verb|}|\\
\ci{settowidth}\verb|{|\emph{lscommand}\verb|}{|\emph{text}\verb|}|
\end{lscommand}
下面的例子显示了这些命令的一个可能的用途:
\begin{example}
\flushleft
\newenvironment{vardesc}[1]{%
\settowidth{\parindent}{#1:\ }
\makebox[0pt][r]{#1:\ }}{}
\begin{displaymath}
a^2+b^2=c^2
\end{displaymath}
\begin{vardesc}{Where}$a$,
$b$ -- are adjunct to the right
angle of a right-angled triangle.
$c$ -- is the hypotenuse of
the triangle and feels lonely.
$d$ -- finally does not show up
here at all. Isn't that puzzling?
\end{vardesc}
\end{example}
\section{盒子}
\LaTeX{}~通过盒子来建立整个文档的布局。首先,每个字符都是一个小的盒子,
这些盒子连接起来构成单词,单词本身连接起来构成一行。值得注意的是,单词
之间的连接是一个橡皮连接,\LaTeX{}~将自动进行调整使得单词将恰好构成一行。
我承认,这里的描述是实际情况的一个简化了许多的版本,但重点在于~\TeX{}~
主要操作盒子和连接。不是只有一个字母才能成为一个连接,你几乎可以把
任何可见元素(包括盒子自身)放到一个盒子中。 然后~\LaTeX{}~将会像处理
单个字母一样处理这个盒子。
在过去的章节中你已经遇到了一些盒子的使用,尽管我并没有明确的说出来。例如
~\ei{tabular}~环境和~\ci{includegraphics}~命令就都构造了一个盒子。这就
意味着你可以轻松的将多个表格和图像并列排列。你唯一需要保证的就是它们
宽度的总和不大于文本宽度。
使用如下命令可以把一个段落放置到盒子中:
\begin{lscommand}
\ci{parbox}\verb|[|\emph{pos}\verb|]{|\emph{width}\verb|}{|\emph{text}\verb|}|
\end{lscommand}
也可以用下面这个命令完成同样的事情:
\begin{lscommand}
\verb|\begin{|\ei{minipage}\verb|}[|\emph{pos}\verb|]{|\emph{width}\verb|}| text
\verb|\end{|\ei{minipage}\verb|}|
\end{lscommand}
参数~\texttt{pos}~可以取以下字符中的一个~\texttt{c, t}~或~\texttt{b},
这个参数用于控制盒子相对环绕文本基线的垂直位置。参数~\texttt{width}~用于
调整盒子的宽度。这两个环境的主要不同之处在于你可能无法在一个~\ei{parbox}~
环境中使用某些命令或者环境,而几乎任何东西都可以在~\ei{minipage}~环境中使用。
\ci{parbox}~中可以包含整个段落,完成分行在内的几乎所有事情。与之不同,
\LaTeX{}~中还存在另外一类盒子用于处理水平对齐的材料。我们已经知道其中的
一个~-- \ci{mbox},它简单的将其它盒子包含成为一个盒子,可以用于防止
~\LaTeX{}~断开两个单词。因为盒子中可以包含盒子,因此它可以给予作者强大的灵活性。
\begin{lscommand}
\ci{makebox}\verb|[|\emph{width}\verb|][|\emph{pos}\verb|]{|\emph{text}\verb|}|
\end{lscommand}
参数~\texttt{width}~定义了生成的盒子从外部观察的宽度\footnote{这意味着在盒子
内部看来,盒子的宽度可能会小一些,你甚至可以将盒子的宽度设置为~0pt,这样可以
使得盒子中的内容不影响盒子外部的布局。}。在进行参数设置的时候,你也可以传递
~\ci{width}、~\ci{height}、~\ci{depth}~和~\ci{totalheight}~给~\texttt{width}~
参数。这几个值是测量盒子内部文本来获得的。参数~\emph{pos}~接受一个字符:
\textbf{c} --~居中、\textbf{l} --~靠左、\textbf{r} --~靠右和~\textbf{s} --~
将文本均匀分布到整个盒子中。
命令~\ci{framebox}~和~\ci{makebox}~完成同样的工作,不同之处在于它在内部文本
的周围画出一个矩形框。
下面的例子演示了你使用命令~\ci{makebox}~和~\ci{framebox}~能完成的工作:
\begin{example}
\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?
\end{example}
现在我们已经知道怎么控制盒子的水平方向长度了,接下来的步骤是学习如何控制
垂直方向\footnote{全面控制仅仅是水平方向控制和垂直方向控制的同时运用~\ldots}。
对于~\LaTeX{}来说,命令
\begin{lscommand}
\ci{raisebox}\verb|{|\emph{lift}\verb|}[|\emph{depth}\verb|][|\emph{height}\verb|]{|\emph{text}\verb|}|
\end{lscommand}
让你能够定义盒子的高度。你可以前面三个参数中使用~\ci{width}、\ci{height}、\ci{depth}~
和~\ci{totalheight},这样可以使得盒子的参数能够与盒子内部的文本匹配。
\begin{example}
\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.
\end{example}
\section{标尺和支撑}
\label{sec:rule}
我们之前曾经使用过命令
\begin{lscommand}
\ci{rule}\verb|[|\emph{lift}\verb|]{|\emph{width}\verb|}{|\emph{height}\verb|}|
\end{lscommand}
通常它被用来输出一个黑色的矩形。
\newpage
\begin{example}
\rule{3mm}{.1pt}%
\rule[-1mm]{5mm}{1cm}%
\rule{3mm}{.1pt}%
\rule[1mm]{1cm}{5mm}%
\rule{3mm}{.1pt}
\end{example}
这个命令可以用来产生水平方向和垂直方向的线条。例如扉页上的线条就是用一个~\ci{rule}~命令创建的。
一种特殊的应用就是没有宽度只有高度的标尺。在专业的出版术语中,这被称为支撑(\wi{Struts})。
它被用来保证文档的一部分具有一个确定的高度最小值。你可以在~\texttt{tabular}~环境中使用支撑
来使得某行具有一个特定的高度最小值。你也可以在一个环境中使用它来保证一行具有一个高度最小值。
\begin{example}
\begin{tabular}{|c|}
\hline
\rule{1pt}{4ex}Pitprop \ldots\\
\hline
\rule{0pt}{4ex}Strut\\
\hline
\end{tabular}
\end{example}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "lshort2e"
%%% End:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -