LaTeX 总决式 | 重剑无锋,大巧不工
寫在前面的話
本文來自公眾號:劍指數模
關于是否開 LaTeX 教程系列文章,我糾結了很久。相比傍一傍熱詞的科普性文章,技術類的文章太過枯燥無趣,閱讀量寥寥無幾。辛苦寫出來的東西沒人看,實在給作者以打擊。
12月22日我特地轉發了一篇稍微偏技術一點的文章試試水,打開率不到10%。也許,公眾號本就是用來娛樂大眾的產物。
最后,我把取舍權交給了交流群里的小伙伴兒們,參與投票人數為42人。大多數同學都投票希望出教程的同時再發學習資料。
我知道其中不乏南郭先生,但希望各位同學對自己投的票負責。當然,我也會盡力把文章寫的有趣一點。
2017年我第一次從我的數模教練那聽說 LaTeX 排版的強大,轉眼間,已經過去快兩年了,也算初窺門徑,感覺要學精,實在是難登蜀道,其知識體系浩如煙海。
畢業在即,準備用 LaTeX 排畢業論文,但有段時間不用,知識難免遺忘。遂開此系列,也當紀念我的學習生涯吧:
此系列的每篇文章必會用心耕耘,不追求文章數量,寧缺毋濫;不追求更新速度,欲速則不達。
在我學習 LaTeX 的途中,走了不少的彎路,欲通過此系列,給初學者指明一條相對明了的學習路徑。
閱讀完本系列文章,不可能熟練地掌握 LaTeX ,關鍵在自己動手實踐。道行深淺,修行在個人。
鄙人才疏學淺,文中謬誤之處,敬請海涵。若有高手指點一 二,在下感激不盡。
1. 簡介
任何技術的產生與發展都是有血有肉的,忽略這段歷史,僅僅學習冰冷的技巧,無疑是悲哀的。千古興亡多少事?悠悠,不盡長江滾滾流。
關于 LaTeX 的發展史及與所見即所得系統(WYSIWYG),比如微軟的 Word 間的較量,我已在《什么是LATEX?》,《LATEX&Word如何選擇》,兩篇文章中說的很清楚了,不再贅述。有興趣的同學可以移步閱讀。
此處,關于 TEX 做一個簡單小結:
免費
TEX 是最精確、最高級的標記語言
版面更專業,數學公式尤其賞心悅目
結構化,它的文檔結構清晰
跨平臺,它幾乎可以運行于所有操作系統
語法不如 HTML 和 XML 嚴謹、清晰
過程繁瑣,需要編譯,不能實時查看結果
群里有人問我 TeX、LaTeX、CTEX、TeX Live 之間有什么區別?這明顯是沒看過我前兩篇文章呀,懷著萬分悲痛的心情,再給大家小結一下哈:
TEX 是一種語言也是一個排版引擎 ,引擎的基本功能就是把字排成行,把行排成頁,涉及到斷字、斷行、分頁等算法。
LaTeX 是 TEX 的眾多宏集之一,只需引用一小段代碼,就能實現事先定義好的功能。
CTEX 和 TeX Live 都是 TEX 的套裝,其中包含了LaTeX,pdfLaTeX,XELaTeX等多種宏集,字體,文檔模板,輔助程序等。
[注]: TEX - pdfTeX - XETeX - LuaTeX 都是排版引擎,按照先進程度遞增(LuaTeX 尚未完善)
1.1 LaTeX 極速體驗
也許你曾聽說過 LaTeX 或者 TEX ,但從未使用過。立即體驗一下?
前往 http://tug.org/texlive/ 下載安裝TEX Live。
打開編輯器 TeXworks,復制下面源代碼到窗口內,保存文件至某處。
選擇編譯方式 XELaTeX,點擊綠色編譯按鈕,右側將彈出編譯完成的 pdf 文件。
讓我們趕緊開始準備軟件吧!
2. 軟件的準備
2.1 關于CTEX套裝
自2016年3月之后,CTEX 套裝一直沒有更新;另外 XELATEX 的出現, 讓中文使用的很多難題得以解決, 不借助 CTEX 套裝也可以很好地處理。
這里我推薦用 TEX Live ,想使用 CTEX 的同學可以自行下載安裝。下載地址:http://www.ctex.org/CTeXDownload. CTEX 套裝分為Basic 版和 Full 版, 選其中一個下載即可。建議使用 Full 版。安裝完成后要立即更新。
2.2 TEX Live 的安裝
我是64位的 Windows,下面以Windows為例
到 http://tug.org/texlive/ 下載自己機器對應的 TEX Live 的鏡像或安裝包。
雙擊 install- tl-windows.exe,開始安裝。
更新. 這一步只是建議, 不是必須的。
TEX Live 的宏包管理器是 tlmgr (TeX Live manager). 在安裝路徑 C:\texlive\2015\bin\win32 下可以找到 tlmgr-gui.
也可以在 WinEdt 工具欄點擊圖標 ?啟動 tlmgr-gui. ?但是, tlmgr 的圖形界面使用 Perl 編寫, 容易造成系統假死. 故建議使用下面的方法更新.
使用 Win + R 組合鍵打開 “運行” 對話框,然后輸入 cmd 回車, 打開命令提示符窗口.
先更新tlmgr. 執行命令
再更新TEX Live. 執行命令
2.3 編輯器的安裝
TEX 的編寫和編譯, 需要借助TEX 編輯器。當然, 不使用專門的編輯器,僅用記事本和 DOS, 也可以使 TEX 工作。這里不做詳細論述,推薦大家使用編輯器進行編寫。
TEX ?Live 使用配搭有多種, 這里只說兩個:
TEX Live + TeXworks;
TEX Live + WinEdt + Sumatra PDF.
TEX Live + TeXworks
TEX Live 自帶編輯器TeXworks,其界面非常樸素, 默認沒有語法高亮,字體也很小,需要對 TeXworks 進行簡單的設置。
對 TeXworks 的字體及大小、語法高亮、默認編譯方式等進行設置如上圖所示,推薦:
字體選擇為 Verdana, 字號 14 磅;
將默認編譯方式設為 XeLaTeX;
對編譯方式可以按自己的喜好排序, 比如圖中依次為XeLaTeX, pdfLaTeX, BibTeX等.
TEX Live + WinEdt + Sumatra PDF
很多用戶習慣使用 WinEdt, 安裝 TEX Live 之后也可以選配WinEdt 以及 Sumatra PDF.
在 WinEdt 的發布網站 http://www.winedt.com/ 下載安裝即可. 安裝過程中, WinEdt會自動配置連接到 TEX Live.
接著安裝 Sumatra PDF, 方便文件的反向查找.下載網址:http://www.sumatrapdfreader.org/free-pdf-reader.html.
安裝 Sumatra PDF 后, 要對 WinEdt 配置, 使用 Sumatra PDF 作為默認的 pdf 閱讀器. 在 WinEdt 菜單欄選 Options —> Execution Modes —>PDF Viewer.
WinEdt 默認的字號比較小, 建議修改.點擊菜單 Options, 選擇 Options Interface,彈出窗口, 左邊邊框尋找 Font 選項,對右邊的文本進行編輯.
至此, 軟件的安裝已經完成了! 編譯下前面例子, 測試安裝是否成功了呢?
3. LATEX 的基本知識
建議: 在用中學. ?邊用邊學, 建立了基本的概念以后, 在使用中根據需求去解決問題. ?LATEX 的功能和宏包有很多, 每個人用到的功能是有限的; 不主張看完一本大部頭的書, 才動手上機測試.
第一步: 把 TEX Live 安裝到你的機器里.
第二步: 找一份 LATEX 的入門介紹看看, 一邊看一邊在電腦上測試編譯. ?
建議開辟一個 “測試區” 文件夾, 用來調試某段 TEX 文檔, 或者用來學習、測試各種命令的功能.
3.1 一篇LATEX文檔的基本構成
一篇LATEX 文檔, 由三個部分組成: 文檔類聲明, 導言區, 正文.
1\documentclass{article} 2\usepackage{hyperref} 3\begin{document} 4????Hello?World! 5\end{document}文檔類就是\documentclass{...}, 里面聲明你要書寫什么樣式的文檔, 常用的有: article, book,report.
可以自己定義一個新的文檔類, 對文章的總體樣式和各個細節進行聲明, 或者定義自己的命令.
正文, 即\begin{document} 和\end{document} 之間的部分.
導言區, 夾在\documentclass{...} 和\begin{document} 之間的部分, 放置需要使用的宏包,或者自己規定一些新的命令.
1\documentclass{ctexart} 2\newcommand{\hubei}{中國湖北} 3\begin{document} 4????我來自\hubei. 5\end{document}上例中, 我們自己定義了一個全新的命令\hubei, 在正文使用該命令時, 得到的就是該命令的內容“中國湖北”. 還可以定義更復雜的結構或內容.
可能你需要定義的東西太多, 這時可以把它們寫在一個文檔里面, 這種文檔就是宏包. 使用時在導言區使用\usepackage{...}, 即可以插入該文檔的內容.
例如我們想書寫一個數學符號?. 該數學符號已經由宏包amssymb定義過了, 這樣只需要在導言區寫上\usepackage{amssymb}, 加載該宏包即可.
1\documentclass{ctexart} 2\usepackage{amssymb} 3\begin{document} 4????$\unrhd$ 5\end{document}3.2 文檔的編譯方法
3.2.1 編譯方式的選擇
幾種常見的編譯方式: XeLaTeX, pdfLaTeX, LaTeX. 推薦使用XeLaTeX, pdfLaTeX 編譯, 直接得到pdf 文檔.
不同的編譯方法, 對應的源文件一般略有不同. 比如第一頁的例子,使用pdfLATEX 編譯得到的pdf 文件, 其中文是亂碼. 需要增加UTF8 選項:
1\documentclass[UTF8]{ctexart} 2\begin{document} 3????中文文檔測試. 4\end{document}不同的編譯方式, 得到不同的效果. ?下圖可見XeLaTeX 處理得更好, 這也是推薦使用XeLaTeX 的一個重要原因.
1\documentclass[UTF8]{ctexart} 2\begin{document} 3????方程$x^3=1$有3個復根.?\\ 4????方程$x^3=1$?有3?個復根.?\\ 5????方程~$x^3=1$?有~3?個復根. 6\end{document} 左側是pdfLaTeX 編譯的結果, 右側是XeLaTeX 編譯的結果.如果文檔加入了交叉引用、目錄、導航書簽等, 需要編譯至少兩遍, 才能使相關部分正確顯示.文檔編碼的類型, 可以在編輯器下方的狀態欄看到.
3.2.2 中文文檔的處理
中文的實現, 推薦使用CTEX 宏集.
下面是article類中文文檔的例子.
1\documentclass{ctexart}2\begin{document}3\title{中文\LaTeX{}?測試}4\author{姓名}5\maketitle6\tableofcontents7\section{測試}8中文測試.9\section{再測試} 10中文測試. 11\end{document}下面是book類中文文檔的例子.
1\documentclass{ctexbook}2\begin{document}3\title{中文\LaTeX{}?測試}4\author{姓名}5\maketitle6\tableofcontents7\chapter{測試}8中文測試.9\chapter{再測試} 10中文測試. 11\end{document}以下是使用beamer文檔類編寫幻燈片的一個示例.
1\documentclass{beamer}2\usepackage[UTF8]{ctex}3\usetheme{Warsaw}4\begin{document}5\begin{frame}{中文演示文檔}6\begin{itemize}[<+->]7\item?這是一個幻燈片;8\item?你可以使用XeLaTeX?編譯;9\item?也可以使用pdfLaTeX?編譯; 10\item?推薦使用XeLaTeX?編譯. 11\end{itemize} 12\end{frame} 13\end{document}4. 編輯器的基本知識
LATEX 的入門都看過了, 但你是否感覺無從下手?因為你需要面對的是TeXworks, WinEdt等編輯器, 下面我們簡要介紹一下.
4.1 TeXworks 的基本用法
注釋功能
Ctrl+Shift+]: 對選定區域進行注釋, 該段不參與編譯;Ctrl+Shift+[: 取消注釋.
自動補全
使用方法是在輸入若干字母后按Ctrl+Tab 或者Shift+Tab. 比如, 輸入\i 之后按Shift+Tab 就會得到\item, 輸入xg 之后按Shift+Tab 會得到\gamma, 輸入\bth 之后按Shift+Tab 會得到
1\begin{theorem} 2 3\end{theorem}如果有幾種可能的補全方式, 多按幾次就會在這幾種方式之間循環.具體可以參考TeXworks 的幫助文檔, 里面還介紹了很多快捷鍵命令.
4.2 WinEdt 的基本用法
最新版本為WinEdt 10.3, 這里以WinEdt 9.1 為例,兩個版本沒有大的區別.
環境的自動補全
輸入一個環境名, 比如\begin{definiton}, 緊接著輸入一個右括號}, 即輸入
1\begin{definiton}}窗口會自動出現與之配對的\end{definiton}, 即得到
1\begin{definiton} 2* 3\end{definiton}工具欄的介紹
狀態欄的介紹
右鍵菜單介紹
查找與替換
Ctrl+R, 在彈出的窗口填入要查找和替換的對象.
用正則表達式完成查找和替換.
4.3 不用編輯器亦可
沒有WinEdt 之類的編輯器也行?事實上, 不借助編輯器, 僅用記事本和DOS, 也可以使TEX工作.
書寫文檔. 打開記事本(假定文件保存在D 盤. 在D 盤點擊右鍵, 選擇“新建文本文檔”),在記事本窗口寫一小段完整的TEX 文檔.
保存文檔. 在記事本窗口點擊“另存為”, 記文件名為mytest.tex, 文件保存在D 盤.注意選擇保存類型為所有文件, 否則上述操作只會得到一個名為mytest.tex.txt 的文本文檔.
編譯文檔. 打開DOS窗口(win 鍵+ R, 輸入“cmd”, 回車), 在DOS窗口下進入D 盤(輸入“d:” 回車), 鍵入“pdflatex mytest” 并回車, 使文件得以編譯.
預覽文檔. 打開D 盤, 可以看到mytest.pdf 文件.另外, 若想使用XeLaTeX編譯, 保存文件時, 編碼要選為UTF-8. 執行命令“xelatex mytest”, 即得到mytest.pdf 文件.
顯然, 專業的編輯器更方便, 更擅長于TEX文檔的編輯和編譯.
5. 初學LaTeX 容易忽視的細節
有一些初學者容易忽視的小問題, 不能說是錯誤, 但這些是不規范、不專業的,我覺得有必要在學習之前就指出來加以規避.
5.1 括號
5.2 函數名
max; sin; ln; sup 等記號要用$ \max, \sin, \ln, \sup $ 輸入, $ max, sin, ln, sup $ 得到的是max; sin; ln; sup, 這不符合運算符要用正體的要求.
有一些數學符號沒有現成的LATEX 命令, 比如arccot, 需要在導言區調用amsmath 宏包, 并定義:
5.3 標點符號
使用半角標點, 后邊要鍵入一個空格.
建議全文使用半角標點, 無論是中文或英文文章. 英文中不應該有全角標點, 而數學環境中就根本不能有全角標點.
存在的問題: 頓號、書名號、破折號等中文特有的標點怎么辦? 個人折衷的辦法是只在這些特定的情形使用全角標點.
無論偏向于全角或半角, 強烈建議使用實心的句號, 只要書寫的是自然科學的文章.因為, 比如使用全角句號的句子結尾處的“” 容易和數學式“” 混淆吧.
6. 遇到問題怎么辦
6.1 查看錯誤信息
編譯過程中跳出的窗口內有編譯信息. 若出錯, 編譯過程會暫停,并提示出錯原因. 此時不要急于關閉編譯窗口或按回車忽略, 而應查看窗口中的出錯信息, 可迅速找到錯誤.
最常見的出錯信息:
! Paragraph ended before … was complete.
! Undefined control sequence.
! LaTeX Error: File '…' not found.
這些出錯信息一般淺顯易懂, 并且顯示錯誤所在行號.編譯信息會保存為log 文件. 比如編譯的源文件為mytest.tex, 編譯完后, 在同一文件夾下會出現mytest.log 文件.
有些復雜的問題, 可以直接copy 出錯信息, 網絡搜索查找解決方案.
6.2 尋找解決方案
資料《LATEX 2" 用戶手冊》、《Mathmode》分別是解決文本、公式排版的重要參考文檔;
查看宏包說明. TEX 系統自帶了大量的宏包說明文檔和例子. 在WinEdt 菜單欄點擊Help -->TeX Doc, 輸入宏包名查找.
求助于網絡. 主要是CTEX 論壇: http://bbs.ctex.org/. 建議先搜索再提問. Google 可以解決我們遇到的很多很多問題.
7. LATEX 究竟強在哪里
7.1 數學公式精美
TEX 的創立就是為了解決數學公式的排版, 這個是TEX 天生的強項. 大量資料有詳盡闡述, 這里不再贅述. 數學公式排版的經典文檔:
名著《The LATEX Companion》
《LATEX 2" 用戶手冊》作者: 鄧建松, 建議精讀此文.
一個示例豐富的必備文檔是《Mathmode》. 該文檔是很好的備查手冊.
7.2 編號自動生成
所有的編號都不用操心. 對公式、圖表、章節、參考文獻等的編號, 都是LATEX 自動完成的.
請復制測試下例. 先編譯兩遍; 然后去掉例子中的注釋符號%, 再編譯兩遍, 看編號有何變化.
1\documentclass[UTF8]{ctexart}2\begin{document}3\title{文檔測試}4\author{Superman}5\maketitle6\tableofcontents7\section{測試一節}8公式:9\begin{equation} 101+1=2. 11\end{equation} 12%\section{插入一節} 13%?新公式: 14%\begin{equation} 15%1+1.5=2.5. 16%\end{equation} 17\section{再來一節} 18又一個公式: 19\begin{equation} 201+2=3. 21\end{equation} 22\end{document}比較編譯的結果可以看到, 所有的編號都是自動調整的.
7.3 交叉引用便捷
對需要引用的公式、圖、表、參考文獻, 給它取一個名字, 可以很方便地進行引用. 這正是LATEX的一個特色.
下面是一個對公式引用的例子. 請試試編譯該例子:
先編譯一遍, 看結果; 編譯第二遍, 注意有什么不同.
去掉例子中的注釋符號%, 再編譯兩遍, 看編號及引用有何變化.
一個重要的常識: 在LATEX 中, 公式、圖、表等的引用, 是通過命令\label{name} 和\ref{name}的配合使用實現的.
在實際使用中, 我們調用amsmath 宏包, 用命令\eqref{...} 使引用公式的編號是帶括號的:
1\documentclass{ctexart} 2\usepackage{amsmath} 3\begin{document} 4\section{A?test?section} 5\begin{equation}\label{eq-1} 61+1=2. 7\end{equation} 8等式\eqref{eq-1}?是眾所周知的. 9\end{document}7.4 各種自動生成
LATEX 文檔中好些部分都不是“手動” 寫出來的, 給一些簡單的指令, LATEX 就會幫你完成. 比如:
目錄. 在文檔中需要加入目錄出寫上\tableofcontents, 編譯就可以了.
參考文獻. 如果經常寫學術文章, 可以建一個自己的參考文獻庫, 用BibTEX 可以很方便地得到文后的參考文獻列表, 無需自己動手寫一個字.
索引. 在導言區加\makeindex, 在文檔末尾加\printindex. 在需要索引處加入\index{詞條名}便可.
頁眉. 在頁眉可以自動加入文章名、作者名、章節名等信息.
7.5 模板使用方便
國際知名的學術雜志或出版公司, 一般都提供了自己的LATEX 模板, 比如Elsevier, Springer, IEEE 等等. 學術會議的投稿通常也會指定相應的LATEX 模板.
這些模板就真正實現了, 讓作者把注意力集中于文章內容的書寫, 而無需理會其排版的外形.
7.6 原文檔像草稿
LATEX 源文件會看起來有些凌亂, 但這完全不會影響到結果文檔的美觀. 而本章的題目: 重劍無鋒, 大巧不工正是這個意思.
修改文檔時, 不必急于刪去認為是多余的文字, 把它們注釋掉就行了, 說不定什么時候還想使用這段文字.
用注釋功能很容易給出文章的簡寫版, 或回過頭來給出完整版.
結果文檔中的換行、另起一段、換頁等是由LATEX 自動完成的. 源文件中的換行、空行的隨意性不影響結果文檔.
可以把一些難記又常用的命令, 放在TEX 文檔的最后,方便復制使用. 因為文檔編譯的時候, \end{document} 之后的信息是被忽略的, 所以這里也可以放一些資料、注解、備選信息等.
8. LATEX入門資料
初學者閱讀文檔建議:
《LATEX 排版全解》, ?寫得很好, 內容比較新, 基本知識介紹得比較全面.
《新手請先讀我》, CTeX 論壇必讀文檔.
《LATEX 入門》, 劉海洋編著
CTEX 及其論壇
LaTeX 科技排版
很難說哪本關于LATEX 的書籍最好. TEX 的內容非常龐雜, 沒有一本書能夠涵蓋全部的內容.
我確信TEX 高手們是依靠TEX 系統自帶的各種manual 或者來自于網絡的各種文檔(甚至是論壇的只言片語), 而不是某本書籍, 來掌握TEX 的.
LATEX 在日新月異, 名著也可能馬上過時, 甚至因此產生誤導.比如因為閱讀了一些早期的資料,很多人有一個誤解: 以為LATEX 支持的圖片格式最好是eps.
事實上, LATEX 支持的圖片格式絕非eps這一種, 無需特意把圖片轉化為eps 格式. 如果我在參加美賽時知道這一點, 就沒有必要大費周章的轉換圖片格式了.
上述資料已在../數模干貨/書&工具中更新:LaTeX入門精選教程到了,快來簽收!
學習建議:
熟悉各種環境命令. 環境用\begin{…}和\end{…} 來聲明. 比如\begin{document} 和\end{document} 就聲明了其內部是正文環境. 常用的環境很多, 要留意熟悉.
注意各種空格、距離命令: LATEX 提供的是一張白紙, 一張沒有邊界的白紙, 你要在一張多大的紙上寫東西, 邊上空多少, 字距、行距是多少, 等等, 都得你告訴LATEX.
數學公式指令熟悉一下就可以了, 不必死記. WinEdt 窗口上都有快捷鍵, 有約500 個常用的數學符號命令. 對于初學者, 數學公式稍微復雜一點的時候, 還可以借助MathType.
結語
能看到這里的都是真愛,首先要感謝你們的時間。沒有編程基礎的同學看到這里可能會感覺一點點燒腦。
為了讓大家不覺得那么枯燥,接下來我會從一份專業的美賽 LATEX 模板展開,一點點深入剖析。很多地方不刨根問底對話,可能你看完我下一篇文章,就能熟練運用模板了。盡情的用別人的輪子開自己的車吧!
那么,好奇輪子是怎么造出來的同學們,請繼續關注本系列的文章。畢竟,從用模板的人變成寫模板的人,還是有一點小帥的哈!
嗯,我是秦迷至于本系列下一篇文章的更新時間,我也不知道,請大家持續關注啦!這段時間比較忙,學長也要開始準備畢設了。
其實,還是主要看大家的反饋情況啦!反饋良好,動力卓越嘛,激素的正向調節哈哈。
擬用九章來講述 LATEX,效仿獨孤九劍。如果你身邊有朋友對 LATEX 感興趣,你也可以將本文直接轉發給他。
另外,聽說點右下角好看的朋友,都變好看了喲!
與50位技術專家面對面20年技術見證,附贈技術全景圖
總結
以上是生活随笔為你收集整理的LaTeX 总决式 | 重剑无锋,大巧不工的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一位非常要好的朋友,零基础转行 Pyth
- 下一篇: 在Win上做Python开发?当然是用官