【论文基本功】【LaTeX】公式及其编号

写理工科论文的时候,难免要用到大量公式。每次写论文,哪怕是用过的公示格式,也需要找之前的模板或者现到网上查询,前者考验我的文件资源管理,后者可能需要大量测试,都很麻烦。因此决定自己整理一版,随用随补充,以方便来日查用。同时也欢迎大家收藏和帮助我一起完善,谢谢各位~

0. 图示索引

为了方便直观查找,将本博客实现的所有无误的格式都列在下面,可以直接点击导航。
equation基本格式
equation基本格式
equation多行公式
equation多行公式
equation不编号公式
equation*
subequations基本格式
subequations基本格式
subequations只编号部分行
subequations中只编号部分行
subequations公式存在分类情况(如分段函数)
公式存在分类情况
subequations分段函数逐行编号(可以只编号部分行)
每行自由编号
align为公式每行分别编号(非子编号)
为公式每行分别编号(非子编号)
align只为公式最后一行单独编号(非子编号)
只为公式最后一行单独编号(非子编号)

1. equation:整个公式只有一个编号

1)基本格式

% 整个公式只有一个编号
\begin{equation}\label{eqn-1} 
  y = ax + b
\end{equation}

equation基本格式
加label是为了在正文中引用该公式。引用时,只需使用"\ eqref{label名称}"(反斜杠“\”后不应有空格,这里是为了避免CSDN的格式显示问题),如“\ eqref{eqn-1}”,显示的格式为“(公式编号)”,如“(1)”。使用“\ ref{label名称}”(反斜杠“\”后没有空格)的格式也可以引用,但是显示格式不带括号,只有公式编号,如“1”。建议在引用图片、表格或算法时再采用后者。另外,注意label具有唯一性,论文中不能出现相同的label。一旦出现重复label,虽然编译时不会报错,但引用时会出现混乱。

2)多行

当需要使用多行公式时,可以采用下面的格式。

% 整个公式只有一个编号,
\begin{equation}\label{eqn-2}
  \begin{aligned}
    y & = ax + b\\
    z & = cx + d
  \end{aligned}
\end{equation}

equation多行公式
其中的aligned是用于实现equation中的多行公式并且可以辅助公式内各行的对齐,对齐位置用“&”。“&”个数没有限制,甚至可以是0,但各行使用的“&”个数的必须相同,否则编译时会报错。

如果不嵌套aligned,各行无法对齐是其次,最重要的是无法实现换行。

% 错误演示:不嵌套aligned的equation
\begin{equation}\label{eqn-3}
    y = ax + b\\
    z = cx + d
\end{equation}

不嵌套aligned的equation公式

3)不编号公式

有时使用的公式并不需要编号,此时可以改用equation*。与前面的区别仅在于该格式在equation后面加了一个“*”。具体示例如下。

% 此时相应公式不编号,因没有编号,故无法引用
\begin{equation*}
  \begin{aligned}
    y & = ax + b\\
    z & = cx + d
  \end{aligned}
\end{equation*}

equation*

2. subequations:公式每行都有一个子编号

使用equation可以一定程度上解决我们的需求,但在论文中引用公式时,有时只想引用公式中的某一个子行,也就是说公式的每行最好都能有自己的编号,此时使用subequations是最方便、直接的办法。

1)基本格式

%每个子行都有唯一编号
\begin{subequations}\label{eqn-4}
  \begin{align}
    y & = a + b\\
    z & = c + d
  \end{align}
\end{subequations}

subequations基本格式
其中align也是用于公式内各行的对齐。需要注意的是,这里的与equation中嵌套的不同,不是alignedalign的基本用法与aligned一致,也采用“\\”来换行,使用“&”来辅助对齐。

注:如果将align改为align*,也可以实现公式不编号的功能。也就是在上图中去掉后面的两个编号。

这里嵌套align很必要,否则公式虽然会编号也能引用,但是并不会显示,这会导致公式编号的混乱;而且此时subequations中的内容显示规则与正文一致(包括字体、缩进、写公式需要加“$”等)。

%有编号也能引用但不显示,内容的显示规则与正文一致
\begin{subequations}\label{eqn-5}
    y = ax + b\\
    \indent z = cx + d
\end{subequations}

不嵌套align的subequations

2)只编号部分行

有时在论文中会出现公式推导过程,此时中间步骤没有必要编号。为了实现这一目的,只需要在不需要编号的行的末尾(换行符“\\”前)添加**\nonumber**即可,具体如下:

\begin{subequations}\label{eqn-6}
  \begin{align}
    y & = ax + (bx+c) \nonumber\\
     & = (a + b)x + c\\
    z & = mx + (nx+p) \nonumber\\
     & = (m + n)x + p
  \end{align}
\end{subequations}

subequations中只编号部分行

3)公式存在分类情况(如分段函数)

在某些情况下,论文中需要使用分段函数,即在不同条件下有不同结果,这个时候就需要用到cases

\begin{subequations}\label{eqn-7}
  \begin{align}
    y & =
    \begin{cases}
      a x^2 + b x + d, & \mbox{if}~x > 0 \\
      cx + d, & \mbox{otherwise}
    \end{cases}\\
    z & =
    \begin{cases}
      mx + p, & \mbox{if}~x > 1 \\
      nx + q, & \mbox{otherwise}
    \end{cases}
  \end{align}
\end{subequations}

公式存在分类情况
注意,公式中展示文字需要使用“\mbox{文字内容}”,且有必要使用“~”来添加文字与公式中变量之间的空隙。如果不使用“\mbox”就会出现下图中第一个“otherwise”的显示效果;不使用"~"就会出现“if”和“ x x x”贴在一起的情况。
不使用\mbox和~的错误示例

equation中同样可以嵌套使用cases,使用方法相同。

4)分段函数逐行编号(可以只编号部分行)

在某些情况下,论文中展示的多行公式是一个方程组,需要联立,也就是需要在公式最左侧添加一个大括号,这个时候可以使用cases。但如果要求大括号右侧每行都需要编号,那么就需要引入新的方法。这里建议使用numcases

% 使用numcases需要现在文档开头引入宏包cases(注意包名不是numcases)
\usepackage{cases}
...
\begin{subequations}\label{eqn-8}
  \begin{numcases}{\mbox{case}~1:}
      m = 3x + 2y + 5z \label{eqn-8-1}\\
      n = 2x + 5y + 3z \notag\\
      p = 3x + 4y + 2z \label{eqn-8-3}
  \end{numcases}
\end{subequations}

每行自由编号
注意,如果某行不需要编号,直接在该行末尾(换行符“\\”前)添加“\notag”即可,而是否添加“\label{}”不影响实际编号。
如果只是联立方程,可以直接去掉大括号左侧的内容,示例如下

\begin{subequations}\label{eqn-8}
  \begin{numcases}{} % 这里相对于前面的变化在于,去掉了{}中的内容
      m = 3x + 2y + 5z \label{eqn-8-1}\\
      n = 2x + 5y + 3z \notag\\
      p = 3x + 4y + 2z \label{eqn-8-3}
  \end{numcases}
\end{subequations}

联立方程且逐行编号

参考文献:百度文库-Latex-条目、编号、描述

该方法唯一不够优雅的就是不能对齐。如果在numcases中嵌套aligned(不是align),可以实现对齐,但是又无法实现逐行编号。如果各位有更优雅的写法,欢迎评论区分享一下~

3. align:每行单独编号(非子编号)

1)为公式每行分别编号(非子编号)

\begin{align}\label{eqn-9}
      y & = a n^3 + b n^2 + c n + d \nonumber\\
      & = a n^3
\end{align}

为公式每行分别编号(非子编号)

2)只为公式最后一行单独编号(非子编号)

\begin{align}
      y & = a n^3 + b n^2 + c n + d \nonumber\\
      & = a n^3 \label{eqn-9}
\end{align}

只为公式最后一行单独编号(非子编号)

4. 超长公式

1) 在两栏论文中并栏展示超长公式(暂未实现)

待补充(需要翻翻以前的论文草稿)

猜你喜欢

转载自blog.csdn.net/AbaloneVH/article/details/125599538
今日推荐