跳轉到內容

LaTeX/技巧和竅門

來自華夏公益教科書

LaTeX

入門
  1. 簡介
  2. 安裝
  3. 安裝額外包
  4. 基礎
  5. 如何獲取幫助

常用元素

  1. 文件結構
  2. 文字格式
  3. 段落格式
  4. 顏色
  5. 字型
  6. 列表結構
  7. 特殊字元
  8. 國際化
  9. 旋轉
  10. 表格
  11. 標題建立
  12. 頁面佈局
  13. 自定義頁首和頁尾‎
  14. 匯入圖形
  15. 浮動、圖形和標題
  16. 腳註和邊注
  17. 超連結
  18. 標籤和交叉引用
  19. 首字母

機制

  1. 錯誤和警告
  2. 長度
  3. 計數器
  4. 規則和撐杆

技術文字

  1. 數學
  2. 高階數學
  3. 定理
  4. 化學圖形
  5. 演算法
  6. 原始碼列表
  7. 語言學

特殊頁面

  1. 索引
  2. 詞彙表
  3. 參考文獻管理
  4. 更多參考文獻

特殊文件

  1. 科學報告(學士報告、碩士論文、博士論文)
  2. 信件
  3. 簡報
  4. 教師專區
  5. 簡歷
  6. 學術期刊(MLA、APA 等)

建立圖形

  1. 介紹程式化圖形
  2. MetaPost
  3. 圖片
  4. PGF/TikZ
  5. PSTricks
  6. Xy-pic
  7. 建立 3D 圖形

程式設計

  1. 純 TeX
  2. 建立包
  3. 建立包文件
  4. 主題

其他

  1. 模組化文件
  2. 協同編寫 LaTeX 文件
  3. 匯出到其他格式

幫助和建議

  1. 常見問題解答
  2. 技巧和竅門

附錄

  1. 作者
  2. 連結
  3. 包參考
  4. LaTeX 文件示例
  5. 索引
  6. 命令詞彙表

編輯此框編輯目錄

始終以羅馬字型書寫 LaTeX

[編輯 | 編輯原始碼]

如果您在非預設字型區域插入\LaTeX命令,它將根據相應的格式進行排版。如果您想保留 LaTeX 以計算機現代羅馬字型的形式書寫,則必須重新定義該函式。但是,簡單的

\renewcommand{\LaTeX}{{\rm \LaTeX}}

將輸出

TeX capacity exceeded , sorry [ grouping levels =255].

因此您需要建立一個臨時變數。

遺憾的是,

\newcommand{\LaTeXtemp}{\LaTeX}
\renewcommand{\LaTeX}{{\rm \LaTeXtemp}}

也不起作用。

我們必須使用 TeX 原語\let代替。

\let\LaTeXtemp\LaTeX
\renewcommand{\LaTeX}{{\rm \LaTeXtemp }}

id estexempli gratia(即 和 例如)

[編輯 | 編輯原始碼]

如果您簡單地使用 "i.e." 或 "e.g." 形式,LaTeX 將把句點視為句子結束句點(即 句號),因為它們後跟一個空格,並在下一個 "句子" 之前新增更多空格。為了防止 LaTeX 在最後一個句點後新增空格,正確的語法是 "i.e.\ " 或 "e.g.\ ",或者 "i.e., " 和 "e.g., ",後面跟著一個逗號。逗號被 LaTeX 解釋為句子的一部分,因為句點後面沒有空格。在這種情況下,"i.e.," 和 "e.g.," 不需要任何特殊關注。例如,芝加哥格式手冊 偏愛後者。

如果命令 \frenchspacing 在序言中使用,則句子之間的空格始終與單詞之間的空格相同。

按章節分組圖/公式編號

[編輯 | 編輯原始碼]

對於長文件,編號會變得很繁瑣,因為數字會達到兩位數和三位數。要使計數器在每個章節開頭重置,並將數字加上字首章節號,請在序言中包含以下內容。

\usepackage{amsmath}
\numberwithin{equation}{section}
\numberwithin{figure}{section}

類似的計數器型別和文件單位(如 "小節")也可以這樣做。


圖形和圖表編輯器

[編輯 | 編輯原始碼]

支援 LaTeX 的向量圖形編輯器

[編輯 | 編輯原始碼]

在影像中使用與文件相同的字型和字號通常是比較好的選擇。此外,對於科學影像,您可能需要數學公式或特殊字元(如希臘字母)。如果影像編輯器允許您在影像中使用 LaTeX 程式碼,那麼這兩件事都可以輕鬆實現。大多數向量圖形編輯器都沒有提供此選項。但是,也有一些例外。

在早期,LaTeX 使用者使用 Xfig 來繪製圖形。如今,該編輯器仍被不少人使用,因為它具有特殊的 "匯出到 LaTeX" 功能。它還提供了一些非常基本的方法將 LaTeX 文字和數學封裝到影像中(將文字的 "特殊標誌" 設定為 "特殊" 而不是 "正常")。匯出時,所有 LaTeX 文字都將放在一個 .tex 檔案中,與影像的其餘部分分開(影像將放在一個 .ps 檔案中)。

專門為 LaTeX 使用量身定製的,更新且更易於使用的向量圖形編輯器是 IPE。它允許使用任何 LaTeX 命令,包括但不限於影像中的數學公式。該程式將其檔案儲存為可編輯的 .eps 或 .pdf 檔案,無需在每次編輯後匯出影像。

一款功能非常強大的向量圖形編輯器是 Inkscape。它本身不支援 LaTeX 文字,但您可以使用外掛 Textext 來實現。這使您可以在影像中放置任何 LaTeX 程式碼塊。此外,從版本 0.48 開始,您可以匯出到向量圖形,文字在 .tex 檔案中單獨存放。使用這種方法,文字將由 LaTeX 編譯器本身進行渲染。

LaTeXDraw 是一款免費的開源圖形 PSTricks 生成器和編輯器。它允許您繪製基本的幾何物件,並將結果儲存為多種格式,包括 .jpg、.png、.eps、.bmp 以及 .tex。在最後一種情況下,儲存的檔案只包含 PSTricks/LaTeX 程式碼。因此,您可以在圖片中包含任何可能的 LaTeX 程式碼,因為該檔案將直接由您的 LaTeX 環境進行渲染。

另一種生成向量圖形的方法是使用 Asymptote 語言。它是一種程式語言,可以生成封裝在 Postscript 格式中的向量影像,並支援任何文字標籤中的 LaTeX 語法。

使用 gnuplot 繪製圖表

[編輯 | 編輯原始碼]

在 LaTeX 文件中包含圖表和表格的一種簡單方法是在通用的電子表格軟體(如 OpenOffice Calc 或 MS Office Excel 等)中建立它們,然後將其作為裁剪後的螢幕截圖包含在文件中。但是,這會生成質量較低的柵格化影像。Calc 還允許您將圖表複製貼上到 OpenOffice Draw 中,並將其儲存為 PDF 檔案。

使用 Microsoft Excel 2010,可以直接將圖表複製到 Microsoft Expression Design 4 中,然後將其儲存為 PDF 檔案。這些 PDF 檔案可以包含在 LaTeX 中。這種方法會生成高質量的向量化影像。

渲染圖形的一種極好的方法是透過 gnuplot,這是一款免費且通用的繪圖軟體,它具有一個特殊的輸出過濾器,可以直接匯出檔案到 LaTeX。我們假設資料儲存在 CSV 檔案(逗號分隔文字)的第一列和第三列中。繪製資料的簡單 gnuplot 指令碼如下所示

gnuplot 可以繪製各種數值資料、函式、誤差分佈以及 3D 圖形和曲面
set format "$%g$"
set title "Graph 3: Dependence of $V_p$ on $R_0$"
set xlabel "Resistance $R_0$ [$\Omega$]"
set ylabel "Voltage $V_p$ [V]"
set border 3
set xtics nomirror
set ytics nomirror
set terminal epslatex
set output "graph1.eps"
plot "graph1.csv" using 1:3   #Plot the data

現在 gnuplot 生成了兩個檔案:圖形繪製在graph.eps中,文字在graph.tex中。第二個檔案包含 EPS 影像,因此我們只需要將檔案 graph.tex 包含在我們的文件中

\input{graph1.tex}

以上步驟可以透過 gnuplottex 包自動完成。透過將 gnuplot 命令放在 \begin{gnuplot}\end{gnuplot} 中,並使用 latex -shell-escape 進行編譯,圖形就會被建立並新增到您的文件中。

從 Windows 上的 latex 訪問 gnuplot 失敗可以透過將檔名只寫成一個詞來解決。不要將您的標題檔案命名為 my report.tex,而應該命名為 myreport.tex

當您使用 gnuplottex 時,也可以將終端設定作為引數直接傳遞給環境。

 \begin{gnuplot}[terminal=epslatex, terminaloptions=color, scale=0.9, linewidth=2 ]
 ...
 \end{gnuplot}

使用 gnuplottex 在某些編輯器中使用匯入資料的代數函式時會導致錯誤的文字高亮顯示,例如

 (2*($1)):2

一些編輯器會認為所有後續文字都是公式的一部分,並將其高亮顯示(因為“$”被解釋為 LaTeX 程式碼的一部分)。可以透過以下方式避免這種情況:

#$
\end{gnuplot}

它為 gnuplot 直譯器取消了美元符號的註釋,但不會影響編輯器對 .tex 的解釋。

當使用 pdfLaTeX 而不是簡單的 LaTeX 時,我們必須將 EPS 影像轉換為 PDF 並替換名稱。graph1.tex檔案。如果我們使用類 Unix shell,它只需使用

eps2pdf graph1.eps
sed -i s/".eps"/".pdf"/g graph1.tex

包含的 tex 檔案我們可以像普通影像一樣工作。

而不是呼叫eps2pdf直接,我們也可以包含epstopdf包來自動執行該過程。如果我們現在包含一個圖形並省略副檔名,epstopdf將自動將 .eps 檔案轉換為 PDF 並將其插入文字。

\includegraphics{graph1}

這樣,如果我們選擇輸出到 PS 或 DVI,則使用 EPS 版本,如果我們直接輸出到 PDF,則使用轉換後的 PDF 圖形。請注意,使用epstopdf需要使用 latex -shell-escape 編譯。

注意:Emacs AucTex 使用者可能想檢視 Gnuplot-mode

生成 png 螢幕截圖

[edit | edit source]

請參閱 匯出到其他格式

拼寫檢查和字數統計

[edit | edit source]

如果您想對文件進行拼寫檢查,可以使用命令列aspell, hunspell(最好),或ispell程式。

ispell yourfile.tex
aspell --mode=tex -c yourfile.tex
hunspell -l -t -i utf-8 yourfile.tex

所有三個都理解 LaTeX 並會跳過 LaTeX 命令。您也可以使用具有內建拼寫檢查功能的 LaTeX 編輯器,例如 LyXKileEmacs。另一種選擇是 將 LaTeX 原始碼轉換為純文字,然後在 OpenOffice.org 或 KOffice 等文字處理程式中開啟生成的文字檔案。

如果您想統計字數,您可以再次使用 LyX 或將您的 LaTeX 原始碼轉換為純文字,並使用例如 UNIXwc命令

detex yourfile | wc

作為detex命令是pdftotext命令,它從 PDF 中提取 ASCII 文字檔案

1. pdflatex yourfile.tex
2. pdftotext yourfile.pdf
3. wc yourfile.txt

新偶數頁

[edit | edit source]

在 twoside 模式下,您可以透過以下方式獲得新的奇數頁

\cleardoublepage

但是,LaTeX 不允許您獲得新的偶數頁。以下方法可以解決這個問題;

以下內容必須放在您的文件序言中

\usepackage{ifthen}

\newcommand{\newevenside}{
	\ifthenelse{\isodd{\thepage}}{\newpage}{
	\newpage
        \phantom{placeholder} % doesn't appear on page
	\thispagestyle{empty} % if want no header/footer
	\newpage
	}
}

要啟用新的偶數頁,請在您希望新的偶數頁出現的地方鍵入以下內容:

\newevenside

如果給定的頁面是奇數頁,下一個新頁面將是偶數頁,LaTeX 將不會做任何事情,而只是一個常規的 \newpage。但是,如果給定的頁面是偶數頁,LaTeX 將建立一個新的(奇數)頁面,插入一個佔位符,並建立一個新的(偶數)頁面。一種粗略但有效的方法。


[edit | edit source]

如果您想新增一個帶有版權和作者資訊的側邊欄,您可能需要使用eso-pic包。示例

\usepackage{eso-pic}
...
\AddToShipoutPicture{%
  \AtPageLowerLeft{%
    \rotatebox{90}{%
        \begin{minipage}{\paperheight}
          \centering\textcopyright~\today{} Humble me
        \end{minipage} %
      }
    } %
  }%

如果您只想在某一頁上新增它,請在您希望新增它的頁面上使用 AddToShipoutPicture 命令的帶星號版本。(\AddToShipoutPicture*{...})

隱藏輔助檔案

[edit | edit source]

如果您使用的是 pdflatex,您可以建立一個資料夾來儲存所有輸出檔案,這樣您的頂級目錄看起來更乾淨。

pdflatex -output-directory tmp

請注意,tmp 資料夾應該存在。但是,如果您使用的是基於 Unix 的系統,您可以執行以下操作:

alias pdflatex='mkdir -p tmp; pdflatex -output-directory tmp'

或者對於 vim,修改您的 .vimrc

" use pdflatex
let g:Tex_DefaultTargetFormat='pdf'
let g:Tex_MultipleCompileFormats='pdf,dvi'
let g:Tex_CompileRule_pdf = 'mkdir -p tmp; pdflatex -output-directory tmp 
-interaction=nonstopmode $*; cp tmp/*.pdf .'


前一個:FAQ 索引 下一個:作者
華夏公益教科書