用TeX写论文(TeX In Writing Paper)

写在前面的话:

其实我个人使用Latex也很有限,也仅仅是用来写过几篇文章,用过一点点可能还有点点特殊的表格格式或者图表。究其根本,也还是只会写一些普通排版格式的论文而已。此文的目的有二:
1. 做一个记录,以后可以方便于自己去检索如何用Latex编排一些常用的版式。
2. 做一个分享,让更多有需求于排版格式美观的人能够初窥一下这个有点点强大的排版编辑工具。

1. 为什么要用TeX?

TeX是一种电子排版系统。它的强大之处在于其出色的排版功能,特别是写一些科技论文,在出现多图、多表、多公式的情况下,使用word排版,一些小的调整可能会需要较多的时间去解决排版问题。另外,参考文献在word中也会令人头大,虽然我们有EndNote。
Tex还有一个优点是之前编写的格式只需要一些小的修改就可以快速的套用到下一篇论文中,可以大大的节省以后论文的格式调整时间。

但是,有以下需求者,可不必使用Latex:
1. 仅需要对一篇论文进行排版,时间紧迫,且今后不需要再进行类似的排版使用。这种情况下,推荐使用word编辑。
2. 论文多文字,少公式和图表。也建议用word编辑,注意行间距及参考文献的格式即可,花不了太多时间。
3. word的强烈爱好者&熟练使用者,或者专精于其他编辑工具,能够符合现有需求。

2. 使用Tex

工欲善其事,必先利其器。一款好的latex工具,可以省去不少的麻烦。这里推荐在windows环境下安装 CTex套装,CTex不仅集成了 winedt这个非常好用的编辑工具,还添加了许多支持中文的编辑包,并附带了许多编辑的常用工具,比如 GSview工具,可以对eps,ps文件进行查看。比如在./CTex/texmf/miktex/bin/下的bmeps.exe,这是一款方便转换图片格式的工具。在TeX中,只对eps和pdf支持,图片一般需要转成eps/pdf才能够加载。
Tex的实质是其包含的排版指令(宏),还支持用户定义扩展TeX,比如Latex就是一款非常优秀的,适用于一般文章、报告、书籍的TeX系统。
受限于篇幅,一些tex的特性就不多加描述了,如果想要更多的了解,可以参看latex的文档:http://mirrors.ustc.edu.cn/CTAN/info/lshort/english/lshort.pdf。
下面对一些常用的单元如何做TeX编辑做一些介绍。

2.1 TeX文档格式

对于每一篇所编写的文档,有这么几个区域
%定义文档类型
\documentclass{article}

%加载宏包
\usepackage{CJK}

%自定义宏
\newcommand{\titlename}{标题}

%正文内容
\begin{document}
    文章内容
\end{document}

一般在编辑时, 我们只会对文章内容进行操作,以下所有涉及的内容也基本都只讨论文章内容的编辑。

2.2 Tabel、Figure的编写

图、表编辑的基本宏为:
表格
\begin{table}[htbp]
...
\end{table}

\begin{figure}[htbp]
...
\end{figure}
在begin与end中间插入图表中所需插入的元素。“[]”内确定图、表的显示位置。b:当前页的底部显示。h:在文字的当前位置显示。p:在下一页的顶部显示。t:在当前页的顶部显示。

先对表格做一个常用功能的详细编写介绍:

表格本身只是一个表格框架,其内部元素需要由tabular定义。为什么要这么做?这样可以让表格的外部属性(显示位置、标题、表格标签)与内在属性(tabular所定义行、列数,元素的表现位置、单元格的大小等)可以区别处理,使得表格的定义更加清晰。
一个标准的表格表现为:
\begin{table}
    \begin{tabular}{列属性}
    ...
    \end{tabular}
\end{table}
列属性有三种:c、r、l。c:元素居中,r:元素右对齐,l:元素左对齐。需要对所有出现的列都进行定义,比如:现在需要生成一个具有三列,且元素剧中的表格,则需要定义为:
\begin{table}
    \caption{表格}\label{tbl:tabel_example}
    \begin{tabular}{ccc}
    title1 & title2 & title3 \\
    element1 &   & element2 \\
    \end{tabular}
\end{table}
{ccc}也可以写作{c|c|c}或是{|c|c|c|}其中“|”设定了以后,在显示的表格中会添加单元格的竖向分隔线。“\\”是换行符,每一行的三列元素用“&”分隔填写,可以填写为空。\caption{}用于添加表格的标题,可以出现在tabular的前面或者后面,显示位置也会因为其调整而变化。\label{}用于引用(\ref{})表格时检索用。
用winedt编写一个简单的表就这样完成了。现在用\hline和\cline宏为表格添加横向单元格分隔线:
\begin{table}

    \caption{表格}\label{tbl:tabel_example}

    \begin{tabular}{ccc}
    \hline \hline
    title1 & title2 & title3 \\ \cline{2-3} element1 & & element2 \\
    element3 & element4 & element5 \\ \hline
    \end{tabular}
\end{table}
另外,在双栏模式下,有些特殊的表格通栏显示,使用table*可以解决这个问题:
\begin{table*}
...
\end{table*}

对图片常用功能的详细编写介绍:
同表格,图的框架(位置、标题等)确定后,还需要在其框架内加入图片元素,使用宏命令\includegraphics{}:
\begin{figure}[htbp]
    \includegraphics{test_pic.eps}
\end{figure}
注意:test_pic.eps必须和编辑的tex文件位于目录的同一层。图片的格式也只支持pdf格式/eps格式。
\includegrapics还包含了对图片的基本设置功能:
\begin{figure}[htbp]
    \includegraphics[scale=0.8, height=0.2in, width=6cm, angle=90]{test_pic.eps}
    \caption{图片示例}\label{fig:pic_example}
\end{figure}
scale是对图片缩放的控制,height和width是对图片进行限高和限宽操作,angle是对图片进行逆时针旋转。也可以选择其中的几项进行控制,入[scale=0.8]。

图、表编辑进阶:

1. 一些常用的编辑宏:
    \textwidth计算板式的显示宽度,\centering元素居中,\begin{center}...\end{center}使包含的元素居中,\begin{small}...\begin{small}使包含的元素字体减小(还可以是    tiny,large)。
1. \includegraphics可以是tabular的一个元素,例如:
\begin{table}
    \caption{表格}\label{tbl:tabel_example}
\begin{tabular}{cc}
\hline \hline
 图片名称 & 图片 \\ \hline
图片示例 & \includegraphics{test_pic.eps} \\ \hline
   \end{tabular}
\end{table}
 2. \tabularx对\tabular的扩展使用\tabularx必须定义文档加载tabularx的宏包,对tabularx不做扩展介绍,仅以一个示例程序展现其应用场景:
\usepackage{tabularx}
...
\begin{table}
    \centering 
    \caption{表格}\label{tbl:tabel_example}
\begin{tabularx}{250pt}{Xc}
\hline \hline
 图片名称 & 图片 \\ \hline
图片示例 & \includegraphics{test_pic.eps} \\ \hline
   \end{tabularx}
\end{table}
 tabularx增加了一个设置表格宽度的选项和一个X单元格属性,被指定为X的单元格, 会执行左对齐操作,并调整属性为X的单元格宽度,以适应定义的表格宽度。tabular*也可以做到设定表格宽度,但其缺少X属性,使得表格内容的排版没有那么美观,建议使用tabularx。3. \multirow与\multicolumn表格中经常会需要让某一个单元格占据两行或者两列的情况,这时候需要使用这两个宏,其中\multirow需要加载multirow宏包,示例如下:
\usepackage{multirow}

\begin{table}
    \begin{tabular}{lc}
    \hline
    \multirow{2}{*}{TWO ROW} & first \\\cline{2-2}
    & second\\\hline
    \end{tabular}
\end{table}

\begin{table}
    \begin{tabular}{|l|c|c|}
    \hline
    first row & \multicolumn{2}{c|}{TWO COLUMN}\\ \hline
    second row & first & two \\ \hline
    \end{tabular}
\end{table}
注意:在多行多列时分隔线的设置。

最后,展示两个个在论文中曾经用过的表格及一个图的示例,以便能够更好地理解图、表的编写:
\begin{table*}[!htp]
  \centering
  \caption{Performance comparison on \emph{NDCG}}\label{table:comparison}
  \begin{tabularx}{\textwidth}{Xcccccccccc}
  \hline
  $NDCG$@$k$ & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10
   \\ \hline
   DiffRank & {\bf{0.976}} & {\bf{0.973}} & {\bf{0.971}} & {\bf{0.970}} & {\bf{0.970}} & {\bf{0.970}} & {\bf{0.969}} & {\bf{0.969}} & {\bf{0.969}} & {\bf{0.969}}\\
   BL-FeatureRank & 0.971 & 0.968 & 0.967 & 0.967 & 0.966 & 0.966 & 0.966 & 0.966 & 0.966 & 0.966\\
   FeatureRank & 0.971 & 0.968 & 0.967 & 0.967 & 0.966 & 0.966 & 0.966 & 0.966 & 0.966 & 0.966\\
   ListMLE & 0.861 & 0.857 & 0.850 & 0.850 & 0.848 & 0.848 & 0.847 & 0.845 & 0.845 & 0.844\\
   SVM\textsuperscript{map} & 0.953 & 0.948 & 0.947 & 0.947 & 0.946 & 0.947 & 0.946 & 0.945 & 0.944 & 0.944\\
   RankCosine & 0.628 & 0.617 & 0.611 & 0.609 & 0.608 & 0.608 & 0.606 & 0.606 & 0.606 & 0.605\\
   \hline
\end{tabularx}
\end{table*}

\begin{center}
\begin{table}[!bt]
  \centering
  \caption{Notations and explanations}\label{tb:notations and explanations}
  \begin{tabularx}{0.48\textwidth}{lX}
    \hline
    % after \\: \hline or \cline{col1-col2} \cline{col3-col4} ...
    Notation & Explanation \\ \hline
    $q^{i} \in Q$ & the \emph{i}-th query \\
    {${\bf{d}}^{(i)} = \{ d^{(i)}_{1}, d^{(i)}_{2}, \cdots, d^{(i)}_{n_{(i)}} \}$} & document list for $q^{(i)}$ \\
    {${\bf{y}}^{(i)} = \{ y^{(i)}_{1}, y^{(i)}_{2}, \cdots, y^{(i)}_{n_{(i)}} \}$} & ground truth list for $q^{(i)}$ \\
    $\pi_{{\bf{y}}^{(i)}}$ & permutation of ${\bf{y}}^{(i)}$ \\
    \multirow{2}{*}{$\hat{\sigma}^{(i)}_t = \hat{\sigma}_t ( q^{(i)}, {\bf{d}}^{(i)}, h
    )$} & permutation of prediction list\\ & for $q^{(i)}$ at time \emph{t} \\
    {${\bf{y}}^{(i)}_t = \{ y^{(i)}_{t1}, y^{(i)}_{t2}, \cdots, y^{(i)}_{tn_{(i)}}
    \}$ } & prediction list for $q^{(i)}$ at time \emph{t} \\
    $\pi_{\hat{{\bf{y}}}_t^{(i)}}$ & permutation for
    ${\bf{y}}_t^{(i)}$ \\
    {$\sigma_t^{(i)} = \pi_{{\bf{y}}^{(i)}} \cdot
    \pi_{\hat{{\bf{y}}}_{t-1}^{(i)}}^{-1}$} & ranking object at
    time \emph{t} \\
    $S = \{(q^{(i)}, {\bf{d}}^{(i)}, {\bf{y}}^{(i)})\}^{m}_{i=1}$ & original training set \\
    $S_t = \{(q^{(i)}, {\bf{d}}^{(i)}, \sigma_t^{(i)}\}^{m}_{i=1}$ & training set at time \emph{t}\\
    {${\bf{x}}_j^{(i)} = \psi ( q^{(i)}, d^{(i)}_j )$ } & feature
    vector for $( q^{(i)}, d^{(i)}_j )$ \\
    {$\omega_t$} & model parameter at time \emph{t}\\
    \multirow{2}{*}{$g({\bf{x}}^{(i)}_{j}) = \langle \omega, {\bf{x}}^{(i)}_{j} \rangle  $} & score
    function for feature\\ &  vector ${\bf{x}}_j^{(i)}$\\
    $sort (\{ g({\bf{x}}^{(i)}_{j}) \}) $ & sort funtion \\
    {$h_t( {\bf{x}}_j^{(i)} ) \in \bf{\Re} $} & Ranking function at
    time \emph{t} \\
    {$ f_t({\bf{x}}_j^{(i)}) $} & ranking model for our algorithm\\
    \multirow{2}{*}{$D_t(\hat{{\bf{y}}}_t^{(i)}, {\bf{y}}^{(i)}) \in [0, 1]$
    } & dissimilarity measure between\\ & ${\bf{y}}_t^{(i)}$ and ${\bf{y}}^{(i)}$ \\
    \hline
  \end{tabularx}
\end{table}
\end{center}





2.2 Equation的编写

在TeX中,公式需要用”$“包围,或者用\begin{equation}...\end{equation}定义。例:
$ f_t({\bf{x}}_j^{(i)}) $

\begin{equation}\label{eq:volumn_function}
    {V_{prec}} = \sum\nolimits_{{N_q}} {{{\left[\kern-0.15em\left[ 1
 \right]\kern-0.15em\right]}_{i \succ j,i < prec}}}
\end{equation}

如果使用的是equation*,则无需添加\label标签,例如:
\begin{equation*}
    {V_{prec}} = \sum\nolimits_{{N_q}} {{{\left[\kern-0.15em\left[ 1
 \right]\kern-0.15em\right]}_{i \succ j,i < prec}}}
\end{equation*}

公式的编写相对于表格来说会简单很多,用一个偷懒的方法就能轻松搞定公式的编写。
步骤如下:
1. 安装word。
2. 安装mathtype。这里不给链接了,破解版的请自己在搜索引擎上查找。
3. 打开word->新建文档->选择“Mathtype”工具条->插入编写一条公式->选择cut and copy preferences->选择Latex方式。(后两步参看图例)
图例1.

图例2.


4. 复制在Mathtype里键入的公式,然后在tex文档中需要插入公式的位置进行粘贴。

需要注意的是粘贴过来的公式会添加一些“\[”,“\]”的前后缀,需要把这些多余的部分删除。

2.3 一些比较散的实战编写用例

1. 在有些文档中,\subsection(子章节)的编号会跟随上一个\section中子标题的编号,这时候需要这一章的开始处进行子标题序号的重置。重置宏:
\setcounter{subsection}{0}

2. 在科技论文中,经常会用到各种定义、推论、引理、假设、推断、示例,可以自定义宏(改变样式,使其适合特定的板式):
\newtheorem{theorem}{\bf Theorem~}[section]
\newtheorem{proposition}{\bf Proposition~}[section]
\newtheorem{lemma}{\bf Lemma~}[section]
\newtheorem{corollary}{\bf Corollary~}[section]
\newtheorem{hypothesis}{\bf Hypothesis~}[section]
\newtheorem{definition}{\bf Definition~}[section]
\newtheorem{example}{\bf Example~}[section]
\renewenvironment{proof}{\noindent{\bf Proof:~~~~}}{\hfill $ \square $ \vskip 4mm}
在文中可以这么用:
\begin{theorem}
...
\end{theorem}

3. 列举
每个列举前用点号标识:
\begin{itemize}
  \item 1
  \item 2
  \item 3
\end{itemize}

用数字标识:
\begin{enumerate}
  \item 1
  \item 2
  \item 3
\end{enumerate}

自定义标识:
\begin{description}
  \item[first] 1
  \item[second] 2
  \item[third] 3
\end{description}

4. 其他常用宏:
\noindent 取消缩进
\bf 文字加粗
\emph 文字强调
\textsuperscript 添加文字上标

最后的一点小提示

使用TeX编写文档,仅是TeX自带的宏就有900多条,如果使用了扩展的TeX,更会看不过来。但其实,常用的命令就这么几条,其他的遇到了,需要了,看看文档就能知道怎么使用。

在使用宏命令的时候要注意一个小规则,在TeX中,参数为“[]”的,是可选参数,可不必给出。如:\begin{table}[htbp]的h,t,b,p是可选参数,不选择table可按照默认设置进行显示。参数为“{}”的,是必填参数。


3. 总结

使用TeX编写文档痛苦是在于市面上还没有相关的书籍去介绍如何使用,而且使用者也往往局限于对于排版要求比较高的群体,比如:科技论文,报刊杂志等。而且,写一篇TeX文档,往往都会事先在其他编辑器上先进行预编写,相应的板式调整等有时也会在编辑器上完成了,再移植到TeX上,如果不能熟练操作,反而会投入比较大的前期成本。

但是考虑到TeX出色强大的排版功能,即使再没有美感的人,也能生成优秀排版的文档。把恶心的断字,文字中插入公式导致的段落间距问题都交给TeX解决。再例如,PPT,简历等,使用TeX编写也会给人一种professional的感觉。

还是那句话,根据自己的需求决定是否使用,一旦决定会是一份精彩。技多不压身!


参考文献:

[1] CTex主页 http://www.ctex.org

[2] Winedt主页 http://www.winedt.com/

[3] 关于Winedt使用的中文版ppt http://download.csdn.net/detail/casia_wyq/3846441

[4] Latex文档  http://mirrors.ustc.edu.cn/CTAN/info/lshort/english/lshort.pdf

[5] 图、表编辑文档 http://web.mit.edu/rsi/www/pdfs/figtab-handouts.pdf

[6] tabularx文档 http://webdocs.cs.ualberta.ca/~c603/latex/tabularx.pdf

[7] mathtype http://en.wikipedia.org/wiki/MathType

你可能感兴趣的:(文档编辑)