LaTeX 基礎
LaTeX 簡介
高德納為了讓他的巨著《計算機程序設計藝術》排版更精美發明了 TeX,與 Markdown 類似,有編程語言的味道。
LaTeX 是一種工具,基於 TeX 格式定義了很多更方便使用的控制命令,它將用戶按照它的格式編寫的文檔解釋成 TeX 引擎能理解的形式並交付給 TeX 引擎處理,再將最終結果返回給用戶。
CTeX, MiKTeX, TeX Live 等都是 TeX 的發行,包含渲染引擎,宏包,編輯器等其他工具的集合。
TeX 引擎
TeX, pdfTeX, XeTeX, LuaTeX
都是 TeX 引擎,按照先進程度遞增(LuaTeX 尚未完善)。
- TeX:僅支持最原始的 plain tex 格式,晦澀難懂。
- pdfTeX: pdfTeX 包含了 PDF 和 DVI 格式的輸出,被許多 TeX 的發行版用作默認的 TeX 引擎。
- XeTeX: 之前的引擎只支持 ASCII 字符,即不支持中日韓字符。XeTeX 則原生支持 Unicode(需要使用 utf-8 編碼)。
- LuaTeX: 基於 pdfTeX 並支持 Luau 腳本的 TeX 引擎,最初被作為 pdfTeX 的下一代版本但事實上形成了一個獨立的分支。目前還不完善。
LaTeX 發行版
TeX 有許多種發行版,根據喜好選擇即可。例如:
Windows/Linux 推薦使用 texlive,Mac 則推薦使用 mactex。雖然 texlive 也可以在 Mac 下用 Unix 的方式安裝(這是因為 mactex 是一個基於 texlive 之上的封裝),但是 mactex 采用 Mac 專用的方式打包,安裝簡便且不勞心配置。
LaTeX 中文環境的配置
最初 TeX 只支持 ASCII 編碼,沒有考慮中文的使用環境, 不過現在可以使用ctex
宏包來支持中文。
- 文檔使用 utf-8 編碼。
- 引入宏包
\usepackage{ctex}
,並且使用xelatex
編譯。 - 另外 ctex 中內置了 6 種中文字體:
heiti, kaishu, songti, lishu, youyuan, fangsong
\documentclass[UTF8]{article}
% 若設置 ctexart,則是使用 ctex 的 article,后面就不需要再引用 ctex 宏包了
\usepackage{ctex}
\begin{document}
中文 && English
\end{document}
可能報錯:
Package fontspec Warning: Font "FandolSong-Regular" does not contain requested (fontspec) Script "CJK".
,可以忽略的警告。主要原因是字體里面沒有 GSUB 表,解決方法是復制 Windows 字體到 Ubutnu,並顯示指定 Windows 字體,\usepackage[fontset=windows]{ctex}
LaTeX 源文件的基本結構
- LaTeX 源文件分為「導言區」和「正文區」兩部分構成。
- 一個 LaTeX 源文件有且只有一個 document 環境。
$
符號內的為數學模式,外的為文本模式。且$**$
為行內模式,$$**$$
為行間模式。- 一個或多個空行都表示段落的分隔。
% 導言區
% 導言區用於全局的設置,引入宏包等
\documentclass{article} % 除了 article 外,還有 book, report, letter 等類型
\usepackage{ctex} % usepackage 用於導入宏包,這里導入了 ctex 宏包
\title{My first document}
\author{Zhigao Hong}
\date{\today}
% 正文區
% 正文區用於書寫文章的正文部分
\begin{document} % begin 用於開始一個環境,一個文章有且只有一個 document 環境
\maketitle
Hello, \LaTeX.
Let $f(x)$ be defined by $f(x)=3x^2+1$.
\end{document}
LaTeX 的篇章結構
在 LaTeX 中,可以使用section{xx}, subsection{xx}, subsubsection{xx}
等命令來撰寫文章的大致結構。
\documentclass{article}
\usepackage{ctex}
\title{My first document}
\author{Zhigao Hong}
\date{\today}
\begin{document}
\maketitle
\section{Introduction}
\label{sec::introduction}
\section{Proposed scheme}
\label{sec::proposed method}
\subsection{method1}
\label{subsec::method1}
\subsection{method2}
\label{subsec::method2}
\section{Experimental results and discussion}
\label{sec::experimental results and discussion}
\section{Conclusion}
\label{sec::conclusion}
\section{References}
\bibliography{mybibfile}
\end{document}
LaTeX 的字體設置
字體的設置可以使用字體命令和字體聲明兩種設置方式,同時可以使用{}
限定其作用范圍,否則自設置起,后面一直有效至重新設置字體。
字體族
字體族有:羅馬字體、無襯線字體、打字機字體。
- 羅馬字體:
\textrm {xxx}
或者{\rmfamily xxx}
- 無襯線字體:
\textsf {xxx}
或者{\sffamily xxx}
- 打字機字體:
\texttt {xxx}
或者{\ttfamily xxx}
字體加粗
\textbf {xxx}
或者{\bfseries xxx}
字體斜體
\textit {xxx}
或者{\itshape xxx}
中文字體
設置中文字體必須引入ctex
宏包,其中內置了 6 種中文字體。
- 黑體:
{\heiti xxx}
- 其他類似:
kaishu, songti, lishu, youyuan, fangsong
字體大小
- 字體的大小也是通過一系列字體聲明實現:
tiny, scriptsize, footnotesize, small, normalsize, large, Large, LARGE, huge, Huge
- 這些大小描述是相對於
normalsize
而言的,而normalsize
的大小是在導言區的documentclass[10pt]{article}
設置的,一般為 10,11,12 磅。 - 中文字體還可以使用
\zihao{字號值}
設置,如同 word 文檔一樣。
LaTeX 中的特殊字符
空白字符
- 空行分段,多個空行等同於 1 個。
- 英文中多個空格視為 1 個,中文中忽略空格。
- 當要輸入多個空格時,要使用
\quad
命令。
控制符
由於許多符號有着特殊的含義,需要轉義:\#, \$, \%, \{, \}, \~, \^, \_, \&
等。
排版符號和 LaTeX 的標志符號
引號
- 單引號:數字 1 左邊的點號表示左單引號,
'
表示右單引號。 - 雙引號:兩個左單引號為左雙引號,兩個右單引號為右雙引號。
連字符
- 短連字符:
-
- 中連字符:
--
- 長連字符:
---
LaTeX 中的圖片
- 在 LaTeX 中使用
graphicx
這個宏包插入圖片。- 導言區:
\usepackage{graphicx}
用於引入宏包;\graphicspath{{目錄1/}, {目錄2/}}
用於指定圖片目錄。 - 語法:
\includegraphics[可選參數]{文件名}
,其中文件名不加文件格式的后綴。 - 支持格式:
eps, pdf, png, jpg
等。
- 導言區:
- 可選參數,支持指定大小,縮放比例等。
scale=0.3
,縮放因子。height=2cm, width=0.15\textwidth
,指定長寬。angle=-45
,指定旋轉角度。
LaTeX 中的表格
直接使用在線 LaTeX 表格編輯器,用命令做表格簡直不能忍。
LaTeX 中的浮動體
使用浮動體,可以對圖片和表格的位置進行靈活管理,需要使用begin
命令來創建浮動體環境。
- 在環境后,還可以加入允許位置參數:h(here)、t(top)、b(bottom)、p(page),默認為 tbp。
- 上述的參數相對於整個頁面而言,比如 top 表示頁面的頂部,page 表示一個允許浮動的頁面等。
[!h]
這里加感嘆號的意思是忽略美學標准強制圖片的位置,但是如果頁面剩下的部分放不下,還是會跑到下一頁的。一般而言,用[!h]
選項通常會出現不能正確放置的問題,所以常用[ht], [htbp]
等。
- 使用
caption
用於標題的顯示。 - 使用
subfigure
實現圖片的混排。
figure 浮動體
\begin{figure}[htb]
\centering
\subfigure[]{
\includegraphics[width=0.15\textwidth]{Baboon}
}
\subfigure[]{
\includegraphics[width=0.15\textwidth]{Barbara}
}
\subfigure[]{
\includegraphics[width=0.15\textwidth]{Boat}
}
\caption{Three test images: (a) Baboon. (b) Barbara. (c) Boat.}
\label{fig1}
\end{figure}
table 浮動體
\begin{table}[htbp]
\centering
\caption{Comparison of four methods on test images in \ref{fig1} based on QF = 60}
\label{tab1}
\begin{tabular}{|c|c|}
\hline
a & b \\ \hline
c & d \\ \hline
\end{tabular}
\end{table}
LaTeX 中的公式
直接使用在線 LaTeX 公式編輯器,用命令直接寫公式簡直不能忍,簡單公式還行,復雜公式。。。
行內公式
- 美元符號:
$f(x)=a^2x+bx+c$
- 小括號:
\(f(x)=a^2x+bx+c\)
行間公式
- 雙美元符號:
$$f(x)=a^2x+bx+c$$
- 中括號:
\[f(x)=a^2x+bx+c\]
自動編號公式
使用equation
環境,該公式會單獨一行。
\begin{equation}
y = x + 1
\end{equation}
參考文獻 BibTeX
將參考文獻單獨處理,實現一次管理,多次使用。
- 新建文件
mybibifile.bib
- 在導言區:
\bibliographystyle{plain}
,此外還有alpha, abbrv
等排序規則。 - 在需要輸出參考文獻的地方使用:
\bibliography{mybibfile.bib}
- 默認下是不會出現未引用的文獻,如果要強制加上為引用文獻:在上一個命令前加
\nocite{*}
其他命令
texdoc ctex
:終端命令,查看 ctex 宏包手冊。texdoc lshort-zh
:終端命令,查看 latex 使用教程。texcount demo.tex
:終端命令,統計文章字數。\label{xxx}
:設置標簽名為 xxx,以用於交叉引用。\ref{xxx}
:引用標簽名為 xxx 的內容。\cite{xxx}
:引用 bib 文件的文章。\newcommand{命令名}[參數個數]{具體定義}
:\newcommand{\PRC}{People's Republic of China}
\newcommand{\loves}[2]{#1 喜歡 #2}
,使用如\loves{貓}{魚}
\newcommand{\myref}[1]{Eq.\ref{#1}}
\begin{enumerate} xxx \end{enumerate}
:有序列表環境。\begin{itemize} xxx \end{itemize}
:無序列表環境。\item xxx
:列表中的單個元素。\geometry{left=2cm, right=2cm, top=2cm, bottom=2.5cm}
:設置頁邊距。\\
:在文本中表示換行。