【转载请注明出处】http://www.cnblogs.com/mashiqi

2016/10/20

一年多没写博文了。今天写一个短的,记录一下使用LaTeX的一些经验。

有些时候,我们的latex文档是这样开头的

\documentclass[fleqn,leqno]{article}

其中 leqno 参数的作用是使得公式的编号显示在左边。当参数 fleqn 存在时,公式往往不能正确的居中。这时,我们就需要特别小心的使用equation、align、flalign、alignat等命令。下面详细讲讲。

1、多行公式在一个地方对齐
如何居中多行的公式呢?我试过很多种方法后,觉得下面这个最好用:

\begin{flalign*}
% In this way (this arrange of &), the equation will in the center and align at the third &. If use this method for 'split', equations will not be centered
% However, 'flalign' will give each line a separate number. It cannot number the whole equations in one number.
&& a & = b & \\
&& a & = b & \\
&& a & = b & \\
&& a & = b &
\end{flalign*}

其中的多个&符号是专门安排好的。只用往第二个和第三个&符号后面添加代码就行了,它们就能对齐 并且所有公式作为一个整体进行居中。但这里有个问题,就是编号的问题。这里没有公式的编号。如果把flalign后面的*号去掉的话,那么就有编号了,但是是每一行公式一个编号,有些情况下这不太合适。因此,为了编号,我们要对上述代码做如下更改:

\begin{flalign}
% In this way (this arrange of &), the equation will in the center and align at the third &. If use this method for 'split', equations will not be centered
% However, 'flalign' will give each line a separate number. It cannot number the whole equations in one number.
&& a & = b & \nonumber\\
&& a & = b & \\
&& a & = b & \nonumber\\
&& a & = b & \label{eq2}\\
&& a & = b & \nonumber
\end{flalign}
Now we refer equation (\ref{eq2}).

现在去掉了flalign后面的*号,那么给不想编号的行的结尾加上 \nonumber,给想加编号的行的后面 不添加任何东西 或者加上 \label{...} 。当 不添加任何东西 时,此行是有编号的,但这个编号将不能被引用到;当加上了 \label{...} 时,可以通过 \ref{...} 来引用这个编号。

下图就是上面两段代码的输出结果:

以上就基本解决了:多行公式、居中、对齐、加编号、引用编号这些问题。唯一的小缺点就是编号并不在整个公式的中间。不过这个小缺点可以容忍。

2、多行公式在多个地方对齐

为了达到多行公式在多个地方对齐的目的,我们必须取消最开始的 fleqn 命令。

有了上面使用 flalign 的经验之后,我们可以使用 \begin{alignat*}{·} 进行多行公式在多个地方对齐的操作。“alignat”后面的那个括号里的数字是每行的“&”符号的个数加1后除以2。举例如下:

\begin{alignat*}{2}
a & = b &\quad c & = d \\
a & = b & c & = d
\end{alignat*}

注意:为了让各个公式之间能有一个间隔,要在分隔各个公式的&符号之后加一个 \quad 。其实 flalign 也可以通过上面的方法实现多个地方对齐,但是当每一行的公式不多时,为了故意填满一整行,公式间的间距会很大。而 alignat 命令不会可以去填满一整行,而是会使得各个公式间尽量靠拢,所以各个公式间的水平距离会看起来更舒服一些。 alignat 和 flalign 之间的区别举例如下:

\begin{alignat*}{2}
a & = b &\quad c & = d \\
a & = b & c & = d
\end{alignat*} \begin{flalign*}
&& a & = b & c & = d && \\
&& a & = b & c & = d &&
\end{flalign*}

3、 其他命令加编号

另外,使用

$$...$$

命令也是可以加编号的,方法是使用 \eqno{...} 命令。举例如下:

$$a=b \eqno{()}$$

但这时的编号 () 要手动输入,而且不能被引用。

LaTeX_fleqn参数时,多行公式对齐居中的同时选择性的加编号的更多相关文章

  1. word中编辑论文公式对齐问题

    这里只说在word中编辑公式时,公式居中,编号右对齐的情况. 在编辑公式时,我平时就是右对齐,然后通过敲击空格键进行公式的居中,然而这样并不美观.所以接下来学习一下: 1)首先打开视图-->标尺 ...

  2. mvc中view与controll之间传递参数时,可以使用url进行传递

    mvc中view与controller之间传递参数时,可以使用url进行传递,但是在url的地址中需要加上“id=123”这样的东西才行. 具体如代码: window.location.href = ...

  3. LaTeX技巧206:使用gather输入多行公式的技巧

    上文中提到了几个输入多行公式的环境,gather也是其中之一,gather输入的好处是每一行,他都会按照前文的编号计数器进行向下计数,这样保证了公式编号的连贯性.所以,当我们输入公式的每一行公式需要独 ...

  4. LaTeX技巧207:使用align环境输入多行公式的技巧

    align是输入多行公式中最好用的环境,仅仅是个人浅见,因为他的对齐非常灵活,如果大家需要非常灵巧的对齐方式的多行公式,建议使用align环境,对应的也还有align*和aligned等等类似的环境, ...

  5. 优化MySQL开启skip-name-resolve参数时显示“ignored in --skip-name-resolve mode.”Warning解决方法

    转自:http://blog.csdn.net/yiluoak_47/article/details/53381282 参数用途: skip-name-resolve #禁止MySQL对外部连接进行D ...

  6. docx转doc时,防止公式被转成图片的解决办法

    编辑社回复需要doc(Word 97-2003)格式的文档,可是将docx(Word 2007+)另存为doc格式时,发现公式被转成了图片.其实,最简单的办法就是,打个电话过去给编辑社:“大爷,拜托您 ...

  7. CAD参数绘制多行文字(com接口)

    在CAD设计时,需要绘制多行文字,用户可以设置设置绘制文字的高度等属性. 主要用到函数说明: _DMxDrawX::DrawMText 绘制一个多行文字.详细说明如下: 参数 说明 DOUBLE dP ...

  8. CAD参数绘制多行文字(网页版)

    在CAD设计时,需要绘制多行文字,用户可以设置设置绘制文字的高度等属性. 主要用到函数说明: _DMxDrawX::DrawMText 绘制一个多行文字.详细说明如下: 参数 说明 DOUBLE dP ...

  9. word 条件多项式公式对齐

    条件多项式公式对齐 觉得有用的话,欢迎一起讨论相互学习~Follow Me 对于使用word编写具有多个多项式的公式时,经常会有所偏移 最不优雅的方式就是使用逗号进行分隔和排版使其公式上下对齐 第二种 ...

随机推荐

  1. 与Java互操作

    课程内容涵盖了Java互操作性. Javap 类 异常 特质 单例对象 闭包和函数 变化性 Javap javap的是JDK附带的一个工具.不是JRE,这里是有区别的. javap反编译类定义,给你展 ...

  2. iOS 开发之控件快速学习(一)

    最近一个朋友想转iOS所以我开始写一些初级iOS学习博客!也希望第一些初学的朋友有所帮助,!好吧进入今天的正题,我们今天主要完成如下界面的显示! 好的一起打开Xcode一下几步我截图说明:

  3. Yii2.0数据库操作增删改查详解

    1.简单查询: one(): 根据查询结果返回查询的第一条记录. all(): 根据查询结果返回所有记录. count(): 返回记录的数量. sum(): 返回指定列的总数. average():  ...

  4. PHP注册审核做法

    1.注册页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...

  5. Linq to entities 学习笔记

    Linq to  entities ---提供语言集成查询支持用于在概念模型中定义的实体类型. 首先可以根据http://msdn.microsoft.com/en-us/data/jj206878该 ...

  6. Excel

    EXCEL Excel2003中如何复制多个分开的单元格而不复制中间的内容

  7. C++学习进度0

    昨天,又把<C++ primer> 刷了一遍,这一次看的是陈硕大大的评注版,重点看了陈硕的注释,<Accelerated C++>去年就把代码巧了一遍,<C++ prim ...

  8. Android中ListView的用法

    使用方法1 显示简单的文本 在layout文件中像加入普通控件一样在layout文件中引入ListView <ListView android:id="@+id/list_view&q ...

  9. Adding a WebPart to a SharePoint 2013 Master Page 分类: Sharepoint 2015-07-08 01:03 7人阅读 评论(0) 收藏

    On SharePoint 2013 you can not add the Web Parts to the master page the same way of 2010. Please use ...

  10. 同上 遍历obj的值 来定义当前的后台数据在页面的定位

    function getlistRoom(obj) { //obj就是通过ajax传过来的 data for (var i = 0; i < obj.length; i++) {//遍历数据 v ...