gb4e.sty 示例中数字的定位

gb4e.sty 示例中数字的定位

我计划在文档中使用以下编号示例(见下面的示例)。我希望编号位于示例的顶部,但对于带有图表的示例,编号位于中间。有没有简单的方法可以解决这个问题?

\documentclass[]{article}
\usepackage{tikz-qtree-compat}
\usepackage{tikz}
\usepackage{stmaryrd}
\usepackage{gb4e}

\begin{document}

\begin{exe}
\ex{Ann dances.}
\end{exe}

\begin{exe}
\ex
\begin{tikzpicture}[baseline=(current  bounding  box.center)]
\Tree [.S_0 [.NP [Bill ] ] [.VP [.V said ] [.NP \node(a){that}; ] ] ]
\begin{scope}[shift={(2in,0in)}] 
\Tree [.\node(b){S_1}; [.NP Ann ] [.VP dances ] ]
\end{scope}
\draw[->](\subtreeof{a}.0) .. controls +(west:0) and +(west:1) .. (b);
\end{tikzpicture}
\end{exe}


\begin{exe}
\ex
$\left\llbracket
\begin{array}{l}
\Tree [ .S [.NP [.N Ann ] ] [.VP [.V dances ] ] ]
\end{array}
\right\rrbracket$
\end{exe}

\end{document}

答案1

好吧,如果您能想象排版任何东西,那么几乎肯定可以用 TeX 完成。但是,找到一个优雅的解决方案来解决这个问题需要一点工作。所以我希望这是您希望看到的输出:

替代文本

以下是生成该列表的代码(它在代码中添加了 5 行,如箭头所示):

\documentclass{article}
\usepackage{tikz-qtree-compat}
\usepackage{tikz}
\usepackage{stmaryrd}
\usepackage{gb4e}

\usepackage{booktabs}                    % <----

\begin{document}

\begin{exe}
\ex{Ann dances.}
\end{exe}

\begin{exe}
\ex
\begin{tabular}[t]{l}\toprule[-12pt]     % <----
  \begin{tikzpicture}[baseline=(current  bounding  box.center)]
  \Tree [.S_0 [.NP [Bill ] ] [.VP [.V said ] [.NP \node(a){that}; ] ] ]
  \begin{scope}[shift={(2in,0in)}] 
  \Tree [.\node(b){S_1}; [.NP Ann ] [.VP dances ] ]
  \end{scope}
  \draw[->](\subtreeof{a}.0) .. controls +(west:0) and +(west:1) .. (b);
  \end{tikzpicture}
\\ \end{tabular}                         % <----
\end{exe}

\begin{exe}
\ex
\begin{tabular}[t]{l}\toprule[-12pt]     % <----
  $\left\llbracket
  \begin{array}{l}
  \Tree [ .S [.NP [.N Ann ] ] [.VP [.V dances ] ] ]
  \end{array}
  \right\rrbracket$
\\ \end{tabular}                         % <----
\end{exe}

\end{document}

解释:

因为exe是一个 gb4e 重新定义的列表,并且\ex是一个 gb4e 重新定义的\item,所以工作的第一部分涉及将每个对象(tikzpicture和数学集array)放入\begin{tabular}[t]{l}环境中,[t]指示tabular将其基线设置在顶部。

一切都很好,只是您需要\hline在环境中的某个地方发出一个来tabular促使其工作。这有两个原因:首先,您可能不想看到对象顶部出现难看的线条;其次,项目\ex编号现在垂直对齐到 的中间\hline,实际上比每个对象的顶部高出很多。不顺畅。

输入 booktabs 包。它提供了几个\hline替代品(包括\toprule我们使用的)。然而,最奇妙的是,你可以给它传递一个指定线条粗细的参数。因此,\toprule[0pt]有效地消除了视觉线。更奇妙的是,你可以给它传递一个负数,它的作用类似于负数,但没有这里不能添加的 \vspace问题。\vspace

瞧瞧。剩下要做的就是\toprule根据您的确切要求微调 的负厚度。哦,也许在“Ann dances”上加一点缩进,\ex使其与您的其他对象对齐(\ex{\quad Ann dances.}应该这样做)。:)

相关内容