\(\LaTeX\)

強大的排版工具

  • \(\LaTeX{}\)是一個排版用的軟體,
  • 許多學術性的刊物或者講義都會使用\(\LaTeX{}\)的排版,因為它的靈活度與自由度實在非常高
  • 雖然被稱為一個排版軟體,不過它也是圖靈完備的語言喔!也就是說,我們理論上可以用\(\LaTeX{}\)做出JavaScript的小遊戲(?)
  • 不過今天先讓我們學習\(\LaTeX{}\)的排版基礎指令吧!

\(\LaTeX\)

強大的排版工具

\(\LaTeX{}\)是什麼?

\(\TeX{}\)

由高德納(Donald Knuth)在約 1980 年代發明的排版軟體,據說是因為他對當時的電腦排版技術不甚滿意,為了不影響到他的巨著《電腦程式設計藝術》的品質,他決定自行開發一套用於排版的軟體,其中包含了許多當時其他軟體尚未包含或還不成熟的功能,例如數學公式間距的自動調整及美觀的斷行演算法等。

\(\LaTeX{}\)是什麼?

  • 由於\(\TeX{}\)的指令非常基本,我們會將常用或複雜的指令組合定義成一個簡短的指令,稱為巨集(macro)
  • \(\LaTeX{}\)即是有名的一個巨集系統,定義了許多結構化的巨集便於編排文件,也因此人們經常說他們在使用\(\LaTeX{}\)而不是\(\TeX{}\)
  • 它也支持引入不同的 package (巨集包),目前已經有超過四千個不同的 package 了。
  • 雖然已經經過了簡化,\(\LaTeX{}\)和多數所見即所得的軟體相比,仍然還是得耗一些功夫熟悉指令的特性。

為什麼我要用\(\LaTeX{}\)

大業配時間 XD

\(\LaTeX{}\)與 Office 系列軟體或其他軟體比起來,當然是各自有各自的優點,但是為什麼許多研究者偏好使用\(\LaTeX{}\)而不是 Microsoft Word 來撰寫論文呢?

\(\LaTeX{}\)的特點

「與內容分離」原則

一篇文章的實際內容及意義,和其呈現給讀者的形式是互相獨立的。這是使用\(\LaTeX{}\)很重要的原則,使得作者能夠在撰寫內文的同時不必注意文章的外觀。

基礎的\(\LaTeX{}\)允許使用者使用\(\texttt{chapter}\)、\(\texttt{section}\)、\(\texttt{subsection}\)等標示文章不同層級的架構,對於標題等格式的修改不需要一一去內文處改動,只要在前置處理時修改格式即可,有點程式模組化的氣息。

\(\LaTeX{}\)的特點

借用前人的智慧

只要 Google 你需要用到的功能,例如圖表、化學結構式、樂譜、棋譜等等,通常都能夠找到已經存在的 package (巨集包),也就是像已經整理好的工具包,或像 C++ 的函式庫。如果想要慢慢瀏覽也可以到 ctan.org 上找找。

直接使用其他人已經微調、定義好的格式能夠省下不少時間,這是\(\LaTeX{}\)的一個很大的優點。

\(\LaTeX{}\)的特點

跨平台、免費

\(\TeX{}\)是一個自由軟體,當然也是一個免費使用的軟體,並且同一份原始碼基本上在不同的作業系統下都會編譯出相同的成品。

對於大多數的作業系統也都已經有對應的編輯器及套件,這使得論文、講義的共同編輯變得更加簡單。

\(\LaTeX{}\)的寫法與唸法

經過前面的一番業配,我們總算來到了今天最重要的部分,也就是 \(\LaTeX{}\) 到底應該怎麼寫和怎麼念(笑)

\(\LaTeX{}\)的寫法與唸法

  • 大家應該都注意到了, \(\LaTeX{}\) 的標準寫法是五個大寫字母歪七扭八地,A和E分別落在主線上下,這是為了避免和 latex (乳膠)搞混,如果因技術限制而無法寫成 \(\LaTeX{}\),則應以「LaTeX」的大小寫交錯方式呈現
  • 類似地,若無法寫成\(\TeX{}\)則應該寫成「TeX」。
  • 很重要,作筆記!

\(\LaTeX{}\)

\(\rightarrow\)                                                                     

\(\TeX{}\)

主線(Mean Line)

基線(Base Line)

大寫高度(Cap Height)

\(\rightarrow\)                                                                     

\(\rightarrow\)                                                                     

\(\LaTeX{}\)的寫法與唸法

  • \(\TeX{}\)一詞來自於希臘文的「TEXNH」(藝術、製造之意),後者同時也是英文 technical 的詞源
  • 據說高德納認為它的標準發音應是 [tεx] ,其中 [x] 相當於「ㄏ」的發音;不過\(\LaTeX{}\)開發者 Lamport 表示他對\(\LaTeX{}\)的讀音沒有偏好
  • 順帶一提,許多英語系國家會將字母 X 讀成 [k] ,筆者則是偏好 [ks] 的讀音

\(\LaTeX{}\)的數學公式格式

\(\TeX{}\)最大的優點之一

\(\LaTeX{}\)的數學公式格式

  • \(\TeX{}\)的數學格式被許多網站及應用程式使用,包含維基百科、Geogebra、Slides等等,或者是Markdown都可以看到其蹤影
  • 在普通的\(\TeX{}\)文檔中,若要顯示數學公式,必須先用「\(\texttt{\$}\)」進入數學模式後才能使用數學模式內專用的指令。
  • 由於應該不會講到\(\LaTeX{}\)的安裝,我們現在先開啟一個簡略的線上\(\TeX{}\)數學公式編輯器 Codecogs https://www.codecogs.com/latex/eqneditor.php

\(\LaTeX{}\)的數學公式格式

直接在文字方塊中鍵入指令就會顯示在下方,還能下載為圖片!此外也能用上方的按鈕直接選擇你需要的指令或格式,所以其實很多指令都不需要去背。

預備知識

  • \(\TeX{}\)以反斜線開頭作為指令的標記,由反斜線後直到非字母的第一個字元被視為調用的指令名稱
  • 之後可以接「可選參數」及「必填參數」,分別以\(\texttt{[], \{\}}\)包住,參數可以是零個也可以很多個。
  • 例如上面的sqrt,\(\texttt{[]}\)裡面的n代表「n次方根」,而\(\texttt{\{\}}\)裡面的x代表根號裡面要放的東西,用\(\texttt{[]}\)包起來的東西通常是可以省略的,在\sqrt{x}的例子中就是沒有小字的根號

\(\LaTeX{}\)指令的格式

\sqrt[n]{x}

預備知識

按鍵在哪裡??

看你自己的鍵盤啦

\(\LaTeX{}\)的數學公式格式

因為 codecogs 的第一行會縮排,若你用到了第二行,文字不會和第一行從同一個起點開始。解決這個問題的一個方法就是直接在第一行換行,如此縮排就會消失。

\(\LaTeX{}\)的數學公式格式

下面是部份的基礎指令介紹。

格式 功能 外觀
a_b / a_{p,q} 下標/足標
x^3 / 2^{3+5} 上標/冪次
a \leq b / x \geq y 小於等於、大於等於
a \cdot b ​點乘
a \times b 叉乘
a \div b 除號
\frac{q}{p} 分數
a_b / a_{p,q} \\ x^3 / 2^{3+5} \\ a \leq b / x \geq y \\ a \cdot b \\ a \times b \\ a \div b \\ \frac{q}{p}

\(\LaTeX{}\)的數學公式格式

Practice

\[\frac{19}{20} = \frac{1}{2} + \frac{1}{3} + \frac{1}{9} + \frac{1}{180}\]

\[2^a \div 2^b = 2^{a-b}\]

\[6\times 6+25\div 5=36+5=41\]

\[(a+b+c)^2 = a^2 + b^2 + c^2 + 2(a \cdot b + b \cdot c + c \cdot a)\]

\(\LaTeX{}\)的數學公式格式

格式 功能 外觀
\pm / \mp 加減號
\sqrt[n]{x} 根式
\cdots / \dots 省略號
\because ​因為
\therefore 所以
\sum_{k=1}^n sigma 求和符號
\forall、\exists 對於所有、存在
a b \ c  \\ ​空白、換行
​\text{xyz} ​文字模式
\pm / \mp \\ \sqrt[n]{x} \\ \cdots / \dots \\ \because \\ \therefore \\ \sum_{k=1}^n \\ \forall、\exists \\ a b \ c \\ \text{xyz}

\(\LaTeX{}\)的數學公式格式

打指令的時候要注意的東西

  • 不要把反斜線( \ )打成斜線( / )
  • 括弧要好好配對,例如\(\texttt{[], \{\}, \{\{\{[]\}\}\{\}\}}\)等等
  • 可以常常加空格增加可讀性XD,因為一般的空格會被\(\TeX{}\)忽略
  • 通常\(\texttt{\{\}}\)會接在指令後面表示裡面的內容,例如\frac{q}{p};但也可以把大括弧中間的東西包成一個「環境」,環境中字體的調整不會影響到環境外,同時整個環境會被環境外的指令視為只有一個字母
  • 例如若想要寫出「a的p+q次方」就必須將p+q用大括弧包起來,寫成a^{p+q}的形式(就像數學裡面的括號,3 x (4 + 5) 中的 4 + 5 會被先算一樣)

\(\LaTeX{}\)的數學公式格式

Practice

\[\sum_{k=1}^{n-1}\frac{1}{2^k} = \frac{1}{2} + \frac{1}{4} + \frac{1}{8} + \frac{1}{16} + \dots + \frac{1}{2^{n-1}} = \frac{2^n-1}{2^{n-1}}\]

\[r={\frac {\sum \limits _{i=1}^{n}(X_{i}-{\overline {X}})(Y_{i}-{\overline {Y}})}{{\sqrt {\sum \limits _{i=1}^{n}(X_{i}-{\overline {X}})^{2}}}{\sqrt {\sum \limits _{i=1}^{n}(Y_{i}-{\overline {Y}})^{2}}}}}\]

\[\frac{a+b+c}{3} \geq \sqrt[3]{a \cdot b \cdot c} \]

\[x_{1,2} = \frac{-b \pm \sqrt{b^2-4ac}}{2a}\]

我要成為排版王!

第一次編譯

我要成為排版王!

安裝 \(\TeX{}\) 的編譯程式及IDE大概是學習 \(\LaTeX{}\) 最大的障礙了。今天並不會講如何安裝在本機上,給各位的操作主要會以線上編輯器為主喔!鑒於安裝的困難,今次將會推薦各位使用 Overleaf 作為\(\LaTeX{}\)的第一次體驗。

我要成為排版王!

線上編輯器 Overleaf

  • 首先進入 https://www.overleaf.com
  • 點擊右上方的 Register 以註冊並使用線上編輯功能。除了使用電子郵件註冊,也有利用Google、Twitter登入的選項
  • 點擊看到的「Create First Project」,並選擇「Example Project」,創建一個專案。可以看到畫面左右分別是指令區及預覽區,最左邊是此專案包含的檔案

 

POKE ME

我要成為排版王!

線上編輯器 Overleaf

  • 每次開啟檔案都會先compile(編譯)一次,修改指令後按下Ctrl+S,或是點擊右邊的Recompile可以再次編譯
  • 大家可能會注意到中文無法直接編譯顯示,不過在告訴大家如何在\(\LaTeX{}\)中顯示中文之前,我們來仔細研究一下這份範例程式碼。

我要成為排版王!

前置區(Preamble)

首先看到的是一份\(\TeX{}\)檔的前置部分,我們稱為preamble區,基本上指 \begin{document} 之前的部分,主要宣告使用的package、文章或指令的格式,而標題、日期、作者也會寫在這部分,上面有提到過的期刊模版主要也是更動這一部分以符合所需的格式。

我要成為排版王!

本文區(Main Text)

接著就是本文區了,我們來邊看程式碼邊解釋。

每一個由 \begin{XXX}, \end{XXX}圍起來的區域稱為「環境」,環境內可以設定共通的格式、顏色等。內文則是由 \begin{document}, \end{document}包住,其中:

  • \maketitle指令使標題、作者、日期顯示出來
  • \section指令顯示段落標題,會自動加上以從1開始的編號
  • \begin{figure}, \end{figure}包住的部分代表插入圖片,並為圖片加上標題及標籤
  • \citep標記參考文獻,會和最後 \bibliography{}(參考書目)的編號自動對應。

我要成為排版王!

中文輸入 — xeCJK

  • 首先找到左上方「Menu」,選擇 Compiler(編譯器)為「XeLaTeX」
  • 在preamble區插入下列幾行:
\usepackage{xeCJK}
\setCJKmainfont[AutoFakeBold=3,AutoFakeSlant=.4]{Noto Sans CJK TC Regular}
\defaultCJKfontfeatures{AutoFakeBold=3,AutoFakeSlant=.4}
\XeTeXlinebreaklocale "zh"
\XeTeXlinebreakskip = 0pt plus 1pt

如此便能在內文、標題、作者、日期等正常使用中文啦!幸好已經有現成的工具讓中文的使用變得很輕鬆,並且還能選擇自己喜歡的字形呢!(前提是Overleaf有支援。P.S. Noto Sans才是真理!!!)

我要成為排版王!

中文輸入 — xeCJK

我們來嘗試輸入一些中文吧!

如果想不到寫什麼可以用下面的文章XD

 

再別康橋

一次方程式

從地名考察台北市歷史

標明文章的結構

非裝飾類指令

標明文章的結構

前置區會用的結構指令

格式 說明
\usepackage[ARGS]{FILE} 以ARGS的參數引入FILE的package
\author{NAME} 將作者設定成NAME
\title{TITLE} 將標題設定成TITLE
\date{\today} 將日期設定成今天
可以寫成\date{}不顯示日期

標明文章的結構

本文區會用的結構指令

格式 說明
\maketitle 顯示標題及日提(在前置區設定顯示什麼,接著打這行才能顯示出來)
\chapter{TITLE} 顯示章節名稱為TITLE並編號
\section{TITLE} 顯示小節名稱為TITLE並編號
\chapter*{NONUM} 顯示章節名稱為NONUM
\section*{NONUM} 顯示小節名稱為NONUM

幫文字整形

裝飾文字類指令

幫文字整形

格式 說明
\textit{TEXT} 顯示斜體(italic)文字
\textbf{TEXT} 顯示粗體(bold)文字
\texttt{TEXT} 顯示打字機體(typewriter)文字
\textsc{TEXT} 顯示小型大寫字母(small capitals)文字
\textsf{TEXT} 顯示無襯線(sans serif)
文字

調整字族

幫文字整形

調整字族

幫文字整形

調整大小

格式 說明
\tiny 最小的文字大小
\footnotesize 跟註解一樣大的文字大小
\normalsize 預設的普通文字大小
\large 稍微大一點的文字大小
\Huge 非常大的文字大小

幫文字整形

調整大小

幫文字整形

調整顏色

在使用顏色之前必須在前置區加入以下指令

\usepackage{xcolor}

表示我們使用 xcolor 這個巨集包裡面定義的顏色指令

接著可以使用和之前類似的指令修改顏色

 

幫文字整形

調整顏色

格式 說明
\textcolor{blue}{TEXT} 顯示藍色文字
\textcolor{red}{TEXT} 顯示紅色文字
\textcolor{magenta}{TEXT} 顯示洋紅色文字
\definecolor{pupil}{HTML}{008000} 定義pupil為新的文字顏色,其色彩的hex值為008000
\definecolor{candidateMaster}{RGB}{80, 0, 80} 定義candidateMaster為新的文字顏色,其RGB值為(80,0,80)

幫文字整形

調整顏色

有些顏色是已經在裝package時就定義好的,能夠直接使用

幫文字整形

其他

格式 說明
\underline{TEXT} 加了下底線的文字
\begin{center} ... \end{center} 使文字置中
\begin{flushleft} ... \end{flushleft} 使文字靠左對齊
\begin{flushright} ... \end{flushright} 使文字靠右對齊

環境指令介紹

互相嵌套的環境指令們

樹狀數組套持久化動態開點值域線段樹

環境指令介紹

$ ax+b = 0 $
\begin{math}
ax^2 + bx + c = 0
\end{math}
  • 使用 $ 的符號可以進入「行內數學模式(inline math mode)」的環境
  • 行內兩個字代表的是顯示的公式會和文字在同一個位置
  • 前面介紹的數學公式的指令大部分都得先進入數學模式才能正常顯示
  • 可以用 \begin{math} ... \end{math} 代替

環境指令介紹

$$
r=\frac{
    \sum \limits _{i=1}^{n}(X_{i}-{\overline {X}})(Y_{i}-{\overline {Y}})
}{
    \sqrt {\sum \limits _{i=1}^{n}(X_{i}-{\overline {X}})^{2}}
    \sqrt {\sum \limits _{i=1}^{n}(Y_{i}-{\overline {Y}})^{2}}
}
$$
\begin{displaymath}
r=\frac{
    \sum \limits _{i=1}^{n}(X_{i}-{\overline {X}})(Y_{i}-{\overline {Y}})
}{
    \sqrt {\sum \limits _{i=1}^{n}(X_{i}-{\overline {X}})^{2}}
    \sqrt {\sum \limits _{i=1}^{n}(Y_{i}-{\overline {Y}})^{2}}
}
\end{displaymath}
  • 把 $ 改成 $$ 可以進入「展開數學模式(display math mode)」的環境
  • 展開兩個字代表的是顯示的公式會另外成新的一行,並且可能會被分配比較大的空間及字體
  • 可以用 \begin{displaymath} ... \end{displaymath} 代替
  • 通常用於顯示很複雜的公式

環境指令介紹

\begin{enumerate}
\item Pen
\item Eraser
\item Paper
\end{enumerate}
  • \begin{enumerate} ... \end{enumerate}指令可以進入有編號的枚舉環境
  • 在環境中使用 \item 會自動加上編號及換行、對齊
  • 可以在一個枚舉環境裡面再使用一個枚舉環境(稱為巢狀枚舉),有點像 C++ 裡面的雙重迴圈

環境指令介紹

\begin{itemize}
\item Jizz
\item I'm EZ
\item mojang duel
\end{itemize}
  • \begin{itemize} ... \end{itemize}指令可以進入不編號的枚舉環境
  • 在環境中使用 \item 會自動加上圓點及換行、對齊
  • 同樣可以使用巢狀枚舉

學弟妹+U > < 記得明天有成果發表ㄛ

如果你們做了\(\LaTeX{}\)我會很驚訝(X

畢竟想要做得更精緻一定得google更多需要的東西

記住 google是你們強大的夥伴owo

Challenge

  • 完成前面數學模式的例題

  • 找到一個不在此篇中的package並查閱其指令的語法,嘗試做出一個範例

  • 順伯的窩---教材下載專區 選擇一篇喜歡的文章,試著以Overleaf做出其中一頁的內容

Reference

LaTeX

By bingxuan9112

LaTeX

  • 1,149