1. 程式人生 > >Latex排版學習筆記(3)——latex基礎教程

Latex排版學習筆記(3)——latex基礎教程

優雅的 LaTeX

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

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

歡迎從校內轉移過來的同學們,因為校內的技術原因,文章無法在校內繼續更新。儘管非我之故,但還是給各位同學說聲抱歉。同時,歡迎各位來到我的部落格。: )

你將從這裡看到

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

你不會從這裡看到

  1. 特殊需求(特殊巨集包)的解決方法;
  2. 關於若干 TeX 發行的好壞比較;
  3. 關於各種 TeX 編輯器的好壞比較;
  4. 過多的廢話。

你應當如何閱讀本文

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

  1. 斜體:使用斜體 意味著如果忽略掉這些文字,你可能在邏輯 上很難理解後面某處的知識;
  2. 粗體:使用粗體意味如果忽略掉這些文字,你可能在TeX 的概念上很難理解後面某處的知識;
  3. 粗斜體:使用粗斜體 基本是最重要的部分,是上述兩種情況的合併;
  4. 引用:使用引用,

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

關於編輯器的簡單介紹

流行的 TeX 發行,比如 CTeX 和 TeX Live, 都自帶有一些用於編輯文件的編輯器。這些編輯器差異還是很大的,從簡單的 TeXworks 到複雜的 WinEdt, 各種各樣。但是不管是什麼樣的編輯器,他們都是用來編輯純文字的而已(.tex 就是純文字),換言之他們只是 Windows 自帶的記事本程式的加強版而已,他們本身並不是 TeX 系統的一部分

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

國內的同學安裝 CTeX 套裝的比較多,CTeX 套裝自帶的編輯器,除了大家熟知的 WinEdt,還有 TeXworks。而 TeX Live 則只是自帶了 TeXworks 而已。

本文只介紹 TeXworks 編輯器的使用。原因有二:

  • WinEdt 過於繁瑣,很多功能用不上,反而給新手增加學習成本;
  • TeXworks 是 TeX Live 自帶的編輯器,而 TeX Live 是跨平臺的,各個作業系統都可以使用;
  • 不管是用 TeX Live 還是 CTeX 套裝又或是 MiKTeX(Windows 平臺上另一個 TeX 系統),都有 TeXworks。

啟動 TeXworks

啟動 TeXworks 很簡單,不論你安裝的是 CTeX 套裝還是 TeX Live, 你都可以在 Windows 啟動對話方塊中輸入 texworks 按回車。具體步驟是:

  • 按下鍵盤上的 Windows 徽標鍵,同時按下 R 鍵 —— <Win> + R;
  • 鍵入 texworks
  • 回車。

如果這樣打不開 TeXworks,你可能需要從開始選單找到 TeXworks 圖示以啟動;或者進入 TeX 系統的安裝目錄找到 TeXworks。

啟動之後,TeXworks 的介面,會預設佔據你螢幕的左半邊,右半邊留空。效果如下圖:

圖中空白的部分,就是輸入編輯文字的編輯框;在編輯框的右下角,顯示有三個按鈕,最左邊的是換行符模式,中間是編碼模式,右邊標示當前游標所在位置;編輯框的上方是工具欄,工具欄的右半部分使大家熟悉的功能(新建、開啟、儲存、撤消、恢復、剪下、複製、黏貼、查詢、替換),工具欄的左邊則是編譯按鈕 (TeXworks 也稱其為「排版工具」);工具欄在往上,則是選單欄,此處按下不表。

Windows,Unix 等作業系統對待「換行符」是有不同的。索性 TeXworks 為我們做了足夠的提示,方面我們的選擇(點選一下那個按鈕就知道了)。一般而言,保持預設即可。

字元(包括英文字元和中文字元)在計算機中,經過編碼以二進位制的形式儲存在計算機中。如果編輯器編碼和計算機內部編碼不一致,則會導致所謂「亂碼」的現象。TeXworks 預設使用 UTF8 編碼,在我們的文件中不需要進行任何更改,而對於一些其他的文件可能需要按照要求更改編碼。

排版工具

TeXworks 為我們預設了若干排版工具(pdfTeX, pdfLaTeX, XeTeX, XeLaTeX 等),他們分別代表什麼實在太過複雜並且也不是當前需要講明白的。本文中需要用到的排版工具主要是 XeLaTeX,關於這些工具的介紹,可以參看後文。當你對 TeX 系統相當熟悉之後,也可以不適用 TeXworks 預設的工具,自己配置排版工具。

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

第一篇文件

Hello, world!

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

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

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

請注意,在 Windows 平臺上,TeX 涉及到的檔案(包括 .tex.jpg 等各類檔案),最好都不要包含中文名字,或者包含空格。否則,可能引起意想不到的問題。

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

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

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

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

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

此處的第二行以 % 開頭。在 TeX 風格的文件中,從 “%” 開始,到該行末尾的所有字元,都會被 TeX 系統無視,只作為供人類閱讀的註釋。除非在 “%” 前加上反斜槓來取消這一特性,例如

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

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

其後出現了控制序列 begin,這個控制序列總是與 end 成對出現。這兩個控制序列以及他們中間的內容被稱為「環境」;他們之後的第一個必要引數總是一致的,被稱為環境名。

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

\begin{document} 與 \documentclass{article} 之間的部分被稱為導言區。導言區中的控制序列,通常會影響到整個輸出文件。

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

實現中英文混排

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

除掉成功生成第一個文件,實現中文輸出(或者說是中英文混排)恐怕是困擾中國的 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
1
2
3
4
\documentclass[UTF8]{ctexart}
\begin{document}
你好,world!
\end{document}

如果沒有意外,你將會看到類似下圖的輸出結果。

相較於之前的例子,這份程式碼只有細微的差異:

  1. 文件類從 article 變為 ctexart
  2. 增加了文件類選項 UTF8

你也可以直接使用 xeCJK 巨集包來支援中英文混排。不過大多數情況是不推薦這樣做的。因此,如果你能抑制住你小小的好奇心,可以暫時略過這一段,回頭再看不遲。:)

在 TeXworks 編輯框中輸入以下內容,儲存,使用 XeLaTeX 編譯:

xeCJK-demo.tex
1
2
3
4
5
6
7
\documentclass{article}
\usepackage{xeCJK} %呼叫 xeCJK 巨集包
\setCJKmainfont{SimSun} %設定 CJK 主字型為 SimSun (宋體)
\begin{document}
你好,world!
\end{document}
>

如果一切順利,你將會在螢幕右邊的視窗,看見類似下圖的輸出結果。

除了 “document” 環境中同時出現了中文和英文,和最原始的 Hello, world! 不同點在於,導言區中多出了兩條控制序列。他們的作用我已經用註釋標出了。

\setCJKmainfont{·}是定義在 “xeCJK” 巨集包中的控制序列,它可以用來設定 CJK 主字型。

如果你的 TeX 系統提示找不到字型,請按以下提示操作。

Mac OS X 使用者請參照這篇部落格 中的方法,使用系統自帶的字型冊程式來檢視系統字型。

非 Mac OS X 使用者請按照如下步驟開啟系統命令列(*nix系統請開啟終端):

  • 按下<win> + R
  • 鍵入cmd, 回車。

在系統命令列中輸入如下命令:

fc-list :lang=zh-cn > C:\font_zh-cn.txt

(相信使用 *nix 的你,一定知道如何修改上述命令達到你想要的效果)

開啟 C 盤根目錄下的 C:\font_zh-cn.txt 純文字文件,裡面的內容就是你當前系統可用的全部中文字型,形如:

每一個小黑框之間的內容,就對應著一個可用的字型。這些小黑框實際上是換行符,但是由於 Windows 系統的原因,他們沒有被正常顯示。如果看著不爽,你可以嘗試用 TeXworks 開啟這個檔案檢視(放心,能夠開啟的)。以下是我用 gVim 開啟的效果:

其中的每一行,都代表著一個可用的字型。其形式如下:

<字型檔案路徑>: <字型標示名1>, <字體表示名2>:Style=<字型型別>

我們可以看到圖中的倒數第四行

C:/WINDOWS/fonts/simsun.ttc: 宋體,SimSun:style=Regular

出現了之前文件裡呼叫的字型SimSun,此處表明該字型有兩個表示名:宋體SimSun,我們在\setCJKmainfont{·}中填入任意一個都有同樣的效果。

因此,如果之前的文件無法編譯通過,請在你的作業系統字型中,選取一個自己喜歡的,將它的字體表示名填入到\setCJKmainfont{·}中去。

組織你的文章

由於新的中英混排方法的引入,這裡對於每一個效果提供兩份程式碼(如果有必要)。如果沒有特別的需求,應當使用新方法。

作者、標題、日期

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

1
2
3
4
5
6
7
8
\documentclass[UTF8]{ctexart}
\title{你好,world!}
\author{Liam}
\date{\today}
\begin{document}
\maketitle
你好,world!
\end{document}

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

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

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

章節和段落

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
\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 編譯兩次,觀察效果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
\documentclass[UTF8]{ctexart}
\title{你好,world!}
\author{Liam}
\date{\today}
\begin{document}
\maketitle
\tableofcontents
\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}

試試交換 \maketitle 和 \tableofcontents 的順序,看看會發生什麼,想想為什麼。

AS3 0基礎學習筆記 3 認識類結構

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

大資料技術學習筆記之linux基礎3-軟體管理與shell指令碼開發

一、Linux軟體管理     -》壓縮檔案管理         -》常見壓縮格式             -

《組合語言(第3版)(王爽 著)》學習筆記一:基礎知識(1)

組合語言是直接在硬體之上工作的程式語言,我們首先要了解硬體系統的結構,才能有效地應用匯編語言對其程式設計。 彙編課程的研究重點放在如何利用硬體系統的程式設計結構和指令集有效靈活地控制系統進行工作。

《組合語言(第3版)(王爽 著)》學習筆記二:基礎知識(2)

1.7 CPU 對儲存器的讀寫 以上講到,儲存器被劃分成多個儲存單元,儲存單元從零開始編號。這些編號可以看作儲存單元在儲存器中的地址。就想一條街,每個房子都有門牌號碼。 CPU 要從記憶體中讀資料,

《組合語言(第3版)(王爽 著)》學習筆記三:基礎知識(3

1.11 記憶體地址空間(概述) 什麼是記憶體地址空間呢?舉例來講,一個 CPU 的地址匯流排寬度為 10,那麼可以定址 1024 個記憶體單元,這 1024 個可尋到的記憶體單元就構成這個 CPU

linux零基礎學習筆記3

一、系統狀態檢測命令 1、ifconfig命令 interface config eno1677728:網絡卡名稱 inet 192.168.10.10 :ip地址 RX:收到資料        TX:傳送資料 2、uname命令 unix name 檢視系統核心

LaTex學習筆記:入門使用方法

     本部落格的LaTex學習以MiKTex+TeXStudio為編輯器。      關於LaTex環境的搭建和相關軟體的安裝,我主要是用了以下軟體: proTeXt:http://tug.org

Latex排版論文(3)《控制與決策》初稿LaTex模版編譯出現"\bibname undefined"解決辦法

    師姐要投NEU辦的《控制與決策》,我幫忙用LaTex排版。我下載了《控制與決策》官網提供的模板之後,嘗試編譯了一下,結果出現“\bibname undefined”的錯誤。官網給出了一個解決這個問題的辦法如下:     我嘗試了一下這個方法,要改的地方不只這一個問

latex學習筆記LaTex中的距離(固定長度、橡皮長度、長度命令)

固定長度 cm 釐米 mm 毫米 in 英寸(1in=2.54cm) pt 點(1in=72.27pt) bp 大點(1in= 72bp) pc pica (1pc =12pt) 十二點活字 dd

TensorsFlow學習筆記3----面向機器學習初學者的MNIST教程(MNIST For ML Beginners)

記錄關鍵內容與學習感受。未完待續。。 面向機器初學者的MNIST教程(MNIST For ML Beginners) —–適用於對機器學習和tensorflow初學者。而這裡MNIST就好比學語言時候的列印hello world。 —–MNIS

Python學習筆記3:Python基礎

1、語句和語法 (1)註釋(#) (2)繼續( \) 存在兩種例外情況,一個語句不使用反斜線也可以跨行: 在使用閉合操作符(小括號,中括號,花括號)時單一語句可跨多行; 使用三引號包括下的字串

基礎大資料HADOOP學習-筆記3-HDFS特點

HDFS的特點 優點: 1)處理超大檔案   這裡的超大檔案通常是指百MB、數百TB大小的檔案。目前在實際應用中,   HDFS已經能用來儲存管理PB級的資料了。

基礎深度學習筆記3——Win7-Tensorflow-GPU安裝

之前已經在另一臺電腦上安裝好了CPU版本的TF, 以為GPU版本的步驟什麼的應該也不難,沒想到還是有些坑要填。 清單: 系統:WIN7 python:3.5版本 CUDA:8.0 Cudnn:v6.0(這裡版本的選擇很重要!!!) Tensorflow:1.3 下面說下

latex學習筆記1 latex中文、英文、數學字型設定

如果要求不高直接使用ctex巨集包就能解決一般需求,不用再設定什麼。 如果需要其他字型或者想自定義字型,那麼就使用xeLaTex(檔名不能含有中文)進行編譯,xeLaTex可是使用更多,並且更靈活的使用各種字型。 需要的巨集包有xeCJK,用於中文字型;fontspec,用