LaTeX學習筆記 1 | 一個中文排版例子

LaTeX吉祥物

本文目錄

  • 題外話
  • 熟悉LaTeX
    • LaTeX的讀音和寫法
    • 書中介紹的LaTeX版本會不會過時
    • 再談LaTeX發行版
  • 一個簡單的中文排版例子
  • 關于TeXstudio語法檢查的設置
  • 牛刀小試,第一個有模有樣的作品
    • 源代碼
    • 排版效果
    • 代碼拆解
      • 調整TeXstudio的默認編譯器為XeLaTeX
      • 基礎語法
      • 換行與空格
      • 命令與環境
      • 數學公式
      • 使用圖表
      • 參考文獻與JabRef的安裝使用
      • 交叉引用
      • 文章格式
      • 易錯點總結
  • 后記

題外話

等了三天,劉海洋教授的《LaTeX入門》終于到手了,EMS還是不如順豐給力呀。粗略一翻,這本書的排版真的是賞心悅目,我已經迫不及待要和它共度美好時光了。上幾張圖秀一下它的顏值。


《LaTeX入門》封面
《LaTeX入門》內容

熟悉LaTeX

LaTeX的讀音和寫法

LaTeX的官方標準讀音音譯成中文大約是“拉泰赫”,寫法要嚴格按照大小寫交錯寫成LaTeX

書中介紹的LaTeX版本會不會過時

劉海洋教授在本書中使用的是LaTeX格式版本為2e,意思是超過了第2版,接近卻沒有達到第3版。LaTeX2e在1994年就已經完善,考慮到這本書是2013年出版的,而LaTeX又是在不斷更新進化的,我特地去查了一下LaTeX3相關的內容,點擊這里查看LaTeX3的主頁。根據我的調查和理解,目前來說,我認為使用LaTeX2e完全滿足日常需要。別的不多說,既然《LaTeX入門》這本書是用LaTeX2e排版的,我還有什么不滿足的呢?

再談LaTeX發行版

之前有粗略說過CTeX和TeXLive等發行版,現在詳細介紹一下。

對比 CTeX TeXLive
操作系統 只限于Windows下 通用
制作人 中科院吳凌云 TUG
其他 對MiKTeX的再封裝 可刻錄在光盤直接運行

劉海洋教授還介紹了一些編輯器和PDF閱讀器,不過我個人認為,對初學者來說,沒有必要把所有的可用軟件都折騰一番。現在的當務之急,是建立LaTeX技能樹的主干,先把知識體系建立起來,那些零零碎碎的小知識都可以后再擴充。

一個簡單的中文排版例子

不知讀者是否發現,在我們之前測試TeXstudio是否可用的那個例子里,直接添上中文是不可以的,雖然編譯沒有報錯,但無法輸出。這是因為 TEX 原本是面向西文寫作的,默認并沒有加載中文字體。通過更換文檔類型,可以正確顯示出中文。代碼如下:

\documentclass[UTF8]{ctexart}
\begin{document}
    \section{文字}
    特可愛排版。
    \section{數學}
    \[
        a^2+b^2=c^2
    \]
\end{document}

顯示效果如下:


顯示效果

這段代碼挺好理解的。如果你懂編程,你肯定直到UTF8代表什么,不懂得話點擊這里查看。反斜線\ 代表的是其后緊跟的是一個排版命令,而非作者的文字內容。documentclass,顧名思義,就是文檔類了。LaTeX的優勢就在于讓寫作與排版分離,把排版大量繁瑣的要求隱藏在格式之下,想必這個格式就是只一開始加載的文檔類了。ctexart嘛,ctexarticle的縮寫,暫且不管這個ctexart是哪路神仙,知道比起之前的article來它能讓我們輸出中文即可。接下來是一對命令,\begin{document}\end{document},看起來被它們包含夾在中間的應該就是排版的正文部分了。\section好理解,段落嘛。至于下一對命令,\[\],它們之間包含的應該是對數學公式的特殊處理。

關于TeXstudio語法檢查的設置

突然發現TeXstudio會對所有正在編輯的中文加紅色下劃線提示報錯,看著挺煩人的,選擇菜單欄里的Options-Configure TeXstudio,取消下圖紅色橢圓處的對勾即可。

牛刀小試,第一個有模有樣的作品

這一節研究的是一個相對實際的例子,如劉海洋教授所說,有一些代碼或許難以理解,確實如此,有些代碼具體怎么執行的我不知,但根據基本的英語能力和編程功底,大概還是猜得出一些代碼的作用的。

這是一片小小的科技論文,麻雀雖小五臟俱全,結構上包括標題、摘要、目錄、正文和參考文獻,內容上包括文字、公式、圖形、表格等。內容很多,但別怕,這只是一種慣用的教學伎倆,先給你一個完整工程讓你感受一下,這對你以后的學習大有裨益。

源代碼

%-*- coding: UTF-8 -*-
% gougu.tex
% 勾股定理
\documentclass[UTF8]{ctexart}
\usepackage{graphicx}
\usepackage{float}
\usepackage{amsmath}
\usepackage{geometry}
\geometry{a6paper,centering,scale=0.8}
\usepackage[format=hang,font=small,textfont=it]{caption}
\usepackage[nottoc]{tocbibind}

\newenvironment{myquote}
{\begin{quote}\kaishu\zihao{-5}}
{\end{quote}}

\newcommand\degree{^\circ}

\title{\heiti 雜談勾股定理}
\author{\kaishu 紙山}
\date{\today}

\bibliographystyle{plain}

\newtheorem{thm}{定理}

\begin{document}
    
    \maketitle
    \begin{abstract}
        這是一篇關于勾股定理的小短文。
    \end{abstract}
    \tableofcontents
    \section{勾股定理在古代}\label{sec:diyijie}
    西方稱勾股定理為畢達哥拉斯定理,將勾股定理的發現歸功于公元前 6 世紀的
    畢達哥拉斯學派 \cite{Kline}。該學派得到了一個法則,可以求出可排成直角
    三角形三邊的三元數組。畢達哥拉斯學派沒有書面著作,該定理的嚴格表述和證
    明則見于歐幾里德\footnote{歐幾里得,約公元前 330--275 年。}《幾何原本》
    的命題 47:“直角三角形斜邊上的正方形等于兩直角邊上的兩個正方形之和。 ” 
    證明是用面積做的。
    
    我國《周髀算經》載商高(約公元前 12 世紀)答周公問:
    \begin{myquote}
        勾廣三,股修四,徑隅五。
    \end{myquote}
    又載陳子(約公元前 7--6 世紀)答榮方問:
    \begin{myquote}
        若求邪至日者,以日下為勾,日高為股,勾股各自乘,并而開方除之,得邪至日。
    \end{myquote}
    都較古希臘更早。后者已經明確道出勾股定理的一般形式。圖\ref{fig:xiantu}是
    我國古代對勾股定理的一種證明 \cite{quanjing}。
    \begin{figure}[ht]
        \centering
        \includegraphics[scale=0.2]{xiantu.png}
        \caption{宋趙爽在《周髀算經》注中作的弦圖(仿制),該圖給出了勾股定理一個極具對稱美的證明。 }
        \label{fig:xiantu}
    \end{figure}
    \section{勾股定理的近代形式}
    勾股定理可以用現代語言表述如下:
    \begin{thm}[勾股定理]
        直角三角形斜邊的平方等于兩腰的平方和。
    \end{thm}

    可以用符號語言表述為:設直角三角形$ABC$,其中$\angle C = 90\degree$,則有
    \begin{equation}\label{eq:gougu}
    AB^2 = BC^2 + AC^2.
    \end{equation}
    滿足式\eqref{eq:gougu}的整數稱為\emph{勾股數}。第\ref{sec:diyijie}節所說
    畢達哥拉斯學派得到的三元數組就是勾股數。下表列出一些較小的勾股數:
    \begin{table}[H]
        \begin{tabular}{|rrr|}
            \hline
            直角邊 $a$ & 直角邊 $b$ & 斜邊 $c$ \\
            \hline
            3 & 4 & 5 \\
            5 & 12 & 13 \\
            \hline
        \end{tabular}%
        \qquad
        ($a^2 + b^2 = c^2$)
    \end{table}
    \nocite{Shiye}
    \bibliography{math}
\end{document}

排版效果

排版效果
排版效果

怎么樣,是不是看起來挺不錯,心動不如行動,快來看一下是什么樣的代碼能排出如此精美的文章的吧!

代碼拆解

區區七八十代碼,竟花費了我接近兩個小時來調試,頗為不易,接下來讓我來拆解一下這段代碼。

調整TeXstudio的默認編譯器為XeLaTeX

自此以后的編譯工作我們都使用XeLaTeX,一開始TeXstudio默認的編譯器可能不是它,需要我們手動修改。選擇菜單欄里的Options-Configure TeXstudio,修改下圖紅色橢圓處即可。

基礎語法
  • 以%開頭的行是注釋,不會對排版效果產生任何影響,只是用來方便閱讀源代碼。
  • \title{}\author{}\date{\today},顧名思義,聲明了標題、作者和寫作日期,\today當然是自動生成今日的日期。這只是聲明,還需要下面的\maketitle命令使之出現在編譯結果中。
  • \begin{document}之前的部分稱為導言區,往往用來對文檔的性質做一些設置,或自定義一些命令。
  • \bibliographystyle{plain}用來聲明參考文獻的格式,\bibliography{math}將從同文件夾下的math.bib中獲取參考文獻信息。
  • \tableofcontents用來輸出目錄。
  • \zihao命令設置字號,\kaiti設置字體為楷體
換行與空格
  • 空行分段,單個回車不分段。LaTeX會忽略單個回車、段前的空格和漢字后面的空格,而其他符號后面的空格則會保留。
  • 使用XeLaTeX時,ctexart會調用xeCJK宏包,自動處理漢字與其他符號之間的距離。
  • 為了使源代碼更容易閱讀,我們可以利用上面兩點特性:在合適的位置敲一下回車,不要讓一行代碼太長;在漢字與其他符號之間加一個空格,使得代碼更清晰。
命令與環境
  • 命令的格式為:以反斜線\開頭,后接一串字母表示命令名,參數用花括號括起來,可選參數用方括號。
  • 環境的格式為:\begin{環境名}(環境內容)\end{環境名},故源代碼中的document,abstract,myquote,figure,thm,equation,table,tabular都是環境,其中myquote是自定義的環境。
  • 自定義環境:源代碼中的\newenvironment{myquote}{\begin{quote}\kaishu\zihao{-5}}{\end{quote}}用來自定義環境,為什么這樣寫,這還得繼續學習才能知曉。
  • 自定義命令:源代碼中的\newcommand\degree{^\circ}用來自定義命令,新命令\degree的效用等價于^\circ
數學公式

數學公式分為兩種,一個是正文公式,一個是顯示公式。

  • 正文公式:把公式用一對美元符號$$括起來即可,主要用于較短的夾在行文中的公式。
  • 顯示公式:使用equation環境,主要用于較長的比較重要的需要引用的公式。
使用圖表

插圖功能:需要使用宏包,在引言區使用\usepackage{graphicx}命令。一個用來插圖的代碼標準模板如下:

\begin{figure}[ht]
        \centering
        \includegraphics[scale=0.2]{圖片路徑}
        \caption{ }
\end{figure}

figure環境的可選參數,ht分別表示here和top,表示浮動體可以出現在環境周圍的文本所在處(here)和一頁的頂部(top)。\centering表示居中,scale是對圖片的放縮比例,圖片路徑是指相對于當前編輯的.tex文件路徑*,請注意這一點。\caption當然是指圖片的標題。

圖表功能:表格由tabular環境完成,一個用來制作表格的標準模板如下:

\begin{tabular}{|rrr|}
        \hline
        直角邊 $a$ & 直角邊 $b$ & 斜邊 $c$ \\
        \hline
        3 & 4 & 5 \\
        5 & 12 & 13 \\
        \hline
\end{tabular}

|rrr|表示表格有三列,都是右對齊(r代表right),在第一列前面和第三列后面各有一條垂直的表格線。\\把行與行隔開,&把列與列隔開,\hline畫一條橫線。

參考文獻與JabRef的安裝使用

LaTeX使用BibTeX處理參考文獻,BibTeX需要我們定義“參考文獻數據庫”,參考文獻數據庫是一個后綴為.bib的文件,本文所使用的參考文獻數據庫如下:

% Encoding: UTF-8

@Book{Kline,
  title     = {古今數學思想},
  publisher = {上海科學技術出版社},
  year      = {2002},
  author    = {克萊因},
}

@Book{Shiye,
  title     = {幾何的有名定理},
  publisher = {上海科學技術出版社},
  year      = {1986},
  author    = {失野健太郎},
}

@Article{quanjing,
  author  = {曲安京},
  title   = {商高、趙爽與劉徽關于勾股定理的證明},
  journal = {數學傳播},
  year    = {1998},
}

@Comment{jabref-meta: databaseType:bibtex;}

你可以復制粘貼到記事本里,然后保存為math.bib。注意這個文件的路徑也是相對于當前編輯的.tex文件路*,直接在命令里寫成\bibliography{math}表明,math.bib和當前編輯的.tex文件在同一文件夾下。

其實我們大可不必手動輸入,有專門的軟件JabRef來管理文獻數據庫,點擊這里下載。安裝完成后,點擊菜單欄file->New BibTeX database,然后點擊下圖紅色橢圓中的加號:

選擇你要添加的文獻類型,我們添加了兩個Book和一個Article,然后就可以輸入內容了。這里需要解決一個中文亂碼的問題。點擊菜單欄Options->Preferences,點擊下圖紅色橢圓處的按鈕,把字體換成SimSun,保存即可。

交叉引用

除了參考文獻,圖表和公式的編號也可以引用。基本的交叉引用命令是\ref,它以標簽為參數,得到被引用的編號。標簽通過\label命令設置,比如在插圖時已經為弦圖定義了標簽fig:xiantu。在本文中,還為表格和section設置了標簽。

其中,對于公式的引用,數學宏包amsmath定義了\eqref命令,專門用于公式的引用,特色是能產生括號。

文章格式

設計頁面尺寸可以使用geometry宏包,代碼:

\usepackage{geometry}
\geometry{a6paper,centering,scale=0.8}

定義頁面使用A6紙大小,版心居中,長寬占頁面的0.8倍。

易錯點總結
  • 引用圖片、文獻數據庫時注意路徑。
  • 命令不要抄錯了,很容易把大括號抄成方括號。
  • 劉海洋教授在文中說要編譯四次,按四次按鈕。TeXstudio貌似不需要,點擊一次按鈕后,自動編譯了四次。
  • 不要試圖讀完本文就想排出這個效果,最好是通讀一下《LaTeX入門》的第一章。

后記

今天學習了《LaTeX入門》的第一章,雖然只有50頁,但因為這個小例子的存在,難度不算低,有些地方折騰了好久,但最終得到了和書中一模一樣的排版,還是很令人自豪的。我自認為劉海洋教授在本章寫的內容我基本看明白了,讀者對本章有什么疑問可在評論里留言,我們可以多交流。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容