1. 程式人生 > 實用技巧 >1小時LATEX排版

1小時LATEX排版

目錄

優雅的 LaTeX

有很多 Geeks 或者 LaTeX's Fanatical Fans 過分地強調了 LaTeX 的一些並非重點的特性,以至於很多初學者會覺得 LaTeX 很神祕很複雜,從而引發了初學者的畏難情緒甚至是負面情緒。儘管這些 Fans 說得並沒有錯,我是說在事實上,但是他們的表達方式和內心態度卻間接阻礙了 LaTeX 的發展,我想這也是和他們的初衷相悖的。

我曾經也受到過這些言論的影響,但幸運的事,至今為止我已經越過了這些障礙,並更加堅信了他們所言(LaTeX 的優點)的正確性。因此我想以我自己的方式,向更多的人介紹 LaTeX —— 這個優雅,但有著自己高傲,卻絕不復雜甚至神祕的東西

你應當如何閱讀本文

事實上本文在行文過程中,會有相當多的提示幫助你以正確的方式閱讀。因此有必要在此先介紹一下最常用的一些標記。

  1. 斜體:使用斜體 意味著如果忽略掉這些文字,你可能在邏輯 上很難理解後面某處的知識;

  2. 粗體:使用粗體意味如果忽略掉這些文字,你可能在TeX 的概念上很難理解後面某處的知識;

  3. 粗斜體:使用*粗斜體* 基本是最重要的部分,是上述兩種情況的合併;

  4. 引用:使用引用,

    表明這些文字在你第一次閱讀本文的時候不需要 瞭解,其中的內容可能過於深奧,或者過於瑣碎。對於第一次接觸 TeX 的你(如果你是 TeX 資深使用者當然不在此列),如果瞭解到這些內容可能會使你困惑,並且不會從實際上增加你對 TeX 的領悟以及對 TeX 的好感。

關於編輯器的簡單介紹

TeX 的原始碼是字尾為 .tex 的純文字檔案。使用任意純文字編輯器,都可以修改 .tex 檔案:包括 Windows 自帶的記事本程式,也包括專為 TeX 設計的編輯器(TeXworks, TeXmaker, TeXstudio, WinEdt 等),還包括一些通用的文字編輯器(Sublime Text, Atom, Visual Studio Code 等)。你可以在這些能夠編輯純文字檔案的編輯器中任選其一作為你的 TeX 編輯器,也可以使用 TeX 發行自帶的編輯器。最流行的兩個 TeX 發行(TeX Live 和 MiKTeX)都帶有 TeXworks 編輯器。

所謂 TeX 發行,也叫 TeX 發行版、TeX 系統或者 TeX 套裝,指的是包括 TeX 系統的各種可執行程式,以及他們執行時需要的一些輔助程式和巨集包文件的集合。

本文只介紹 TeXworks 的使用,原因有以下一些:

  • TeXworks 是 TeX Live 自帶的編輯器,而 TeX Live 是 TeX User Group 出品的跨平臺發行版,各個作業系統都可以使用;
  • 幾乎所有 TeX 發行版都帶有 TeXworks;
  • TeXworks 十分簡潔,除了最基本的功能之外,沒有其他複雜的東西,能使你將注意力集中在 TeX 的學習上。

排版工具

TeXworks 為我們預設了若干排版工具(pdfTeX, pdfLaTeX, XeTeX, XeLaTeX 等),本文主要用到其中的 *XeLaTeX*。關於這些排版工具的細節,講解起來會有些複雜。因此此處按下不表,若有興趣,可以參看後文。當你對 TeX 系統相當熟悉之後,也可以不使用 TeXworks 預設的工具,自己配置排版工具。

TeXworks 預設的排版工具是 pdfLaTeX。如果你希望更改這個預設值,可以在編輯 - 首選項 - 排版 - 處理工具 - 預設 中修改。

第一篇文件

Hello, world!

在編輯框中,輸入如下內容:

helloworld.tex
\documentclass{article}
% 這裡是導言區
\begin{document}
Hello, world!
\end{document}

將文件儲存在你希望的位置,然後在排版工具的下拉選框中選中 XeLaTeX 後,按下綠色的編譯按鈕。一會兒,如果沒有意外,螢幕的右邊就會出現編譯之後結果。如下圖:

![img](https://liam.page/uploads/teaching/LaTeX/figures/818901c1jw1e44e55rnkkj211y0kmwgi.jpg

請注意,由於作業系統編碼和 TeX 內部實現的限制,在 Windows 平臺上,TeX 涉及到的檔案(包括 .tex, .jpg 等各類檔案)都不要包含中文名字。否則,在編譯時可能會因為編碼問題導致稀奇古怪的報錯。

很容易發現,輸入進編輯框的五行文字,在最終輸出的 pdf 檔中只顯示了 1 行。事實上,交付 TeX 處理的文件內容,並不會全部輸出。

此處的第一行 \documentclass{article} 中包含了一個控制序列(或稱命令/標記)。所謂控制序列,是以反斜槓 \ 開頭,以第一個*空格或非字母* 的字元結束的一串文字。它們不被輸出,但是他們會影響輸出文件的效果。這裡的控制序列是 documentclass,它後面緊跟著的 {article} 代表這個控制序列有一個必要的引數,該引數的值為 article。這個控制序列的作用,是呼叫名為 article 的文件類。

*請注意,TeX 對控制序列的大小寫是敏感的*

部分控制序列還有被方括號 [] 包括的可選引數。

所謂文件類,即是 TeX 系統預設的(或是使用者自定的)一些格式的集合。不同的文件類在輸出效果上會有差別。

此處的第二行以 % 開頭。TeX 以百分號 % 作為註釋標記。具體來說,TeX 會忽略從 % 開始到當前行末尾的所有內容。這些內容不會被輸出,也不影響最終排版效果,只供人類閱讀。若要輸出 % 字元本身,則需要在 % 之前加上反斜槓 \ 進行轉義(escape)。例如:

今年的淨利潤為 20\%,比去年高。

此處 % 被當做正常的百分號處理,其後的文字也將被正常輸出。

我們繼續分析第一篇文件的內容。在註釋行之後出現了控制序列 begin。這個控制序列總是與 end 成對出現。這兩個控制序列以及他們中間的內容被稱為「環境」;它們之後的第一個必要引數總是一致的,被稱為環境名。

只有在 document 環境中的內容,才會被正常輸出到文件中去或是作為控制序列對文件產生影響。也就是說,在 \end{document} 之後插入任何內容都是無效的。

\documentclass{article} 開始到 \begin{document} 之前的部分被稱為導言區。你可以將導言區理解為是對整篇文件進行設定的區域——在導言區出現的控制序列,往往會影響整篇文件的格式。

比如,我們通常在導言區設定頁面大小、頁首頁尾樣式、章節標題樣式等等。

實現中英文混排

關於 LaTeX 的中文支援,首先要說的是:在現在,一切教你使用 CJK 巨集包的模板、人、網頁、書,都是糟糕的、有害的、惱人的、邪惡的和應該摒棄的。

成功編譯輸出第一個文件之後,中國 TeX 使用者面臨的第二個普遍問題大概就是「實現中英文混排」了。眾所周知,TeX 系統是高教授開發的。在 TeX 開發當初並沒有考慮到亞洲文字的問題。因此早期的 TeX 系統並不能直接支援中文,必須要用其他工具先處理一下(或者是一些巨集包之類的)。但是現在,XeTeX 原生支援 Unicode,並且可以方便地呼叫系統字型。可以說解決了困擾中國 TeX 使用者多年的大問題。至此,我們只需要使用幾個簡單的巨集包,就能完成中文支援了。

所謂巨集包,就是一系列控制序列的合集。這些控制序列太常用,以至於人們會覺得每次將他們寫在導言區太過繁瑣,於是將他們打包放在同一個檔案中,成為所謂的巨集包(臺灣方面稱之為「巨集套件」)。\usepackage{} 可以用來呼叫巨集包。

除去中文支援,中文的版式處理和標點禁則也是不小的挑戰。好在由吳凌雲和江疆牽頭,現在主要由劉海洋等維護的 CTeX 巨集集一次性解決了這些問題。CTeX 巨集集的優勢在於,它能適配於多種編譯方式;在內部處理好了中文和中文版式的支援,隱藏了這些細節;並且,提供了不少中文使用者需要的功能介面。我們來看如何使用 CTeX 巨集集來處理中英文混排的文件。

請注意,CTeX 巨集集和 CTeX 套裝是兩個不同的東西。CTeX 巨集集本質是 LaTeX 巨集的集合,包含若干文件類(.cls 檔案)和巨集包(.sty 檔案)。CTeX 套裝是一個過時的 TeX 系統。

新版 CTeX 巨集集的預設能夠自動檢測使用者的作業系統,併為之配置合適的字型檔。對於 Windows 使用者、Mac OS X 使用者和 Linux 使用者,都無需做任何配置,就能使用 CTeX 巨集集來排版中文。[2015-05-20 更新]

在 TeXworks 編輯框中輸入以下內容,以 UTF-8 編碼儲存,使用 XeLaTeX 編譯

EC-mix.tex
\documentclass[UTF8]{ctexart}
\begin{document}
你好,world!
\end{document}

組織你的文章

作者、標題、日期

儲存並用 XeLaTeX 編譯如下文件,檢視效果:

\documentclass[UTF8]{ctexart}
\title{你好,world!}
\author{Liam}
\date{\today}
\begin{document}
\maketitle
你好,world!
\end{document}

導言區複雜了很多,但和之前的文件主要的區別只有一處:定義了標題、作者、日期。

document 環境中,除了原本的你好,world!,還多了一個控制序列 maketitle。這個控制序列能將在導言區中定義的標題、作者、日期按照預定的格式展現出來。

使用titling巨集包可以修改上述預設格式。參考TeXdoc

章節和段落

儲存並用 XeLaTeX 編譯如下文件,檢視效果:

\documentclass[UTF8]{ctexart}
\title{你好,world!}
\author{Liam}
\date{\today}
\begin{document}
\maketitle
\section{你好中國}
中國在East Asia.
\subsection{Hello Beijing}
北京是capital of China.
\subsubsection{Hello Dongcheng District}
\paragraph{Tian'anmen Square}
is in the center of Beijing
\subparagraph{Chairman Mao}
is in the center of 天安門廣場。
\subsection{Hello 山東}
\paragraph{山東大學} is one of the best university in 山東。
\end{document}

在文件類 article/ctexart 中,定義了五個控制序列來調整行文組織結構。他們分別是

  • \section{·}
  • \subsection{·}
  • \subsubsection{·}
  • \paragraph{·}
  • \subparagraph{·}

report/ctexrep中,還有\chapter{·};在文件類book/ctexbook中,還定義了\part{·}

插入目錄

在上一節的文件中,找到 \maketitle,在它的下面插入控制序列 \tableofcontents,儲存並用 XeLaTeX 編譯兩次,觀察效果

插入數學公式

首先恭喜你看到這裡。如果前面的幾個文件你都認真編譯過了,那麼你已經可以勝任許多文件的排版工作。下面我們進入 LaTeX 最為犀利的部分。

這部分的演示中,為了節省篇幅,將取消導言區中中文支援的部分。在實際使用中,你只需要將導言區中的相關部分加上,就可以同時使用中文和編寫數學公式了。

為了使用 AMS-LaTeX 提供的數學功能,我們需要在導言區載入 amsmath 巨集包:

\usepackage{amsmath}

數學模式

LaTeX 的數學模式有兩種:行內模式 (inline) 和行間模式 (display)。前者在正文的行文中,插入數學公式;後者獨立排列單獨成行,並自動居中。

在行文中,使用 $ ... $ 可以插入行內公式,使用 \[ ... \] 可以插入行間公式,如果需要對行間公式進行編號,則可以使用 equation 環境:

省略號

省略號用 \dots, \cdots, \vdots, \ddots 等命令表示。\dots\cdots 的縱向位置不同,前者一般用於有下標的序列。

\[ x_1,x_2,\dots ,x_n\quad 1,2,\cdots ,n\quad
\vdots\quad \ddots \]

矩陣

amsmathpmatrix, bmatrix, Bmatrix, vmatrix, Vmatrix 等環境可以在矩陣兩邊加上各種分隔符。

\[ \begin{pmatrix} a&b\\c&d \end{pmatrix} \quad
\begin{bmatrix} a&b\\c&d \end{bmatrix} \quad
\begin{Bmatrix} a&b\\c&d \end{Bmatrix} \quad
\begin{vmatrix} a&b\\c&d \end{vmatrix} \quad
\begin{Vmatrix} a&b\\c&d \end{Vmatrix} \]

使用 smallmatrix 環境,可以生成行內公式的小矩陣。

Marry has a little matrix $ ( \begin{smallmatrix} a&b\\c&d \end{smallmatrix} ) $.

多行公式

有的公式特別長,我們需要手動為他們換行;有幾個公式是一組,我們需要將他們放在一起;還有些類似分段函式,我們需要給它加上一個左邊的花括號。

長公式

不對齊

無須對齊的長公式可以使用 multline。 如果不需要編號,可以使用 multline* 環境代替。

\begin{multline}
x = a+b+c+{} \\
d+e+f+g
\end{multline}

公式組

無需對齊的公式組可以使用 gather 環境,需要對齊的公式組可以使用 align 環境。他們都帶有編號,如果不需要編號可以使用帶星花的版本。

\begin{gather}
a = b+c+d \\
x = y+z
\end{gather}
\begin{align}
a &= b+c+d \\
x &= y+z
\end{align}

效果:

請注意,不要使用 eqnarray 環境。原因可以參考:

分段函式

分段函式可以用cases次環境來實現,它必須包含在數學環境之內。

\[ y= \begin{cases}
-x,\quad x\leq 0 \\
x,\quad x>0
\end{cases} \]

效果圖:

輔助工具

站在我個人的角度,我建議 LaTeX 使用者應當儘可能避免使用輔助工具輸入數學公式。但對於急用的初學者而言,適當地使用輔助工具(而不形成依賴)也是有一些收益的。因此這裡介紹一些關於數學公式的輔助工具。

  • https://mathpix.com/ 能夠通過熱鍵撥出截圖,而後將截圖中的公式轉換成 LaTeX 數學公式的程式碼。
  • http://detexify.kirelabs.org/classify.html 允許使用者用滑鼠在輸入區繪製單個數學符號的樣式,系統會根據樣式返回對應的 LaTeX 程式碼(和所需的巨集包)。這在查詢不熟悉的數學符號時特別有用。

插入圖片和表格

圖片

在 LaTeX 中插入圖片,有很多種方式。最好用的應當屬利用 graphicx 巨集包提供的 \includegraphics 命令。比如你在你的 TeX 原始檔同目錄下,有名為 a.jpg 的圖片,你可以用這樣的方式將它插入到輸出文件中:

\documentclass{article}
\usepackage{graphicx}
\begin{document}
\includegraphics{a.jpg}
\end{document}

圖片可能很大,超過了輸出檔案的紙張大小,或者乾脆就是你自己覺得輸出的效果不爽。這時候你可以用 \includegraphics 控制序列的可選引數來控制。比如

\includegraphics[width = .8\textwidth]{a.jpg}

這樣圖片的寬度會被縮放至頁面寬度的百分之八十,圖片的總高度會按比例縮放。

\includegraphics 控制序列還有若干其他的可選引數可供使用,一般並用不到。感興趣的話,可以去檢視該巨集包的文件

表格

tabular 環境提供了最簡單的表格功能。它用 \hline 命令表示橫線,在列格式中用 | 表示豎線;用 & 來分列,用 \\ 來換行;每列可以採用居左、居中、居右等橫向對齊方式,分別用 lcr 來表示。

\begin{tabular}{|l|c|r|}
 \hline
作業系統& 發行版& 編輯器\\
 \hline
Windows & MikTeX & TexMakerX \\
 \hline
Unix/Linux & teTeX & Kile \\
 \hline
Mac OS & MacTeX & TeXShop \\
 \hline
通用& TeX Live & TeXworks \\
 \hline
\end{tabular}

浮動體

插圖和表格通常需要佔據大塊空間,所以在文書處理軟體中我們經常需要調整他們的位置。figuretable 環境可以自動完成這樣的任務;這種自動調整位置的環境稱作浮動體(float)。我們以 figure 為例。

\begin{figure}[htbp]
\centering
\includegraphics{a.jpg}
\caption{有圖有真相}
\label{fig:myphoto}
\end{figure}

htbp 選項用來指定插圖的理想位置,這幾個字母分別代表 here, top, bottom, float page,也就是就這裡、頁頂、頁尾、浮動頁(專門放浮動體的單獨頁面或分欄)。\centering 用來使插圖居中;\caption 命令設定插圖示題,LaTeX 會自動給浮動體的標題加上編號。注意 \label 應該放在標題命令之後。

版面設定

頁邊距

設定頁邊距,推薦使用 geometry 巨集包。可以在這裡檢視它的說明文件。

比如我希望,將紙張的長度設定為 20cm、寬度設定為 15cm、左邊距 1cm、右邊距 2cm、上邊距 3cm、下邊距 4cm,可以在導言區加上這樣幾行:

\usepackage{geometry}
\geometry{papersize={20cm,15cm}}
\geometry{left=1cm,right=2cm,top=3cm,bottom=4cm}

頁首頁尾

設定頁首頁尾,推薦使用 fancyhdr 巨集包。可以在這裡檢視它的說明文件。

比如我希望,在頁首左邊寫上我的名字,中間寫上今天的日期,右邊寫上我的電話;頁尾的正中寫上頁碼;頁首和正文之間有一道寬為 0.4pt 的橫線分割,可以在導言區加上如下幾行:

\usepackage{fancyhdr}
\pagestyle{fancy}
\lhead{\author}
\chead{\date}
\rhead{152xxxxxxxx}
\lfoot{}
\cfoot{\thepage}
\rfoot{}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\headwidth}{\textwidth}
\renewcommand{\footrulewidth}{0pt}

行間距

段間距

我們可以通過修改長度 \parskip 的值來調整段間距。例如在導言區新增以下內容

\addtolength{\parskip}{.4em}

則可以在原有的基礎上,增加段間距 0.4em。如果需要減小段間距,只需將該數值改為負值即可。

TeX 家族

恭喜你終於看到了這裡。如果你認真完成了上面所有的練習,並琢磨了其中的意義,相信你已經可以用 LaTeX 排版出漂亮的文件了。現在我們說一點歷史,幫助你更好地理解 TeX 這個系統。

帶有 TeX 的詞,僅僅是本文就已經提到了 TeX, LaTeX, XeLaTeX。通常中國學生面對不瞭解意思的一群形近單詞,都會有一種「本能的恐懼」(笑~)。因此,「大神們」在為新手介紹 TeX 的時候,如果互相爭論 「XXTeX 比 YYTeX 好」或者是「XXTeX 的 YYTeX 如何如何」,往往會蹦出下面這些帶有 TeX 的詞彙:
TeX, pdfTeX, XeTeX, LuaTeX, LaTeX, pdfLaTeX, XeLaTeX …

事實上,這部分的內容太過複雜,我自己的瞭解也實在有限。所以下面這部分的內容也只能是對我瞭解到的知識的一個概括,甚至可能有些許謬誤。所以大家只需要將這部分的內容當做是一個參考就可以了。

TeX - LaTeX

TeX 是高德納(Donald Ervin Knuth,1938年1月10日 --)教授憤世嫉俗追求完美做出來的排版引擎,同時也是該引擎使用的標記語言(Markup Language)的名稱。這裡所謂的引擎,是指能夠實現斷行、分頁等操作的程式(請注意這並不是定義);這裡的標記語言,是指一種將控制命令和文字結合起來的格式,它的主體是其中的文字而控制命令則實現一些特殊效果(同樣請注意這並不是定義)。

你可以在這裡找到關於 TeX 引擎的具體描述;

你可以在這裡找到關於標記語言的具體描述。

而 LaTeX 則是 L. Lamport (1941年2月7日 -- ) 教授開發的基於 TeX 的排版系統。實際上 LaTeX 利用 TeX 的控制命令,定義了許多新的控制命令並封裝成一個可執行檔案。這個可執行檔案會去解釋 LaTeX 新定義的命令成為 TeX 的控制命令,並最終交由 TeX 引擎進行排版。

實際上,LaTeX 是基於一個叫做 plain TeX 的格式的。plain TeX 是高德納教授為了方便使用者,自己基於原始的 TeX 定義的格式,但實際上 plain TeX 的命令仍然十分晦澀。至於原始的 TeX 直接使用的人就更少了,因此 plain TeX 格式逐漸就成為了 TeX 格式的同義詞,儘管他們事實上是不同的。

因此在 TeX - LaTeX 組合中,

  1. 最終進行斷行、分頁等操作的,是 TeX 引擎;
  2. LaTeX 實際上是一個工具,它將使用者按照它的格式編寫的文件解釋成 TeX 引擎能理解的形式並交付給 TeX 引擎處理,再將最終結果返回給使用者。

pdfTeX - pdfLaTeX

TeX 系統生成的檔案是 dvi 格式,雖然可以用其他程式將其轉換為例如 pdf 等更為常見的格式,但是畢竟不方便。

dvi 格式是為了排版而產生的,它本身並不支援所謂的「交叉引用」,pdfTeX 直接輸出 pdf 格式的文件,這也是 pdfTeX 相對 TeX 進步(易用性方面)的地方。

為了解決這個問題,Hàn Thế Thành 博士在他的博士論文中提出了 pdfTeX 這個對 TeX 引擎的擴充套件。二者最主要的差別就是 pdfTeX 直接輸出 pdf 格式文件,而 TeX 引擎則輸出 dvi 格式的文件。

pdfTeX 的資訊可以檢視wiki.

pdfLaTeX 這個程式的主要工作依舊是將 LaTeX 格式的文件進行解釋,不過此次是將解釋之後的結果交付給 pdfTeX 引擎處理。

XeTeX - XeLaTeX

高德納教授在實現 TeX 的當初並沒有考慮到中日韓等字元的處理,而只支援 ASCII 字元。這並不是說中日韓字元就無法使用 TeX 引擎排版了,事實上 TeX 將每個字元用一個框包括起來(這被稱為盒子)然後將一個個的盒子按照一定規則排列起來,因而 TeX 的演算法理論上適用於任何字元。ASCII 字元簡單理解,就是在半形模式下你的鍵盤能直接輸出的字元。

在 XeTeX 出現之前,為了能讓 TeX 系統排版中文,國人曾使用了 天元、CCT、CJK 等手段處理中文。其中 天元和CCT 現在已經基本不用,CJK 因為使用時間長且效果相對較好,現在還有人使用。

不同於 CJK 等方式使用 TeX 和 pdfTeX 這兩個不直接支援 Unicode 字元的引擎,XeTeX 引擎直接支援 Unicode 字元。也就是說現在不使用 CJK 也能排版中日韓文的文件了,並且這種方式要比之前的方式更加優秀。

XeLaTeX 和 XeTeX 的關係與 pdfLaTeX 和 pdfTeX 的關係類似,這裡不再贅述。

使用 XeTeX 引擎需要使用 UTF-8 編碼。

所謂編碼就是字元在計算機儲存時候的對應關係。例如,假設有一種編碼,將漢字「你」對應為數字「1」;「好」對應為數字「2」,則含有「你好」的純文字檔案,在計算機中儲存為「12」(讀取檔案的時候,將「12」再轉換為「你好」顯示在螢幕上或打印出來)。

UTF-8 編碼是 Unicode 編碼的一種,可以參考它的 wiki.

LuaTeX

LuaTeX 是正在開發完善的一個 TeX 引擎,相對它的前輩們還相當的不完善,這裡不贅述。

CTeX - MiKTeX - TeX Live

之前介紹了 TeX, LaTeX, pdfTeX, pdfLaTeX, XeTeX, XeLaTeX, LuaTeX 等,他們都是 TeX 家族的一部分。但是作為一個能夠使用的 TeX 系統,僅僅有他們還是不夠的。CTeX, MiKTeX, TeX Live 都是被稱為「發行」的軟體合集。他們包括了上述各種引擎的可執行程式,以及一些文件類、模板、字型檔案、輔助程式等等。其中 CTeX 是建立在 MiKTeX 的基礎之上的。

總結

TeX - pdfTeX - XeTeX - LuaTeX 都是排版引擎,按照先程序度遞增(LuaTeX 尚未完善)。

LaTeX 是一種格式,基於 TeX 格式定義了很多更方便使用的控制命令。上述四個引擎都有對應的程式將 LaTeX 格式解釋成引擎能處理的內容。

CTeX, MiKTeX, TeX Live 都是 TeX 的發行,他們是許許多多東西的集合。

去讀文件

關於 LaTeX 的文件有很多,其中有些內容過時地很快。所以有必要告訴大家,哪些文件應該看,那些文件不應該看。索性,這個問題,劉海洋(milksea)前輩已經敘述得很清楚了。前段時間,我和幾個朋友,將現在看起來還未過時的文件打包上傳到了我的部落格。參考:ZIP 歸檔

遇到問題怎麼辦

  1. 絕對的新手,先讀完一本入門讀物,瞭解基本的知識;
  2. 無論如何,先讀文件!絕大部分問題都是文件可以解決的;
  3. 利用 Google 搜尋你的問題;
  4. 在各個論壇或者 LaTeX 交流群裡聰明地提出你的問題。

參考:https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md

  1. (幾乎是)最簡潔的 (La)TeX 編輯器——TeXworks——的基本使用方法;
  2. 如何使用 (Xe)LaTeX 進行簡單的中英混排
  3. 簡單的文章組織結構;
  4. 如何用 (Xe)LaTeX 進行數學公式的排版;
  5. 如何在 (Xe)LaTeX 的文件中插入圖片/表格;
  6. 如何進行簡單的版面設定;
  7. 幾個最常見的帶有 TeX 的單詞的含義;
  8. 出現問題應當如何處理/怎樣聰明地提出你的問題——怎樣從這裡畢業。

插入目錄找到 \maketitle,在它的下面插入控制序列 \tableofcontents,儲存並用 XeLaTeX 編譯兩次

  • https://mathpix.com/ 能夠通過熱鍵撥出截圖,而後將截圖中的公式轉換成 LaTeX 數學公式的程式碼。
  • http://detexify.kirelabs.org/classify.html 允許使用者用滑鼠在輸入區繪製單個數學符號的樣式,系統會根據樣式返回對應的 LaTeX 程式碼(和所需的巨集包)

標題自動編號

\section{Notation}  % 帶序號
1

標題不編號

\section*{Notation}  %不帶序號
公式換行

目前用到的公式換行情況主要有2種,分別為表格內的公式換行和常規的公式換行,現總結如下。

  1. 表格內公式換行

    % 先將下面的語句放在latex正文的導言區:
    \newcommand{\tabincell}[2]{\begin{tabular}{@{}#1@{}}#2\end{tabular}
    % 在tabular內的格子內使用 \tabincell{c}{} 插入相應內容, 就可以在表格中自動換行
    \hline 2 & \tabincell{c}{hello\ aha\ ok \yes \en} & \tabincell{c}
    
  2. 公式內換行

    \begin{equation}
    \begin{split}
    ...
    \end{split}
    \end{equation}
    
插入參考文獻

方法一:不使用BibTeX (使用BibTex編譯最後的bbl格式)

先在文章文章末尾寫好需要插入的參考文獻,逐一寫出,例如:

\begin{thebibliography}{99}  
\bibitem{ref1}Zheng L, Wang S, Tian L, et al., Query-adaptive late fusion for image search and person re-identification, Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2015: 1741-1750.  
\bibitem{ref2}Arandjelović R, Zisserman A, Three things everyone should know to improve object retrieval, Computer Vision and Pattern Recognition (CVPR), 2012 IEEE Conference on, IEEE, 2012: 2911-2918.  
\bibitem{ref3}Lowe D G. Distinctive image features from scale-invariant keypoints, International journal of computer vision, 2004, 60(2): 91-110.  
\bibitem{ref4}Philbin J, Chum O, Isard M, et al. Lost in quantization: Improving particular object retrieval in large scale image databases, Computer Vision and Pattern Recognition, 2008. CVPR 2008, IEEE Conference on, IEEE, 2008: 1-8.  
\end{thebibliography}

上面列出了4個參考文獻,{thebibliography}的選項99指的是參考文獻的個數最大為99

在正文中引用參考文獻的方法是:

\cite{ref1}
\cite{ref1, ref4}
% 編譯後:
% [1]
% [1, 4]

方法二:使用BibTeX

這種方法需要建立參考文獻資料庫,引用的時候呼叫所需要的參考文獻。

BibTeX 是一種格式和一個程式,用於協調LaTeX的參考文獻處理.
BibTeX 使用資料庫的的方式來管理參考文獻. BibTeX 檔案的字尾名為 .bib . 先來看一個例子

在LaTeX中使用BibTeX

為了在LaTeX中使用BibTeX 資料庫, 你必須先做下面三件事情:

  1. 設定參考文獻的型別 (bibliography style). 標準的為 plain:

  \bibliographystyle{plain}

將上面的命令放在 LaTeX 文件的 \begin{document}後邊.

  • plain – 按照第一作者字母順序排.
  • unsrt – 按照bib檔案的順序
  • alpha – 按作者名稱和出版年份排序.
  • abbrv – 縮寫格式 .
  1. 標記引用 (Make citations). 當你在文件中想使用引用時, 插入 LaTeX 命令

\cite{引用文章名稱}

"引用文章名稱" 就是前邊定義@article後面的名稱.

  1. 告訴LaTeX生成參考文獻列表,在 LaTeX 的結束前輸入

\bibliography{xxx}

這裡xxx就是你的 BibTeX 資料庫檔案 xxx.bib .

\documentclass[preprint,review,12pt,authoryear]{elsarticle}
\begin{document}
\nocite{*}
\bibliographystyle{plain}
\bibliography{bibfile_name}
\end{document}

3.生成.bbl檔案
將前兩個步驟生成的reference.bib和main.tex放在同一個資料夾下;
使用WinEdt在main.tex中執行Latex 或PDFLatex ,再點選bibtex 即可生成包含所有bibitem 內容的.bbl 檔案,使用記事本開啟.bbl檔案,即可看到bibitem格式的參考文獻。詳細過程如下所示:
(1)根據步驟1和2,生成的reference.bib和main.tex

(2)在WinEdt中點選PDFLatex執行main.tex檔案

(3)在工具欄中的Tex中找到BibTex,並點選生成.bbl檔案

(4)此時,在資料夾下即可看到生成的main.bbl檔案。

4.在Latex中使用.bbl檔案
在Latex對應參考文獻位置使用如下語句即可引用生成的.bbl檔案,或者將.bbl檔案中的內容直接貼上到Latex中。

\input{publications.bbl}1

另外:
如果在生成的PDF的參考文獻的會議或者期刊下面出現橫線,可能是因為Latex中的強調命令(\em)在論文模板環境下的不相容所導致。
在.bbl檔案中每個bibitem條目中,可以看到期刊名稱前面有一個“\em”,即對期刊名進行了強調,正常情況下能夠使得後面的英文字型變成斜體,將中文變成楷體。
而我們這裡遇到了非正常的,文字下面出現了下劃線的情況。
那麼將\em替換成\it,並儲存修改後的.bbl檔案,並重新執行PDFLatex即可,但是不要再執行BibTex命令了。

一、若是latex模板中參考文獻編寫的命令是:

\begin{thebibliography}

\bibitem{lab1}LIU M L, ZHANG Y H,ZHOU X H et al. Phys. Rev. C, 2004, {\bf 70}: 14---34

...

\end{thebibliography}

我們可以按照bibitem行的格式在endnote中編寫相應的outstyle,然後即可批量從endnote中輸出參考文獻插入latex檔案中。

例如:編寫期刊Chinese Physics C的參考文獻時,我們可以直接將附件(點選下載:Bibitems Export.ens)的style拷貝到自己的endnote安裝資料夾的style資料夾中使用,

第一步,在endnote介面,選中該style;

第二步,給需要匯出的參考文獻新增label標記(在label欄位中新增即可);

第三步,批量選中endnote中需要匯出的參考文獻,並右鍵單擊copy formatted,如下圖所示,複製到latex檔案中即可。

執行 BibTeX

分為下面四步

  • 用LaTeX編譯你的 .tex 檔案 , 這是生成一個 .aux 的檔案, 這告訴 BibTeX 將使用那些應用;
  • 用BibTeX 編譯 .bib 檔案;
  • 再次用LaTeX 編譯你的 .tex 檔案,這個時候在文件中已經包含了參考文獻,但此時引用的編號可能不正確;
  • 最後用 LaTeX 編譯你的 .tex 檔案,如果一切順利的話, 這是所有東西都已正常了.

本著 遇事不覺先知乎 的觀念,搜了一下,好像沒找到滿意的答案。於是 bing 了一下關鍵詞: EndNote export BibTeX,沒讓我失望,第一條就給出了官方網站的解決方案!

點選連結進去看到是一個 EndNote 的 style 檔案,如紅框所示,點選下載即可。當然,大家也可以點選藍色雙線框中的 Download all styles,這是包含目前幾乎所有期刊 style 的壓縮包。如下圖所示:

我下載了所有的 styles,解壓之後,將所有的 .ens 檔案 放在 EndNote 的安裝目錄下的 Styles 資料夾內。比如我的安裝目錄是:

C:\Program Files (x86)\EndNote X8\Styles

把所有 .ens 檔案貼上到上述目錄後,效果如下圖所示:

總共有 7089 個檔案。

然後我們啟動 EndNote,點選工具欄上的 Edit ——> Output Styles ——> Open Style Manager,如下圖紅框所示:

在彈出的對話方塊中我們會看到如下的選項:BibTeX Export,以及 BibTeX Export using EN Label Field,如下圖紅框所示:

勾選它們,然後關閉剛這個對話方塊。回到 EndNote 主介面,在 Styles 選框中就能看到這兩個選項了,如下圖所示:

下面簡要說明一下這兩個選項的區別:

1) BibTeX Export

選中它,EndNote 會自動給每篇文獻新增一個 BibTeX key,也就是用 LaTeX 引用文獻時的文獻程式碼 \cite{xxx}xxx 的內容,如下圖中紅框所示:

顯然,這樣做不太合適,我們引用文獻時不可能去根據這個隨機碼來判斷要引用的文獻。

2) BibTeX Export using EN Label Field

如果用這個選項來匯出,那麼 EndNote 會依據 Label 標籤中的內容新增到相應文獻的 BibTeX key 中,如下圖所示:

在 Label 專案裡輸入簡單的文獻標註後,就能在預覽內容中看到 BibTeX key 了,如下圖紅框內容所示:

總結一下上述準備工作:

1)下載 Styles,並將下載的 Styles 檔案(.ens)放置到 EndNote 安裝目錄下的 Styles 資料夾;

2)勾選 BibTeX Export using EN Label Field

3)填寫文獻的 Label 資訊,以建立 BibTeX key

接下來就可以將 EndNote 文獻資訊轉換成 BibTeX 格式了。

全選 EndNote 中的所有文獻資訊(當然,你也可以只選擇你需要轉換格式的某些文獻),然後點選 EndNote 工具欄上的 File ——> Export ,如下圖所示:

在彈出的對話方塊中,確認 Output style: 對應的是 BibTeX Export using EN Label Field,以及勾選了 Export Selected References,如下圖所示:

儲存文字檔案之後,開啟就是 BibTeX 格式的文獻資訊了(最後修改後綴名為 .bib)。如下圖所示:

Visio中畫的圖怎麼更清晰美觀地插入LaTeX中

LaTex插入PDF

建立參考文獻的方法

Latex 參考文獻中 插入網址 和換行問題

latex入門

圖片插入

Reference

碼農家園

blog

一份其實很短的 LaTeX 入門文件

將 EndNote 文獻資訊匯出成 BibTeX 格式