Latex Review

写毕业设计论文才知道有Latex这种超棒的东西(之前就知道markdown). 众所周知,在mac上用word不仅难受,而且滚烫(还不是因为你买不起顶配?). 后来用Latex之后,就可以在自己喜欢的漂亮Ide(比如Sublime Text)上码字了,轻松舒适,自动排版,mac也退烧了…舒服~安装步骤在这里

简单语法

在我看来,Latex就相当于可以写CSS的markdown

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
\documentclass[a4paper]{article}
\usepackage[UTF8]{ctex}

\title{text}
\author{Arius}

\begin{document}

\section{testt}
\subsection{testt}
\subsubsection{testtt}
\subsubsection*{testttt}

testtttt

\end{document}

Latex通过\来定义关键字,特殊语法和文本都是通过beginend来控制

模板

第一行的documentclas中定义了纸张大小和默认样式,如

1
\usepackage[text={160mm,242mm},centering]{geometry}

下面可以通过usepackage关键字引入你需要的库,比如表格,图片等
所谓的模板就是替换文中的article,有一些学校会有指定好的模板
模板内的package注意也要tlmgr进行安装
其中的会定义大概的样式,和关键字等
如果没有模板的话,可以通过插入自定义样式的形式写入关键字和样式

自定义

以下是我所用到一部份样式,由于没有模板,所以大部分样式都是参照学校发的参考写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
\makeatletter

\linespread{1.15} % 设置行间距
\newcommand\dlmu[2][4cm]{\hskip1pt\underline{\hb@xt@ #1{\hss#2\hss}}\hskip3pt}
\newcommand{\chuhao}{\fontsize{42bp}{\baselineskip}\selectfont}
\newcommand{\xiaochu}{\fontsize{36bp}{\baselineskip}\selectfont}
\newcommand{\yihao}{\fontsize{26bp}{\baselineskip}\selectfont}
\newcommand{\xiaoyi}{\fontsize{24bp}{\baselineskip}\selectfont}
\newcommand{\erhao}{\fontsize{22bp}{\baselineskip}\selectfont}
\newcommand{\xiaoer}{\fontsize{18bp}{\baselineskip}\selectfont}
\newcommand{\sanhao}{\fontsize{16bp}{\baselineskip}\selectfont}
\newcommand{\xiaosan}{\fontsize{15bp}{\baselineskip}\selectfont}
\newcommand{\sihao}{\fontsize{14bp}{\baselineskip}\selectfont}
\newcommand{\xiaosi}{\fontsize{12bp}{\baselineskip}\selectfont}
\newcommand{\wuhao}{\fontsize{10.5bp}{\baselineskip}\selectfont}
\newcommand{\xiaowu}{\fontsize{9bp}{\baselineskip}\selectfont}
\newcommand{\liuhao}{\fontsize{7.5bp}{\baselineskip}\selectfont}
\newcommand{\xiaoliu}{\fontsize{6.5bp}{\baselineskip}\selectfont}
\newcommand{\qihao}{\fontsize{5.5bp}{\baselineskip}\selectfont}
\newcommand{\bahao}{\fontsize{5.0bp}{\baselineskip}\selectfont}
\newcommand{\resetCouter}{\setcounter{table}{0} \setcounter{figure}{0}}

\makeatother

makeatlettermakeatother之间可以创建内部命令
我就写了个style.tex,把所有自定义样式命令放进去
注意引用需要放到document之前
然后样式可以通过google搜索
有一些比较常用的记一下:

  • textsuperscript ,右上角引用标签
  • setcounter,可以设置图片或者表格的序号,可以刷新逻辑写到section这类标签里面
  • newcommand, 创建自定义指令
  • renewcommand,就是override,可以重写section这类的标签,把一些逻辑比如翻页,刷新couter写进去
  • captionsetupcaption这个package中的关键字,可以设置去掉图片介绍文本中的冒号

章节

article默认使用section来控制章节
章节可以用来分文件,设置翻页,刷新图,表计数等
默认使用章节是从零开始,合理但不一定满足个别需求
同样可以用setCounter命令为一开始章节修改计数

Latex可以通过\tableofcontents为章节生成目录
这也是Latex最方便的地方之一
当然每个目录都和章节一样有数字在前
如果有个别,不想出现数字,可以用类似section*的方式取消数字
这样使用之后,该章节不会出现数字同时也不会出现在目录中
可以通过\addcontentsline强制加入目录中

1
2
\section*{总\hspace{2em}结}
\addcontentsline{toc}{section}{总结}

目录与页码

目录可以通过\tableofcontents来自动生成
目录的样式可以重写修改

1
2
3
4
5
6
7
8
9
\titlecontents{subsection}[1.5em]{\songti \xiaosi}
{\thecontentslabel\quad}{}
{\titlerule*{.}\contentspage}
\titlecontents{subsubsection}[3em]{\songti \xiaosi}
{\thecontentslabel\quad}{}
{\titlerule*{.}\contentspage}
\titlecontents{section}[0pt]{\vspace{6bp} \heiti \xiaosi \bfseries}
{\thecontentslabel\quad}{}
{\titlerule*{.}\contentspage}

页码一般为居中显示
可以通过fancyhdr进行调整
同时它也可以调整页眉
不过如果直接设置的话,会和目录冲突

我的解决方案是,在显示摘要与目录之前加上\pagestyle{empty}
在正文,之前重新设置页码样式

1
2
3
4
5
6
7
8
9
10
11
12
13
\pagestyle{empty}
\input{chap/cover}
\input{chap/summary}
\newpage
\tableofcontents
\clearpage % 强制空白页面
\phantom{s} %

\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt} % 页眉横线消失
\fancyhead{} % 删除页眉样式
\fancyfoot{} % clear all footer fields
\fancyfoot[LE,RO]{\thepage}

设置之前需要先清空样式
通过设置LE,RO可以设置奇偶数左右页码
看需要设置加入一些文本到括号中

图片与表格

图片

需要分别引入graphicxtabularx,在document开始后,引入图片文件夹

1
\graphicspath{ {./img/} }

之后在文中引用图片

1
2
3
4
5
6
\begin{figure}[H]
\centering
\includegraphics[width=1\textwidth]{access}
\newFigureCaption{图片权限}
\label{fig:access}
\end{figure}

其中和表格一样[H]主要是为了让图片强制在该上下文位置出现
不然Latex会自动为你重新排序(虽然这样好像更好看点)
centering可以使该begin框内内容居中
然后设置图片宽度,可以指定宽度或者比列,后面的是图片名称,不需要写后缀
下方的caption是图片显示时出现的解释文本,latex会在编译时自动计数
label则是为了引用使用的关键字,随便定义,但全文不可重复
引用方式为\ref{fig:access},也可以自定义引用的样式,如下

1
\newcommand{\tabref}[1]{\wuhao \heiti \bfseries {表{\textsuperscript{[{\ref{tab:#1}}]}}}}

两张或者更多图片

有时候会有这种需要

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
\begin{figure}[H]
\centering
\begin{minipage}[t]{0.36\textwidth}
\centering
\includegraphics[width=1\textwidth]{chat}
\newFigureCaption{聊天界面}
\label{fig:chat}
\end{minipage}
\begin{minipage}[t]{0.36\textwidth}
\centering
\includegraphics[width=1\textwidth]{search}
\newFigureCaption{搜索界面}
\label{fig:search}
\end{minipage}
\end{figure}

表格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
\begin{table}[H]
\begin{center}
\caption{登录}
\label{tab:api_login}
\begin{tabular}{p{0.3\textwidth}|p{0.3\textwidth}|p{0.3\textwidth}}
\hline
名称 & 类型 & 说明 \\
\hline
usr & string & 用户账号 \\
\hline
pwd & string & 用户密码 \\
\hline
\end{tabular}
\end{center}
\end{table}

跟图片类似,设置居中(主要是对应label),引用label和解释文本
然后在表格关键字后设定单元格宽度
每行&分割,\\换行,\hline画线

表格和图片的counter可以通过重写的方式,定义前缀
设定section或者subsection相关等
然后通过重写该标签刷新counter

1
2
\renewcommand\thetable{\thesection{}.\arabic{table}}
\renewcommand\thefigure{\thesection{}.\arabic{figure}}

图文空白

一般来说会用[H]进行强制位置控制
这样的好处是美观
但latex不会切割图片和表格
所以会有出现一大部分是空白的现象

可以通过调整caption即文字解释的位置
或者通过调整图片大小
或者设置上下\vspace{-1cm}等方式调整
表格的话,个别需要是通过分割成两表优化显示

目前我不知道自动调节的方式,都是手动调整
而且部分老师有图内字体大小要求
这个还是比较蛋疼的,毕竟它是自适应的,必须手动调节了

这也是最烦人的部分了
这部分调节花的时间最多
如果遇到特别机车的老师,还是建议换回word把

对了,Latex的pdf不支持转换word
强行转也会转的格式一塌糊涂
所以记得问清楚老师允不允许用pdf

列表

列表有两个包enumitem,enumerate
好像是冲突的,最后用了enumitem
因为它可以设置全局列表行距和定义新的行关键字

1
\setlist{itemsep=-4pt}

一般用到的是itemizeenumerate
跟名字一样,一个是无序号,一个是有序号
可以通过设置label自定义序号的显示数字
或者罗马数字,或者加入其他样式

1
\begin{enumerate}[label={[\arabic*]}]

At Last

终于毕业了
以后不知道还有没有需要用到Latex的地方(写简历吗)
不过倒是毕业了忽然有更想读书的感觉

  • 本文作者: Arius
  • 本文链接: Latex Review
  • 许可协议: 除特殊声明外,本站博文均采用 CC BY-NC-SA 3.0 CN 许可协议,转载请注明出处!