民主與共和
更好的共和度保障更高階的民主, 是因為 民主 與 共和 是統一的。
平衡態的“躍遷”是需要“吸收足夠能量”, "改變"總是需要"成本"的。
在正確的方向上,每一天的學習是“質變飛躍”的必要。
Markdown: List 嵌入 code block
Code is possible in markdown (see here) - you just have to leave a blank line and then indent by 8 spaces as a minimum.
The text below:
* example
this.isSomeCode = true;
*
addMoreCode();
will generate this:
-
example
this.isSomeCode = true;
-
addMoreCode();
LaTeX:從入門到日常使用
發表於2022-02-05 | 更新於2022-03-20 | 教程 |字數總計:3.6k | 閱讀時長:12分鐘 |閱讀量:
前言:排版 與 書寫 的討論
LaTeX是一種“非所見即所得”的排版系統,使用者需要輸入特定的程式碼,儲存在字尾為.tex的檔案,透過編譯得到所需的pdf檔案,例如以下程式碼:
\documentclass{article}
\begin{document}
Hello, world!
\end{document}
輸出的結果是一個pdf檔案,內容是“Hello, world!”。
類比, 假設使用 Word 排版是駕駛汽車, 那麼使用LaTeX進行排版, 就像駕駛飛機。
使用LaTeX是更高層級的自由,因為其強規範性的保障。
這使LaTeX非常適合論文排版。在學習的過程, 將會深刻感受到這一點。
無論是 LaTeX 還是 Word,其本質都是用來 排版,
另外, 筆者最建議的書寫格式是Markdown,其書寫格式獨立於排版,
也支援使用 LaTeX語法 輸入公式,與LaTeX之間的轉換非常方便。
準備工作:安裝LaTeX與配置
安裝Tex Live
官方地址 http://mirror.ctan.org/systems/texlive/Images/texlive2021.iso
以下是一些映象地址:
清華大學 北京交通大學 上海交通大學 中科大 重慶大學 騰訊雲
其中的iso檔案可以使用壓縮軟體解壓, 或載入到光碟, 接下來直接安裝就行。
其他作業系統的使用者(如MacOS),可參考TeX Live 下載及安裝說明 | (liam.page)的方法.
選擇TeX編輯器
對於初學, 最推薦的編輯器是TeXworks, 也避免配置帶來的問題。
要提高效率, 可以選用:
- TeXstudio,安裝地址為: TeXstudio - A LaTeX editor (sourceforge.net);
- Visual Studio Code,這是筆者最建議的TeX編輯器,不過需要配置LaTeX,較麻煩;
- 另外有線上的編輯器,如Overleaf, 線上LaTeX編輯器。
選擇pdf閱讀器和編輯器
LaTeX編譯的結果是pdf檔案,建議選用專業的pdf閱讀器或pdf編輯器。
特別是在閱讀beamer型別檔案時,不同的閱讀器效果差別極大。在這裡推薦Acrobat:
- Adobe Acrobat Reader, 免費, 可檢視、簽署、協作處理和批註 PDF 檔案,
安裝地址為: Adobe Acrobat Reader; - Adobe Acrobat Pro,付費,可用於建立、保護、轉換和編輯 PDF檔案,
安裝地址為: Adobe Acrobat | Adobe Document Cloud。
利用LaTeX編寫文件
文件型別
TeX有多種文件型別可選,筆者較常用的有如下幾種型別:
- 對於英文,可以用
book
、article
和beamer
; - 對於中文,可以用
ctexbook
、ctexart
和ctexbeamer
,
這些型別自帶了對中文的支援。
不同的檔案型別,編寫的過程中也會有一定的差異,如果直接修改檔案型別的話,甚至會報錯。
以下統一選用ctexart
。在編輯框第一行,輸入如下內容來設定檔案型別:
\documentclass{ctexart}
另外,一般也可以在\documentclass
處設定基本引數,
筆者通常設定預設字型大小為12pt,紙張大小為A4,單面列印。
需要將第一行的內容替換為:
\documentclass[12pt, a4paper, oneside]{ctexart}
檔案的正文部分需要放入document
Environment,在document
Environment外的部分不會出現在檔案。
\documentclass[12pt, a4paper, oneside]{ctexart}
\begin{document}
這裡是正文.
\end{document}
Macro Package
為了完成一些功能(如定理Environment),還需要在導言區,也即document
Environment之前載入宏包。
- 載入宏包的程式碼是`usepackage{}`。
本教程,數學公式
與定理Environment
有關的宏包為amsmath
、amsthm
、amssymb
,- 圖片插入的宏包為
graphicx
,
- 程式碼如下:
\usepackage{amsmath, amsthm, amssymb, graphicx}
載入宏包時
還可以設定基本引數
,如使用超連結宏包hyperref
,可以設定引用的顏色為黑色等,程式碼如下:
\usepackage[bookmarks=true, colorlinks, citecolor=blue, linkcolor=black]{hyperref}
Title
\title{}
設定 標題,
\author
設定 作者,
\date{}
設定 日期,
要使用\maketitle
才能在文件顯示標題資訊
,
這些都需要放在導言區
。例如:
\documentclass[12pt, a4paper, oneside]{ctexart}
\usepackage{amsmath, amsthm, amssymb, graphicx}
\usepackage[bookmarks=true, colorlinks, citecolor=blue, linkcolor=black]{hyperref}
% 導言區
\title{我的第一個\LaTeX 文件}
\author{統計91董晟渤}
\date{\today}
\begin{document}
\maketitle
這裡是正文.
\end{document}
正文
正文直接在document
Environment書寫,沒有必要加入空格來縮排, 因為文件預設會進行首行縮排。
- Page: 另起一頁的方式是:
\newpage
- Paragraph 段落:
- 兩鄰行在編譯時仍然會視為同一段落.
- 另起一段的方式是使用一行分隔;如下程式碼,編譯出來就是兩個段落:
我是第一段.
我是第二段.
- 正文部分多餘的空格、回車等等都會被自動忽略;
這保證, 全文排版不會突然多出一行, 或者多出一個空格。 - 標點符號: 筆者為保證美觀,通常將中文標點符號替換為英文標點符號,
需要注意的是英文標點符號後面還有一個空格,這特別適合數學型別的文件。 - 正文設定區域性的特殊字型:
字型 命令
直立 \textup{}
義大利 \textit{}
傾斜 \textsl{}
小型大寫 \textsc{}
加寬加粗 \textbf{}
Chapt 章節
對ctexart
檔案型別,章節可用\section{}
和\subsection{}
來標記, 例如:
\documentclass[12pt, a4paper, oneside]{ctexart}
\usepackage{amsmath, amsthm, amssymb, graphicx}
\usepackage[bookmarks=true, colorlinks, citecolor=blue, linkcolor=black]{hyperref}
% 導言區
\title{我的第一個\LaTeX 文件}
\author{統計91董晟渤}
\date{\today}
\begin{document}
\maketitle
\section{一級標題}
\subsection{二級標題}
這裡是正文.
\subsection{二級標題}
這裡是正文.
\end{document}
TOC(Table of Contents)目錄
在有了章節的結構之後,使用\tableofcontents
命令就可以在指定位置生成目錄。
通常帶有目錄的檔案需要編譯兩次,因為需要先在目錄生成.toc
檔案,再據此生成目錄。
\documentclass[12pt, a4paper, oneside]{ctexart}
\usepackage{amsmath, amsthm, amssymb, graphicx}
\usepackage[bookmarks=true, colorlinks, citecolor=blue, linkcolor=black]{hyperref}
% 導言區
\title{我的第一個\LaTeX 文件}
\author{統計91董晟渤}
\date{\today}
\begin{document}
\maketitle
\tableofcontents
\section{一級標題}
\subsection{二級標題}
這裡是正文.
\subsection{二級標題}
這裡是正文.
\end{document}
圖片
插入圖片需要使用graphicx
宏包,建議使用如下方式:
\begin{figure}[htbp]
\centering
\includegraphics[width=8cm]{圖片.jpg}
\caption{圖片標題}
\end{figure}
註釋:
[htbp]
: 是自動選擇插入圖片的最優位置,
\centering
: 圖片居中,
[width=8cm]
: 圖片的寬度為8cm
,
\caption{}
: 圖片的標題。
表格
LaTeX 表格插入較麻煩, 直接使用 Create LaTeX tables online 來生成。
建議使用如下方式:
\begin{table}[htbp]
\centering
\caption{表格標題}
\begin{tabular}{ccc}
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9
\end{tabular}
\end{table}
列表
LaTeX的列表Environment包含 無序列表itemize
、有序列表enumerate
和描述description
,
以enumerate
為例,用法如下:
\begin{enumerate}
\item 這是第一點;
\item 這是第二點;
\item 這是第三點.
\end{enumerate}
另外,也可以自定義\item
的樣式:
\begin{enumerate}
\item[(1)] 這是第一點;
\item[(2)] 這是第二點;
\item[(3)] 這是第三點.
\end{enumerate}
Theory Environment
-
Theory Environment需要使用
amsthm
宏包,
首先在導言區
加入:\newtheorem{theorem}{定理}[section]
註釋:
{theorem}
是Environment的名稱
,
{定理}
設定了該Environment顯示的名稱
是“定理
”,
[section]
的作用是讓theorem
Environment在每個section
有單獨編號
。 -
在
正文加入一條定理
(注意:[定理名稱]
不是必須的):\begin{theorem}[定理名稱] 這裡是定理的內容. \end{theorem}
-
建立新Theory Environment:
要 新Theory Environment 和theorem
Environment 一起計數, 可如下:\newtheorem{theorem}{定理}[section] \newtheorem{definition}[theorem]{定義} \newtheorem{lemma}[theorem]{引理} \newtheorem{corollary}[theorem]{推論} \newtheorem{example}[theorem]{例} \newtheorem{proposition}[theorem]{命題}
-
定理的證明可以直接用
proof
Environment。
Page 頁面
-
Page Size(頁面大小): 選擇檔案型別時, 設定的
頁面大小
是a4paper
,
也可以修改頁面大小為b5paper
等等。 -
Page Margin(頁邊距): LaTeX 預設的頁邊距很大,
為讓每一頁顯示內容更多, 用geometry
宏包,並在導言區
加入以下程式碼:\usepackage{geometry} \geometry{left=2.54cm, right=2.54cm, top=3.18cm, bottom=3.18cm}
-
Line Space(行間距): 使用如下程式碼:
\linespread{1.5}
-
Page Number(頁號)
-
預設的頁號編碼方式是阿拉伯數字,使用者也可以自己設定為
小寫羅馬數字
:
\pagenumbering{roman}
另外:
aiph
表示小寫字母,Aiph
表示大寫字母,
Roman
表示大寫羅馬數字,arabic
表示預設的阿拉伯數字
。 -
設定頁號從0開始:
\setcounter{page}{0}
-
數學公式的輸入方式
行內公式
只要是公式,就需要放入Equation Environment
。
Equation Environment
通常使用特殊的字型
,並且預設為斜體
。
行內公式
通常使用$..$
來輸入,這通常被稱為Equation
,例如:
若 $a>0$, $b>0$, 則$a+b>0$.
如果要在行內公式
展現出行間公式
的效果,可以在前面加入\displaystyle
,例如
設$\displaystyle\lim_{n\to\infty}x_n=x$
行間公式
行間公式
也是正文的一部分
,需要與正文連貫,並且加入標點符號。
行間公式
需要用$$..$$
來輸入,筆者習慣的輸入方式如下:
if $a>0$, $b>0$, then
$$
a+b>0.
$$
這種輸入方式的一個好處是,這同時也是Markdown
的語法。
輸入方式,可以參考: 線上LaTeX公式編輯器-編輯器 (latexlive.com),
上下結構
上方: \overset{OverContent}{MainContent}
下方: \underset{UnderContent}{MainContent}
$\large \begin{array}{*} \\
\underset{i=1}{ \overset{i=n}{ \lim { \text{text} } } } \\
\end{array}$
效果:\(\large \begin{array}{*} \\ \underset{i=1}{\overset{i=n}{\text{text}}} \\ \end{array}\)
更多參考: Over(\overset) and Under(\underset):
上下標
上標
可以用^
輸入,例如a^n
,效果為 $ a^n $;
下標
可以用_
來輸入,例如a_1
,效果為 $ a_n $。
上下標只會讀取第一個字元
,如果上下標的內容超過一個字元,要改成^{}
或_{}
。
分式
- 分式(正常)
\dfrac{}{}
: 例如\dfrac{a}{b}
, 效果為: $ \dfrac{a}{b}$ - 小分式
\frac{}{}
: 例如a^\frac{1}{n}
,效果為$ a^\frac{1}{n}$
括號
- 括號: 可以直接用
(..)
輸入; - 高括號: 有時候括號的
內容高度較高
, 改用\left(..\right)
。
例如:\left(1+\dfrac{1}{n}\right)^n
,效果是$ \left( 1+\dfrac{1}{n} \right)^n $。 - 中間要隔開時用
\left( .. \middle| .. \right)
- 大括號
{}
: 要用\{..\}
,注意:\
起到轉義作用
。
等號
$\large K_1 \approx {s_1}, K_2 \equiv {s_2, s_3, s_4} $
$\large K_1 \approx {s_1}, K_2 \equiv {s_2, s_3, s_4} $
\approx
: \(\approx\) is used mostly for the approximate (read: calculated) value of a mathematical expression like \(\pi \approx 3.14\)\cong
: \(\cong\) is used to show a congruency between two mathematical expressions, which could be geometrical, topological, and when using modulo arithmetic you can get different numbers that are congruent, e.g., \(5 \text{ mod } 3 \cong 11 \text{ mod } 3\) (although this is also written as \(\equiv\)). In LaTeX it is coded as \cong.\sim
: \(\sim\) is a similarity in geometry and can be used to show that two things are asymptotically equal (they become more equal as you increase a variable like \(n\)). This is a weaker statement than the other two.\simeq
: \(\simeq\) is more of a grab-bag of meaning. which means "similar equal" so it can be either, which might be appropriate in a certain situations.
加粗
對於加粗的公式,建議使用bm宏包
,並且用命令\bm{}
來加粗,這可以保留公式的斜體。
大括號
- How do I get curly braces to show in math mode?
-
Q: When I write this: $ K_1 = {s_1}, K_2 = {s_2, s_3, s_4} $
the braces disappear in the output. -
A: You need to escape the braces like
\{ ... \}
.- But, as the contents inside the braces may vary in size,
it would be better to use theDeclarePairedDelimiter
command from themathtools
package:
\DeclarePairedDelimiter\set\{\}
This defines a\set{…}
command, which accepts an optional argument:\big
,\Big
,\bigg
, or\Bigg
,
which implicitly adds a pair of\bigl
…\bigr
, &c. in front of the braces. Example:\set[\big]{...}
- A
\set*{…}
variant becomes available, which adds implicitly a pair of\left…\right
.
- But, as the contents inside the braces may vary in size,
-
Example:
\begin{gather*} c \colon \{1, \dots, n\} \rightarrow \{1, \dots, n\} \text{ such that} \\ \begin{cases} c(a_i) = a_{i+1} & \text{for }1\le i<l \\ c(a_l) = a_1 \end{cases} \end{gather*}
-
- Some comments:
-
Use the
cases
environment, provided by theamsmath
package,
to place aleft curly brace
ahead of two or more expressions. -
Don't use
...
to create a typographicalellipsis
; instead, use\dots
. -
Use the
\text{ }
command to write text material inside mathematical expressions. -
As pointed out in the comments by @SvendTveskæg and @daleif,
it's better (typographically speaking) to use the command\colon
instead of:
. -
if you need the
left-hand curly brace
tospan all three rows
,
you could do so with the following code:( Observe, though,
this code doesn't make full use of the capabilities of thecases
;
for sure, one could replace\begin{cases} ... \end{cases}
with a more basic,
\left\{\begin{array}{@{}l} ... \end{array}\right.
construct.):\begin{equation*} \begin{cases} c \colon \{1, \dots, n\} \rightarrow \{1, \dots, n\} \text{ such that}\\ c(a_i) = a_{i+1} \text{ for $1\le i<l$}\\ c(a_l) = a_1 \end{cases} \end{equation*}
-
也可以使用
cases
Environment,可用於分段函式
或者方程組
,例如$$ f(x)=\begin{cases} x, & x>0, \\ -x, & x\leq 0. \end{cases} $$ 效果是:
多行公式
多行公式通常使用aligned
Environment,例如
$$
\begin{aligned}
a & =b+c \\
& =d+e
\end{aligned}
$$
效果是:
Ending
這個教程耐心學習完後,能滿足日常使用的需求。
LaTeX的使用還需要一定的熟練度,仍有時間的讀者還可以考慮:
- 試著用
LaTeX
抄幾頁書籍, 或者寫幾頁文章,增加熟練度; - 配置
Visual Studio Code
上的LaTeX
,探索效率更高的編輯器; - 研究如何美化排版,或是使用網路上的精美模板,讓排版的效果更好。