借用这个帖子,我构造了以下示例:
\documentclass{article}
\usepackage{stackengine}
\begin{document}
\[
\setstackgap{L}{.7\baselineskip}
\setstackgap{S}{9\baselineskip}
\Vectorstack{H_1 > < H_0}
\]
\[
\setstackgap{L}{.7\baselineskip}
\Vectorstack{\alpha > < H_0}
\]
\[
\setstackgap{L}{.7\baselineskip}
\Vectorstack{\alpha\\ > < H_0}
\]
\end{document}
输出结果如下
我的第一个问题是:为什么该命令不会\setstackgap{S}{9\baselineskip}
导致第一个显示的项目之间出现巨大差距?据我所知,我使用的方法setstackgap
与手册中完全一致。
我的第二个问题是:为什么H_1
和 的处理方式不同\alpha
?例如,当我简单地用 替换H_
以 获得第二个显示时,在输出中,和\alpha
之间没有空格;而为了获得在第三个显示中输入 所需的空格,我需要。为什么会有这种差异? \alpha
>
\alpha\\
答案1
A\Vectorstack
是 Long 类型的堆栈,因此您会发现设置\setstackgap{L}{}
将改变 a 的行间基线跳跃\Vectorstack
,而 a\setstackgap{S}{}
对 a 没有影响\Vectorstack
。(提醒一下,长堆栈设置堆叠行之间的基线跳跃,而短堆栈设置行数据之间的死区 [空] 间隙的大小。)
至于为什么H_1
与 的行为不同\alpha
,原因是 中的默认行分隔符stackengine
是空格。当您输入 时H_1 blah
, 后面的空格1
被识别为空格并在堆栈中解释为换行符。但是\alpha blah
不会将 后面的空格识别\alpha
为空格,而是 的终止符。这不是本身 \alpha
的行为,而是 LaTeX 的行为。stackengine
最简单的方法是将 的行尾分隔符改为stackengine
,例如\setstackEOL{\\}
。然后,您将使用H_1 \\ blah
和\alpha \\ blah
来创建两行。但是,如果您选择保留空格作为堆栈 EOL 字符,则\alpha{} blah
可以使用 来使 之前的空格blah
被识别。
下面的 MWE 比较了长堆栈和短堆栈,以及{}
在之后添加\alpha
...
\documentclass{article}
\usepackage{stackengine}
\stackMath
\begin{document}
\[
\setstackgap{L}{1.7\baselineskip}
\setstackgap{S}{3\baselineskip}
\Vectorstack{H_1 > < H_0}\quad
\Shortstack{H_1 > < H_0}
\]
\[
\setstackgap{L}{1.7\baselineskip}
\Vectorstack{\alpha > < H_0}\quad
\Vectorstack{\alpha{} > < H_0}
\]
\end{document}