天天看點

Latex 學習之旅(一)1. 基本結構及操作2. 清單和表格環境3 特殊字元4 公式編輯5 圖檔的插入6 數學公式排版進階

學習資料:

  • LaTeX筆記八——數學模組化專題
  • 如何用Markdown寫論文
  • LaTeX排版劄記
  • LaTeX排版劄記part 2—速查手冊、導言區、扉頁和公式
  • 論文格式細節整理彙總
  • https://www.zhihu.com/question/66167182/answer/239342568
    • 隻要遇到問題Google 一下後面加一個

      site:http://stackoverflow.com

      能解決你 \(99.999%\) 的疑問還能順便把英文練好。
    • 新手不要自己造輪子你 \(99%\) 的需求都有宏包支援你隻需要找到是哪個宏包并且看懂手冊就行了。
    • 查找手冊可以在指令行裡用

      texdoc

      + 宏包名字執行起來有點小慢我喜歡在 Everything 裡搜尋宏包名字 + PDF。
    • Git 使用那真是想删哪就删哪大不了再退回來。而且晚上回家前 push 到網上回家可以繼續寫。多人合作一篇文章也不錯。
    • 寫中文文檔一定要用 ctex 宏包不要用 CJK 或者 xeCJK 宏包。
    • tabu

      比 tabular 好用太多cleveref 提供的

      \cref

      比預設的 \ref 好用太多。
    • 關于 label 的命名我建議

      perfix:caption

      perfix 就是字首比如 fig、tab、lst、eqn、等等一看就知道這個 label 是什麼類型。字首加 caption 的組合可以很容易的找到需要引用的 label而不用到處往回翻找。
    • 數學公式要規範花點時間讀一下

      ChinaTEX MathFAQ

    • 不要忽視 Warning最好弄明白每個 Warning 是什麼意思怎麼産生的會對文檔造成什麼影響如何消除。實在覺得 Warning 礙眼的話可以用 silence 宏包屏蔽掉。
    • 寫特别大的文檔要将整個文檔分成若幹部分用

      \input

      或者

      \include

      加到主檔案中。
    • 論文實驗資料繪圖可以考慮用

      pgfplots

      實驗代碼隻需要把結果儲存成文本格式的資料就行。有兩點好處第一圖的風格與正文一緻強迫症福音第二修改實驗不需要改圖隻需要重新跑一下實驗然後重新用 LaTeX 編譯一下就行了。
    • 如果你是強迫症晚期的話其他插圖可以考慮用

      tikz

      宏包完成。
    • LaTeX 表格對新手不是特别友好可以考慮用這個 https://www.tablesgenerator.com/。
    • 說到表格不管你用什麼編輯器一定要用支援列模式的編輯器一定要用等寬字型千萬别用 Times New Roman 等非等寬字型的畫表格想死。
    • 最後推薦幾個我經常用的宏包吧。
      • tcolorbox

        簡直是黑魔法的存在
      • minted/listings

        排版代碼需要他們
      • enumitem

        清單環境想怎麼調就怎麼調
      • xparse

        提供

        \NewDocumentCommand

        等指令友善定義形參複雜的指令。

0. 使用 LaTeX 有什麼比較好的編寫技巧或習慣

Detexify

識别手寫的 symbol 然後給出相應的 Latex 代碼并且給出需要 include 的 package識别的準确度很高。

制作表格

線上制作 Latex 表格的網站神器LaTeX Table Generator 真正的所見即所得支援代碼與表格之間的無縫轉換更支援與Excel的複制粘貼非常好用

除去 Latex 之外網站還支援 Markdown, HTML 等多種格式的表格生成。再也不用花時間做表格了當然如果需要特别精細的調整還是需要結合自己的需要靈活用LaTex代碼調整。這個工具隻是輔助但是基本上能解決很多的大問題的。

位址在這裡http://www.tablesgenerator.com

線上LaTex協作編譯器 -- 合作者的利器 Overleaf

網址https://www.overleaf.com/

自定義一些指令

例如

\def\R{\mathbb{R}}

這樣你敲

$\R$

就等價于 敲

$\mathbb{R}$

了。

.bib

文檔

把所有 citation 都放在一個叫

research.bib

的文檔裡然後代碼的最後加上以下兩行

\bibliographystyle{unsrt}
\bibliography{research}
           

bib文檔中一個引用是長這樣的

@ARTICLE{potts,
   author = {{Potts}, R.~B. and {Domb}, C.},
    title = {Some generalized order-disorder transformations},
  journal = {Proceedings of the Cambridge Philosophical Society},
     year = 1952,
   volume = 48,
    pages = {106--109},
}
           

這樣的好處是容易管理 citation友善重複利用。

以下我均是在 TeXstudio 軟體環境下編譯的

TeXstudio 有很豐富的向導操作比如在

向導(w)

中有插入圖檔按鈕十分友善。

  • TeXstudio : User manual

1. 基本結構及操作

構成一篇文檔最基本的三個語句是

\documentclass{book}  %模闆類型為book

\title{...}   %添加标題

\author{...}    %添加作者

\date{}   %LaTeX會自動生成日期如果不需要就加這一步将日期去掉

\begin{document}     %開始正文
\maketitle       %制作封面

\tableofcontents    %加入目錄包括頁碼非必需

\mainmatter   %如果希望頁碼是從正文部分開始就加上這句指令非必需

%下面是幾個主要的層次結構

\part{...}      %第一部分
\chapter{...}     %第一章
\section{...}      %第一節
\subsection{...}     %第一小節

%可以重複排列添加上面的層次結構。

\part{...}      %第二部分
\chapter{...}     %第二章
\section{...}      %第二節
\subsection{...}     %第二小節
           
  • 注意一件事情如果輸入

    \tableofcontents

    但是pdf格式中卻什麼都沒有出現那麼需要再重複幾次 L 與 dvi 轉 pdf 過程。

2. 清單和表格環境

2.1 清單

LaTeX 的清單分為無序清單和自定義清單。

無序清單

\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\begin{document}
    
    \begin{itemize}
        \item This is the first row.
        \item This is the first row.
        \item This is the first row.
    \end{itemize}
    
\end{document}
           

自定義清單

需要使用宏包指令為

\usepackage{...} %...為宏包名字
           

簡單來說這個過程就像是 Python 裡面的 import 和 C 語言裡面的 include。

\usepackage{enumerate}

\begin{enumerate}[A.] %這裡我們将項目符号自定義為大寫字母.也就是說自定義過程需要将内容加在後面的[]中。
  \item hello
  \item hello,suri
  \item hello
\end{enumerate}
           

同樣可以把

A.

換成任何自定義的符号。另外也可以在

[]

中對項目符号的格式進行修改。比如

\begin{enumerate}[\beseries A.] %對項目符号加粗
\begin{enumerate}[\sffamily A.] %無襯線字型
           

2.2 表格

表格基本操作

插入表格的指令為編輯器上方的

向導

\(\longrightarrow\)

表格

點選之後确認行數和列數這裡是三行三列将會出現

\begin{tabular}{|*|*|*|} %這裡的内容是為了确認對齊情況
  \hline
  % after \\: \hline or \cline{col1-col2} \cline{col3-col4} ...
  * & * & * \\ %将内容輸入在*的位置
  * & * & * \\
  * & * & * \\
  \hline
\end{tabular}
           
  • 表格内容對齊的方式有三種分别是居中對齊靠左對齊靠右對齊。三種格式反映在表格第一行代表符号分别為

    c

    ,

    l

    ,

    r

    英文首字母

例如如果我們需要将這份表格内容全部居中對齊則輸入

\begin{tabular}{|c|c|c|}
           
  • 這裡的豎線代表了輸出之後的表格中會出現豎的表格線如果不需要可以去掉即為
\begin{tabular}{ccc}

\hline %添加橫線單獨一行
           
  • \cline{2-3}

    表示在是在上一行的第二個第三個單元格下面添加橫線。
  • \\

    用在每一行的後面表示表格中的換行
  • \multicolumn {number} {...}{...}

    合并列其中

    number

    為要合并的列的數量第一個 ... 為對齊方式第二個為合并的内容。隻對該行有效。
  • \multirow

    合并行需要導入該宏包
  • &

    是分隔符

添加表頭

  • table

    這裡的

    caption

    是标題

    label

    主要在添加超連結時使用

    centering

    表示所有内容居中對齊。
\begin{table}
    \centering
    \begin{tabular}{cccc}
        \hline
        eshi&sd&dfefe&sdsd\\
        \hline
        12&343&423&312\\
        123&32&132&312\\
        23&434&231&23\\
        \hline
    \end{tabular}
    \caption{this is my table}
\end{table}
           
  • 注如果表格太長無法在一頁的話需要将

    table

    換成

    longtable

    并需要使用宏包。

3 特殊字元

  • %

    後面為注釋輸入正規的

    %

    需要在

    %

    前面加

    \

  • $

    在數學狀态下使用數學公式有行間公式和行内公式兩部分組成行間公式需要在兩個

    $$

    之間進行居中對齊。一個

    $

    是生成行内公式正規的

    $

    也需要

    \

  • {}

    屬于内部指令需要在前段和後端加

    \

  • \

    在 latex 有專門的指令為

    backslash

進行中文時應該用 ctex 宏包

CTeX 和 TeX Live 套件都包含 ctex 進行中文的包可以看下 ctex 的文檔

  • 全中文文檔建議使用 cTex 文檔類

    ctexart

    ctexrep

    ctexbook

    ctexbeamer

    \documentclass{ctexart}

或者直接使用

\documentclass{ctex}
           

4 公式編輯

latex 公式有兩種分别為行内公式和行間公式行間公式有兩種插入方式

$a^2+b^2=c^2$ %行内公式
$$a^2+b^2=c^2$$ %行間公式
\[a^2+b^2=c^2\] %行間公式
           

4.1 對公式編号

\begin{equation}\label{}    %label仍然表示标簽隻有引用時用得到非必需
 
\end{equation}
           

示例

\begin{equation}
\frac{{ - b \pm \sqrt{{b^2} - 4ac} }}{{2a}}
\end{equation}
           

編号時根據章節來的若程式中沒有層次結構是以顯示為

1

這個是可以人為控制的想要按照哪一部分來編号可以在前面加代碼

\numberwithin{equation}{subection} %按照subection對公式編号
           

而有的時候如果出現兩個重要程度等同的公式需要用ab進行編号那麼需要使用的指令是

\begin{subequations} 
*%公式
\end{subequations}  %使用ab進行編号
           

需要注意的是使用

subequations

指令需要使用到宏包

amsmath

需要在開頭導入宏包。

\documentclass{book}
\usepackage{amsmath} %導入宏包
           

使用方法舉例如下

\begin{subequations}
\begin{equation}
\frac{{ - b \pm \sqrt{{b^2} - 4ac} }}{{2a}}
\end{equation}

\begin{equation}
\frac{{ - b \pm \sqrt{{b^2} - 4ac} }}{{2a}}
\end{equation}
\end{subequations}
           

4.2 公式格式修改

為了起到強調的作用我們可以給公式加一個框。加框的指令為

\boxed{}
           

boxed

指令必須是在

equation

環境之下舉例用法如下

\begin{equation}\boxed{
\frac{{ - b \pm \sqrt{{b^2} - 4ac} }}{{2a}}}
\end{equation}
           

展示如下

%%latex

\begin{equation}\boxed{

\frac{{ - b \pm \sqrt{{b^2} - 4ac} }}{{2a}}}

\end{equation}

4.3 通過自定義簡化函數

在 latex 中有些指令非常長在輸入公式的時候會帶來很多的不便為了簡化這些指令我們可以使用

newcommand

這個指令大緻相當于

C語言

中的宏替換用法如下

\newcommand{\fc}{\frac}  %這個指令使用在文章的開頭表示用 fc 來表示 frac同時 frac 函數仍然可以繼續使用。
           

之後在後面需要使用

frac

函數時隻需要輸入

fc

即可我們可以進行對比

$$\frac{{ - b \pm \sqrt{{b^2} - 4ac} }}{{2a}}$$
$$\fc{{ - b \pm \sqrt{{b^2} - 4ac} }}{{2a}}$$
           

但是需要注意的是自定義的名稱不能夠與 latex 内置的指令沖突。

5 圖檔的插入

TeXstudio 可以直接插入圖檔

使用 latex 插入圖檔時基本的操作有兩個

  • 第一個是需要使用宏包
\usepackage{graphicx}   %在導言區導入宏包
           
  • 第二個為格式
\includegraphics{*.eps}    %*代表了檔案名
           

下面以不同格式的圖檔為例進行介紹

  • 插入

    eps

    格式圖檔

    EPS是 Encapsulated Post Script 的縮寫。EPS 格式是 Illustrator CS5 和 Photoshop CS5 之間可交換的檔案格式。 EPS 檔案是目前桌面印刷系統普遍使用的通用交換格式當中的一種綜合格式。 ——百度百科

示例

\begin{figure}
  \centering
  \includegraphics[scale=0.2]{hellohellotest.eps} %這裡 scale 控制圖檔的大小為原圖檔的 0.2倍備注其實可以不加 .eps
  \caption{This is a Poster} %圖檔标題
\end{figure}
           

控制圖檔輸出格式的幾個常見的具體指令

  • width

    =* %寬度
  • height

    =* %高度 高度和寬度必須标明明确的機關比如厘米cm或者英寸in
  • scale

    =* %倍數
  • angle

    =* %順時針旋轉角度

6 數學公式排版進階

事實上

$$

因為會産生一些不良的間距缺少錯誤檢查并且不能正确處理

fleqn

等文檔選項是以不推薦。

一般的上下标都是放在數學符号的右上右下方如果需要将它們寫在正下正上方比如寫

max

什麼的)我們可以使用

\limits

$\sum_{i=1}^{n}$\quad %\quad表示拉開一段距離
$\sum\limits_{i=1}^{n}$
           

\(\sum\limits_{i=1}^{n}\)

想加入多行的上下标可以使用

\substack

指令舉個例子

$\sum\limits_{\substack{i=1\\j=1}}^{n}$   %注意\substack使用的位置
           

\(\sum\limits_{\substack{i=1\\j=1}}^{n}\)

6.1 定界符

嵌套多了式子會變得非常複雜也就會變得越來越大可是這個時候如果你使用括号你會發現它的大小并沒有什麼變化這就顯得非常的 low影響美觀是以我們會在括号外加一個 left 或者是 right 進行大小的控制。

6.2 标準的LaTeX提供的數學字型有以下幾種

\[
\mathit{ABCDE}\]
\[
\mathrm{ABCDE}\\\]
\[
\mathbf{ABCDE}\\\]
\[
\mathsf{ABCDE}\\\]
\[
\mathtt{ABCDE}\\\]
           
%%latex
\[
\mathit{ABCDE}\]
\[
\mathrm{ABCDE}\\\]
\[
\mathbf{ABCDE}\\\]
\[
\mathsf{ABCDE}\\\]
\[
\mathtt{ABCDE}\\\]
           

[

\mathit{ABCDE}]

[

\mathrm{ABCDE}\]

[

\mathbf{ABCDE}\]

[

\mathsf{ABCDE}\]

[

\mathtt{ABCDE}\]

數學公式對齊

對齊功能一般使用align環境

注意

  • 每一行都有一個換行

    \\

    和一個

    &

    符号每一行按照

    &

    對齊即對齊之後的所有内容。
  • 但是有一點不太好就是每一行之後都會顯示公式的編号這又顯得不太好。這個時候隻要在每一行的最後

    \\

    的之前加一個指令

    \notag

    即可去掉本行公式的标号。當然也可以使用

    align*

    環境這種環境可以直接消去所有編号。
%%latex
\begin{align}
&\lim\limits_{x\to 1}\left(\frac{1}{1-x}-\frac{3}{1-x^3}\right)\\
= &\lim\limits_{x\to 1}\left(\frac{x^2+x-2}{1-x^3}\right)  \\
=& \lim\limits_{x\to 1}\frac{(x+2)(x-1)}{(1-x)(x^2+x+1)}\\
=& \lim\limits_{x\to 1}\frac{-(x+2)}{x^2+x+1}\\
=& -1
\end{align}
           

\begin{align}

&\lim\limits_{x\to 1}\left(\frac{1}{1-x}-\frac{3}{1-x^3}\right)\

= &\lim\limits_{x\to 1}\left(\frac{x^2+x-2}{1-x^3}\right) \

=& \lim\limits_{x\to 1}\frac{(x+2)(x-1)}{(1-x)(x^2+x+1)}\

=& \lim\limits_{x\to 1}\frac{-(x+2)}{x^2+x+1}\

=& -1

\end{align}

探尋有趣之事