为了将视觉外观与语义分离,我定义了一个新命令来设置描述参数的单词的样式:
\newcommand{\param}[1]{\texttt{#1}}
是否可以使用此命令自动换行表中的列?我正在寻找类似常见的
\newcolumntype{C}{ >{ \( }c<{ \) } }
仅使用我自己的命令,需要一对括号而不是圆括号
\newcolumntype{P}{ >{ \param\{ }l<{ \} }
显然括号不起作用,因为它们会弄乱\newcolumntype
定义。
我还希望能够从此行为中排除某个单元格,以便以不同的方式设置表头样式。siunitx
处理和S
类型列的方式类似。在那里,您可以通过将它们包装在 中来排除某个单元格{brackets}
。
我意识到在这种情况下,我可以通过将整个列切换为等宽字体来实现这一点
\newcolumntype{P}{ >{\tt}l }
并将标题切换为普通字体\normalfont{header}
。但这会将视觉呈现固定为等宽字体。我稍后可能会决定将\param
宏的外观更改为类似这样\newcommand{\param}[1]{Parameter \texttt{#1}}
,列类型不会自动适应。这首先违背了使用特殊列类型的目的。
示例表:
\documentclass{article}
\usepackage{booktabs,siunitx}
\newcolumntype{P}{ >{\tt}l }
\begin{document}
\begin{tabular}{PsS[table-figures-integer=4,table-figures-decimal=1]}
\toprule
{Parameter} & {Unit} & {Value} \\
\midrule
MIN\_RADIUS & \mm & 8.3 \\
PENALTY & - & 1000 \\
\bottomrule
\end{tabular}
\end{document}
答案1
你想使用collcell
。但是请注意,此技巧对或 之类的列{...}
不起作用。用作解决方法。P
S
s
\multicolumn{1}{l}{...}
\documentclass{article}
\usepackage{booktabs,siunitx,collcell}
\newcommand{\param}[1]{\texttt{#1}}
\newcolumntype{P}{ >{\collectcell\param}l<{\endcollectcell} }
\begin{document}
\begin{tabular}{PsS[table-format=4.1]}
\toprule
\multicolumn{1}{l}{Parameter} & {Unit} & {Value} \\
\midrule
MIN\_RADIUS & \mm & 8.3 \\
PENALTY & {--} & 1000 \\
\bottomrule
\end{tabular}
\bigskip
\renewcommand{\param}[1]{\textit{#1}}
\begin{tabular}{PsS[table-format=4.1]}
\toprule
\multicolumn{1}{l}{Parameter} & {Unit} & {Value} \\
\midrule
MIN\_RADIUS & \mm & 8.3 \\
PENALTY & {--} & 1000 \\
\bottomrule
\end{tabular}
\end{document}
第二个表已使用修改后的\param
宏进行排版,以显示它仅依赖于的当前定义\param
。