文档章节

LaTeX | 为学术论文排版而生【公式篇】

临江仙卜算子
 临江仙卜算子
发布于 2018/12/22 12:39
字数 1463
阅读 72
收藏 0

一步一坑,继续LaTeX系列的第三篇【公式篇】,前面介绍过【入门篇】和【文本篇】,新来的朋友们可以点击这里查看。在公式编辑方面,LaTeX具有独到甚至统治性的优势,大批用户投入LaTeX的怀抱。今天就一起见识下它的魅力吧!

论数学公式

对于理工科、经济学等方向的学生和科研人员来说,难免要与数学公式打交道,比如写报告、发表学术论文。从我自己和周围的朋友来看,排版数学公式永远是件麻烦事,特别是当公式很多很复杂时。

比如在Word中,插入公式很容易引起行距的变化,需要多次调整,且很容易出现牵一发而动全身的典型Word风格(此处忽略Word排版大神)。此外在Word中给公式编号也是要经过很多步骤,就算借助MathType也无法实现一键完成编号的程度。

目前排版数学公式的方法最常见的是:

  • Word中自带的插入公式功能。

  • 借助Mathtype

上面这两种方法,要么折磨人,要么根本满足不了需要,这里不多说,大家都懂!:)

今天就向大家介绍排版数学公式的王者LaTeX

☟,准备入坑!

LaTeX 数学公式语法

假如现在我们要用LaTeX排版勾股定理,编写下面的代码即可:

$a^2 + b^2 = c^2$

得到的效果就是:

编译输出

什么!这么简单,等等,没你想得那么简单:)

因为LaTeX也算是一种编程语言,所有内容都需要通过代码实现,从上面勾股定理的实现代码可以看出都是由字母搭配各种符号构成。这里有两点:

  • 字母是都知道,这不是问题。
  • LaTeX编辑公式涉及到的符号特别多,先不说知道什么时候用哪个符号,你连把这些符号记住就不太可能了(累觉不爱,且行且珍惜:))

不过,有办法解决,后面再说。继续LaTeX语法。

行内公式

所谓行内公式(inline math)即指公式不单独成行,而是在一句话的中间。行内公式有三种表达方式:

  • $...$
  • \(...\)
  • \begin{math}...\end{math}

我们一般习惯使用$...$。比如我要表达频率等于速度除以波长这么一句话,LaTeX代码如下:

频率$f$等于速度$v$除以波长 $\lambda$

效果如下:

行内公式

是不是很简单的呢:)

行间公式

行间公式(display math)指单独成行的公式,分单行公式多行公式(后面再说)。行间公式的表达方式也有三种:

  • $$...$$
  • \[...\]
  • \begin{displaymath}...\end{displaymath}

同样,一般习惯使用$$...$$。比如使用下面的代码实现二次函数的一般表达式:

$$ f(x)= ax^2 + bx + c $$

运行得到效果:

行间公式

怎么,是不是依然很简单,:)继续往下看。

公式编号

公式编辑好后,往往需要对其进行编号,即公式有编号且编号自动增加。实现公式编号需要在导言区(不懂这些概念的点击这里学习)调用{amsmath}宏包,还得使用equation环境。给二次函数一般表达式编号的全部实现代码如下:

\documentclass[UTF8]{ctexart}
\usepackage{amsmath}
\begin{document}

\begin{equation}
         f(x)= ax^2 + bx + c 
\end{equation}

\end{document}


运行得到效果:

编译输出

但是,单单做到这一步还不够,因为往往文档都是有章节的,且经常碰到公式编号跟随章节序号变化的要求。这一点LaTeX早就为我们考虑了,而且实现方法非常简单(绝对秒杀WordMathType)。

方法就是导言区添加:\numberwithin{equation}{section}

因此修改前面的代码为:

\documentclass[UTF8]{ctexart}
\usepackage{amsmath}
\numberwithin{equation}{section}
\begin{document}

\section{Math}
\begin{equation}
 f(x)= ax^2 + bx + c 
\end{equation}

\end{document}

运行得到效果:

编译输出

到这里,可以发现用LaTeX编辑公式是这么简单高效。那么如何解决很难记住那么多符号的问题呢,比如求和、积分、求导等符号。继续往下看。

你可能不知道的 MathType 功能

先设想一下:

如果能先在MathType里编辑好公式,然后直接拷贝到LaTeX里进行排版,那该有多好!这样便能将MathType可见即可得的风格与LaTeX所思即所想的风格结合起来。

事实是MathType确实能做到,下面具体说一下。

  • 首先在MatyType中编辑好自己需要的公式,比如二次函数根的表达式:

    编辑公式

  • 在菜单栏选择剪切并拷贝预置

    MathType设置

  • 选择MathMl 或 TeX,点击确定,完成设置。

    MathType设置

  • 然后全选编辑器好的公式,Ctrl+C复制。

  • LaTeX编辑器(比如TeXstudio)粘贴,得到:

\[x = \frac{{ - b \pm \sqrt {{b^2} - 4ac} }}{{2a}}\]

这里可以看出,默认情况下MathType采用行间公式\[...\]

  • 编译代码得到:

    编译输出

  • 到此完成。

所以可以看到,通过上述方法,我们可以在MathType中先编辑好比较复杂的公式,特别是涉及很多符号的公式,然后拷贝到LaTeX中。当然,有时满足需要,可以稍微修改下粘贴到LaTeX的代码,以得到更好的公式排版效果。

本文转载自:https://www.jianshu.com/p/2d2315f7f4ce

临江仙卜算子
粉丝 28
博文 345
码字总数 258597
作品 0
郑州
CEO
私信 提问
还在用Word写论文?收下这个排版神器,轻松搞定所有公式!

写论文一点也不可怕 可怕的是论文排版 稍微修改了下字体, 插图就不知道跑哪去了, 好不容易挪了回来, 文字又打乱了, 文字排好了 参考文献又乱了? 图片与公式显示又乱了 写论文只是费脑子...

Paper_weekly
2018/09/08
0
0
LaTeX | 为学术论文排版而生【浮动体篇】

说在前面 今天,迎来系列的第四篇【浮动体篇】,怎么感觉发布第三篇是很久之前的事情了呢(笑哭,逃)..... 关于,今天和大家多唠叨一点。 与主流的编程语言(如、、等相比),并没有那么多光...

临江仙卜算子
2018/12/22
137
0
LaTeX | 为学术论文排版而生【文本篇】

这几天一直在想该按照什么样的结构去写这个栏目,才能让大家更快的上手,甚至培养对的。 本身非常复杂,涉及的细节非常多,不可能全部介绍,笔者能力有限,也难以做到面面俱到。因此,几经思...

临江仙卜算子
2018/12/22
92
0
LaTeX | 为学术论文排版而生【入门篇】

今天开始第一篇推送,有种自己,还有带着大家的感觉(笑哭)。所以,在你继续往下阅读之前,我郑重说一下: 好,准备吧! 什么是LaTeX? LaTeX是一种的系统,在20世纪80年代由美国的最初开发(那...

临江仙卜算子
2018/12/22
65
0
如何使用 Emacs 创建 LaTeX 文档

这篇教程将带你遍历在 Emacs 使用强大的开源排版系统 LaTex 来创建文档的全过程。 一篇由 Aaron Cocker 写的很棒的文章 “在 LaTeX 中创建文件的介绍” 中,介绍了 LaTeX 排版系统 并描述了如...

作者: Sachin Patil
2018/11/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

用 4G 工作是什么体验

七月开始,因为工作原因,在公司附近租了个住处,方便工作。离公司近了,感觉就是不一样,之前每天 5:30 就要起床赶地铁,现在可以睡到自然醒,一看才 7 点,悠闲的起床洗漱,踱步到公司,都...

zzxworld
44分钟前
5
0
sonar报错volatile

问题发生 原先代码如下: //认证授权码private static volatile String AUTHORIZATION_CODE = "init"; git push 之后,sonar认为这是个bug检测报告截图如下: 分析排查 解释说明: Markin...

开源小菜鸟2333
49分钟前
4
0
《Java实践指南》--读后

闲读《Java实践指南》... 1.lvy 某些项目中能够看到ivy.xml。早期使用ant的项目中,常常用ivy.xml来下载项目依赖。 2.ant 作为java程序员,应该都知道ant,虽然可能用过的人不多。为什么ant...

RippleChan
50分钟前
4
0
前端:固定表格(table)表头的实现方式

在写插件 bootstrap table 的时候,当数据过多的时候,需要对表格的 thead 进行固定,然后滚动表格的 tbody 。但是在实际的操作上,花了很多的时间在这个问题上,到现在也没有找到完美的解决...

前端老手
52分钟前
6
0
第五章 spring-connet之AnnotationConfigUtils

前言 AnnotatedBeanDefinitionReader是AnnctionConfig相关上下文与AnnotationConfigUtils的桥梁。还有一个作用是解析class成为BeanDefinitionHolder,注册到容器里面。AnnotationConfigUtils...

鸟菜啊
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部