带有花括号的表格的 gb4e 和宏存在问题

带有花括号的表格的 gb4e 和宏存在问题

\CurlyBrackets在示例开头使用宏时gb4e,示例的排版不符合预期。有没有更好的方法来实现所需的输出?

平均能量损失

\documentclass{article}
\usepackage{gb4e}
\noautomath
\newcommand{\CurlyBrackets}[1]{%
    \vbox{%
        \hbox{$\left\{\begin{tabular}{@{}l@{}}#1\end{tabular}\right\}$}
    }
}%
\begin{document}

\begin{exe}
    \ex[\#]{\CurlyBrackets{A cat\\Seven dogs\\Mary} \CurlyBrackets{is\\are} widespread.}
\end{exe}

\end{document}

输出

在此处输入图片描述

期望输出

在此处输入图片描述

请注意,可以通过在示例开头放置一个不间断空格来实现所需的输出,但我不想这样做。

\ex[\#]{~\CurlyBrackets{A cat\\Seven dogs\\Mary} \CurlyBrackets{is\\are} widespread.}

答案1

\vbox没有开始一个段落:

\newcommand{\CurlyBrackets}[1]{%
    \leavevmode\vbox{
        \hbox{$\left\{\begin{tabular}{@{}l@{}}#1\end{tabular}\right\}$}
    }%
}

完整示例

\documentclass{article}
\usepackage{gb4e}
\noautomath

\newcommand{\CurlyBrackets}[1]{%
    \leavevmode\vbox{
        \hbox{$\left\{\begin{tabular}{@{}l@{}}#1\end{tabular}\right\}$}
    }%
}

\begin{document}

\begin{exe}
    \ex[\#]{\CurlyBrackets{A cat\\Seven dogs\\Mary} \CurlyBrackets{is\\are} widespread.}
\end{exe}

\end{document}

在此处输入图片描述

但是,下面的方法更简单,而且首先不会遇到这个问题:

\newcommand{\CurlyBrackets}[1]{%
 $\left\{\begin{tabular}{@{}l@{}}#1\end{tabular}\right\}$%
}

注意:当您将其封闭在\hbox本质上时,您会得到相同的东西,只是包裹在盒子里,公式的参考点将定义外部盒子的参考点。

该构造\vbox{\hbox{...}}几乎等同于\hbox{...}:你只是增加了一个装箱级别。有了\vbox最后的盒子(假设里面只是堆积起来的盒子)将定义参考点(一般情况稍微复杂一些)。

因此,这两个版本之间没有优势,也没有输出差异。

请注意,您有两个无用的%角色,但却缺少一个重要的角色。

答案2

我无法解释这种行为,但从的定义中去掉\vbox和可以得到正确的结果。\hbox\CurlyBrackets

\documentclass{article}
\usepackage{gb4e}
\noautomath
\newcommand{\CurlyBrackets}[1]{%
    $\left\{\begin{tabular}{@{}l@{}}#1\end{tabular}\right\}$
}%
\begin{document}
\begin{exe}
    \ex[\#]{\CurlyBrackets{A cat\\Seven dogs\\Mary} \CurlyBrackets{is\\are} widespread.}
\end{exe}
\end{document}

在此处输入图片描述

相关内容