我希望我的文档中显示的所有数学运算都以内联数学的样式排版。在他回答这个问题,Matthew Leingang 解释了如何通过仔细修改标记列表来做相反的事情(将所有内联数学排版为显示数学的样式)\everymath
。通过类比推理,我认为以下测试文档应该有效:
\documentclass[a4paper,reqno]{amsart}
\usepackage{amssymb,amsmath,amsthm,fullpage}
\everydisplay=\expandafter{\the\everydisplay\textstyle}
\begin{document}
\begin{align*}x
&=\sum_{i=1}^{10}i^2\\
&=t^3+\int_3^9y^a\,\mathrm{d}y\end{align*}
\end{document}
但事实并非如此。尝试编译此文档时,TeXWorks 给出以下错误:
! Improper \halign inside $$'s.
<recently read> \halign
它显示的代码,好像是为了提醒我注意错误,是 附近的代码\end{align*}
。如果注释掉前导修改中的行,则不会出现此错误\everydisplay
。为什么这不起作用?
答案1
Internall,align
使用对齐显示,TeXbook 第 190 页描述如下:
TeX 还允许“对齐显示”[...] 对齐显示由一般形式的命令创建
$$ <assignments> \halign{ <alignment> } <assignments> $$
其中
<assignments>
[...] 不产生任何数学列表。
但这\textstyle
不是一项任务:事实上,它启动了一个数学列表。因此,\halign
在该等式中不再是单独的,TeX 会发出警告。
现在有一个解决方案:由于在内部align
构建了一个类似的结构$\displaystyle ...$
,我们可以使用重新定义大小\let\displaystyle\textstyle
。
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\let\displaystyle\textstyle
An example of aligned equations,
\begin{align}
\sum_{i=1}^N \frac{x^2}{2} + \frac{y^2}{2} &= \frac{\sqrt{z^{\frac{2}{3}}}}{2}
&\frac{\sqrt{z^{\frac{2}{3}}}}{2} &= \sum_{i=1}^N \frac{x^2}{2} + \frac{y^2}{2}
\\
\frac{\sqrt{z^{\frac{2}{3}}}}{2} &= \sum_{i=1}^N \frac{x^2}{2} + \frac{y^2}{2}
&\sum_{i=1}^N \frac{x^2}{2} + \frac{y^2}{2} &= \frac{\sqrt{z^{\frac{2}{3}}}}{2}
\end{align}
which seem to work.
But the \verb|equation| environment won't:
\begin{equation}
\frac{\sqrt{z^{\frac{2}{3}}}}{2} = \sum_{i=1}^N \frac{x^2}{2} + \frac{y^2}{2}
\end{equation}
\end{document}
您可能希望在使用之前保存定义,\let\olddisplaystyle\displaystyle
以备不时之需。
答案2
部分解决方法是定义一些可用于替换\[ ... \]
和align*
环境的宏。请注意以下内容:
\documentclass[a4paper,reqno]{amsart}
\usepackage{amssymb,amsmath,amsthm,fullpage}
\newcommand{\t}{\textstyle}
\newcommand{\blob}[1]{\[\t#1\]}
\newcommand{\calc}[2]{\begin{align*}\t#1&\t#2\end{align*}}
\newcommand{\nl}{\\&\t}
\begin{document}
\blob{4^x + 5^y = 6^z \quad\mathrm{unless}\quad x = \frac{y}{z}}
\calc{x}{
=\sum_{i=1}^{10} i^2 \nl
\leq t^3 + \int_3^9y^a\,\mathrm{d}y
}
\end{document}
这将显示数学排版为内联数学,并提供一些命令,这些命令几乎可以完成我想要的工作,并使代码具有足够的可读性。对于和\blob
不够\calc
好的不寻常情况,至少\t
是相当简洁的,即使它必须几乎无处不在。
不过,这并不是我问题的真正答案。我还是想知道原始问题是怎么回事……