標籤:

有什麼比較好的 LaTeX 模板值得學習?

我最近通讀了《LaTeX 入門》這本書,學到了很多東西,但感覺知識都很零碎。所以想找一個比較綜合的例子來看一下,實踐中的的 LaTeX 代碼是什麼樣的。《LaTeX 入門》附帶的勾股定理我覺得又稍微簡單了些。

網上的模板五花八門,作為一個初學者,沒有能力鑒別出優劣。請大家推薦一些值得效法的模板,包括使用最新的中文支持方式,代碼規範,使用的宏包與時俱進等等。


你可能誤解「模板」這個詞了。

模板的主要應用場合就是學術期刊和會議的論文投稿。使用 LaTeX 的主要學科(數學、物理、計算機等等)的相關學術出版物很多都有模板。

比如說美國數學會(AMS)旗下的期刊,可以在這裡選擇刊物並下載模板:American Mathematical Society

一個壓縮包里包括模板使用的文檔類,幾個說明文件,以及作為模板的那個 .tex 文件。這樣的模板文件都是非常短小的,只是把作者、單位、郵件地址、論文關鍵字之類信息的命令留好供填寫,其他就是留白。最多舉個例子說怎麼寫定理和插圖之類:

%-----------------------------------------------------------------------
% Beginning of jams-l-template.tex
%-----------------------------------------------------------------------
%
% This is a topmatter template file for JAMS for use with AMS-LaTeX.
%
% Templates for various common text, math and figure elements are
% given following the end{document} line.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Remove any commented or uncommented macros you do not use.

documentclass{jams-l}

% If you need symbols beyond the basic set, uncomment this command.
%usepackage{amssymb}

% If your article includes graphics, uncomment this command.
%usepackage{graphicx}

% If the article includes commutative diagrams, ...
%usepackage[cmtip,all]{xy}

% Update the information and uncomment if AMS is not the copyright
% holder.
%copyrightinfo{2009}{American Mathematical Society}

ewtheorem{theorem}{Theorem}[section]

ewtheorem{lemma}[theorem]{Lemma}

heoremstyle{definition}

ewtheorem{definition}[theorem]{Definition}

ewtheorem{example}[theorem]{Example}

ewtheorem{xca}[theorem]{Exercise}

heoremstyle{remark}

ewtheorem{remark}[theorem]{Remark}

umberwithin{equation}{section}

egin{document}

% itle[short text for running head]{full title}
itle{}

% Only author and address are required; other information is
% optional. Remove any unused author tags.

% author one information
% author[short version for running head]{name for top of paper}
author{}
address{}
curraddr{}
email{}
hanks{}

% author two information
author{}
address{}
curraddr{}
email{}
hanks{}

% subjclass is required.
subjclass[2010]{Primary }

date{}

dedicatory{}

% Abstract is required.
egin{abstract}
end{abstract}

maketitle

% Text of article.

% Bibliographies can be prepared with BibTeX using amsplain,
% amsalpha, or (for "historical" overviews) natbib style.
ibliographystyle{amsplain}
% Insert the bibliography data here.

end{document}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Templates for common elements of a journal article; for additional
% information, see the AMS-LaTeX instructions manual, instr-l.pdf,
% included in the JAMS author package, and the amsthm user"s guide,
% linked from http://www.ams.org/tex/amslatex.html .

% Section headings
section{}
subsection{}

% Ordinary theorem and proof
egin{theorem}[Optional addition to theorem head]
% text of theorem
end{theorem}

egin{proof}[Optional replacement proof heading]
% text of proof
end{proof}

% Figure insertion; default placement is top; if the figure occupies
% more than 75% of a page, the [p] option should be specified.
egin{figure}
includegraphics{filename}
caption{text of caption}
label{}
end{figure}

% Mathematical displays; for additional information, see the amsmath
% user"s guide, linked from http://www.ams.org/tex/amslatex.html .

% Numbered equation
egin{equation}
end{equation}

% Unnumbered equation
egin{equation*}
end{equation*}

% Aligned equations
egin{align}
\

end{align}

%-----------------------------------------------------------------------
% End of jams-l-template.tex
%-----------------------------------------------------------------------

模板是為學術出版的方便服務的。至於怎麼填內容,那是作者自己的事。可能有複雜的公式、表格、插圖,但大多數都沒有。這樣的論文其實也是實踐中最多的 LaTeX 代碼,很平實,也沒什麼要學的。

而你想要的,大概則是充填著大量內容的,可能涵蓋了你可能遇到的種種問題的,甚至是展示著各種炫目技巧的完整大型文檔。比方說一本圖文並茂的複雜教科書的完整源代碼。

因為這樣的書籍通常都是要正式出版的,出於版權問題,源代碼很少可能會拿出來。不過,還是能找到一些 showcase,比如在 TeX.SE 上,一些人把自己的課件、學位論文和公版圖書發了出來:

Showcase of beautiful typography done in TeX friends

但要指出的是,大部分真實環境中的學位論文和書刊,代碼也比這種展示性的東西要樸實多了。有些甚至的簡陋的。

中文方面,可以去看看各高校的學生自己做的學位論文模板,那種模板的例子有的和上面的論文模板一樣簡單,但有時會也會給得比較複雜。博士學位論文大約就是一個普通的數理相關專業研究人員所能寫的最複雜的 LaTeX 文檔了。

注意學位論文模板其實也是把大部分關於設置的代碼包裝進文檔類的 .cls 宏文件裡面的,所以你從使用者的角度也是看不到諸如字體選擇、頁面布局、章節樣式這些東西的。而這種包裝過的宏寫在 .cls 文件中也比直接在文檔中寫要難懂一些。

學位論文模板由於歷史原因或為了考慮兼容性,並非總會使用最新式的代碼。例如,清華的模板有十年以上的歷史,內容很多,也能看到一些很早的代碼;北大的模板重構過,代碼少而新,但出於兼容性並不總使用最新的語法。而如果看開發者李清的 GEB 書籍代碼,雖然新潮,但對一般人可能會覺得過於難讀了。


首先,學 LaTeX 沒有必要去學模板的代碼。cls 和 sty 作者寫代碼的風格、使用的命令,和用戶都不一樣。

其次,最新的中文支持方式,就是使用 CTeX 宏集,並最好顯式地傳入 UTF8 參數。例如

documentclass[UTF8]{ctexart}
documentclass[UTF8]{ctexbook}
documentclass[UTF8]{ctexrep}
documentclass[UTF8]{ctexbeamer}
usepackage[UTF8]{ctex}

如此,將代碼以 UTF-8 編碼保存,以 LaTeX/pdfLaTeX/XeLaTeX/LuaLaTeX 編譯即可。當然,我們推薦使用 XeLaTeX 或者 LuaLaTeX 編譯。

額外提一句,經常有人看到英文的模板樣式不錯 ,想讓它支持中文。這樣只需要在導言區加上以下一行即可

usepackage[UTF8, scheme = plain]{ctex}

這是讓 CTeX 宏集工作在 plain 樣式下。

當然,前提是你要將 TeX 系統(推薦 TeX Live)中的宏包,更新到最新。

而後,代碼規範方面,其實 LaTeX2e 沒有太多的要求,基本上只需要自己喜歡就好了。

這裡有我平時解答問題提供的一些代碼片段,可供參考(當然不全是 LaTeX 的,還有 Cpp 和 Python 的)。

https://gist.github.com/Liam0205

如果書寫 LaTeX3 的代碼(一般用戶基本用不到),則有必要參考文檔的說明。

texdoc l3styleguide

基本上就是在我 LaTeX2e 風格的基礎上,儘可能在花括弧兩邊加空格。

最後,宏包的與時俱進只能靠平時積累。以「LaTeX package obsolete list」為關鍵詞在 Google 上檢索,會有一些結果。比如

best practices

LaTeX - Obsolete Packages and Document Classes

Obsolete classes and packages

本機上也有相關的文檔說明

texdoc l2tabuen

以上。


個人經驗感覺LaTex真的不太需要特別投入精力去學,從來都是準備發哪個期刊就直接Google那個期刊的LaTex模版,然後改text。所以用了三年多LaTex至今不知道一個空白文檔的第一行命令是什麼……

圖片、圖表、列表、參考文獻都有現成的命令,複製粘貼之後改text。遇到任何問題直接Google關鍵字,論壇上總有解決方法,調用哪個package啊,命令怎麼打啊,都寫得很詳細,舉一反三。至今還沒遇到過10分鐘之內搜不到的問題。

公式和數學符號打個幾次就記得差不多了,想不起來也是隨時Google。

界面的話,Texmaker還是很user friendly的,推薦新手使用。

話說我Matlab好像也是這麼學的……哎,不虔誠啊……


這取決於題主是想做 LaTeX 用戶還是 LaTeX 開發者。

用戶的話如其他回答所說,用別人的模板就可以了。沒必要深究 TeX 代碼。

如果題主希望做開發者,自己寫宏包,那麼建議從這幾個文件開始看起

LaTeX2e for class and package writers: https://www.ctan.org/pkg/clsguide

Peter Flynn 2007 The PracTeX Journal - TeX Users Group

Jim Hefferon 2005 The PracTeX Journal - TeX Users Group

Patashnik 1988 http://www.pctex.com/files/managed/a/a3/btxhak.pdf 關於 BibTeX 代碼的介紹。

題主需要熟悉 plain TeX 的命令,不能只停留在 LaTeX 層面上。但是 plain TeX 坑很多。題主還要去學習 bst 語言(這是一個純堆棧語言),才能自己寫 BibTeX 樣式。

然後題主就可以去看 LaTeX 標準庫裡面的各種宏包的源碼,對照上面的參考資料去理解代碼。

以及, The LaTeX Companion https://www.amazon.com/LaTeX-Companion-Techniques-Computer-Typesetting/dp/0201362996 常備手邊


arxiv上的論文,一般都提供latex源碼下載,看到感興趣的,下載下來研究一下就可以啦。


如果只是學會使用模板,調用命令的話,ShareLaTeX, Online LaTeX Editor 是個蠻好用的網站,有很多模板參考,可以在線或者下載源文件看。如果是想自己寫.cls和.sty文件,我就不太清楚了,可能具體查模板里每一個class和package的用法會有幫助吧。


通過我自己摸索一個月La

TeX的經驗,結合劉老師的答案,樓主可以去找清華大學碩士論文的模版,通過查看源代碼、Class、stlye自定義,可以了解文本格式的定義和設置。

看過模版的源代碼之後,並不是說你能用的好,畢竟LaTeX的核心是數學公式,只有多寫代碼,多編譯、查看PDF,體會不同公式定義的微妙變化。至於字體,文章標題格式,邊距,行距,縮進、文武線,頁腳頁眉頁碼等,都在模版定義好了,你只需要填充內容。

以上


arxiv上的文章tex文件不都能下載嗎?挑一個你覺得好看的就成。


分享一個使用友好的網站:Overleaf (英文)

提供在線編輯template的功能,註冊使用後可以雲端保存文本。

大部分Template都是免費下載。


模板是用的,自己不用寫,除非你要辦個會議,call for paper。

找別人要一份tex文件看看怎麼用模板就行。


一般都的小論文套個arXiv普通模板就成,稍微正式點的套個JHEP吧 題頭還可以改可以吧JHEP幾個字刪掉 簡單又好看


推薦閱讀:

為什麼 LaTeX 中要用 igl, igr 等命令來處理定界符,而儘可能避免 left 和
ight?

hyperref 與 unicode-math 衝突如何解決?
國外教授的講義都是自己用 LaTeX 打出來的嗎?
在重新定義LaTeX環境的時候,為何很少用到 patchcmd 一類的命令?
求推薦 LaTeX 編輯器?

TAG:LaTeX |