这篇文章是对用TaX做施工方案(施工组织设计)的一个总结,文章内容也适用于其它相应类型的排版。
1 前言
最近做一个施工方案,在经过一段费劲的WPS(Word也会一样)文本编辑之后,终于完成了。但整个过程排版实在太痛苦,关键是对最终结果非常不满意。这个过程和Knuth当年的经历多少有点相似。因此产生了用TeX重新把方案进行排版的想法。之前用TeX排版过一些东西,感觉使用起来还是比较难,也没有持续使用,再加上后来写东西基本用Scribble(这篇文章仍然使用的Scribble完成的,这是TeX不满足的地方,这也是很多人用Markdown的原因吧。不过我觉得Markdown仍然没有Scribble满足需求),效果也不错,功能更灵活,久了就有些将TeX荒废了。
想好了就立马付诸实施,用了一周的时间,虽然费了一些周折,还是完成了。的确如我所愿,TeX的排版能力非凡,出来的效果也非常满意。这次排版的内容比较多,又是一本书(方案写得比较完整,内容比较多),涉及各类排版技术,基本都涉及到了。因此想做个总结,也便于以后使用。
1.1 认识TeX
避免以前不认识TeX的朋友没那么蒙,这里简单介绍一下TeX的历史。
TeX是由著名的计算机科学家Donald E. Knuth(高德纳)因不满意出版公司排版的他的著作《The Art of Computer Programming》(他因之获得图灵奖)效果而发明的排版系统。利用TeX可以很容易地生成高质量的dvi文件,打印输出;也可以通过编译生成PDF文件。
它在学术界十分流行,特别是数学、物理学、统计学与计算机科学界。TeX被普遍认为是一个很好的排版工具,特别是在处理复杂的数学公式时。利用诸如是LaTeX等终端软件,TeX就能够排版出精美的文本。常用的软件LaTeX附带的TeXworks以及TeXstudio。
1.2 为什么要用TeX
-
格式与内容分离:格式在导言区统一控制,文档内容在正文,对排版格式的控制非常方便。把自己要用的文档排版形成了模板后,以后就只需考虑文档的内容,无需每次为排版格式费心。
-
高质量的输出:TeX遵循传统的排版规则,以排版的质量为最重要的目标。这是我要重新排版的重要原因,另外一个原因是考虑到重用性。
-
超常的稳定性:自从TeX出现以来,只有一些微小的改动。稳定性还体现在TeX系统极少会崩溃,可以处理任意大小的文件,即使你的计算机的内存很少,TeX也可自如的工作。
-
TeX是可编程的:TeX是一种宏命令编程语言,你可以用很少的命令来完成非常复杂的工作。如果需要的话,你也可以重新定义TeX的所有命令来得到特殊的效果。
-
高度的灵活性:由于其内核的设计方式,世界上的TeX使用者可以让TeX做几乎任何工作。你可以用TeX来排版英文文本,也可以排版德文、俄文、中文等多种语言。你还可以用TeX来排版乐谱,象棋、围棋棋谱等等。
-
简单方便:TeX文档是ASCII码的文本文件。因此,即使你手边没有TeX系统,你也可以看懂绝大部分的内容。TeX文件的这种特点使得它占用很少的存储空间,也可以很方便传输。
-
跨平台:目前为止,TeX几乎在所有的计算机操作系统平台上得到实现。TeX的源文件可在不同的平台之间自由的交换,而得到的输出是完全相同的。
-
免费:TeX是免费软件,它的源程序也是免费的。同时也有一些具有各自特点(如或多或少的所见即所得特性的)和提供专家级帮助系统的商业版本。
-
超级技术支持:由于TeX并不是被某个公司所垄断开发,所以世界各地的使用者设计了统一的技术支持的方式。
-
TeX是一种乐趣:使用TeX不仅仅是一种工作手段,也是一种乐趣。它有挑战,也有荣誉。很多人在熟悉了TeX之后都开始把使用TeX作为一种爱好,而不是一件枯燥无味的劳动。(这个我的确感受到了!)
1.3 施工方案所涉及到的排版内容
我完成的施工方案最终结果形成了一本书,因此排版是按书籍的模式进行的。以下是这个施工方案所涉及的排版内容。
-
封面:用于展示项目名称、编写人及审批人等、编制日期,同时还需要一张展示项目情况的图片。
-
目录:这是我对常用的办公文档编辑软件最无语的地方,老是不是我希望的样子,从内容到外观都是如此。
-
章节:我希望内容能够分章、节、小节展示我编写的方案内容。每章独立成篇,每节内容都能有显眼的标题。章节都有我希望的格式,而且自动编号(这样就不用反复跳转去改编号了),格式可以进行统一设置。
-
表格:方案里有各种不同内容的表格,长表格能够跨页分段,而且能够标题重复。表格行的序号能自动编号免得反复跳转去改编号。表格可以有标题、有编号,能引用。
-
图片:方案中需要插入各种图片,这样可以更好解释需要表达的内容。图片需要标题,有编号,能引用。
-
页眉、页脚:我希望页眉页脚是我希望的样子,有公司名称(带图标那种)、方案名称、当前页所处的章节标题、页码这些。
-
文件分块:由于内容多(完成之后有100页左右),如果都写在一个文件里每次翻找内容很麻烦(WPS和Word就很麻烦,LibreOffce有分块编辑功能),如果按章节或其它逻辑关系进行分块编写,然后进行组合就方便多了。每次写一块,以后对有些固定内容的独立文件块还方便重用(比如组织机构、规章制度这些)。
大致就是这些需求,接下来我就把各个部分的需求分别实现。
2 基本内容
2.1 TeX文档的基本结构
最简单的TeX文档:
\documentclass{artical}
\begin{document}
\end{document}
包括两部分:导言区(\begin{document}之前的所有内容)和正文部分(\begin{document}和\end{document}之间的内容)。实际我们的TeX文档都会比这个复杂。
TeX文档可以添加注释,“%”字符后边跟着的内容是单行注释:
%当行注释。
在“iffalse”和“fi”之间的内容是多行注释:
iffalse
多行注释内容。
fi
多行注释除了用于多行的说明外,经常可以用来把不需要但又不想现在删除的内容隔离起来,这样就可以不参与文档的编译。
2.2 导言区
-
首先,我们需要设置文档类,如下:
\documentclass[a4paper,12pt,twoside,utf8]{book}
这里将文档设置为书籍(book)模式,参数选项里分别设置A4纸、字体设置为12磅、双面打印、编码采用UTF8格式。
设置双面打印格式是为了把页眉设置出企业名称(带图标的那种)、方案名称、章节名称、节名称等展示出来,但是后来遇到了打印机打印不了(卡纸)的尴尬,后来只好改成了 oneside 方式。
当修改成 oneside 后,文档编译后自动完成单面打印排版了,控制起来的确是超级方便,优势凸显。
TeX环境我用的是TeXLive,最新版为2023版,具体咋去下载安装这里就不用说了,百度一下就可以知道。这里贴一个官方网址出来:https://tug.org/texlive/。
-
其次,为了完成复杂的排版功能,TeX会将很多命令组合成宏包,我们这实际使用的时候通过引用宏包来实现实现很多排版功能。引用宏包如下:
\usepackage{宏包名称}
为了实现施工方案的排版,我们可能会用到了如下宏包:
序号
宏包
作用
1
ctex
使用中文内容
2
fancyhdr
设置页眉页脚
3
titlesec
设置章节格式
4
graphicx
控制浮动图片插入
5
longtable
使用长表格
6
booktabs
配合longtable绘制表格线
7
multirow
控制表格跨行合并
8
multicol
表格多栏
9
array
控制表格布局
10
enumerate
对有序列进行缩进控制
11
geometry
控制页面布局
12
float
提供位置控制
13
pgf
创建PostScript和pdf格式的图形
14
tikz
配合pgf宏包创建复杂图表
15
setspace
设置间距
在后续介绍中,我们每遇到使用相应内容设置时,就均支出需要用到宏包。
-
另外,我们在这里集中设置文档排版格式。如:设置章节格式、设置字号、设置页面布局、设置文档基本信息(标题、作者、日期等),以及需要在文档内容中重复使用的替代宏、计数器(行号之类的)等。
这部分后续做一个专门的小节来介绍。
2.3 正文部分
TeX的正文部分是我们书写文档的主要内容,也是排版输出的对象,包括封面、目录、章节、段落、参考文献等等。
-
封面在后边将用一个专门的小节来介绍。
-
目录在TeX中仅用一行代码就可以完成,TeX将根据文档书写的内容自动生成。生成目录的代码如下:
\tableofcontents
-
章节、段落这些内容是我们写文档的主要工作内容,涉及多方面的内容,后边会用大量篇幅来介绍这个。
-
参考文献我们暂不涉及,有需要的可以留给你自己去补充这方面的内容吧。
在实现过程中,为便于编辑,我把各个不同部分的内容按逻辑划分成多个部分(如:封面、概述等)分别保存为独立的文件,在主文件中对其进行引入即可。如:
\include{./封面}
另外,如果希望对文档内容的局部,如工程量表这类,也可以保存为独立文件,然后插入需要的地方即可:
\input{./工程量表}
插入文档(\input)和引入文档(\include)的区别在于,引入文档将对引入的内容排版在一个新的分页,而插入文档则在当前位置进行连续排版。
3 导言区设置
3.1 设置页面布局
页面布局确定页面大小、横竖、页边距、分栏等等。
-
页面大小:
页面大小我们在\documentclass已经设置为A4的,如果整本方案不改变页面大小,就这样就可以。
-
改变页面方向:
如果在某个位置希望改变页面方向,可以用\landscape命令来改变:
\begin{landscape}
%横置的页面
\end{landscape}
-
设置页边距:
我们这样来设置页边距:
%设置页面布局:
\geometry{left=3.18cm,right=2.54cm,top=2.54cm,bottom=2.54cm} %页边距
这是参照WPS的默认页边距来的,但是考略到我们是采用的book模式,为了留出装订位置,将左侧保留为3.18cm,而把右侧页边距设置为和上下一致。
-
设置分栏:
在方案中基本没啥分栏啥事,但在书写协议合同的时候最后签章部分会有需要,这里就简单描述一下。
\begin{multicols}{2} % 这个环境可以实现分栏,分2栏
%分栏文档内容
\end{multicols}
3.2 设置章节格式
%设置章节格式:
\titleformat{\chapter}{\centering\Large\bfseries}{第\,\chinese{chapter}\,章}{1em}{}
\titleformat{\section}{\raggedright\zihao{4}\bfseries}{\,\thesection\,}{1em}{}
\titleformat{\subsection}{\raggedright\zihao{4}\bfseries}{\,\thesubsection\,}{1em}{}
\titleformat{\subsubsection}{\raggedright\zihao{4}\bfseries}{\,\thesubsubsection\,}{1em}{}
第一行设置章的标题格式,内容居中,\Large的字号,采用\bfseries字体,章标题带“第”+章编号+“章”,间距为1em;
第二行设置节标题格式,\zihao{4}也是字号(在引入了ctex宏包后可用);
第三行设置小节标题格式;
第四行设置小小节标题格式,但在book模式下是没有意义的,要在artical
3.3 设置字号
由于我们之前已经引入了ctex宏包,因此我们可以这样设置后边的文档字号为四号字:
%设置中文字号:
\zihao{4}
3.4 设置文档基本信息
一般文档都涉及标题、作者、日期等,可以通过TeX相应的命令来完成。
\title{方案名称}
\author{企业名称或作者}
\date{X年X月X日}
第一行设置文档标题;第二行设置作者,对于我们书写的方案来说一般可能会写上企业名称;第三行设置编制日期。
当然,这里设置了这些内容并不代表会显示这些信息,我们可以在需要的时候使用它们。最典型的应用场景是生成默认封面页,会自动将这三个内容生成在封面页上。
3.5 计数器
在我们做方案的时候,经常都会做一些表格,表格里边一般就有“序号”这一列,里边装每行的行号。如果行号让系统自动编号就方便了。
这里我们就需要一个计数器。在每次做表格的时候将计数器重置,然后把计数器作为序号,就可以自动编号了。
首先,我们新建一个计数器:
%新建一个计数器,用于表格内的自动序号:
\newcounter{magicrownumbers}
然后,定义一个计数器变量:
\newcommand{\rownumber}{\stepcounter{magicrownumbers}\arabic{magicrownumbers}}
这里设置计数器变量对应与我刚才建立的计数器,而且数值以阿拉伯数字呈现。
最后,每次使用之前进行重置,这样计数器从1开始:
\setcounter{magicrownumbers}{0}%重置计数器
4 封面
TeX提供了一种简单生成封面的方式:
\maketitle
只需一行就能够生成封面,封面内容包括标题、作者、日期。
但是实际使用中,一般不会局限于以上需求内容。不同的项目对于施工方案封面的要求各有不同,但项目名称、编写人、审批人、编制日期这些一般都会有,同时可能还需要一张展示项目情况的图片。
实际操作中,我们使用单独的文件来实现封面,然后在主文件中引入封面文件,自成独立一页,如果以后遇到类似的需求,封面文件可以直接引用即可。
4.1 需用到的命令
序号 | 命令 | 宏包 | 作用 | |||
1 | \graphicspath | graphicx | 设置图片文件夹路径 | |||
2 | \pagestyle | fancyhdr | 设置页面页眉页脚格式 | |||
3 | \centering | graphicx | 设置内容居中 | |||
4 | \Large | ctex | 设置字号(四号14pt) | |||
5 | \huge | ctex | 设置字号(二号20pt) | |||
6 | \textbf | ctex | 设置文字粗体 | |||
7 | \includegraphics | graphicx | 插入图片 | |||
8 | \linewidth | geometry | 行宽 |
4.2 制作封面
以下我就按这个需求来实现施工方案的封面。
-
设置图片文件夹路径:
\graphicspath{{./}}%图片在主文件同一文件夹
-
设置页眉页脚格式:
\pagestyle{empty}
页眉页脚格式默认有四种:
序号
类型
意义
1
empty
没有页眉和页脚
2
plain
没有页眉,页脚中部放置页码
3
headings
没有页脚,页眉包含章节的标题和页码
4
myheadings
没有页脚,页眉页码和使用者所定义的信息
-
设置封面标题:
{\centering
{\Large\textbf{工程名称}\\}
{\huge\textbf{\thetitle}\\}
\vspace{5ex} }
这里\thetitle即是我们在前面设置的文档标题。
\vspace{5ex} 表示后边生成5ex的竖向空白。类似地,\hspace{5ex} 用于产生5ex的横向空白。
ex是排版的一种单位,表示一个X字符的高度。以下为TeX的常用排版单位:
序号
单位
意义
1
pt
点,1pt 约等于 0.35mm
2
mm
毫米,1mm 约等于 2.83pt
3
cm
厘米,1cm 约等于 28.35pt
4
in
英寸,1in 等于 72.27pt
5
em
字体宽度,1em等于当前字体中大写字母“M”的宽度
6
ex
当前字体中小写字母“x”的高度
7
px
像素,根据屏幕分辨率的不同,其实际大小会有所变化
-
插入封面图片:
\begin{figure}[H]
\centering\includegraphics[width=0.9\linewidth]{图片文件名称}
\end{figure}
\includegraphics的两个参数,图片宽(width)及高(height)。这里设置图片宽度为0.9倍行宽,图片高度参数未设置,会自动进行比例缩放。
-
签字栏:
\begin{table}[H]
\centering\large
\vspace{20ex}
\renewcommand{\arraystretch}{1.5} %调整行间距
\tabcolsep=0.5cm %调整列间距
\begin{tabular}{rl}
编制:&\makebox[0.3\linewidth]{}\\
\cline{2-2}
审核:&\\
\cline{2-2}
审批:&\\
\cline{2-2}
\end{tabular}
\vspace{2ex}
\end{table}
-
公司名称(图片表示):
\begin{figure}[H]
\centering\includegraphics[width=0.45\linewidth]{图片文件名称}
\end{figure}
-
日期:
\begin{table}[H]
\centering\large
\begin{tabular}{cccccc}
&年&&月&&日\\
\end{tabular}
\end{table}
封面页内容编辑排版好后,如前所述,保存为一个单独的文件(如:cover.tex),用\include插入到主文档中。
此外,一般会把封面页内容包含在titlepage环境中,这样TeX会自动将该环境内的内容独立为一个封面页,并不计算该页页码,页码默认从下一页起算。如下:
\begin{titlepage} 封面内容 \end{titlepage}
5 目录
用TeX书写目录比较简单,因为它是自动生成的。
如果我们采用预定义格式,只需要一行就可以了:
\tableofcontents %目录
实际上,我们希望目录页的页码显示格式和正文有所区别,而且是独立进行页码编号的。
因此,需要在添加目录内容之前先进行页码设置:
\frontmatter %关闭章节序号, 页码使用罗马数字 \zihao{4} %设置字号
另外,我希望目录页仍然要显示和正文相同格式的页眉页脚。由此,也需要在添加目录内容之前设置好页眉、页脚内容及格式。这部分我放到下一节讲。
6 页眉和页脚
上节讲到在添加目录内容之前需要先对页眉、页脚进行设置,这里我们来实现它。
设置页眉页脚的自定义样式需要用到宏包\usepackage{fancyhdr}。
-
首先,通过如下命令清除页眉页脚样式:
\pagestyle{fancy}
\fancyhf{}
-
然后,分别设置页眉、页脚的内容。
对单面模式,用\fancyhead[L]、\fancyhead[R]分别设置左页眉为、右页眉的内容;用\fancyfoot[C]设置中页脚为页码。
\fancyhead[L]{
\begin{minipage}[b]{0.4cm}
\begin{figure}[H]
\left{\includegraphics[width=0.4cm]{企业徽标}}
\end{figure}
\end{minipage}
\begin{minipage}[b]{0.4\linewidth}
公司名称
\end{minipage} }
\fancyhead[R]{\rightmark}
\fancyfoot[C]{\thepage}
如果文档采用的是双页模式,可以在奇偶页设置不同的页眉页脚。
对单面模式来说,\fancyhead[L]、\fancyhead[C]、\fancyhead[R]分别表示页眉的左、中、右的内容;\fancyfoot[L]、\fancyfoot[C]、\fancyfoot[R]表示页脚的左、中、右内容。
而在双面模式,在L等后加上E(奇数页)或O(偶数页)指明所属内容。如:\fancyhead[LE]表示奇数页左页眉。
7 章节
TeX中章节分为如下几级:
分级 | 命令 | 名称 | 备注 | |||
1 | \part | 部分 | 在artical模式不可用 | |||
2 | \chapter | 章 | ||||
3 | \section | 节 | ||||
4 | \subsection | 小节 | ||||
5 | \subsubsection | 小小节 | 在book模式下不可用 | |||
6 | \paragraph | 段落 | ||||
7 | \subparagraph | 小段落 |
在导言区可以用\titleformat命令设置章节格式。我将方案文档各章节进行如下设置:
%设置章节格式:
\titleformat{\chapter}{\centering\Large\bfseries}{第\,\chinese{chapter}\,章}{1em}{}
\titleformat{\section}{\raggedright\zihao{4}\bfseries}{\,\thesection\,}{1em}{}
\titleformat{\subsection}{\raggedright\zihao{4}\bfseries}{\,\thesubsection\,}{1em}{}
%\titleformat{\subsubsection}{\raggedright\zihao{4}\bfseries}{\,\thesubsubsection\,}{1em}{}%book模式不用
章节序号是自动进行编号的。如果不希望显示章节序号,可在章节命令后加*进行说明,如:
\section*{施工用电安全措施}
段落缩进使用如下方式设置:
\setlength{\parindent}{2em} %设置段落缩进为2个字
\indent %启动段落缩进
\noindent %关闭段落缩进
设置好格式后,就可以按如下层次组织文档了:
\chapter{安全生产保证措施}
\section{施工用电安全措施}
\subsection{一般规定}
段落内容
8 表格
我在封面制作部分已经使用过表格。接下来我们来实现各类表格。
8.1 基本表格
\begin{tabular}{lr}
序号&内容1
\end{tabular}
这样就显示了两列一行内容,没有表格线。用表格进行排版时就常用这种方式。
8.2 表格的表格线
如需带表格线需要用到\hline命令,竖线用|进行说明:
\begin{tabular}{|l|r|}
\hline
序号1&内容1\\
\hline
序号2&内容2\\
\hline
\end{tabular}
记得要在每行末尾加上换行\\。
8.3 表格的标题及标签
如果要给表格加上标题\caption,或者给表格加上标签\label以便在其它地方进行引用\ref,则加上table环境:
如下表(\ref{带标注的表格}):
\begin{table}
\caption{带标注的表格}
\label{带标注的表格}
\begin{tabular}{|l|r|}
\hline
序号1&内容1\\
\hline
序号2&内容2\\
\hline
\end{tabular}
\end{table}
8.4 表头文字居中
\begin{table}
\centering
\caption{表头文字居中的表格}
\label{表头文字居中的表格}
\begin{tabular}{|c|l|l|c|l|}
\hline
\multicolumn{1}{|c|}{\textbf{序号}}&
\multicolumn{1}{|c|}{\textbf{设备类别}}&
\multicolumn{1}{|c|}{\textbf{安装方式}}&
\multicolumn{1}{|c|}{\textbf{安装高度}}&
\multicolumn{1}{|c|}{\textbf{备注}}\\
\hline
1&类型内容&方式内容&高度内容&备注内容\\
\hline
\end{tabular}
\end{table}
可以看出,这里主要是使用了\multicolumn。这个命令本是用于进行合并表格列的,这里将合并列数设置为1(不合并其它列),但是将位置参数设置为c(居中),从而实现调整局部单元格内容位置的功能。
8.5 列单元格自动换行
\begin{table}
\centering
\caption{自动换行的表格}
\label{自动换行的表格} \begin{tabular}{|p{0.05\linewidth}|p{0.4\linewidth}|p{0.15\linewidth}|p{0.05\linewidth}|p{0.15\linewidth}|}
1&类型内容&方式内容&高度内容&备注内容1-备注内容2-备注内容3\\
\hline
\end{tabular}
\end{table}
注意上边tabular环境开始的时候设置的p参数。这里限制了表格列宽,当列内容超过设定宽度的时候,即通过将列内单元格换行保持设定宽度。
8.6 跨行及跨列表格
上边讲过,跨列用的命令是 \multicolumn,而跨行用的命令则是\multirow,需要\usepackage{multirow}宏包支持。如下:
\begin{table}[h]
\caption{劳动力配备计划和工段划分表}
\label{劳动力配备计划和工段划分表}
\begin{tabular}{|c|l|c|c|l|}
\hline
\makebox[0.05\textwidth][c]{\textbf{序号}}&
\multicolumn{2}{|c|}{\makebox[0.4\textwidth][c]{\textbf{班组}}}&
\makebox[0.15\textwidth][c]{\textbf{人数}}&
\makebox[0.25\textwidth][c]{\textbf{施工范围}}\\
\hline
\multirow{3}*{1}&\multirow{3}*{强电组}&电工&1&\multirow{3}*{一层强电}\\
\cline{3-4} ~&~&普工&2&\\
\cline{3-4} ~&~&焊工&1&\\
\hline
\end{tabular}
\end{table}
这里还用到了\makebox命令,目的是将表头的内容限制在固定指定的宽度呢,实现列表头固定宽度。
对于跨列断开的表格线,竖向线是自动绘制的,横线用\cline代替\hline实现。
顺便提一句,如果想画虚线的表格线,用\hdashline命令,这需要画虚线的包\usepackage{arydshln}支持。
8.7 跨页表格
这种表格比较复杂,采用长表格实现。需要\usepackage{longtable}宏包支持。为了绘制长表格的表格线,还需\usepackage{booktabs}宏包。
%长表格,能够跨页断分表:
\begin{longtable}{|c|p{0.22\linewidth}|p{0.3\linewidth}|c|c|l|}
\caption{长表格标题}
\label{长表格标题}\\ %必须要“\\”
\hline
\multicolumn{1}{|c|}{\textbf{序号}}&
\multicolumn{1}{|c|}{\textbf{项目名称}}&
\multicolumn{1}{|c|}{\textbf{规格型号}}&
\multicolumn{1}{|c|}{\textbf{单位}}&
\multicolumn{1}{|c|}{\textbf{数量}}&
\multicolumn{1}{|c|}{\textbf{备注}}\\
\endfirsthead %第一页表头
\hline
\multicolumn{1}{|c|}{\textbf{序号}}&
\multicolumn{1}{|c|}{\textbf{项目名称}}&
\multicolumn{1}{|c|}{\textbf{规格型号}}&
\multicolumn{1}{|c|}{\textbf{单位}}&
\multicolumn{1}{|c|}{\textbf{数量}}&
\multicolumn{1}{|c|}{\textbf{备注}}\\
\endhead %其它页表头
\endfoot %第一页表尾
\endlastfoot %其它页表尾
\hline\1&项目名称内容&规格型号内容&单位内容&数量内容&备注内容\\
\hline
\end{longtable}
从上边就可以看出,除了环境为 longtable 之外,长表格设置的重点是需要添加 \endfirsthead、\endhead、\endfoot、\endlastfoot 四段,以实现不同页的显示情况。
另外,一定要记住在\label命令之后必须加上 \\ ,否则会出错。
8.8 表格序号
表格序号是最常用也是很重要的一项,在实际使用中最好能自动生成。
为了实现表格序号的自动编号,序号先定义编号的变量。这个工作需要在导言区中实现:
%新建一个计数器,用于表格内的自动序号:
\newcounter{magicrownumbers}
\newcommand{\rownumber}{\stepcounter{magicrownumbers}\arabic{magicrownumbers}}
\setcounter{magicrownumbers}{0}%重置计数器
当在表格中使用的时候,像这样来实现:
\setcounter{magicrownumbers}{0}%重置计数器
\begin{table}
\begin{tabular}{|c|l|l|c|l|}
\hline\rownumber&类型内容&方式内容&高度内容&备注内容\\
\hline\rownumber&类型内容&方式内容&高度内容&备注内容\\
\hline
\end{tabular}
\end{table}
9 图片
图片在方案文档中用得是很频繁的,毕竟一图胜千言,表达力是在太强了。
9.1 单张图片
用\includegraphics命令插入图片,这个命令需要\usepackage{graphicx}宏包支持。
实际上我们使用的时候,避免图片乱跑,需要用到figure环境对图片进行浮动定位,也需要设定其标题及标签以便标识及在文档中引用。如下:
%单张图片:
\begin{figure}[H]
\caption{图片标题}
\label{图片标签}
\centering{\includegraphics[width=\linewidth]{图片文件名称}}
\end{figure}
9.2 图片共享路径
为了避免每次插入图片时都要加上文件路径,可以统一设置图片路径。如下:
%设置图片路径:
\graphicspath{{./文件夹/文件夹/}}
注意:如果页眉页脚上使用了图片,这种情况下需要使用完整路径,否则将因为找不到图片而造成页眉页脚的图片显示不出来。
9.3 两张图片并排
有时需要并排两张图片并分别设置标题,这种时候需要 minipage 环境协助(在设置带企业徽标的页眉时用过这种方式)。如下:
%两张图片并排:
\begin{figure}
\begin{minipage}{0.48\linewidth}
\centering
\includegraphics[height=6cm]{图片文件名称}
\caption{图片标题-1}
\label{图片标签-1}
\end{minipage}
\begin{minipage}{0.48\linewidth}
\centering
\includegraphics[height=6cm]{图片文件名称}
\caption{图片标题-2}
\label{图片标签-2}
\end{minipage}
\end{figure}
10 文档分块
用Word这类文字处理软件应该多少有这个经历——内容越写越多,越多越难组织;某部分内容做了调整,往往就需要通篇检查;内容重用性不好,每次交叉引用都需要进行全文格式调整编辑。这简直一个巨大的痛苦!
TeX提供的文档分块很好的解决了这个问题。我们根据文档的逻辑关系将文档划分成不同的片段,各个编辑完成,然后组合在一起,格式统一设置。
TeX提供了两个命令实现文档分块:\include和\input。
\include会在之前和之后使用\clearpage或\cleardoublepage另起新页,同时将文件内容贴到\include{}命令所在位置。只可以用在文档区,不可以用在导言区;不可以递归调用。
\input把文件的内容复制到\input{}命令所在位置,并不做其他多余操作。无区域限制;可以递归调用。
可以看出
\clearpage
\input{文件}
\clearpage
实现功能和
\include{文件}一致。
但\input更灵活。
11 后记
以上提纲挈领地描述了在编写施工方案的过程中用到的一些TeX命令和使用。由于篇幅原因,不可能把相关的知识全都描述完整,只是一个总结,希望能起到抛砖引玉的效果。
如果有更深入的需求,可以在这个的基础上进行拓展,比如页眉页脚内容可以更丰富一些,可以根据自己的需求自定义封面,表格可以赋予不同单元格的颜色,图片的排版和组织更多元化,加上参考文献等等……
最后,以上内容是用Racket的Scribble语言书写并自动生成的。