在 minigloss 中的 \newcolumntype 中定义 SI 单位

在 minigloss 中的 \newcolumntype 中定义 SI 单位

我们想要编写一个程序\newenvironment{minigloss}。在这个 minigloss 中,我们想要制作一个包含三列的表格:参数、参数说明、单位。但是,我们不确定如何\si{}\newcolumntype最后一列中编写程序。我们希望列采用新环境的 si 单位,这样我们就不必\si在每个单独的 minigloss 中定义。

下面是我们的计算示例:

\newcolumntype{M}{>{$} l< {$}}

\newcolumntype{s}{>{$\si{\collectcell l <\endcollectcell$}}} %this does not work

\newenvironment{minigloss}
{\renewcommand{\arraystretch}{1.1}
    \tabularx{0.95\linewidth}{M >{\raggedright\arraybackslash}X s}%
}
{
    \endtabularx
}

\begin{flushright}
\begin{minigloss}
a & in meter & \m \\
b & in degree  & \m^3/\m/\s \\

\end{minigloss}
\end{flushright}

最终结果应如下所示:

在此处输入图片描述

答案1

您使用了错误的语法\collectcell,下面可以更正。此外,siunitx您不一定需要数学模式(但您可以添加它,只需使用注释行即可):

\documentclass[]{article}

\usepackage{tabularx}
\usepackage{array}
\usepackage{siunitx}
\usepackage{collcell}

\newcolumntype{M}{>{$} l< {$}}

%\newcolumntype{s}{>{$\collectcell\si}l<{\endcollectcell$}}%this works
\newcolumntype{s}{>{\collectcell\si}l<{\endcollectcell}}% math mode not necessary

\newenvironment{minigloss}
  {%
    \renewcommand{\arraystretch}{1.1}%
    \tabularx{0.95\linewidth}{M >{\raggedright\arraybackslash}X s}%
  }
  {%
    \endtabularx
  }

\begin{document}
\begin{flushright}
  \begin{minigloss}
    a & in meter & \m \\
    b & in degree  & \m^3/\m/\s \\
  \end{minigloss}
\end{flushright}
\end{document}

在此处输入图片描述

相关内容