如何在命令中使用数字和单位进行数学运算

如何在命令中使用数字和单位进行数学运算

我想创建一个 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}

相关内容