最近,我选择改变数学模式中的典型书写方式,在某些运算符或符号之间有一个空格(想想arrows
,,,=
等等:
)。
考虑一下这个MWE:
\documentclass{article}
\usepackage[spanish]{babel}
\selectlanguage{spanish}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\begin{document}
Normal writing: \[x+2=0\Rightarrow x=-2.\]
Own writing: \[\begin{matrix}x+2 & = & 0 && \Rightarrow && x & = & -2.\end{matrix}\]
\end{document}
另一个例子:
\[\begin{matrix}
\begin{cases}y\quad=&xk_1,\; k_1\in\mathbb Z\\z\quad=&xk_2,\; k_2\in\mathbb Z\end{cases}
&\Rightarrow&
y+z&=&xk_1+xk_2
&\Rightarrow&
y+z=x\underbrace{(k_1+k_2)}_{k_3\in\mathbb Z}&\Rightarrow&
y+z=xk_3
&\Rightarrow&
x\mid y+z.
\end{matrix}\]
请注意,它会产生一条额外的对齐消息,但重点是我不想手动设置空间以避免再次犯同样的错误。
我使用matrix
环境是因为:
- 编程很容易;
\\
使用该命令时自动居中;- 需要一个单独的包才能工作。
无论如何,当某些类型的方程式保持居中时,视觉上会有点烦人。此外,我为每个环境使用个性化空间(而不是一般数字):
Example 1: \[\begin{matrix}x+2+1+52&=&2\\y&=&2\\z&=&1\end{matrix}\]
Example 2 (same as Example 1 but with vertical space): \[\def\arraystretch{1.5}\begin{matrix}x+2+1+52&=&2\\y&=&2\\z&=&1\end{matrix}\]
Example 3 (with more vertical space): \[\def\arraystretch{3.0}\begin{matrix}\displaystyle\int_2^2{x\;\text dx}&=&2+\dfrac x2\\\displaystyle\int_2^2{x\;\text dx}&=&2+\dfrac x2\end{matrix}\]
请注意,我手动输入了方便的数组 strecth,以尽可能匹配其他空间。我对文档中的每个方程都这样做...
此外,在matrix
环境中可能存在更多子结构,例如cases
,array
等等。
我想知道是否有任何环境可以完成这项工作,或者如何尽可能地实现自动化以保持水平空间垂直(可能使用个性化命令,也许是包等)。
任何形式的贡献都将受到赞赏。
谢谢!
答案1
该tabstackengine
软件包允许使用统一的垂直间距设置内容(请参阅stackengine
软件包文档中的“短堆栈”),并使用自定义水平间距的数学制表符。但它不允许对单个方程式进行编号。
我创造的\CtabbedShortstack
意思是居中 \tabbedShortstack
,作为包\Centerstack
,\Vectorstack
并\Matrixstack
使用具有恒定基线跳跃而不是恒定间隙的“长堆栈”。
在下面的 MWE 中,方程之间有 12pt 的间隙,并且额外的在标签周围的水平间距上添加了 7pt 的水平间隙。因为 OP 的示例似乎显示了这一点,所以我保留了列的居中对齐,而不是类似于align
(在本例中是rcl
对齐)的对齐。
\documentclass{article}
\usepackage{tabstackengine}
\TABstackMath
\TABstackMathstyle{\displaystyle}
\setstackgap{S}{12pt}
\setstacktabbedgap{7pt}
\TABbinary
\newcommand\CtabbedShortstack[2][c]{%
\setbox0=\hbox{\tabbedShortstack[#1]{#2}}%
\vcenter{\box0}%
}
\begin{document}
\noindent Example 2:
\[
\tabbedShortstack{
x + 2 + 1 + 52 &=& 2\\
y &=& 2\\
z &=& 1
}
\]
Example 3:
\[
\tabbedShortstack{
\int_2^2 x \,dx &=& 2 + \frac{x}{2}\\
\int_2^2 x \,dx &=& 2 + \frac{x}{2}
}
\]
First in stack numbered
\begin{equation}
\tabbedShortunderstack{
x + 2 + 1 + 52 &=& 2\\
\int_2^2 x \,dx &=& 2 + \frac{x}{2}
}
\end{equation}
Last in stack numbered
\begin{equation}
\tabbedShortstack{
\int_2^2 x \,dx &=& 2 + \frac{x}{2}\\
x + 2 + 1 + 52 &=& 2
}
\end{equation}
Middle of stack numbered
\begin{equation}
\CtabbedShortstack{
\int_2^2 x \,dx &=& 2 + \frac{x}{2}\\
\int_2^2 x \,dx &=& 2 + \frac{x}{2}
}
\end{equation}
\end{document}