关于 stackengine 包的两个问题:

关于 stackengine 包的两个问题:

借用这个帖子,我构造了以下示例:

\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}

在此处输入图片描述

相关内容