有没有办法制作类似表格的东西,这样我们在循环中将每一列放在一行中,然后以自定义格式呈现它们。像这样
\begin{custom_tabular}
l1c1 & l1c2 & l1c3 \\
l2c1 & l2c2 & l2c3
\end{custom_tabular}
并以自定义格式呈现元素,例如
\textbf{l1c1}: l1c2$^{l1c3}$
针对所有行。预期输出:
答案1
你可以这样做包裹collcell
它允许您将每列的条目传递给命令以进行进一步处理:
下面我定义了两种新的列类型。H
列类型用于标题列,E
列类型用于指数列。中间列只是一个普通的l
,但带有一个,@{}
以消除此列与包含指数的后续列之间的列分隔。
参考:
我之前的一个回答在表格中自定义“单元格环境”还显示:
如何使用包裹
array
,它肯定可以容纳标题列\newcolumntype{H}{>{\bfseries}l<{:}}%
但不确定如何让上标列起作用。
一种不需要任何附加包的方法,通过定义宏来处理每一行。但是,这需要更改表的每一行。
代码:
\documentclass{article}
\usepackage{collcell}
\newcommand{\HeaderColumn}[1]{\textbf{#1:}}
\newcommand{\ExponentColumn}[1]{${}^{#1}$}%
\newcolumntype{H}{>{\collectcell\HeaderColumn}{l}<{\endcollectcell}}
\newcolumntype{E}{>{\collectcell\ExponentColumn}{l}<{\endcollectcell}}
\begin{document}
\begin{tabular}{H l@{} E}
l1c1 & l1c2 & l1c3 \\
l2c1 & l2c2 & l2c3
\end{tabular}
\end{document}
答案2
这正是\halign
TeX 原语所做的。
\halign{{\bf#\unskip}: &#\unskip&$^{#}$\cr
l1c1 & l1c2 & l1c3 \cr
l2c1 & l2c2 & l2c3 \cr
}