基本上是從[這個網站](https://www.overleaf.com/learn/latex/Learn_LaTeX_in_30_minutes)中,挑出我最一開始接觸 Latex 有用到的部分。
裡面涵蓋的東西更詳細,推薦!
其他參考資料:
- Princeton 的一個非常短的 [latex beginner's guide](https://www.cs.princeton.edu/courses/archive/spr10/cos433/Latex/latex-guide.pdf)
- [TEX for the Impatient](https://ctan.mirror.twds.com.tw/tex-archive/info/impatient/book.pdf)
> 在查 Knuth 寫的 *The TeXbook* 是否值得看時,別人推薦這本 *TEX for the Impatient*,說是比較簡短、只是要用的話比較適合,但我看了還是覺得內容很多就是了。
>> Knuth 是 Latex 的創造者,也是演算法常聽到(如 KMP algorithm)的那個 Knuth。
- Note: Latex is ++not sensitive to indention++,所以以下的各種 command 排版都可以按照自己喜歡的方式任意 indent。
# 下載、基礎設定
到[這個地方](https://www.latex-project.org/get/)根據自己的電腦選擇下載:

下載完,因為我是用 vscode 寫,所以可以根據這個[超詳細的步驟](https://mathjiajia.github.io/vscode-and-latex/)做完所有基礎設定。
> $\rightarrow$ 下載完 Latex 的話,就可以從 Step 3 開始。
# 文字
## 大小
- 本節內容參考自[這篇文章](https://latex-tutorial.com/changing-font-size/#:~:text=Change%20the%20font%20size%20of,option%20to%20the%20%5Cdocumentclass%20command.)
在我們選定我們的 document class 時,一開始的文字大小就是該類型的預設大小,大部分會是 10pt。
> $\rightarrow$ 這個大小也就是之後我們如果用 `\normalsize` command 會產生的大小。
### 調整整個文件文字大小
在 standard classes 如 document, book, letter, report 中,我們有三種大小可選擇: ++10, 11, 12 pt++
如果要更改整個文件的文字大小,可以在一開始宣告 `\documentclass{article}` 時寫成這樣:
```
\documentclass[11pt]{article}
```
> $\rightarrow$ 11 可以替換成 10(預設)或 12
- Note:在調整整篇文章的文字大小時,也就同時改變了 `\normalsize` 的基準,因此其他設定大小的 command,對應到的大小也會跟著改變。
> 可參考下方下一小節的表格
### 調整特定文字大小

> 最上方一排的 size 為預設大小設定為多少
>
> $\rightarrow$ 如果這些大小不夠用,可到上面「文字 -> 大小」開頭處,點選文章連結,有加入額外的 package 來設定其他大小的介紹。
簡易調節特定一行文字大小的方式:
$\rightarrow$ 在要更改大小的那行前面++插入上方表格最左那排的 command,與要更改大小的文字一起用 `{}` 包起來++,就能更改成對應的大小。例子如下:

> 我想將 "Why modulation is used, 3 reasons:" 這句話加大,因此前面加上 `\large` 之後,再用 `{}` 包住,變成 `{\large Why modulation is used, 3 reasons:}`。
結果會變成這樣:

> 雖然對比起來有點不明顯 XD 不過確實有稍微大一點,變成 `\large` 的 12 pt
## 色彩
加入 `\usepackage[dvipsnames]{xcolor}`
例子:
```
\documentclass{article}
\usepackage[dvipsnames]{xcolor}
\begin{document}
...
\end{document}
```
色彩名稱:

### 文字本身顏色
- 記得先加入 package `\usepackage[dvipsnames]{xcolor}`
```
\documentclass{article}
\usepackage[dvipsnames]{xcolor}
\begin{document}
\textcolor{red}{想變成紅色的字}
\end{document}
```
$\rightarrow$ 如果要把紅色改成其他顏色,只要把顏色名稱按照上方色彩名稱的表更改即可。
### 螢光筆
- 記得先加入 package `\usepackage[dvipsnames]{xcolor}`
```
\documentclass{article}
\usepackage[dvipsnames]{xcolor}
\begin{document}
\colorbox{yellow}{想畫黃色螢光筆的字}
\end{document}
```
## 底線/粗體/斜體
- `\underline{要畫底線的字}`
- `\textbf{要使用粗體的字}`
- `\emph{要使用斜體的字}`
# 排版
## 插入空格
### 插入一個空格
如果是在文字之間插入一個空格,只需單純按一個空白鍵即可;但是如果是在數學式(被兩個 `$` 或 `$$` 包住的地方)中需要空一格,需手動在要空格的地方插入 <font color = "green">`\`</font>
### 插入多個空格
不管是在寫數學式的情況下,還是一般的文字,插入多個空格都可以輸入煆列幾種指令來插入不同大小的空格:
- <font color = "green">`\quad`</font>:空 1eM (一個字母 M 的寬度)
- <font color = "green">`\qquad`</font>:空 2eM (兩個字母 M 的寬度)
- <font color = "green">`\hspace{自填空格大小}`</font> / <font color = "green">`\hspace*{自填空格大小}`</font>:空一個自訂大小的空格(例如可在 `{}` 內填入 2cm)
> 有沒有 `*` 的差別在於++有`*` 的會強制空格,沒有 `*` 的則不會++,意思也就是如果剛好在一行最後面的加入空格,遇到換行時 `\hspace{自填空格大小}` 會縮小成只空一格, `\hspace*{自填空格大小}` 則是即使遇到換行,仍然會空指定的大小。
Note:<font color = "red">在 hackmd 中如果要使用上述指令,需用 `$$` 包住指令,但 Latex 不用。</font>
## 分行 / 取消分行
### 分行
在想分行的地方加入 <font color = "green">`\\`</font> 即可。
例子:
```
這是第一行 \\
這是第二行 \\
這是第三行 \\
```
### 取消分行
如果設定每段的開頭自動分行,但突然有一段不想這麼做,或是任何不想要 indent 的情況,可以在不想分行的文字前面加入 <font color = "green">`\noindent`</font>

這樣一來,長得就會像這樣子:

原本如果沒有在 `Q:...` 前面加 `\noindent` 時,如下:

會長這樣:

## 分段
方法:在要第一段後面,第二段之前加入 <font color = "green">`\par`</font>
例子:
```=
這是第一段...
這是第一段...
這是第一段 \par
這是第二段...
這是第二段...
這是第二段...
```
> 這樣寫的話,line 4 的第二段開頭會縮排。
## 換頁
換頁有兩種方式,一種是插入 <font color = "green">`\pagebreak`</font> 另一種是插入 <font color = "green">`\newpage`</font>,差異在於手動換頁前的那一頁中的文字排版:
`\pagebreak`:手動換頁前的那一頁會++自動分散++,讓版面下方不會有太多空白。
`\newpage`:手動換頁前的那一頁文字排版++照舊,不會自動分散++,版面下方會保留空白。
可參考 stackechange 上[網友回答](https://tex.stackexchange.com/questions/9852/what-is-the-difference-between-page-break-and-new-page)兩者差異的圖:

## 章節標題
Note:
如果是用 `article` (即 `\documentclass{article}`),就不能用 `chapter`(要 `books`、`reports` 才能)。
其中一種使用 `article` 的章節標示為:
<font color = "green">`\section{章節名稱}`</font> 或 <font color = "green">`\section*{章節名稱(前面會自動有標號)}`</font>
$\rightarrow$ 差異在於有加 `*` 的++不會++在前面自動加 index
如果要在這個章節底下再加小節,再多加一個 <font color = "green">`sub`</font> 即可,再一層同理,例子如下:
```
\section*{Chap 1}
\subsection*{1.1}
\subsubsection*{1.1.1}
```
顯示出來的樣子:

# 數學式
## package: amssymb, amsmath
首先第一件事是要加入兩個 package,分別是 `usepackage{amssymb}` 和 `\usepackage{amsmath}`,如下:
```
\documentclass{article}
\usepackage{amssymb}
\usepackage{amsmath}
\begin{document}
...
\end{document}
```
即使有些數學符號沒有加入這兩個 package 也可以用(像是我很常用的 $\rightarrow$ `$\rightarrow$`),但是舉例來說像是 $\therefore$ `$\therefore$` 就必須有 `amssymb` 才能正確顯示。
可以參考[這篇文章](https://milde.users.sourceforge.net/LUCR/Math/mathpackages/amssymb-symbols.pdf)來決定要加入哪個 package,裡面眾多符號對應的 requirements 欄就是說明該符號需要什麼 package。
> 另外 Macro 欄說明要在 `$$` 符號間打什麼才能顯示該符號。
## 表示方式
數學式會被包在 `$$` 或 `$$$$` 裡,例如 `$F=ma$` 或 `$$F=ma$$`,兩者的差異是 `$$$$` 會讓式子自動縮到中間(像課本裡面的數學式那樣),可以參考下方例子:

> 箭頭後面那個 $\frac{high-risk customers}{customer base}$ 就是用前後只用一個 `$` 包住。
>
> 跑到中間去的 $P(C=0) + P(C=1) = 1$ 則是前後各用兩個 `$$` 包住。
- 其實大部分的數學表示方式都和 hackmd 是通用的,除了 hackmd 沒有 `$$$$`
- [這篇文章](https://hackmd.io/@CynthiaChuang/Basic-LaTeX-Commands) 整理了許多常用的符號,非常方便!
## 各種數學式
### 多行對齊
當一個式子不斷地算下去,有多個等號時,就可以用下方例子的方式,例子:
```=
\begin{equation*}
\begin{split}
R(\alpha_i|x) & = \sum_{k=1}^K \lambda_{ik}P(C_k|x) \\
& = \sum_{k\not=i}P(C_k|x) \\
& = 1 - P(C_i|x)
\end{split}
\end{equation*}
```
> 在整個方程式前後分別用 <font color = "green">`\begin{equation*}`</font> 和 <font color = "green">`\end{equation*}`</font> 包住
>> 如果用++沒有 `*`++ 的 <font color = "green">`\begin{equation}`</font> 和 <font color = "green">`\end{equation}`</font>,在式子的右側會根據有出現過的 equation 數自動標號,如下圖右方的 $(1)$
>> 
>>
> 中間的第二、六行第二個包住我們的式子的是 <font color = "green">`\begin{split}`</font> 和 <font color = "green">`\end{split}`</font>,這是為了切割多個等號的部分
>
> 第三、四行最後的 `\\` 是為了分隔下個等號到下一行去
>
> 第四、五行的 `&` 會使後面的等號對齊前一行的 `&` 的位置
> - Note:<font color = "red"> 前後不需要用 `$$` 包住!</font>
表示出來會長這樣:

### 分不同 cases
例子:
```=
$$
\lambda_{ik} =
\begin{cases}
0 & \text{if} \ i =k \\
1 & \text{if} \ i \not = k
\end{cases}
$$
```
> 一樣前後需要各由 `$$` 包住
>
> 中間因為 $\lambda_{ik} =$ 是寫在兩個不同 cases 前,所以先寫
>
> 接著再用 <font color = "green">`\begin{cases}`</font> 和 <font color = "green">`\end{cases}`</font> 包住我們的兩種 cases,每個不同的 cases 間像分行一樣用 `\\` 隔開
>
> 第四、五行的 `&` 是用於對齊,把 `if` 包起來的 `\text{}` 則是希望單純把 `if` 以英文顯示(如果不這麼做,`if` 會是斜體的數學表示方式)
表示出來會長這樣:

# 其餘功能
## 加入清單
### 點
把要列的清單前後分別用 <font color = "green">`\begin{itemize}`</font> 和 <font color = "green">`\end{itemize}`</font> 包住,中間則是清單中的各個事項,每個前面加入 `\item` 如下:
```
\begin{itemize}
\item 某樣東西
\item 另一樣東西
\item 最後一樣東西
\end{itemize}
```
這樣的結果就會是像:
> - 某樣東西
> - 另一樣東西
> - 最後一樣東西
### 數字
如果是要列以數字標注的清單的話,清單前後分別用 <font color = "green">`\begin{enumerate}`</font> 和 <font color = "green">`\end{enumerate}`</font> 包住,中間一樣是清單中的各個事項,每個前面加入 `\item` 如下:
```
\begin{enumerate}
\item 第一個東西
\item 第二個東西
\item 第三個東西
\end{enumerate}
```
這樣的結果就會是像:
> 1. 第一個東西
> 2. 第二個東西
> 3. 第三個東西
### 其他標示
如果要使用其他種標示來列清單,需要加入額外的 package <font color = "green">`\usepackage{enumitem}`</font>,接著就是按照原本產生有序清單的方式,再額外加上 label,範例如下:
假設我要用羅馬數字作為清單編號,則在 `{enumerate}` 後面補上 <font color = "green">`[label=\Roman*.]`</font>:

這樣清單就會長得像這樣:

其中,`[label=\Roman*.]` 的 `Roman` 還能替換成其他如:
- roman $\Rightarrow$ <font color = "green">`[label=\roman*.]`</font>

- Alph $\Rightarrow$ <font color = "green">`[label=\Alph*.]`</font>

- alph $\Rightarrow$ <font color = "green">`[label=\alph*.]`</font>

也可以對這些符號做一點自己的修改,如:

> 加上 `()`
結果會是:

## 加入超連結
首先加入 package `\usepackage{hyperref}`
- Note:通常 `hyperref` 需要是最後一個被 import 的 package。
加入 package 和一些超連結樣式的設定如下:
```=
\documentclass{document}
\usepackage{hyperref}
\hypersetup{
colorlinks=true,
linkcolor=LimeGreen,
filecolor=Green,
urlcolor=Periwinkle,
}
\begin{document}
...
\end{document}
```
> 其中:
>
> line 4(`colorlinks=true`):將 link 的地方顯示特殊顏色(預設是紅色)
> line 5(`linkcolor=LimeGreen`):設定連結到 cross-referenced elements 產生的 ++internal links++ 的顏色。
>> 舉例來說,連到你的 pdf 裡面的某個 equation、某張圖或某個 section...
>>
> line 6(`filecolor=Green`):設定連結到 ++local files++ 的顏色。
> line 7(`urlcolor=Periwinkle`):設定連結到++網頁++的顏色。
>
> $\rightarrow$ `\hypersetup{}` 裡的這些 parameters 彼此之間要由 `,` 區隔。
> $\rightarrow$ 可將我挑的顏色替換成其他顏色的名稱(可參上方「文字 -> 顏色」中的表。)
> $\rightarrow$ 除了上面列出的 parameters,其他還有一些字型、書籤、pdf 資訊等的 parameters 可設定。
### 連結到網頁
上述設定都完成了以後,在內文中加入連到網頁的超連結有兩種方式
1. <font color = "green">`\href{網址}{這串網址要顯示的文字}`</font>
2. <font color = "green">`\url{網址}`</font>
兩者的差異在於第一種 `\href{}{}` 可以在文章中顯示特定文字,點下去則連到某個網站;第二種 `\url{}` 則是適合用在將文件印下來時可以直接顯示網址。
例子:

顯示出來會長這樣:

### 連結到 local file
一樣是用 `\href{}{}`,只是括弧內的內容改為:
<font color = "green">`\href{file:(你的檔案的path)}{檔案名稱}`</font>
例子:

> (灰色框框部分是我的名字)
顯示出來會長這樣:
