我正在尝试以我通常使用LaTeX
in的方式对齐一些相当长的方程groff
。我的目标是一般形式:
A = B + C
= D * E
+ F * G
= H + I = J
在LaTeX
我会这样做如下:
\documentclass[fleqn]{article}
\usepackage{amsmath}
\begin{document}
\begin{alignat*}{3}
A
& = B + C \\
& =
\begin{aligned}[t]
& D * E \\
& + F * G
\end{aligned} \\
& = H + I
&& = J
\end{alignat*}
\end{document}
在eqn
中,方程对齐是通过mark和lineup命令完成的。引用Typesetting Mathematics 2nd Ed(在此处找到)中的 Kernighan 和 Cherry 关于这些如何工作的内容:
文字标记可以在方程式中的任何位置出现一次。它会记住它出现的水平位置。连续的方程可以包含一个单词lineup的出现。如果可能的话,排列出现的位置与前一个标记标记的位置对齐。
在阅读本文时,我的印象是系统不会禁止使用阵容与先前的标记对齐以及在等式的同一行内设置新标记,例如,我期望以下内容:
.PP
.EQ I
A mark =
B + C
.EN
.EQ I
lineup = mark
D * E
.EN
.EQ I
lineup + F * G
.EN
产生这样的东西:
A = B + C
= D * E
+ F * G
然而,事实并非如此。eqn
将加号与等号对齐:
A = B + C
= D * E
+ F * G
并产生警告:
eqn:test.ms:10: multiple marks and lineups
.ms
我用一个小脚本编译我的文件:
eqn $1 -Tpdf | groff -ms -Tpdf > ${1/%.ms/.pdf}
我想知道是否有一些宏可以让我存储多个水平偏移(或如何定义一个)。关于标记和阵容宏的工作原理的一些说明也会有所帮助。