我计划在文档中使用以下编号示例(见下面的示例)。我希望编号位于示例的顶部,但对于带有图表的示例,编号位于中间。有没有简单的方法可以解决这个问题?
\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.}
应该这样做)。:)