我可以从 siunitx 中隐藏 S 类型的表列吗?

我可以从 siunitx 中隐藏 S 类型的表列吗?

我找到了相关问题删除列的最简单方法?,具有良好的回答对于常规 c 类型列。但我的数据格式为 S 类型,来自希尼奇,形式为value \pm error。根据大批包中,c 是受支持的列类型之一,但 S 类型不是。以下是我尝试的 MWE:

\documentclass[a4paper]{article}
\usepackage{siunitx}
\usepackage{array}
\newcolumntype{H}{>{\setbox0=\hbox\bgroup}c<{\egroup}@{}} % hidden column for c
\newcolumntype{G}{>{\setbox0=\hbox\bgroup}S<{\egroup}@{}} % hidden column for S

\begin{document}

\fbox{
  \begin{tabular}{ccSc} % current format of my table, I want to hide the S column
    one & two & \text{S-type column} & three\\
    1 & 2 & 2 \pm 1 & 3
  \end{tabular}
}

\fbox{
  \begin{tabular}{ccHc} % column hide solution from the linked question
    one & two & hide & three\\
    1 & 2 & H & 3
  \end{tabular}
}

\fbox{
  \begin{tabular}{ccc} % intended result
    one & two & three\\
    1 & 2 &  3
  \end{tabular}
}
    
\end{document}

结果是,在第二个表格中,第三列被隐藏了。我想要实现的是隐藏第一个表格中的第三列。但如果我天真地{ccSc}用我的新 G 类型替换表格格式中的 S {ccGc},LaTeX 会抛出一个错误:

! Extra }, or forgotten \endgroup.
<template> \unskip \egroup 
                           \__siunitx_table_print: \relax \d@llarend \do@row...
l.14 }
      
? 

答案1

您可以添加要忽略的指令\pm

\documentclass[a4paper]{article}
\usepackage{siunitx}
\usepackage{array}
\newcolumntype{H}{>{\setbox0=\hbox\bgroup\let\pm\relax}c<{\egroup}@{}} % hidden column for c

\begin{document}

\begin{tabular}{ccS[table-format=1.0(1)]c}
one & two & \text{S-type column} & three\\
1 & 2 & 2 \pm 1 & 3
\end{tabular}

\begin{tabular}{ccHc}
one & two & \text{S-type column} & three\\
1 & 2 & 2 \pm 1 & 3
\end{tabular}

\end{document}

在此处输入图片描述

相关内容