SciTech-Mathmatics-Markdown:List 嵌入 code block + LaTex: 論文寫作、排版與使用 + 數學公式的輸入方式

abaelhe發表於2024-10-04

民主與共和

更好的共和度保障更高階的民主, 是因為 民主共和 是統一的。
平衡態的“躍遷”是需要“吸收足夠能量”, "改變"總是需要"成本"的。
在正確的方向上,每一天的學習是“質變飛躍”的必要。


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有多種文件型別可選,筆者較常用的有如下幾種型別:

  • 對於英文,可以用bookarticlebeamer
  • 對於中文,可以用 ctexbookctexartctexbeamer
    這些型別自帶了對中文的支援。

不同的檔案型別,編寫的過程中也會有一定的差異,如果直接修改檔案型別的話,甚至會報錯。
以下統一選用ctexart。在編輯框第一行,輸入如下內容來設定檔案型別:
\documentclass{ctexart}

另外,一般也可以在\documentclass處設定基本引數,
筆者通常設定預設字型大小為12pt,紙張大小為A4,單面列印。
需要將第一行的內容替換為:
\documentclass[12pt, a4paper, oneside]{ctexart}

檔案的正文部分需要放入document Environment,在documentEnvironment外的部分不會出現在檔案。

\documentclass[12pt, a4paper, oneside]{ctexart}
\begin{document}

這裡是正文. 

\end{document}

Macro Package

為了完成一些功能(如定理Environment),還需要在導言區,也即documentEnvironment之前載入宏包。

  • 載入宏包的程式碼是`usepackage{}`。
    本教程,
    • 數學公式定理Environment有關的宏包為 amsmathamsthmamssymb
    • 圖片插入的宏包為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}



正文

正文直接在documentEnvironment書寫,沒有必要加入空格來縮排, 因為文件預設會進行首行縮排

  • 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] 的作用是讓theoremEnvironment在每個section單獨編號

  • 正文加入一條定理(注意: [定理名稱]不是必須的):

      \begin{theorem}[定理名稱]
       這裡是定理的內容. 
        \end{theorem}
    
  • 建立新Theory Environment:
    新Theory EnvironmenttheoremEnvironment 一起計數, 可如下:

      \newtheorem{theorem}{定理}[section]
      \newtheorem{definition}[theorem]{定義}
      \newtheorem{lemma}[theorem]{引理}
      \newtheorem{corollary}[theorem]{推論}
      \newtheorem{example}[theorem]{例}
      \newtheorem{proposition}[theorem]{命題}
    
  • 定理的證明可以直接用proofEnvironment。

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{}來加粗,這可以保留公式的斜體。

大括號

  1. 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 the DeclarePairedDelimiter command from the mathtools 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 .
    • 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*}
      

\[ \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*}\]

  1. Some comments:
  • Use the cases environment, provided by the amsmath package,
    to place a left curly brace ahead of two or more expressions.

  • Don't use ... to create a typographical ellipsis; 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 to span all three rows,
    you could do so with the following code:( Observe, though,
    this code doesn't make full use of the capabilities of the cases;
    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*}
    
  1. 也可以使用cases Environment,可用於分段函式或者方程組,例如

     $$
     f(x)=\begin{cases}
      x, & x>0, \\
     -x, & x\leq 0.
     \end{cases}
     $$
    
     效果是:
    

\[ f(x)=\begin{cases} x, & x>0, \\ -x, & x\leq 0. \end{cases} \]


多行公式

多行公式通常使用aligned Environment,例如

$$
\begin{aligned}
a & =b+c \\
& =d+e
\end{aligned}
$$

效果是:

\[\begin{aligned} a & =b+c \\ & =d+e \end{aligned} \]



Ending

這個教程耐心學習完後,能滿足日常使用的需求。

LaTeX的使用還需要一定的熟練度,仍有時間的讀者還可以考慮:

  • 試著用LaTeX抄幾頁書籍, 或者寫幾頁文章,增加熟練度;
  • 配置Visual Studio Code上的LaTeX,探索效率更高的編輯器;
  • 研究如何美化排版,或是使用網路上的精美模板,讓排版的效果更好。

相關文章