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}
: 不會另起一頁, 直接包含.