我正在尝试对齐一个跨多行的表达式,以使表达式中的某些项彼此对齐。到目前为止,我在 IEEEeqnarray 中使用以下内容:
\begin{IEEEeqnarray}{rCll}
\phi(x, y, z) & = & \frac{V}{2\pi}\left( & \arctan\left[\frac{(x_2-x) (z_2-z)}{y\,\sqrt{y^2+(x_2-x)^2+(z_2-z)^2}}\right]\right.\nonumber\\
&& -\> & \arctan\left[\frac{(x_1-x)(z_2-z)}{y\,\sqrt{y^2+(x_1-x)^2+(z_2-z)^2}}\right]\nonumber\\
&& -\> & \arctan\left[\frac{(x_2-x)(z_1-z)}{y\,\sqrt{y^2+(x_2-x)^2+(z_1-z)^2}}\nonumber\right]\\
&& +\> & \left.\arctan\left[\frac{(x_1-x)(z_1-z)}{y\,\sqrt{y^2+(x_1-x)^2+(z_1-z)^2}}\right]\right)
\end{IEEEeqnarray}
然而,有两点我希望改进:
1) 我想避免将第 2-4 行中的“-”和“+”符号与第 1 行中的 V/(2pi) 对齐。所有函数arctan
都应彼此对齐(我已经做到了这一点),并且“-”和“+”符号应与函数保持正常距离arctan
。因此,符号应相对于 V/(2pi) 缩进,而arctan
应保持彼此对齐。我该怎么做?
2) 第一行的左括号应具有正确的大小以匹配右括号的大小。我怀疑问题是在第一行的代码中,\left(
位于前面,因此第一行末尾的 以某种方式被丢弃了。如何做到这一点?&
\right.
答案1
您可以简单地使用align
来自 的环境。和amsmath
内的对齐不起作用,因此,最好使用手动大小,例如、、、,这些允许对齐标记和 手动微调(自动和往往太大)。此外,使用和来正确间距二元运算符和。 \left
\right
\big
\Big
\bigg
\Bigg
&
\left
\right
{}-{}
{}+{}
-
+
\documentclass[a4paper]{IEEEtran}
\usepackage{amsmath}
\begin{document}
\begin{align}
\phi(x, y, z) = \frac{V}{2\pi}\biggl(
&\arctan\biggl[\frac{(x_2-x)(z_2-z)}{y\,\sqrt{y^2+(x_2-x)^2+(z_2-z)^2}}\biggr]\nonumber\\
{}-{} &\arctan\biggl[\frac{(x_1-x)(z_2-z)}{y\,\sqrt{y^2+(x_1-x)^2+(z_2-z)^2}}\biggr]\nonumber\\
{}-{} &\arctan\biggl[\frac{(x_2-x)(z_1-z)}{y\,\sqrt{y^2+(x_2-x)^2+(z_1-z)^2}}\biggr]\nonumber\\
{}+{} &\arctan\biggl[\frac{(x_1-x)(z_1-z)}{y\,\sqrt{y^2+(x_1-x)^2+(z_1-z)^2}}\biggr]\biggr)
\end{align}
\end{document}
答案2
这里有一个可能性,即fleqn
环境和\medmath
命令(中等大小的公式,~ 80 % 的显示样式),两者都来自nccmath
(加载amsmath
)。如果您确实希望公式以正常显示大小显示,则必须仅在最后三个方程中对齐 arctan,或者添加第五行。
\documentclass{ieeetran}
\usepackage{nccmath, mleftright}
\usepackage{lipsum}
\begin{document}
\lipsum[4]
\begin{fleqn}\setcounter{equation}{19}
\begin{equation}
\medmath
{\begin{aligned}[b]
\phi(x, y, z) = \frac{V}{2\pi} \Biggl(\! &\arctan\mleft[\frac{(x_2-x) (z_2-z)}{y\,\sqrt{y^2+(x_2-x)^2+(z_2-z)^2}}\mright] \\
{}-{} &\arctan\mleft[\frac{(x_1-x)(z_2-z)}{y\,\sqrt{y^2+(x_1-x)^2+(z_2-z)^2}}\mright] \\
{} - {}&\arctan\mleft[\frac{(x_2-x)(z_1-z)}{y\,\sqrt{y^2+(x_2-x)^2+(z_1-z)^2}} \mright]\\
{} + {}&{\mleft.\arctan\mleft[\frac{(x_1-x)(z_1-z)}{y\,\sqrt{y^2+(x_1-x)^2+(z_1-z)^2}}\mright]\mright)}
\end{aligned}}
\end{equation}
\end{fleqn}
\end{document}
答案3
IEEEeqnarray
您仍然可以使用只有 2 列的方程式,通过eft定位-
和:+
l
lap
\documentclass{article}
\usepackage{IEEEtrantools,mathtools}
\begin{document}
\begin{IEEEeqnarray}{rl}
\phi(x, y, z) =
\frac{V}{2\pi}\Biggl( \arctan &\Biggl[\frac{(x_2 - x) (z_2 - z)}{y\,\sqrt{y^2 + (x_2 - x)^2 + (z_2 - z)^2}}\Biggr] \nonumber \\
\mathllap{{}-{}} \arctan &\Biggl[\frac{(x_1 - x) (z_2 - z)}{y\,\sqrt{y^2 + (x_1 - x)^2 + (z_2 - z)^2}}\Biggr] \nonumber\\
\mathllap{{}-{}} \arctan &\Biggl[\frac{(x_2 - x) (z_1 - z)}{y\,\sqrt{y^2 + (x_2 - x)^2 + (z_1 - z)^2}}\Biggr] \nonumber\\
\mathllap{{}+{}} \arctan &\Biggl[\frac{(x_1 - x) (z_1 - z)}{y\,\sqrt{y^2 + (x_1 - x)^2 + (z_1 - z)^2}}\Biggr] \Biggr)
\end{IEEEeqnarray}
\end{document}
使用{}-{}
和{}+{}
强制在二元运算符周围设置正确的间距,以确保它们以正常方式呈现。此外,\Biggl
...\Biggr
允许使用适当大小的分隔符,无需担心它会跨越IEEEeqnarray
对齐&
。
答案4
我想说我有一个聪明的方法来做到这一点,使用 IEEEeqnarray 环境。
您需要在序言中声明该命令:
\newcommand{\sizecorr}[1]{\makebox[0cm]{\phantom{$\displaystyle #1$}}} % Used to seize the height of equation
它会占据你表情的正确高度,但会不可见。因此,你需要放置最大的表情。
解决方案是:
\begin{IEEEeqnarray}{rClll}
\phi(x, y, z) & = & \frac{V}{2\pi}\left( \sizecorr{\arctan\left[\frac{(x_2-x) (z_2-z)}{y\,\sqrt{y^2+(x_2-x)^2+(z_2-z)^2}}\right]}\right. && \arctan\left[\frac{(x_2-x) (z_2-z)}{y\,\sqrt{y^2+(x_2-x)^2+(z_2-z)^2}}\right]\nonumber\\
&&& -&\arctan\left[\frac{(x_1-x)(z_2-z)}{y\,\sqrt{y^2+(x_1-x)^2+(z_2-z)^2}}\right]\nonumber\\
&&& -&\arctan\left[\frac{(x_2-x)(z_1-z)}{y\,\sqrt{y^2+(x_2-x)^2+(z_1-z)^2}}\nonumber\right]\\
&&& + &\left.\arctan\left[\frac{(x_1-x)(z_1-z)}{y\,\sqrt{y^2+(x_1-x)^2+(z_1-z)^2}}\right]\right)
\end{IEEEeqnarray}