我想创建一个 2 列宽的表格,可以更改每行各个单元格的宽度(以 5 毫米为增量)。
我的问题:
我正在尝试将长度 (5mm) 乘以参数数字。此外,我还需要从 18 中减去此参数,但我得到的只是错误。
我把我的意思写下来,希望大家清楚我想做什么。
\documentclass{article}
\newcommand{\tableLine}[3]{\multicolumn{#1}{|p{6*5mm}|}{#2} & \multicolumn{18-#1}{|p{(18-#1)*5mm}|}{#3}\\ \hline}
\begin{document}
\begin{tabular}{| *{18}{l|}}
\hline
\tableLine{6}{Left}{Right}
\end{tabular}
\end{document}
答案1
你不能把数字和维度的算术混为一谈。所以你需要在需要的地方使用\numexpr
和\dimexpr
。
\documentclass{article}
\newcommand{\tableLine}[3]{%
\multicolumn{#1}{ |p{#1\dimexpr5mm}| }{#2} &
\multicolumn{\numexpr18-#1}{ |p{\numexpr(18-#1)\dimexpr5mm}| }{#3} \\
\hline}
\begin{document}
\begin{tabular}{| *{18}{l|} }
\hline
\tableLine{6}{Left}{Right}
\end{tabular}
\end{document}
或者,下面是使用xfp
可以交替处理数字和维度:
\usepackage{xfp}
\newcommand{\tableLine}[3]{%
\multicolumn{#1}{ |p{\inteval{#1*5mm}}| }{#2} &
\multicolumn{\inteval{18-#1}}{ |p{\inteval{(18-#1)*5mm}}| }{#3} \\
\hline}