在LaTeX中定位公式

6
我是一名机械工程师,一直在使用Word编写计算报告。然而,由于Word经常让我发疯,我用头撞墙把卧室的墙撞倒后,我开始关注LaTeX,并且喜欢上了它。它相对用户友好,也不太难适应。
然而,我有一个问题。值得一提的是,我使用的是miktex 2.7在winxp上进行分发,如果这有影响的话。
我试图以某种方式编写我的公式:
text text text text text text text text text text text text  
text text text text text text text text text text text text
a = b + c = 12m    measure of length of great importance  
   b = 6m          a measure of length  
   b1 = 28m        new text
   c1 + d = a + b  new text
   c = 8m          another measure of length  
                   and it is in meters  

什么是优雅地以这种方式对其进行正确调整的方法?这是否可能?我有很多这些(2厘米的书厚度)。
对于tex,我是新手,所以也许对你来说这听起来很琐碎。但对我来说,在谷歌之后,仍然是个问题。请帮忙解决。拯救墙壁。
我的编辑:只是想更好地解释一下(尽管你们已经覆盖了几乎所有可能性)。我正在尝试左对齐b和c(公式的其余部分将有所不同,因此不重要),并且解释公式的文本也左对齐。

我建议您查看http://www.ams.org/tex/amslatex.html,了解该软件包(它可能已经包含在miktex中)以及有关它的文档和其他LaTeX参考资料。 - Jay Kominek
1
恭喜您开始使用LaTeX...一旦您习惯了这些东西,您就不会后悔了。 - Uri
@Uri - 我希望如此。我使用了Word+Mathtype,虽然并不是很糟糕(有键盘快捷键等),但是在Word中引用其他公式和图片确实是一场噩梦(在某些方面非常有缺陷)。 - Lada Kugis
7个回答

8

是的,对齐是一个常见情况,在LaTeX中得到了很好的支持。您需要使用align环境(\begin{align} ... \end{align})。在其中,LaTeX的每一行(用\分隔)将对应一个公式,并且您可以通过放置一个和符号(&)来选择每一行要对齐的字符。在您的例子中:

\begin{align}
a = b + c &= 12m\\
b &= 6m\\
c &= 8m\\
\end{align}

应该做一些类似你所想的事情(取决于你希望如何对齐第一行)。这将为每个方程式编号以供文本参考;如果不需要或不希望此操作,请改用align*环境。在LaTeX中,在环境名称后添加星号是一种常见的习惯用法,表示“不编号”,也可以用于章节等。

编辑:这是我认为你想要的另一种对齐方式的解释:

text text text text text text text text text text text text  
text text text text text text text text text text text text
\begin{align*}
a = &b + c = 12m &\text{measure of length of great importance}\\  
&b = 6m &\text{a measure of length}\\
&c = 8m &\text{another measure of length}\\ 
& &\text{and it is in meters}
\end{align*}  

注意:

  • 您可以在每行中放置多个和号以指定多个对齐点,但所有行必须具有相同数量的对齐点。
  • align是一个数学环境。
  • \text{...}让您在数学环境中放置普通文本。有许多其他命令可用于格式化数学环境内的文本。

如果你使用数组而不是 align,你可以使用 \begin{array}{rcll},这将为你提供 4 列而不是 3 列(前三列与 align 显示的相同)。 - Bill Lynch

1
你可以使用标准的eqnarray环境,或者查看amsmath包中提供的更强大的工具
如果使用eqnarray,您需要在工作和文本之间至少放置一个位置锚点,如下所示。
\begin{eqnarray}
a = b + c = 12m  & & \mbox{measure of length of great importance}\\
   b = 6m        & & \mbox{a measure of length}\nonumber\\
...
\end{eqnarray}

默认情况下,行是带有编号的,但是\nonumber可以抑制它。如果要防止任何行号,请改用eqnarray*


如果你坚持的话,你也可以使用表格,但我不建议这样做。如果你这么做了,请将整个公式放在一个单元格中,例如:

\begin{tabular}{cl}
    $a = b + c = 12m$  & \mbox{measure of length of great importance}\\
    $b = 6m$           & \mbox{a measure of length}\\
 ...
\end{tabular}

这使得编号变得困难。


@威尔:谢谢。虽然我被一些描述的危险所伤,但我以前没有看到过这个。 - dmckee --- ex-moderator kitten

1

你可能是我听过的第一个将LaTeX描述为“用户友好”的人;-)

无论如何,目前不清楚你是要对齐方程的特定部分还是只是居中它们。有不同的方程环境可以用于不同类型的对齐,例如每个方程都在自己的行上居中的gather环境。

顺便说一下:我建议看看LaTeX2e简介,这是我开始学习LaTeX的方式,以及amsmath套件用户指南,其中描述了不同种类的对齐方式。


总的来说,我觉得LaTeX相当用户友好。但它不一定适合初学者。 - Vatine

0
我不会直接回答你的问题,因为似乎已经有人在上面回答过了。但是我会建议你尝试使用LyX来方便自己进入TeX世界。它提供一个图形界面,并且可以立即预览,这可能更符合你使用Word等软件的背景。它基于LaTeX构建,因此在适用的地方仍然使用LaTeX命令,但是它仍然(我个人认为)是TeX更容易上手的介绍。

LyX


谢谢Kaushik,看起来很不错,我会试一下。我开始使用LEd,因为它内置了预览功能,所以我可以直接看到我的工作成果。 - Lada Kugis

0

这里有一个不同的解决方案,可以让你在源代码中将数学公式和解释分开写。

\newcommand\aligntext[1]{&\text{#1}\\}
\[\begin{aligned}
a+b&=c\\
x&=y\\
c&=d+e
\end{aligned}
\hspace{1em}
\begin{aligned}
\aligntext{text 1}
\\
\aligntext{text text text}
\end{aligned}\]

有几种不同的方法可以解决这些问题。(例如,上面的代码不允许对每个方程进行编号。)除了amsmath之外,还可以看一下mathtools package


0

你可以在minipage环境中使用eqnarray或aligned环境来实现。

Eqnarray(或aligned)允许您使您的公式看起来符合您的要求,而minipage则允许您将公式包裹在文本中。


-1

我建议抽象出与对齐有关的部分并使用以下内容:

\begin{tabular}{rcll}
$a$ & $=$ & $12m$ & measure of length of great importance \\
$b$ & $=$ & $6m$  & a measure of length \\
\end{tabular}

有没有一种方法可以将每行都编号为方程?这种方法有一些好处,特别是如果您想自动调整字段,但如果您希望以标准方式在文本中引用编号的话,它可能会成为一个决定性因素。 - Matt J
这是一个糟糕的想法,很抱歉。间距会完全不对,并且正如Matt所提到的,您将不得不编写更多的代码来进行方程编号。 - Will Robertson
@Will - 我经常使用这个。你为什么认为这是不好的做法?能解释一下吗? - Rook
等号周围的间距将非常不正确;标记比它应该的更复杂;无法添加方程编号。此页面上提供的其他解决方案要好得多。至少请参见上面@dmckee的答案。 - Will Robertson
除了我认为我的解决方案是唯一一个让你排列等号和四个工作区的解决方案之外,我同意所有批评意见。不过,这可能有一个数学模式的等价物(它允许任意数量的列)。 - Bill Lynch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接