![(文本模式)表格中的多行花括号](https://linux22.com/image/419019/%EF%BC%88%E6%96%87%E6%9C%AC%E6%A8%A1%E5%BC%8F%EF%BC%89%E8%A1%A8%E6%A0%BC%E4%B8%AD%E7%9A%84%E5%A4%9A%E8%A1%8C%E8%8A%B1%E6%8B%AC%E5%8F%B7.png)
这是我的问题:
在所附的示例中,表格的第二列包含多行花括号,其高度与第五列的行数相匹配:如果第五列中有四个项目,则括号的高度将比有两个项目时更高,等等。
我找到了一个可以很好地完成这一点的代码示例,我们将其称为......运行文本,例如在表格外:
\documentclass[10pt]{extarticle}
\usepackage[a6paper,verbose]{geometry}
\begin{document}
I want to buy
$\left\{
\begin{tabular}{@{}l@{}}
tomatoes \\
onions \\
cucumbers
\end{tabular}
\right.
\end{document}
在过去的几个晚上,我一直试图将它集成到附加的 jpg 图像中的其他基本表格(五列,一点多行以垂直居中第一列的内容……等等)中,但到目前为止,我收到的只是来自 xelatex 的错误消息。
以下是众多失败案例中的一个:
\documentclass[10pt]{extarticle}
\usepackage[a5paper]{geometry}
\usepackage{multirow}
\begin{document}
\begin{center}
\begin{tabular}{ll}
& \\
\multirow{2}{*}{SOUPIÈRES.} & \multirow{2}{*}{ \left\{ \begin{tabular}{@{}l@{}}
2 & — & potage d'esturgeon à l'anglaise. \\
2 & — & consommé à la Colbert.
\end{tabular} \right.} \\
& \\
\end{tabular}
\end{center}
\end{document}
知道这段代码有什么问题以及如何修复它吗?
更新时间:8/11/20
感谢 Azeti 的帮助,这是我的代码的修复版本(删节版):
\documentclass[10pt]{extarticle}
\usepackage[a5paper]{geometry}
\usepackage{multirow}
\begin{document}
\begin{tabular}{ll}
& \\
& \begin{tabular}{|r|c|l|}
40 & — & assiettes d'huîtres et citrons
\end{tabular} \\
& \\
SOUPIÈRES. & $ \left\{ \begin{tabular}{|r|c|l|}
2 & — & potage d'esturgeon à l'anglaise. \\
2 & — & consommé à la Colbert.
\end{tabular} \right.$ \\
& \\
HORS-D'ŒUVRE. & $ \left\{ \begin{tabular}{|r|c|l|}
2 & — & quenelles de volaille à la Villeroi. \\
2 & — & rissoles de gibier.
\end{tabular} \right.$ \\
& \\
POISSONS. & $ \left\{ \begin{tabular}{|r|c|l|}
2 & — & turbot sauce aux anchois. \\
2 & — & rougets grillés.
\end{tabular} \right.$ \\
& \\
RELEVÉS. & $ \left\{ \begin{tabular}{|r|c|l|}
2 & — & pièce de bœuf à la nivernaise. \\
2 & — & jambon glacé au madère.
\end{tabular} \right.$ \\
& \\
ENTRÉES. & $ \left\{ \begin{tabular}{|r|c|l|}
2 & — & petits pâtés à la financière. \\
2 & — & chartreuse de perdreaux. \\
2 & — & queues de langoustes belle-vue. \\
2 & — & aspic de foie-gras.
\end{tabular} \right.$ \\
\end{tabular}
\end{document}
现在,表格的右半部分位于一堆独立的嵌套表格中,问题在于列不再对齐:即第 3 列中的数字、第 4 列中的破折号以及最右列中的两行到四行文本。如果有人有兴趣查看,此示例应该可以使用 xelatex 进行编译。
为了尝试修复这个问题,我将表格列规格从 rcl 更改为 p{length)... 等,以强制所有嵌套表格具有相同的宽度,这在一定程度上改善了布局,但由于某种原因,某些列仍然略微错位(我模糊地怀疑这可能是由于框过满等原因造成的)。
我没有发现任何可以强制 latex/xelatex 对齐同一页面中相同表格的列的东西,无论如何。
因此,看起来我可以选择伯纳德更具异国情调的包装,并取消了这些相当丑陋的支架,以我有限的经验来看...... 19 世纪法国的印刷工和排字工似乎过于喜欢这些支架了。
我并不屏住呼吸,但如果有人有进一步的建议......
更新时间:8/17/20
最终采用了 Bernard 的解决方案和 blkarray 包……比嵌套表更具可扩展性(例如,想象一下,有一个大的左花括号,有几个第二级较小的花括号,还有几个第三级花括号等)。不会发生吗?再想想:
答案1
可以通过简单的方式完成,使用该blkarray
包和一些补充包(booktabs, stackengine
):
\documentclass[10pt]{extarticle}
\usepackage[a5paper]{geometry}
\usepackage[T1]{fontenc}
\usepackage{ebgaramond}
\usepackage{multirow}
\usepackage{array, blkarray}
\usepackage{booktabs}
\usepackage[usestackEOL]{stackengine}
\begin{document}
\begin{center}
\setlength{\BAextrarowheight}{3pt}
\begin{blockarray}{l@{}l@{\enspace}l}
40 & & Assiettes d’huîtres et citrons \\
\addlinespace
\begin{block}{\Left{\scshape soupières. }{\{}l@{}l@{\enspace}l}%
2 & — & Potage d'esturgeon à l'Anglaise. \\
2 & — & Consommé à la Colbert. \\
\end{block}
\addlinespace
\begin{block}{\Left{\scshape\Centerstack{hors-\\d’œuvre.} }{\{}l@{}l@{\enspace}l}%
2 & — & Quenelles de volailles à la Villeroi. \\
2 & — & Rissoles de gibier. \\
\end{block}
\addlinespace
\begin{block}{\Left{\scshape Poissons. }{\{}l@{}l@{\enspace}l}%
2 & — & Turbot sauce aux anchois. \\
2 & — & Rougets grillés. \\
\end{block}
\addlinespace
\end{blockarray}
\end{center}
\end{document}
答案2
{NiceTabular}
这是使用 的解决方案nicematrix
。在该环境下,您可以构建表格,然后将括号放在所需的位置(至少需要 v 5.10)。
\documentclass[10pt]{extarticle}
\usepackage[a5paper]{geometry}
\usepackage{ebgaramond}
\usepackage{nicematrix}
\begin{document}
\begin{NiceTabular}{cr@{\;}l@{\;}l}
& 40 & & Assiettes d'huîtres et citrons \\[1ex]
\Block{2-1}{SOUPIÈRES.}
& 2 & — & Potage d'esturgeon à l'Anglaise. \\
& 2 & — & Consommé à la Colbert. \\[1ex]
\Block{2-1}{HORS-\\D'ŒUVRE.}
& 2 & — & Quenelles de volaille à la Villeroi. \\
& 2 & — & Rissoles de gibier. \\[1ex]
\Block{2-1}{POISSONS.}
& 2 & — & Turbot sauce aux anchois. \\
& 2 & — & Rougets grillés. \\[1ex]
\Block{2-1}{RELEVÉS.}
& 2 & — & Pièce de bœuf à la Nivernaise. \\
& 2 & — & Jambon glacé au madère. \\[1ex]
\Block{4-1}{ENTRÉES.}
& 2 & — & Petits pâtés à la Financière. \\
& 2 & — & Chartreuse de perdreaux. \\
& 2 & — & Queues de langoustes Belle-Vue. \\
& 2 & — & Aspic de foie-gras.
\CodeAfter
\SubMatrix\{{2-2}{3-2}.
\SubMatrix\{{4-2}{5-2}.
\SubMatrix\{{6-2}{7-2}.
\SubMatrix\{{8-2}{9-2}.
\SubMatrix\{{10-2}{13-2}.
\end{NiceTabular}
\end{document}
您需要多次编译(因为nicematrix
使用 PGF/Tikz 节点)。