{%hackmd @themes/orangeheart %}
<style>
.likecoin-button {
position: relative;
width: 100%;
max-width: 485px;
max-height: 240px;
margin: 0 auto;
}
.likecoin-button > div {
padding-top: 49.48454%;
}
.likecoin-button > iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.markdown-body{
word-wrap:break-word;
color:#000;
font-family:Optima-Regular,Optima,PingFangSC-light,PingFangTC-light,PingFang SC,Cambria,Cochin,Georgia,Times,Times New Roman,serif;
font-size:16px;
letter-spacing:0;
line-height:1.6;max-width:860px;
padding:5px 20px;
text-align:left;
word-break:break-word;
word-spacing:0}.markdown-body
p{
color:#000;
font-size:16px;
line-height:26px;
margin:0;
padding-bottom:8px;
padding-top:8px
}
.markdown-body h1, .markdown-body h2, .markdown-body h3, .markdown-body h4, .markdown-body h5, .markdown-body h6{
color:#000;
font-weight:700;
margin-bottom:15px;
margin-top:30px;
padding:0
}
.markdown-body h1{
font-size:2.5rem
}
.markdown-body h2{
border-bottom:2px solid #61679e;
font-size:2.1rem
}
.markdown-body h2 span{
background:#61679e;
border-top-left-radius:5px;
border-top-right-radius:5px;
color:#fff;
display:inline-block;
font-weight:700;
margin-right:0;
padding:5px 10px 1px
}
.markdown-body h3{
font-size:1.8rem
}
.markdown-body h4{
font-size:1.65rem
}
.markdown-body h5, .markdown-body h6{
font-size:1.5rem
}
.markdown-body ol, .markdown-body ul{
color:#000;
margin-bottom:8px;
margin-top:8px;
padding-left:25px
}
.markdown-body ul{
list-style-type:disc
}
.markdown-body ul ul{
list-style-type:square
}
.markdown-body ol{
list-style-type:decimal
}
.markdown-body li section{
color:#010101;font-weight:500;
line-height:26px;
margin-bottom:5px;
margin-top:5px;
text-align:left
}
.markdown-body blockquote{
overflow-scrolling:touch;
background:#eff0f5;
border-left:3px solid #61679e !important;
color:#6a737d;
display:block;
font-size:.9em;
margin-bottom:10px;
margin-top:10px;
overflow:auto;
padding:5px 10px 5px 20px
}
.markdown-body blockquote p{
color:#000;
line-height:26px;margin:0
}
.markdown-body a{
word-wrap:break-word;
border-bottom:0 solid #61679e;
color:#61679e;
font-weight:700;
text-decoration:none
}
.markdown-body a:hover {
color: #c0c2d8; /* 設定您想要的 hover 顏色 */
}
.markdown-body a:visited {
color: #61679e; /* 設定您想要的 visited 顏色 */
}
.markdown-body li code, .markdown-body p code{
word-wrap:break-word;
background-color:rgba(27,31,35,.05);
border-radius:4px;
color:#61679e;
ont-family:Operator Mono,Consolas,Monaco,Menlo,monospace;
font-size:14px;
margin:0 2px;
padding:2px 4px;
word-break:break-all
}
.markdown-body table{
display:table;
text-align:left
}
.markdown-body tbody{
border:0
}
.markdown-body table tr{
background-color:#fff;
border:0;
border-top:1px solid #ccc
}
.markdown-body table tr:nth-child(2n){
background-color:#f8f8f8
}
.markdown-body table tr td, .markdown-body table tr th{
border:1px solid #ccc;
font-size:16px;
padding:5px 10px;
text-align:left
}
.markdown-body table tr th{
background-color:#f0f0f0;
font-weight:700
}
.markdown-body li code, .markdown-body span code{
color:#61679e
}
.markdown-body mark{
background-color:#61679e;
border-radius:2px;
border-radius:4px;
color:#fff;
font-weight:500;
margin:0 2px;
padding:2px 4px
}
.markdown-body .anchor{
margin-left:-40px
}
.octicon-link{
border-radius:3px;
color:#fff!important;
padding:5px 10px!important
}
.gallery {
display: flex;
gap: 16px;
justify-content: center;
}
.gallery-item {
width: 300px;
border: 1px solid #ddd;
border-radius: 8px;
overflow: hidden;
background-color: #fff;
/* box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); */
display: flex;
flex-direction: column;
align-items: center;
}
.gallery-item img {
width: 100%;
height: 180px;
object-fit: cover;
}
.gallery-content {
padding: 16px;
flex: 1;
display: flex;
flex-direction: column;
justify-content: space-between;
width: 100%;
}
.gallery-title {
font-size: 14px;
font-weight: bold;
margin-bottom: 8px;
text-align: center;
}
.gallery-description {
font-size: 14px;
color: #666;
margin-bottom: 12px;
}
.gallery-details {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 14px;
color: #888;
margin-bottom: 8px;
}
.gallery-tag {
background-color: #eee;
border-radius: 4px;
padding: 2px 6px;
font-size: 12px;
color: #666;
}
.gallery-duration {
font-size: 12px;
color: #666;
}
.gallery-date {
font-size: 12px;
color: #aaa;
text-align: right;
}
</style>
###### tags: `LaTeX`
相信一定不少人在學生時期或出社會工作之後,都面臨著撰寫報告的地獄需求。不過,經常使用 Microsoft Word、PowerPoint 的人一定會發現,插入圖片並且讓它在正確的位置上似乎是一件很費時的任務,一方面是因為將圖片導入文件後,還要調整大小,且每一張圖片的大小都不相同;另一方面是 Word、PPT 在文字與圖片排列稍顯的不聰明一點。[^1]
這一系列文章介紹的語言——LaTeX,不僅可以解決上述關於圖片排版的問題,更提供了在數學公式、表格、程式碼嵌入、簡報製作等方面的優良功能。
# LaTeX 的前世今生
LaTeX 是一種強大的排版系統,廣泛應用於科學、技術、工程及數學(也就是俗稱的 STEM)領域的文件編輯。LaTeX 的前身是 Donald Knuth 於1978年發明的 TeX 系統。Knuth 是一位著名的計算機科學家,他為了解決當時排版系統的不足,親自設計了 TeX,以便創作高品質的文件和書籍。
然而,TeX 雖然功能強大,但對於一般用戶來說並不友好(必須撰寫許多程式碼、前置設定等)。因此,為了解決這個問題,Leslie Lamport 於1984年在 TeX 的基礎上開發了 LaTeX。LaTeX 簡化了文件編寫的流程,使用者只需關注所輸入的內容,而不必操心具體的排版細節,這正是 LaTeX 最引以為傲的功能:**所得即所見**(What You See Is What You Get)。
# 前置作業:編譯器與編輯器
「工欲善其事、必先利其器。」
從學生時期撰寫撰寫作文,到出社會撰寫公司業務報告,都需要一些硬體工具(例如紙筆、電腦、平板等),以及既有的知識。LaTeX 的撰寫也是一樣,編輯一份 LaTeX 文件需要兩個重要的工具:編譯器和編輯器。這邊簡單解釋一下兩者的差異:編輯器用於編寫和管理 LaTeX 程式碼,提供便捷的編寫環境;編譯器則負責將這些程式碼轉換為最終輸出的文件。

選擇 LaTeX 編譯器時,不同系統的使用者可以選擇適合自己的編譯器,但是請注意:請先安裝編譯器之後再安裝編輯器!如果你是 Windows 使用者,推薦[MikTeX](https://miktex.org/)與[TeXLive](https://tug.org/texlive/),但如果你很不幸地使用搞排擠的 macOS 系統,那麽就建議你使用[MacTeX](https://www.tug.org/mactex/)。
至於編輯器的選擇就沒有那麼多限制,只要你覺得編輯器好看、好用,電腦預設的記事本也可以成為你撰寫 LaTeX 的工具。好用的編輯器大概有[TeXmaker](https://www.xm1math.net/texmaker/)、[TeXstudio](https://www.texstudio.org/)、[Visual Studio Code](https://code.visualstudio.com/)。[^3]
如果你想要擁有跟 Google 文件一樣的共同編輯功能,那麼推薦使用[Overleaf](https://www.overleaf.com/)。Overleaf 是一個完全免費的平台,好處是不用下載編譯器(網站內建),而且可以邀請別人一起編輯、查看原始碼;但是壞處是 Overleaf 時不時就會維修,所以個人建議還是要學一下如何在本機安裝編譯器與編輯器。
# LaTeX 語法概說
在正式開始進入 LaTeX 語法教學之前,我們先來看一下底下的範例。
```tex
!TeX xelatex
\documentclass[12pt]{article}
\title{My First Document}
\author{Author}
\date{\today}
\begin{document}
\maketitle
\end{document}
```
細心的你肯定有發現,LaTeX 的指令是以反斜線(backslash) `\` 開頭的,也就是如果你需要使用一些指令,那麼就必須用 `\` 告訴 LaTeX 編譯器你需要使用該指令,否則電腦無法判讀。常見的 LaTeX 指令符如下:
| 符號 | 功能 |
| ---- | ---- |
| `\` | 下排版命令 |
| `%` | 註解 |
| `#` | 定義巨集 |
| `~` | 產生空白 |
| `$` | 進入/離開數學模式 |
| `^` | 數學模式中的上標字 |
| `_` | 數學模式中的下標字 |
| `&` | 分隔符號 |
## 決定美醜的關鍵:參數
我們可以注意到 `\documentclass` 後面有兩個不一樣的東西:一個是 `[12pt]`,另一個則是 `{article}`。這兩個東西有什麼不一樣呢?在 LaTeX 中,參數的傳遞方式有兩種,一種是選擇參數,也就是以方括號 `[我是選擇參數]` 包住的,使用者可以留空,不會影響排版,也可以輸入設定指令調整排版。另一種則是必要參數,以花括號 `{我是必要參數}` 包住,只要使用者沒有輸入內容留空,電腦就不清楚目前需要做什麼[^4]。關於參數的設定,有幾點需要注意的事情:
- 不同於Word,LaTeX 文稿中,空一個與多個英文空白的意思是一樣的,LaTeX 會認作一個空白。
- 按下Enter 鍵不代表換行,換行必須要使用雙斜線(`\\`,Windows 使用者可以同時按下 Ctrl 與 Enter 鍵;masOS 使用則可同時按下 ⌘ 與 ↩︎ 鍵),或是以 `\newline`、`\linebreak` 進行換行。
## 使用指令
LaTeX 的指令是從反斜線後第一個字母開始,到第一個非字母符號為止 (包含空白、標點符號及數字)。因此:
`This is my first \LaTeX typesetting example.`
這樣的話,由於空白屬於指令的一部分,因此會印出如下面輸出範例的結果。若要避免上述情況,就必須使用以下三種方法:
1. `This is my first {\LaTeX} typesetting example.`
2. `This is my first \LaTeX{} typesetting example.`
3. `This is my first \LaTeX\ typesetting example.`
```tex
% !TeX xelatex
\documentclass[12pt]{article}
\title{My First Document}
\author{Author}
\date{\today}
\begin{document}
\maketitle
This is my first \LaTeX typesetting example.
This is my first {\LaTeX} typesetting example.
This is my first \LaTeX{} typesetting example.
This is my first \LaTeX\ typesetting example.
\end{document}
```
## 使用註解
註解符號(`%`) 可以放在一行的任何地方,`%` 之後的文字會被忽略掉,特定的編譯器在註解之後文字會變色。而註解功能最大的好處是,在微調一些參數或設定時,可以使用註解,將更改的地方註解起來或取消註解,並編譯出結果比較前後的差異。
## 開啟環境
LaTeX 有一種巨集結構,稱為環境(environment),主要是讓作用範圍能 擴大至較大的範圍。所有的環境都起於`\begin{環境名稱}`,止於`\end{環境名稱}`。這兩個指令之間的文稿都會被作用,而且,環境之內還可以套用其他不同的環境。LaTeX 文稿的內文,就是包在一個
```tex
\begin{環境名稱}
...
\end{環境名稱}
```
這個 document 環境當中。以下就是所有 LaTeX 必須具備的文稿大結構:
```tex
\documentclass[]{}
%這裡是preamble 區
\begin{document}
...
\end{document}
```
## 前言區(preamble)
這裡可以引用巨集(macro),而且會影響整篇文稿的指令,例如一些事先 定義好的指令,想在整篇文稿中使用,就可以置放在 preamble 區。例如:
```tex
!TeX xelatex
\documentclass[12pt]{article}
\usepackage{xcolor}
\begin{document}
The text will be \textcolor{blue}{blue}.
\end{document}
```
## 章節標題設定
在 LaTeX 的文件裡,章節標題的形成都是由同樣的指令來控制的,這樣有一個好處,臨時插入章節標題及其內文時,我們不必去理會標題編號及目錄的問題,也不必去理會要用什麼字型、及字型大小要多大,LaTeX 會自動計算處理,字型大小也會和內文使用的字型大小互相配合調整,使用者就專心在內文構思、寫作即可。以下由列表來瞭解整個章節結構:
| 深度編號 | 指令 | 作用及注意事項 |
| -------- | -------- | -------- |
| -1 | `part{}` | 部|
| 0 | `chapter{}` | 章,在 article 沒有章|
| 1 | `section{}` | 節|
| 2 | `subsection{}` | 小節|
| 3 | `subsubsection{}` | 次小節|
| 4 | `paragraph{}` | 段落|
| 5 | `subparagraph{}` | 次段落|
你肯定會問:「深度編號是什麼?」要知道背後的原理,還有很長的路要走。所以在這邊我就留下一個伏筆,待後續之分解。
[^1]: 此處的不聰明並不是指「文繞圖」(wrap text around a picture)的功能,而是指圖片時常不會在正確的位置上,容易因為文字的多寡而跑版。
[^3]: 關於 LaTeX 在 VS code 上的設定,可以參考這篇文章:[https://hackmd.io/@DextinChen/VSCode-LaTeX-setting?utm\_source\=preview-mode&utm\_medium=rec](https://hackmd.io/@DextinChen/VSCode-LaTeX-setting?utm_source=preview-mode&utm_medium=rec),裡面有詳盡的解說。
[^4]: 但有時某些指令中,必要參數可以不必填寫,例如 `\date{}`,不填寫的話,則標題頁的日期就不會顯示,而是會留一行空白,直接跳到下一行的作者列。
{"metaMigratedAt":"2023-06-16T22:15:35.347Z","metaMigratedFrom":"YAML","breaks":true,"disqus":"yueswater","description":"進到 \\LaTeX 之後,我們會看到以下的畫面,這個畫面就是我們的編輯器。","title":"LaTeX 的前世今生","contributors":"[{\"id\":\"2afac439-1436-4056-b016-3c71d4e5b6c9\",\"add\":13273,\"del\":3637}]"}
tags: LaTeX
LaTeX 的前世今生
前置作業:編譯器與編輯器
LaTeX 語法概說
決定美醜的關鍵:參數
使用指令
使用註解
開啟環境
前言區(preamble)
章節標題設定