今天主要總結(jié)了latex的一些基本配置和使用latex進行科技論文寫作的基本要素(書寫文檔纫雁,插入表格,插入圖片,插入數(shù)學公式)
latex文檔
latex是文檔書寫的利器。
latex文檔結(jié)構(gòu)
首先來看一個簡單的例子:
#導言區(qū)
\documentclass[12pt ,a4paper]{article}
\usepackage{xeCJK}%使用 xeCJK 宏包
\usepackage{fontspec}
\usepackage{titlesec}
%中文斷行
\XeTeXlinebreaklocale "zh"
\XeTeXlinebreakskip = 0pt plus 1pt minus 0.1pt
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#正文區(qū)
\begin{document}
\title{金屬材料高溫氧化過程中的應(yīng)力研究}
\author{陶兆君}
\date{\today}
\maketitle
\section{介紹}
\section{正文}
\end{document}
一般論文都用 article 文檔類铲敛,這里設(shè)置正文12pt 的字號,使用 A4 紙会钝。以\開頭的表示LATEX中的命令原探。\usepackage{} 命令表示使用宏
包,比如 xeCJK 宏包可以支持中文字體顽素,titlesec宏包用于更改大標題的樣式。每種宏包都提供各自的命令徒蟆。\usepackage{} 命令就相當于 C 語言中的 include 命令胁出,而宏包就相當于頭文件。
我們一般在導言區(qū)配置我們需要的各種設(shè)置段审,而在正文區(qū)正式開始寫文章全蝶。
中文
實現(xiàn)中文字體的方法有很多種,而我一般使用的寺枉,就是上個例子中用的xeCJK宏包抑淫。需要注意的是,要使用這個宏包的話姥闪,編譯器要用xelax始苇。
中文字體
中文字體也有很多種,什么宋體筐喳,黑體等等催式,如何在他們之間快速切換呢?請看代碼:
\setCJKfamilyfont{zhsong}{SimSun} %宋體
\setCJKfamilyfont{zhhei}{SimHei} % 黑體
\setCJKfamilyfont{zhfs}{FangSong} %仿宋
\setCJKfamilyfont{zhkai}{KaiTi} %楷體
\newcommand*{\song}{\CJKfamily{zhsong}} % 宋體
\newcommand*{\hei}{\CJKfamily{zhhei}} % 黑體
\newcommand*{\kai}{\CJKfamily{zhkai}} % 楷書
\newcommand*{\fangsong}{\CJKfamily{zhfs}} % 仿宋
前面4行第二個花括號里的必須是電腦中安裝的字體名稱避归,也可以直接寫中文荣月,比如 SimSun 就用宋體代替,SimHei就用黑體代替梳毙。第一個花括號內(nèi)的是自定的名稱哺窄,要與后面4行相對應(yīng)。\newcommand是定
義一個新的命令,以后在文中如果想使用這些字體萌业,那么就這樣:
{\hei 這是一段黑體的文字坷襟,}{\song 這是一段楷體的文字,}{\fangsong 這是仿宋咽白,}{\kai 這是楷體啤握。}
這樣就實現(xiàn)了對應(yīng)文字用對應(yīng)字體【Э颍看效果可以點這里
中文字號
中文習慣用幾號幾號來表示字的大小排抬,而英文習慣用磅數(shù)來表示字號的大小,他們?nèi)绾无D(zhuǎn)換呢授段?我們通過自定義命令來實現(xiàn)
\newcommand{\erhao}{\fontsize{22pt}{\baselineskip}\selectfont}%二號
\newcommand{\xiaoer}{\fontsize{18pt}{\baselineskip}\selectfont}%小二
\newcommand{\sanhao}{\fontsize{16pt}{\baselineskip}\selectfont}%三號
\newcommand{\xiaosan}{\fontsize{15pt}{\baselineskip}\selectfont}%小三
\newcommand{\sihao}{\fontsize{14pt}{\baselineskip}\selectfont}%四號
\newcommand{\xiaosi}{\fontsize{12pt}{\baselineskip}\selectfont}%小四
\newcommand{\wuhao}{\fontsize{10.5pt}{\baselineskip}\selectfont}%五號
\newcommand{\xiaowu}{\fontsize{9pt}{\baselineskip}\selectfont}%小五
同樣要使用這些字號蹲蒲,我們可以這樣:
{\erhao 這是二號字,}{\sanhao 這是三號字侵贵,}{\wuhao 這是五號字届搁。}
效果可以看這里
中文重定義
LATEX的一大特點就是在你自定義完模版后可以實現(xiàn)自動的排版。比如插入一個表格窍育,表
頭是這樣的:“表 1.1:標題”卡睦。在插入表格時實際只需要輸入“標題”,“表 1.1:”是LATEX自己加上去的。由于LATEX默認是英文漱抓,所以如果不加設(shè)置的話表锻,實際的效果是:“table1.1:標
題”。這對中文論文來說顯然是不行的乞娄。還有很多類似的地方需要重新設(shè)置瞬逊。在導言區(qū)中加入
如下代碼:
\renewcommand{\contentsname}{目錄}
\renewcommand{\listfigurename}{插圖目錄}
\renewcommand{\listtablename}{表格目錄}
\renewcommand{\refname}{參考文獻}
\renewcommand{\abstractname}{摘\ 要}
\renewcommand{\indexname}{索引}
\renewcommand{\tablename}{表}
\renewcommand{\figurename}{圖}
\newtheorem{theorem}{定理}
\newtheorem{definition}{定義}
\newtheorem{property}{問題}
\newtheorem{proposition}{猜測}
\newtheorem{lemma}{引理}
\newtheorem{corollary}{推論}
這樣就對中文進行了重定義。
關(guān)于宏包
如果大家在編譯時遇到錯誤:
! Undefined control sequence.
那么多半是哪個宏包沒有加進去仪或,簡答的做法确镊,當然就是先把所有常用的宏包都加進去。我們在導言區(qū)加入如下代碼:
\usepackage{fancyhdr}%頁眉頁腳
\usepackage{xeCJK} %中文支持
\usepackage{fontspec}%字體
\usepackage{titlesec}%標題格式
\usepackage[top=2.5cm,bottom=2.5cm, left=2cm, right=2cm]{geometry}%頁邊距
\usepackage{amsmath} %數(shù)學公式
\usepackage{amssymb}
\usepackage{amscd}
\usepackage{listings}%插入代碼
\usepackage{xcolor} %字體顏色
\usepackage{graphicx} %插入圖片
\usepackage{subfig} %子圖
\usepackage{tabularx}%插入表格
\usepackage{indentfirst} %首行縮進
\usepackage{array}
\usepackage{longtable}%長表格
\usepackage{multirow}%使用多欄宏包
\usepackage{wrapfig}%文字環(huán)繞
\usepackage{booktabs}
\usepackage{extarrows}
\usepackage{ulem}
\usepackage{txfonts}
\usepackage{bm}
\usepackage{cite}%參考文獻
\usepackage[super,square,comma, sort&compress]{natbib}
\usepackage{setspace}%設(shè)定行距
\usepackage[colorlinks , linkcolor=black ,anchorcolor=black , citecolor=black ,
CJKbookmarks=True]{hyperref}
對于中文文章范删,格式要求首行縮進兩個中文字符蕾域,所以首先添加 indentfirst 宏包,并且
在導言區(qū)加入以下代碼:
\setlength{\parindent}{2.45em}
這樣就實現(xiàn)了縮進兩個中文字符瓶逃。
表格
書寫科技論文當然離開不了表格束铭,那么LATEX中如何書寫表格呢?
\begin{table}[htp] %浮動表格環(huán)境
\centering %表格居中放置
\caption{這里是表頭}
\label{tab1} %用于引用
\begin{tabular}{c|c|c|c|c}%表格環(huán)境
\toprule[1.4pt] %1.4pt 的上劃線
&x1&x2&x3&x4\\\hline %\hline表示畫一條橫線
A&3&4&2&1\\\hline
B&2&5&4&3\\\hline
C&5&4&3&1\\\hline
D&3&3&2&4\\
\bottomrule[1.4pt]%1.4pt 的下劃線
\end{tabular}
\end{table}
這樣就得到一個最基本的表格:
通常來說\begin{tabular}就是一個表格環(huán)境厢绝,但是這個表格是緊接著前面的文字的契沫,并且其后的文字也會緊跟在后面,無法像表1一樣單獨占據(jù)一個空行的位置昔汉。代碼第一行\(zhòng)begin{table}表示浮動表格的環(huán)境懈万,[htp]是可選參數(shù)拴清,也可以不加。h(here) 表示這個浮動體放在當前位置会通,b(bottom) 表示放在一頁的底部口予,t(top) 表示放在一頁的最頂上,p表示放在一個浮動頁(單獨一頁)涕侈。三個參數(shù)都加表示讓LA TEX來自動判斷并選擇最合適的情況沪停。通常
LATEX都會自己判斷并選擇最合適的情況,如果自己想強制放在某個位置裳涛,可以加!木张,比如[!h] 表示強制放在當前位置。tarbular 環(huán)境后的 {c|c|c|c|c}端三,其中一共有5個c 表示表格有五列舷礼,|表示畫豎線,c表示居中郊闯。c也可以換成別的妻献,比如r(居右),f(居左)团赁。
對于表格的每一行育拨,使用&將列隔開,使用\換行到下一行欢摄。\hline 表示畫一條橫線至朗。對于表格最上和最下的橫線,加粗可能會更好看剧浸,所以可以用\toprule[1.4pt]將最上的橫線設(shè)為1.4pt的寬度。對最下的橫線使用 \bottomrule[1.4pt]矗钟。
表格自定義
當然如果需要更漂亮的表格唆香,那么就需要自定義了:
列寬
有時表格看起來有點窄,如果寬點應(yīng)該會更好看吨艇,那么如何實現(xiàn)呢躬它?這個很好實現(xiàn),只需要將表格的第一行的每一列設(shè)置一個寬度就可以了东涡,其實就是將上面代碼中的 &x1&x2&x3&x4改為:
\makebox[3em]{}&\makebox[6em]{x1}&\makebox[6em]{x2}&\makebox[6em]{x3}&\makebox[6em]{x4}\\\ hline
其中\(zhòng)makebox[寬度]{文本} 表示生成一個 [寬度] 的盒子冯吓,這樣第一列的寬度就是3em茧痒,第二列到第五列的寬度都設(shè)為了6em毫别。em是長度單位,表示當前字體的字符"M" 的寬度叠必。也可以用 cm祖娘、mm失尖、pt 等等。
行寬
有了列寬,自然想到有時我們需要調(diào)整行寬掀潮,這就需要盒子:
\parbox[c][3em][c]6em{文本} 表示生成一個豎直長度為3em菇夸,水平長度為 6em 的盒子。c 表示本文居中放置仪吧,也可以使用 r(right)庄新,l(left)。
跨行跨列表格
現(xiàn)在想實現(xiàn)一個如圖所示的表格薯鼠≡裾可以看出,出行方式其實占了兩行人断,而出行目的其實占了三列吭从。
要使用跨行跨列表格,首先要添加multirow宏包恶迈,在導言區(qū)加上\usepackage{multirow}.
對于跨行涩金,可以使用\multirow命令,該命令格式為
\multirow{要合并的行數(shù)}{該欄文本的寬度}{文本}
如果想讓LATEX自行決定文本的寬度暇仲,就在“該欄文本寬度”這個參數(shù)里使用*.
對于跨列步做,可以使用 \multicolumn 命令,格式為
\multicolumn{要合并的列數(shù)}{對齊方式}{文本}
其中對齊方式可以選擇 c(居中)奈附,r(居右)全度,l(居左)。
綜合跨行跨列的操作斥滤,我們可以得到上圖中表格的代碼為
\begin{table}[h]
\begin{center}
\caption{跨行跨列表格}
\begin{tabular}{cccc}
\toprule[1.4pt]
\multirow{2}{*}{出行方式} & \multicolumn{3}{c}{出行目的} \\ \cline{2-4}
& 工作商務(wù)出行 & 非工作出行 & 上學出行 \\\hline
公交車 & 28.16 & 6.35 & 3.18 \\\hline
出租車 & 38 & 8.57 & 4.3 \\\hline
社會小車 & 49 & 11 & 5.5 \\\hline
各出行所占比例 & 25.10\% & 71.30\% & 3.60\% \\
\bottomrule[1.4pt]
\end{tabular}
\label{tab5}
\end{center}
\end{table}
表格總結(jié)
從上面的例子可以看出将鸵,LATEX中處理表格還是比較麻煩的,如果需要處理表格佑颇,也可以先用其他軟件處理(excel等)顶掉,再轉(zhuǎn)換成LATEX,我也用過emacs的org-mode挑胸,org-mode里處理表格就像markdown一樣直觀痒筒,而且有各種tab快捷鍵茬贵,還可以直接導出LATEX格式簿透。
圖片
首先要說明一點,LATEX中插入圖片是一件比較頭疼的事情解藻,在這一點上比不過Word老充。
盡管如此,在掌握熟練以后還是能比較輕松地實現(xiàn)圖片的插入的螟左。
最簡單的例子
插入圖片需要在導言段加入:
\usepackage{graphicx} %插入圖片
最簡單的插入圖片的代碼為:
\begin{figure}[htp] %圖片浮動環(huán)境蚂维,類似表格中的 table [htp] 參數(shù)和表格的類似
\centering %圖片居中
\includegraphics[scale=0.1]{picture.jpg}%插入圖片戳粒,設(shè)置圖片的高度,圖片的文件名
\caption{}%圖片的標題
\label{} %引用
\end{figure}
[htp]這個參數(shù)和表格中的一樣虫啥,就不贅述了蔚约。\includegraphics{}命令用于插入圖片,[]中是可選參數(shù)涂籽,不加默認為圖片原始大小苹祟。[height=10cm] 表示圖片的高度為 10cm,[width=5cm]表示圖片的寬度為5cm评雌。在只加這一個參數(shù)的情況下會保持圖片的比例不變树枫。如果是[height=10cm,width=5cm],則插入圖片的高度為 10cm景东,寬度 5cm砂轻,比例可能就改變了。另一種方法是 [scale=2]斤吐,表示圖片是原始大小的 2 倍搔涝。{} 中是圖片的位置,如果圖片在當前路徑下輸入圖片的文件名就行和措。
復雜點的情況
并排擺放庄呈,共享標題
這里演示將兩張圖片并排擺放,并且共享標題派阱。使用如下代碼:
\begin{figure}[h]
\centering
\includegraphics[height=7cm]{picture1.jpg}
\includegraphics[height=7cm]{picture2.jpg}
\caption{并排擺放诬留,共享標題}
\label{pic : fig1}
\end{figure}
效果為:
并排擺放,各有標題
如果想實現(xiàn)兩個圖片各有各的標題贫母,那就需要使用minipage文兑。
minipage的使用格式為:
\begin{minipage}[aligned]{width}...\end{minipage}
其中 aligned 為對齊方式,c腺劣、t彩届、b分別表示中線、頂行誓酒、低行與當前基線對齊。如果不加這個可選參數(shù)則默認是c贮聂。參數(shù) width 表示 minipage 的寬度靠柑。
我們先來看效果:
實現(xiàn)他的代碼為:
\begin{figure}[h]
\begin{minipage}{0.5\textwidth}
\centering
\includegraphics[width=\textwidth]{picture1.jpg}
\caption{擴散 5 小時}
\end{minipage}
\begin{minipage}{0.5\textwidth}
\centering
\includegraphics[width=\textwidth]{picture2.jpg}
\caption{擴散 7 小時}
\end{minipage}
\end{figure}
其中,\textwidth表示當前頁面的寬度吓懈。
并排擺放歼冰,共享標題,各有子標題
如果想要兩幅并排的圖片共享標題耻警,并各有子標題隔嫡,可以使用subfig宏包提供的\subfloat命令甸怕。效果如下圖所示。
可以直接使用 \subfloat命令實現(xiàn)這個功能腮恩,但是如果圖片的標題超出了圖片的寬度梢杭,就會出現(xiàn)折行,所以最好的辦法是在 \subfloat 命令里面嵌套一個 minipage秸滴,因為 minipage 是有寬度的武契。代碼如下:
\begin{figure}[htbp]
\subfloat[擴散五小時]{
\begin{minipage}{0.5\textwidth}
\centering
\label{pic : figh_5}
\includegraphics[width=\textwidth]{picture1.jpg}
\end{minipage}
}
\subfloat[擴散七小時]{
\begin{minipage}{0.5\textwidth}
\centering
\includegraphics[width=\textwidth]{picture2.jpg}
\label{pic : figh_7}
\end{minipage}
}
\caption{PM2.5濃度隨擴散時間的變化}
\end{figure}
關(guān)于畫圖片的軟件
LATEX可以支持很多種的圖片格式,有矢量圖格式荡含,也有位圖格式咒唆。個人建議最好使用矢量圖(某些特殊情況除外),因為矢量圖在放大縮小后不會變得模糊释液,最清晰全释,而且也可以讓讀者復制圖片中的文字。
這里再說說我用的制圖軟件误债,畫示意圖我一般用的是GeoGebra浸船,流程圖用的是 Dia,矢量繪圖軟件用的是Inkscape找前。他們都是開源免費的軟件糟袁,GeoGebra還有網(wǎng)頁版,可以直接在瀏覽器里編輯圖片躺盛,畫流程圖的話项戴,網(wǎng)頁版的draw.io和cacoo也不錯。
數(shù)學公式
終于到了最激動人心也是LATEX最擅長的一部分了槽惫!
一些簡單的數(shù)學公式
輸入行間公式周叮,比如這樣 $f(x) = xsin x^3$ ,使用$...$界斜。輸入行內(nèi)公式仿耽,比如
$$f(x) = xsin x^3$$
使用 $$...$$. 如果想要讓公式編號,則使用 equation 環(huán)境:
\begin{equation}...\end{equation}
一些希臘字母的輸入如圖:
一些小帽子的輸入如圖:
如果使用的是 texmaker編輯器各薇,很多數(shù)學公式可以直接從工具欄里面找到项贺,也沒有必要去背這些東西。Windows用戶可以下載安裝MathType峭判,這個軟件可以用鼠標點擊輸入數(shù)學公式开缎,然后導出LATEX的代碼,也很方便林螃。Linux 用戶可以下載安裝 EqualX奕删,也有類似功能。還可以使用在線LATEX公式編輯器疗认,在線編輯公式完残,也很方便伏钠。
稍微高級的應(yīng)用
輸入數(shù)學公式有的時候沒有看起來那么簡單,可能會對數(shù)學公式有一些要求谨设,也可能會遇到許多的問題熟掂。
括號
括號很簡單,但是要做到美觀還是需要注意一些的铝宵。比如這個
顯然就不美觀打掘,括號太小∨羟铮可以讓LATEX自動調(diào)整括號的大凶鹨稀:
使用代碼為:
\left(\frac{a}\right)
效果為:
對小括號和中括號侣夷,左括號分別是 \left(和 \right[横朋,但是對大括號,左括號就變?yōu)?\left{百拓。注意其中的區(qū)別琴锭,大括號多了一個\。
對于中括號和大括號代碼如下
\left[\frac{a}衙传\right]
\left\{\frac{a}决帖\right\}
顯示效果如下:
經(jīng)常需要使用大括號,比如下面這種情況:
實現(xiàn)的代碼為:
\begin{equation} \label{eq1}
f(x)=\left \{
\begin{aligned}
&x=\cos(t) \\
&y=\sin(t) \\
&z=\frac{x}{y}
\end{aligned}
\right .
\end{equation}
其中&表示對齊的位置蓖捶。還可以使用array環(huán)境地回,和tabular完全類似:
實現(xiàn)的代碼為:
\begin{equation}
F=\left \{
\begin{array}{rcl}
A&& {0< S_L}\\
B&& {S_L \leq 0 < S_M}\\
C&& {S_M \leq 0 < S_R}\\
D&& {S_R \leq 0}
\end{array}
\right .
\end{equation}
還有 cases 環(huán)境:
實現(xiàn)的代碼為:
\begin{equation}
f(x)=
\begin{cases}
0& x=0\\
1& x!=0
\end{cases}
\end{equation}
注意,cases 環(huán)境不需要自己輸入大括號俊鱼,但是前兩種情況需要自己輸入大括號刻像。顯然,上面的公式只有左大括號并闲,而沒有右大括號细睡,這個時候也不能直接忽略右大括號,因為左和右是配對的帝火,所以上面的公式中在 \left{左大括號的最后需要 \right. 與之配對溜徙。注意,right后面有一個點犀填。
長公式
有時我們的公式非常長蠢壹,這就需要將公式分成多行,我們一般使用multline環(huán)境:
\begin{multline}
c(x,y,z)=\sin{x}\sin{y}\sin{z}\frac{Q}{4\pi\sqrt{(D_y+D_{y'}?D_{my})(D_z+D_{z'}?D_{mz})}}\times\exp\left[?\frac{u}{4x}\left(\frac{y^2}{D_y+D_{y'}?D{my}}+\frac{z^2}{D_z+D_{z'}?D_{mz}}\right) \right]
\end{multline}
效果如下:
多行公式
有的時候經(jīng)常需要輸入多行公式宏浩,這又分好幾種情況:
每個子公式都有編號
這里使用align環(huán)境,看起來和連續(xù)使用兩個equation環(huán)境一樣靠瞎,但是連續(xù)使用兩個equation換進會使得這兩個公式之間的距離過大比庄。如果不想編號求妹,在align后面加上*就行了。代碼如下:
\begin{align}
& f(x)=x^3 \label{eq: rel1} \\
& g(x)=\sin{x} \label{eq: rel2}
\end{align}
只有一個編號在中間位置
比如讓兩個公式共用一個公式編號佳窑,代碼為:
\begin{equation}\label{eq:12}
\begin{split}
& f(x)=x^3 \\
& g(x)=\sin{x}
\end{split}
\end{equation}
小結(jié)
這里總結(jié)了LATEX的一些基本用法,當然在文獻寫作過程中還有一些技巧是必不可少的(比如參考文獻管理神凑,章節(jié)管理等)净神,這要不斷使用LATEX,慢慢地我們就可以掌握這些技巧,最后再給大家推薦在線LATEX編輯器:sharelatex和Overleaf,他們提供了豐富的LATEX模板溉委,不管是寫CV還是寫論文鹃唯,直接在上面找一個喜歡的模板,然后開始寫作吧瓣喊。