使用该包array
,我想使用以下命令为我的表定义一个新的列类型
\newcolumntype{U}{>{\switchon}{l}<{\switchoff}}
但是,我想要使用的命令不是开关,而是一个简单的一元宏,例如\emph
或\textsc
,因此我必须定义\switchon
如下
{\switchon some text}
相当于
\macro{some text}
(如果必须这样,我可以忍受\switchon some text \switchoff
但我认为这没有必要。)
将开关转换为宏(例如\em
)\emph
非常简单,但我该如何反过来做呢?
编辑
看来,我还必须解决这个问题,它似乎不允许显式\switchoff
(因为我需要支持 X 列类型,tabularx
而且它似乎不能很好地与 一起工作newcolumntype
):
\renewcommand{\tabularxcolumn}[1]{>{\theswitch}m{#1}}
其中\theswitch
必须有一些\lowercase
和其他字体宏的(合理的)组合。\lowercase
没有“切换”版本(我认为)这让事情变得有点复杂。
答案1
您可以使用该collcell
包将单元格内容提供给宏:
\usepackage{collcell}
\newcolumntype{U}{>{\collectcell\macro}{l}<{\endcollectcell}}
然后\macro
将接收单元格内容作为唯一参数,即#1
。
如果宏应该简单\emph
,或者\textsc
您可以直接使用“切换”版本。对于\emph
它将是\em
,对于\textsc
它是\scshape
。参见例如http://www.cl.cam.ac.uk/~rf10/pstex/latexcommands.htm查找此类宏的表格。
答案2
定义如下宏
\def\switchon#1\switchoff{\foo{#1}}
也许。