论文写作软件LaTex那些事儿

我是个战士,怕的不是死,而是没有真正的活过。

——《灵笼》

在我们读论文的时候,会看见很多精美的插画,我已经在上期总结过插画的诸多方法 论文写作绘图和计算机视觉顶刊顶会那些事儿 ;精心制作的论文PDF中除了精美的插画,往往还少不了充实的数学公式,实验对照表格和优雅的排版,这次我们聊一聊LaTex这个论文写作大杀器。

LaTeX(/ˈlɑːtɛx/,常被读作/ˈlɑːtɛk/或/ˈleɪtɛk/,写作“LATEX”),是一种基于TeX的排版系统,由美国计算机科学家莱斯利·兰伯特在20世纪80年代初期开发,利用这种格式系统的处理,即使使用者没有排版和程序设计的知识也可以充分发挥由TeX所提供的强大功能,不必一一亲自去设计或校对,能在几天,甚至几小时内生成很多具有书籍品质的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学、物理文档。这个系统同样适用于生成从简单的信件到完整书籍的所有其他种类的文档。

简而言之,LaTex是用于专业目的的Word,是辅助论文写作的快速排版系统。

Q1:PDFLaTeX和XeLaTeX有什么区别 (PDFLaTeX vs XeLaTeX)

PDFLaTeX和XeLaTeX都是TeX Live包含的程序,下面总结一下网上的几位牛人的意见:

  1. PDFTeX程序:Tex语言的一个实现,也就是把Tex语言转换为排版的一个程序。它会把TeX 语言写的代码直接编译成 PDF文件。

  2. PDFLaTeX命令:PDFTeX程序中的命令,用来编译用LaTeX格式写的tex文件。

  3. XeTeX程序:TeX语言的新的实现,即把Tex语言转换为排版的一个新程序。支持Unicode编码和直接访问操作系统字体。

  4. XeLaTeX命令:XeTeX程序中的命令,用来编译用LaTeX格式写的tex文件。

简单来说,PDFLaTeX和XeLaTeX是两种编译TeX文件的命令,两者最大的区别是:XeLaTeX对应的XeTeX对字体的支持更好,允许用户使用操作系统字体来代替TeX的标准字体,而且对非拉丁字体的支持更好。

但是凡事有利就有弊,我在实际使用过程中发现,使用XeLaTeX编译,如果说论文中有很图片或者其他元素没有嵌入字体的话,生成的PDF文件也会有些字体没有嵌入。相反,由于PDFLaTeX使用的是TeX的标准字体,所以生成PDF时,会将所有的非TeX标准字体进行替换。所以,使用PDFLaTeX生成的PDF文件默认嵌入所有字体,这给我们的论文排版带来了极大的方便。建议大家根据自己的需要选择合适的程序。

Q2:如何在LaTex中强制图片位置

常用选项[htbp]是浮动格式:
『h』当前位置。将图形放置在正文文本中给出该图形环境的地方。如果本页所剩的页面不够,这一参数将不起作用。
『t』顶部。将图形放置在页面的顶部。
『b』底部。将图形放置在页面的底部。
『p』浮动页。将图形放置在一只允许有浮动对象的页面上。

一般使用[htb]这样的组合,只用[h]是没有用的。这样组合的意思就是latex会尽量满足排在前面的浮动格式,就是h-t-b这个顺序,让排版的效果尽量好。
!h 只是试图放在当前位置。如果页面剩下的部分放不下,还是会跑到下一页的。一般页言,用 [!h] 选项经常会出现不能正确放置的问题,所以常用 [ht]、[htbp] 等。

如果你确实需要把图片放在当前位置,不容改变,可以用float宏包的[H]选项。不过如果这样做,出现放不下的问题时需要手工调整。使用格式如下:

1
2
3
4
\usepackage{float}
\begin{figure}[H]
foo
\end{figure}

Q3:LaTex中的空格表示的几种方法 (多用于不同公式)

两个quad空格 a \qquad b a \qquad b 两个m的宽度
quad空格 a \quad b a \quad b 一个m的宽度
大空格 a\ b a\ b 1/3m宽度
中等空格 a;b a\;b 2/7m宽度
小空格 a,b a\,b 1/6m宽度
没有空格 ab ab\,
紧贴 a!b a\!b 缩进1/6m宽度

Q4:不同Latex换行命令之间的区别

  • \\\\*命令
    \\[extra-space]
    \\*[extra-space]
    有时出于某种需要我们有必要显式地插入换行,我们可以使用这两条命令。此时 LATEX将换至新的一行而不开始一个新的段落。
    \\*\\命令功能相同,差别只是后者在强制换行后禁止换页。可选叁数 extra-space 指明下一行开始前预留多少垂直距离(可以为负值)。

  • \newline
    \newline命令只能在段落中使用,使文本开始一个新行。

  • \linebreak
    \linebreak[number]
    这条命令让 LATEX 中断当前行并将当前行己有文本拉长直至页边。如果使用了 number 可选叁数,则这条命令就变成了一个换行请求,换不换行由系统决定。number 的值只能从 0 到 4,值越大代表换涣行的意愿越强烈。

  • \nolinebreak
    \nolinebreak[number]
    这条命令与\linebreak正好相反。

Q5:如何在LaTex中强制使用某种对齐方式 (文字)

  • 一行对齐

    • \leftline{左对齐}
    • \centerline{居中}
    • \rightline{右对齐}
  • 多行或者段落对齐

    • 左对齐 \begin{flushleft}…\end{flushleft}
    • 居中 \begin{center}…\end{center}
    • 右对齐 \begin{flushright}…\end{flushright}

Q6:在LaTex中新添加一页的两种操作及其区别

我们在使用Latex时,有时需要另起一页继续写。这时,你最好使用“\clearpage” 实现这个功能,而不要用“\newpage”。因为:

1
2
\newpage		% The \newpage command ends the current page.
\clearpage % The \clearpage command ends the current page and causes all figures and tables that have so far appeared in the input to be printed.

通俗点讲就是当你新加的一页内容较多时,两者基本一样,当新加的一页内容较少时,“\newpage”就无法实现你想要的效果,但“\clearpage”可以。

Q7:LaTex中多种宽度设置/异同

使用 LaTeX 的过程中,如果需要插入图片、表格,我们有时会用到页面宽度。LaTeX 里存在一些长度宏,保存着与页面尺寸有关的长度。涉及到页面宽度,有这么几个:

  • \linewidth - 当前行的宽度
  • \columnwidth - 当前分栏的宽度
  • \textwidth - 整个页面版芯的宽度
  • \paperwidth - 整个页面纸张的宽度
  • \hsize - Plain TeX 的宏,是 TeX 在行末考虑分词换行时使用的宽度

这些宽度里,\hsize 是 Plain TeX 的宏,不推荐 LaTeX 用户使用,简单地当它不存在就好了。
在单栏文本中,\columnwidth\textwidth 保持一致;在多栏文本中 \textwidth = n * \columnwidth + (n - 1) * \columnsep(其中 n 是分栏数)。

在 minipage 环境中,除了 \paperwidth 之外,其它三个 \****width 都会根据 minipage 的宽度发生改变(因为虚拟出了一个小的纸张页面),然后在 minipage 环境结束的时候恢复原样。在 parbox 中,\textwidth\columnwidth 不会改变,不过 \linewidth 会发生变化。

\linewidth 是相对最灵活的宽度值。在 list 环境里(包括 enumerate 和 itemize 等环境),在 \parbox 里,\linewidth 都会发生变化。

总的来说,当

  • 需要在列表环境中使用表格、图片等宽度的时候,用 \linewidth
  • 需要充满整个页面宽度的时候,用 \textwidth (比如 figure*/table* 等)
  • 需要充满整个分栏的时候,用 \columnwidth (比如 figure/table/tabularx/tabu 等)

Q9:LaTex常用数学符号/数学公式的表达方式

1、指数和下标可以用^和_后加相应字符来实现。比如:

2、平方根(square root)的输入命令为:\sqrt,n 次方根相应地为: \sqrt[n]。方根符号的大小由LATEX自动加以调整。也可用\surd 仅给出
符号。比如:

3、命令\overline 和\underline 在表达式的上、下方画出水平线。比如:

4、命令\overbrace 和\underbrace 在表达式的上、下方给出一水平的大括号。

5、向量(Vectors)通常用上方有小箭头(arrow symbols)的变量表示。这可由\vec 得到。另两个命令\overrightarrow 和\overleftarrow在定义从A 到B 的向量时非常有用。

6、分数(fraction)使用\frac{…}{…} 排版。一般来说,1/2 这种形式更受欢迎,因为对于少量的分式,它看起来更好些。

7、积分运算符(integral operator)用\int 来生成。求和运算符(sum operator)由\sum 生成。乘积运算符(product operator)由\prod 生成。上限和下限用^ 和_来生成,类似于上标和下标。

Q10:一份不太简短但很详尽的中文 LATEX2e 介绍.pdf

Reference

  1. http://blog.csdn.net/xy5811/article/details/7221729
  2. https://blog.csdn.net/lqhbupt/article/details/24812993
  3. https://blog.csdn.net/virhuiai/article/details/7539988
  4. https://blog.csdn.net/zd0303/article/details/7572992
  5. https://liam.page/2015/08/17/width-in-latex/
  6. http://www.mohu.org