
我發現下面的程式碼幾乎可以滿足我的要求。但由於我不理解它,我不知道如何改變它以達到我的目的。下面的程式碼在表中三個元素的集合的右邊產生一個大括號,然後是一個描述性句子。我想要的是在表中只有兩個元素的左邊有一個名稱,後面跟著一個大括號 { 。您能告訴我如何更改此程式碼來實現此目的嗎?我只需要出現一次這樣的數組,而不是下面程式碼中給出的三個。
\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*}
這利用了數學模式中分隔符號的一些巧妙功能。分隔符號(前面是\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}