用LaTeX写C语言实验报告2:封面的制作

继上回工具已经准备好,接下来就应该是正式开始制作了吧?

但在开始之前我们先了解一下基本语法知识吧hhh


TeX文档由导言区和正文区组成,

\documentclass{article}
\usepackage{graphicx} % 图形拓展库,导入它才能显示图片
\usepackage[a4paper]{geometry} % 调整纸张大小和页边距的包,中括号中规定了纸张大小
\geometry{left=2.0cm,right=2.0cm,top=2.0cm,bottom=2.0cm} % 页边距设置
% 导言区的其他内容
\begin{document}
   Hello LaTeX
   % 正文部分的其他内容
\end{document}

第一行的\documentclass{article},用来标注文档类型,包括article,book,report等等。
从第二行开始到\begin{document}之前,都是导言区的内容,一般用来导入拓展包(就和C语言里的#include<xxx>差不多作用),定义一些全局属性什么的。例如这里导入了图形拓展包和geometry拓展包,然后设置了页边距什么的。
\begin{document}\end{document}里面包围的则是正文,文档的所有内容都在这里。


TeX主要有两种类型的语句(姑且叫它语句吧)
第一种叫做命令,像\usepackage{graphicx}\documentclass{article}这样的叫就是命令,只占一行,它的标准格式如下:

\commandname[arg1]{arg2}

也存在多个中括号和大括号的情况,具体我也不是很清楚

第二种叫环境,环境有三部分,分别是开始的\begin{environmentname},中间的文本以及结束的\end{environmentname},支持多级嵌套。


然后你会发现写中文会编译错误或者编译成功了也无法显示。前面我说了原本TeX的设计者压根就没考虑亚洲国家的语言,所以难怪不支持中文,不过还好我们国人很强大,将中文已经适配好了。
只要在导言区加一个\uscpackage{ctex}就可以完美的支持中文,或者直接用\documentclass{ctexart}代替原来的\documentclass{article}也可以。


基础知识介绍完毕,接下来开始正式制作吧!

我要做的实验封面大致上长这样

首先遇到的难题就是修改字体大小,根据网上所查,改字体大小有下面的一系列命令:

\tiny
\scriptsize
\footnotesize
\small
\normalsize
\large
\Large
\LARGE
\huge
\Huge

字体大小依次从小变大。

但我试了之后发现最大的 \Huge依然不够大,
后来我又想起了ctex自带的字体大小命令:\zihao{-5},里面的数字对应中文里的字体大小,例如5就是五号字体,-5就是小五号字体,而0则是初号。但我尝试之后发现最大的初号还是不够大。emmm,只能继续百度了。

搜寻一整子之后发现了这个命令\fontsize{24pt}{24pt},它可以任意设置字体大小,前面的数字代表字体的大小,这里的单位pt和我们word上的字体单位一样,后面的数字百度上说是行距,但我改了以后没什么变化,改成0也没事,它的作用我还不清楚,这里存疑。

需要注意的是上面说的这些改变字体大小的命令,只要在某个位置有这个命令,接下来所有的文字的字体都会变成同样的大小。

如果只想临时改变字体大小的话可以这样 {\Huge 最大字体},这样就不会影响后面文字的大小了。我估计这些命令的作用域(照抄C语言里面的概念hhh)都是在当前大括号内部。


字体的问题解决之后又遇到了新问题,“南华大学”和“实验报告”之间隔得距离太近,要拉开一点,要用到\vspace*{24pt},里面的数字就是垂直间隔的距离。还有类似的命令\hspace*{24pt}是控制水平间隔的。

做完之后整体效果还不错:
\documentclass[UTF8]{ctexart}
\usepackage[a4paper]{geometry} % 调整纸张大小和页边距的包,中括号中规定了纸张大小
\geometry{left=2.0cm,right=2.0cm,top=2.0cm,bottom=2.0cm} % 页边距设置
\begin{document}
    \begin{titlepage}
        \heiti
        \vspace*{64pt}
        \begin{center}
            \fontsize{72pt}{0} 南华大学\\
            \vspace*{36pt}
            \fontsize{48pt}{0}{实\quad 验\quad 报\quad 告}\\
            \vspace*{48pt}
            \LARGE(20\quad\~{}20\quad 学年度\qquad 第\quad 学期)\\
            \vspace*{48pt}
        \end{center}
    \end{titlepage}
\end{document}

这里面还有需要解释的地方就是TeX里面符号不能直接写,要改成\~{},还有中文里面空格也不能直接写,要在前面加一个\,与此类似的标点还有:

# 用在宏定义中
$ 数学模式符号
% 注释符号
^ 上标符号
& 表格对齐符号 
{ } 分组符号 
_  数学模式的下标符号
\ 宏命令符号

它们都因为有特殊含义不能直接使用,基本上都是通过在前面加一个\来输入,除了 \符号是\textbackslash^符号是\^{}

center环境中的文字会居中,与此类似地还有flushleft和flushright环境,分别是左对齐和右对齐。至于那个titlepage环境,本来多页的文档会在右上角默认显示当前的页数,封面肯定不需要页数嘛,在titlepage环境中就不会占据页数了,还有自动分页的功能。

至于那个 \heiti嘛,顾名思义,之后的字体都变成黑体,是CTeX宏包提供的命令,与此类似的还有\fangsong \kaishu \songti,意思大家肯定也可以猜出来。

关于空格和换行

在latex里多个空格与一个空格效果是一样的,而且在中文之间普通的空格也没用,得在前面加一个\,直接这样说说不明白,干脆上例子吧:

你好      哈哈哈哈hello     world

上面的代码生成后的文字是这样的:你好哈哈哈哈hello world,这下就明白了吧。英文中无论多少个空格都只算一个空格,而在中文中emmm无论多少个空格都相当于没有空格......不知道ctex的设计者怎么想的。
于是想用空格的话得用命令写,除了前面讲的在空格前加\代表一个空格之外,汇总一下有这些命令:

a\qquad b   %四个正常空格
a\quad b    %两个正常空格
a\ b        %正常空格,也就是我们按下空格键所产生的空格
a\;b        %小空格
a\,b        %超小的空格
a\!b        %a和b之间完全紧贴在一起,需要反向缩进

至于这个小和超小具体有多小就自己尝试一下吧,毕竟实践出真知hhhhh

关于回车的话,TeX里面直接回车是不能换行的,得用\newline来换行,或者直接打两个斜杠\\也是一样的效果。


接下来便是下面的填空部分


本以为很简单,只要用下划线命令\underline{}然后在里面疯狂加空格就好了,这样确实可以实现功能,但有一个问题,就是我后期是要把它做成模板的,让用户可以像\documentclass{report}这样使用它。那我肯定不能让用户自己决定放多少空格,而且单纯用空格的话里面的文字改了的话还得修改空格的数量与位置,非常麻烦。

于是我上网寻找,找到了一个非常好的命令:

\makebox[宽度]{文本}

这个命令可以创造一个看不见的矩形,将文本包围在里面,里面的文本默认是居中,如果不想居中的话可以这样:\makebox[宽度][位置]{文本},位置那里可以输入的值有l:左端;r:右端;s:两端。
这个命令就很舒服了,还可以精准控制下划线的宽度,岂不美哉?

还有类似的命令叫framebox,区别是会有一个黑色的框框将文本包围起来。


经过多次努力,封面完成了
代码如下:

\documentclass[UTF8]{ctexart}
\usepackage[a4paper]{geometry} % 调整纸张大小和页边距的包,中括号中规定了纸张大小
\geometry{left=2.0cm,right=2.0cm,top=2.0cm,bottom=2.0cm} % 页边距设置
\begin{document}
    \begin{titlepage}
        \heiti
        \vspace*{64pt}
        \begin{center}
            \fontsize{72pt}{0} 南华大学\\
            \vspace*{36pt}
            \fontsize{48pt}{0}{实\quad 验\quad 报\quad 告}\\
            \vspace*{48pt}
            \LARGE(20\quad\~{}20\quad 学年度\qquad 第\quad 学期)\\
            \vspace*{48pt}
        
            \LARGE 课程名称\ \ \underline{\makebox[200pt]{C程序设计}}\\
            \LARGE 实验名称\ \ \underline{\makebox[200pt]{成绩管理系统 V2.0}}\\
            \vspace*{72pt}
        
            \Large 姓名\ \ \underline{\makebox[108pt]{}}\ \ 学号\ \ \underline{\makebox[108pt]{}}\\
            \Large 学院\ \ \underline{\makebox[108pt]{}}\ \ 班级\ \ \underline{\makebox[108pt]{}}\\
            \Large 地点\ \ \underline{\makebox[108pt]{}}\ \ 教师\ \ \underline{\makebox[108pt]{}}\\
        \end{center}
    \end{titlepage}
\end{document}

生成后的pdf是这样的:

哇,简直是太完美了。


总结

由于本期新学了很多东西,在这里总结一下
首先TeX有两种语句:\commandname[arg1]{arg2}\begin{environmentname}中间文本\end{environmentname},分别叫命令和环境
然后一个TeX文档有两部分,分别是导言区和正文区,它们各有各的作用
接着是不能直接输入,而是要转义的符号:~#$%^&{}_\
最后是一堆命令:

\documentclass{article}  %定义文档类型
\uscpackage{ctex}  %导入拓展包,这里是中文支持包

%从小到大的各种字体大小
\tiny  \scriptsize  \footnotesize   \small   \normalsize
\large \Large    \LARGE   \huge   \Huge

\zihao{-5}  %设置中文字号
\fontsize{24pt}{24pt}  %设置具体的字体大小,第二个参数作用不明
\vspace*{24pt}    \hspace*{24pt}  %设置垂直和水平间距
\\   \newline  %换行
\qquad \quad \  a\; \, \!  %从大到小的各种空格
\underline{文本}  %给文本加下划线
\makebox[宽度][位置]{文本}  %在文本外面包围一个虚拟的矩形,默认为居中
\framebox[宽度][位置]{文本} %周围有黑色的边框,其他与上面一致
\heiti \fangsong \kaishu \songti %各种中文字体

还有两种环境

\begin{titlepage} 封面内容 \end{titlepage} %设置里面的内容为封面,不占据一个页数
\begin{center|flushleft|flushright} %居中,左对齐和右对齐

本期到此结束,让我们下期再见

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,125评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,293评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,054评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,077评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,096评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,062评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,988评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,817评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,266评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,486评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,646评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,375评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,974评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,621评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,642评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,538评论 2 352

推荐阅读更多精彩内容