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