对于公式环境中要使用的内容列表,我想创建堆叠在一起的框。我基本上想写
$$ A := "Box with lines like 'A is a number', 'A is bigger than 3',... " $$
我想到的是
\newcommand{\mybox}[2]{\stackrel{\fbox{$#1$}}{\fbox{$#2$}}}
但就我真正想要的而言,这简直糟透了。它只有两个盒子,而且它们甚至不接触。它们的长度取决于内容。它应该看起来更像一个架子。所有盒子的长度都应该合适(高度可能取决于内容)。此外,盒子的方向应该使得 := 位于垂直中心。但如果我想将我的构造用于两个以上的盒子,我必须做一些愚蠢的事情,例如
\mybox{statement 1}{\mybox{and statement 2}{statement 3}}
答案1
那么简单的表格怎么样?
\documentclass{article}
\usepackage{colonequals}
\begin{document}
\begin{equation}
A \colonequals
\begin{tabular}{|c|}
\hline
statement 1\\\hline
and statement 2\\\hline
statement 3\\\hline
\end{tabular}
\end{equation}
\end{document}
结果:
编辑:制作一个 n 元函数:
\documentclass{article}
\usepackage{colonequals}
\usepackage{kvsetkeys}
\makeatletter
\newcommand*{\boxes}[1]{%
\begingroup
\toks@={%
\begin{tabular}{|c|}%
\hline
}%
\comma@parse{#1}\box@entry
\the\toks@
\end{tabular}%
\endgroup
}
\newcommand*{\box@entry}[1]{%
\toks@=\expandafter{\the\toks@
#1\tabularnewline
\hline
}%
}
\makeatother
\begin{document}
\begin{equation}
A \colonequals
\boxes{
statement 1,
and statement 2,
{statement 3, 4 and 5},% comma needs to be protected by braces
another statement,
}
\end{equation}
\end{document}
结果:
表格内容首先写入令牌寄存器。这避免了单元格组和末尾空行的问题。
编辑:进一步阅读:
令牌注册者:Victor Eijkhout,TeX 按主题分类,第 14 章:代币列表, CTAN:info/texbytopic/TeXbyTopic.pdf
的软件包文档
kvsetkeys
,1.7 节:逗号分隔列表,CTAN:宏/latex/contrib/oberdiek/kvsetkeys.pdf