我们想要编写一个程序\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}