Warning: 我是在Ubuntu
系统上学习使用LaTex
, 下面的code和command也是只针对Ubuntu
的, 其他系统未尝试.
Latex的由来
Tex
- 发音
Tech
, 所以呢,X
的没有s
音发出. - 由神一样的Donald Knuth发明. 他在1977年开始实现TEX引擎, 目的是为了让自己出版的书排版好看(他非常担心当时落后的排版技术会影响到自己的书. 猜测是巨作
The Art of Computer Programming
) - 现在使用的Tex引擎是经过完善后发行的.
LaTex
- 发音
Lay-tech
或Lah-tech
. - 由另一个神一样的Leslie Lamport在Tex引擎上开发而来.
注意了, Knuth, Lamport, 两个图灵奖获得者.
Basics
Latex基本格式与语法
作为程序员, 这个不需要解释.
对空白字符的处理
- Tab与空格都被当成空格处理
- 多个空格当成一个空格处理
- 忽略行首的空格
- 一次换行(即一次Enter) 被当作一个空格处理
- 一个空白行(两次Enter) 看作是一个段落的结束.
特殊符号
以下符号被LaTex保留, 如果直接输入, 不仅看不到符号本身, 还很有可能导致一 些奇怪的事情发生.
# $ % ^ & _ { } ~ \
如果要显示这些符号, 需要加上转义符:
比较特殊的是转义符\
本身, 不能通过\\
来输出, 而是\textbackslash
LaTex命令
\command[optional parameter]{parameter}
- 由转义符开始
command
里只有字母, 且大小写敏感- 以非字母结束, 例如空格, 数字, 括号
注释
同matlab一样, 使用百分号注释:
若注释很长, 可以使用verbatim
包和\comment
命令:
\usepackage{verbatim}
但是在公式内部不好使.
文件结构
文档元信息/环境配置:
1. 每个文件必须以 命令\documentclass{...}
开始, 用于指定文件(内容)类型
2. 然后是样式命令
3. 接着是要导入的包:`\usepackage{…}`
文档主体(body):
1. 所有的文件内容需要写在下面两个成对命令之间
\begin{document}
% body contents
\end{document}
\end{document}
命令之后的所有内容都会被忽略.
不得不说, 跟HTML很像啊!
Hello, Latex
1 . 新建一个文本文档, 命名hello_latex.tex
, 写入代码:
\documentclass{article}
\begin{document}
Hello, LaTex!
\end{document}
2 . 使用latex编译:
latex hello_latex.tex
可能需要执行两次. 然后, 得到hello_latex.dvi
文件
3 . 将dvi
转换成pdf
dvipdf hello_latex.dvi
4 . 查看dvi
文件:
evince hello_tex.dvi
evince
是Ubuntu
系统自带的pdf浏览器, 可以直接打开dvi
和pdf
文件. 所以evince hello_tex.pdf
也是OK的.
打开后长这个样子:
详细说明
documentclass
\documentclass[options]{class}
告诉编译器你要写什么类型的文件.
常用的class
有以下几个:
options
的作用是对class
的行为进行定制, 多个参数间用逗号连接. 例如:
\documentclass[11pt,twoside,a4paper]{article}
含义是: 创建article类型的文档, 使用11号基础字号, 双列, A4打印.
常用的class options:
packages
暂时略过, 后面有单独章节.
page styles
使用\pagestyle{style}
可以指定所有页面的格式, latex自定义了三种page style:
也可以使用\thispagestyle{style}
单独指定当前页的style.
常见的文件
使用latex时会碰到很多文件类型, 仍然不翻译了, 截图.
先是源文件:
然后中间/输出文件:
包含多个源文件
\include{filename}
: 另起一页包含这个文件里的内容\includeonly{filename,filename,. . . }
: 使用了这个命令之后, 只有这个范围之内的\include
才有效\input{filename}
: 不会另起一页, 直接包含.