我想用多行写出这个方程式,但在 IEEE 格式中这是不可能的。请帮忙:
\documentclass[journal]{IEEEtran}
\usepackage[cmex10]{amsmath}
\usepackage{array}
\usepackage{soul}
\usepackage{multirow}
\begin{equation}
\label{longEq}
X(t + 1) = \left\{ {\begin{array}{*{20}{c}}
{{X_\text{rand}}(t) - {r_1}\left| {{X_\text{rand}}(t) - 2{r_2}X(t)} \right|{\rm{ }}q \le 0.5}\\
{\left( {{X_\text{prey}}(t) - {X_m}(t)} \right) - {r_3}\left( {LB + {r_4}\left( {UB - LB} \right)} \right){\rm{ }}q > 0.5}
\end{array}} \right.
\end{equation}
答案1
可以进行{array}
工作,但看起来您正在尝试分段定义,而{cases}
fromamsmath
就是为此而构建的。其他一些注意事项:
- 如上所述,
\text
适用于您希望参数与周围文本匹配的情况。在这种情况下,您希望参数相同,无论周围文本是否强调。因此,您需要使用\mathrm
(或可能\mathit
)。 {...}
组成一个组,并且只应在需要组时使用。对于复杂的下标,它(几乎)是必需的,例如\mathrm{}
,\mathit{}
对于\text{}
单字符下标,它是可选的;如果您不需要分组(例如 ),则不应使用它{r_1}
。- 如果您不需要调整大小,则应删除
$\left...\right$
,因为它们只会让您的文本更加复杂。(有些人更喜欢始终手动调整大小,而不是使用自动调整大小。) |
应该成为\lvert...\rvert
,因为它们具有正确的水平间距。- \label 的目的是不要使用数字。否则,如果您重新排列源,则必须重新编号所有内容。相反,请为您的公式指定一个有意义的名称,以便当您在文档的单独部分时,您可以查看
\ref
公式而无需回头查看您使用的数字。 - 数学模式中通常会忽略空格,因此
{(lots of spaces)}
不起作用。有间距命令,但应谨慎使用。 \rm
不应再在 LaTeX 中使用。它的替代品应该更加谨慎地使用。(它也不带参数;你会想要{\replacement stuff}
。)- 如果您包含 documentclass 和相关包,这将很有帮助,这样我们就可以复制和粘贴您正在做的事情并立即看到输出。
结果:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{equation}
\label{eq:nextX}
X(t + 1) = \begin{cases}
X_{\mathrm{rand}}(t) - r_1\lvert X_{\mathrm{rand}}(t) - 2r_2X(t) \rvert
& q \le 0.5\\
( X_{\mathrm{prey}}(t) - X_m(t) ) - r_3( LB+r_4(UB - LB)) & q > 0.5
\end{cases}
\end{equation}
\end{document}
编辑:
两列 IEEEtran 类没有给您太多的发挥空间。一种可能性是使用multlined
from mathtools
(并更改cases
为dcases
),最终得到:
\documentclass{IEEEtran}
\usepackage{mathtools}
\begin{document}
\begin{equation}
\label{eq:nextX}
X(t + 1) = \begin{dcases}
\begin{multlined}
X_{\mathrm{rand}}(t) - {} \\ % - {} to get correct spacing
r_1\lvert X_{\mathrm{rand}}(t) - 2r_2X(t) \rvert
\end{multlined}
& q \le 0.5\\
\begin{multlined}
X_{\mathrm{prey}}(t) - X_m(t) - {} \\ % - {} to get correct spacing
r_3( LB+r_4(UB - LB))
\end{multlined}
& q > 0.5
\end{dcases}
\end{equation}
\end{document}