这个问题是对我上一个问题:
是否可以使用管道在单元格内容的两侧打开和关闭括号?更具体地说,我想要定义以下列>
:<
\newcolumntype{P}{>{\leavevmode\kern-\tabcolsep\bfseries\parbox[t]{\hsize}{}X<{}}}
我想要一种可以自动包含单元格内容的列类型\parbox
。
附上一份简短的 MNWE:
\documentclass[table]{article}
\usepackage{lmodern, microtype, xcolor, tabularx, tabulary}
\begin{document}
\begin{tabularx}{0.5\columnwidth}{>{\raggedright\arraybackslash\leavevmode\kern-\tabcolsep\parbox[t]{\hsize}{ }X<{}}XX<{\leavevmode\kern-\tabcolsep\raggedleft\arraybackslash}}
\rowcolor{lightgray}All this testing is not so funny&test&test\\\hline
testing, testing and even more testing &test&test\\
\rowcolor{lightgray}I want to write a noce table in a simple way&test&test\\
\end{tabularx}
\end{document}
答案1
跨越括号>{}
和<{}
似乎比预期的要难;我想不出使用显式括号标记的方法。这里有一个使用 TeX 分隔参数的替代解决方案。\parbox
我们不直接使用,而是定义一个包装它的辅助宏\parboxx ... \endparboxx
。然后在新的列类型中使用此宏P
:
\documentclass[table]{article}
\usepackage{lmodern, microtype, xcolor, tabularx, tabulary}
\begin{document}
\def\parboxx#1\endparboxx{\parbox[t]{\hsize}{\raggedright#1}}
\newcolumntype{P}{>{\leavevmode\kern-\tabcolsep\bfseries\parboxx}X<{\endparboxx}}
\begin{tabularx}{0.5\columnwidth}{PXX<{\leavevmode\kern-\tabcolsep\raggedleft\arraybackslash}}
\rowcolor{lightgray}All this testing is not so funny&test&test\\\hline
testing, testing and even more testing &test&test\\
\rowcolor{lightgray}I want to write a noce table in a simple way&test&test\\
\end{tabularx}
\end{document}
输出