我找到了相关问题删除列的最简单方法?,具有良好的回答对于常规 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}