我发现下面的代码几乎可以满足我的要求。但由于我不理解它,我不知道如何修改它以达到我的目的。下面的代码在表格中三个元素的集合的右侧生成一个括号,然后在后面跟着一个描述性句子。我想要的是左边有一个名称,后面跟着一个括号 {,在表格中只有两个元素的左边。你能告诉我如何修改这段代码来实现这个吗?我只需要这样的数组出现一次,而不是下面代码中给出的三次。
\documentclass[10pt]{report}
\topmargin -0.5in
\textheight 9.75in
\textwidth6.5in
\oddsidemargin 0in % sets the left margin
\usepackage{amsmath}
\usepackage{graphicx}
%\usepackage{epic}
%\usepackage{eepic}
\usepackage{Fancyheadings}
\usepackage{fancybox}
\pagestyle{fancy} % this suppresses page numbers
\setlength{\headrulewidth}{0pt}
\begin{document}
\newcommand\MyLBrace[2]{%
\left.\rule{0pt}{#1}\right\}\text{#2}}
\noindent\begin{tabular}{c@{}l}
\begin{tabular}{ll@{}}
Aardvark & Armenia \\
Elephant & Ethiopia \\
Platypus & Portugal \\
Zebra & Zimbabwe \\
text & text \\
text & text \\
text & text \\
\end{tabular}
&
$\begin{array}{l}
\MyLBrace{3ex}{things beginning with vowels} \\
\MyLBrace{3ex}{things beginning with consonants} \\
\MyLBrace{4.4ex}{things beginning and ending with t}
\end{array}$
\end{tabular}
\结束{文档}
答案1
下面删除了宏的依赖关系,并amsmath
tabular
并仅使用s 和s的构造array
来插入{
(或}
)。
array
通过设置\phantom
每个相应列中最宽的一行元素并使用垂直跳转,可以建立嵌套 s 的行之间的水平对齐\\[-\normalbaselineskip]
。
\documentclass{article}
\begin{document}
\noindent
\begin{tabular}{c@{}l}
$\left.\kern-\nulldelimiterspace
\begin{tabular}{@{}ll@{}}
Aardvark & Armenia \\
Elephant & Ethiopia \\
\phantom{Aardvark} & \phantom{Zimbabwe} \\[-\normalbaselineskip]% For horizontal alignment
\end{tabular}\right\}$ &
things beginning with vowels \\
$\left.\kern-\nulldelimiterspace
\begin{tabular}{@{}ll@{}}
Platypus & Portugal \\
Zebra & Zimbabwe \\
\phantom{Aardvark} & \phantom{Zimbabwe} \\[-\normalbaselineskip]% For horizontal alignment
\end{tabular}\right\}$ &
things beginning with consonants \\
$\left.\kern-\nulldelimiterspace
\begin{tabular}{@{}ll@{}}
text & text \\
text & text \\
text & text \\
\phantom{Aardvark} & \phantom{Zimbabwe} \\[-\normalbaselineskip]% For horizontal alignment
\end{tabular}\right\}$ &
things beginning and ending with t
\end{tabular}
\noindent
\begin{tabular}{r@{}c}
things beginning with vowels & $\left\{
\begin{tabular}{@{}ll@{}}
Aardvark & Armenia \\
Elephant & Ethiopia \\
\phantom{Aardvark} & \phantom{Zimbabwe} \\[-\normalbaselineskip]% For horizontal alignment
\end{tabular}\right.\kern-\nulldelimiterspace$ \\
things beginning with consonants & $\left\{
\begin{tabular}{@{}ll@{}}
Platypus & Portugal \\
Zebra & Zimbabwe \\
\phantom{Aardvark} & \phantom{Zimbabwe} \\[-\normalbaselineskip]% For horizontal alignment
\end{tabular}\right.\kern-\nulldelimiterspace$ \\
things beginning and ending with t & $\left\{
\begin{tabular}{@{}ll@{}}
text & text \\
text & text \\
text & text \\
\phantom{Aardvark} & \phantom{Zimbabwe} \\[-\normalbaselineskip]% For horizontal alignment
\end{tabular}\right.\kern-\nulldelimiterspace$
\end{tabular}
\end{document}
答案2
另一种选择是利用对幻像间距需求较少且具有较大括号的数学环境:
\begin{eqnarray*}
\left.
\begin{array}{ll}
\mbox{Aardvark} & \mbox{Armenia}\\
\mbox{Elephant} & \mbox{Ethiopia}
\end{array}
\right\} && \mbox{Things beginning with vowels} \\
\mbox{Things beginning with consonants:} && \left\{
\begin{array}{ll}
\mbox{Platypus} & \mbox{Portugal}\\
\mbox{Zebra} & \mbox{Zimbabwe}
\end{array}
\right.
\end{eqnarray*}
这利用了 mathmode 中分隔符的一些巧妙功能。分隔符(以\left
或\right
开头)的大小可容纳其中的文本。如果您只想要一个分隔符(左或右),则可以使用 将另一侧设为幻像分隔符.
。因此,例如,\left.
代码告诉 LaTeX 在左侧放置一个幻像分隔符,因此右侧括号将完成所有工作。
因此,您需要的是幻像分隔符,而不是所有的幻像间距,并将所有文本放入\mbox
环境中。
还请注意,这里使用 eqnarray 环境通过标记对齐间距&&
。您可以将其移动到行首或行末,或者只需使用带换行符的公式环境即可。
答案3
使用{NiceTabular}
ofnicematrix
及其内置命令\SubMatrix
。
\documentclass[10pt]{article}
\usepackage{nicematrix}
\begin{document}
\renewcommand{\arraystretch}{1.4}
\begin{NiceTabular}{lll}
Aardvark & Armenia & \Block{2-1}{things beginning with vowels} \\
Elephant & Ethiopia & \\
Platypus & Portugal & \Block{2-1}{things beginning with consonants} \\
Zebra & Zimbabwe & \\
text & text & \Block{3-1}{things beginning and ending with t} \\
text & text & \\
text & text & \\
\CodeAfter
\SubMatrix{.}{1-1}{2-2}{\}}
\SubMatrix{.}{3-1}{4-2}{\}}
\SubMatrix{.}{5-1}{7-2}{\}}
\end{NiceTabular}
\end{document}