将表格单元格与加号或减号对齐

将表格单元格与加号或减号对齐

我有一个看起来或多或少像这样的表格:

\documentclass{article}
\usepackage{array,booktabs}
\begin{document}
\begin{table}
\begin{tabular}{lrlrlrll}
    \toprule
    Examples & \multicolumn{2}{l}{value1} & \multicolumn{2}{l}{value2} & \multicolumn{3}{l}{value3 (+smth)} \\
    example1 &   1 & -1                   &  12 & +?                   &  12 & +? & (+123)                  \\
    example2 &  12 & +5                   & 123 & +?                   & 123 & +? & (+12)                   \\
    example3 & 123 & -10                  &   1 & +?                   &   1 & +? & (+1234)                 \\
    example4 &  23 & +123                 & 234 & +?                   & 234 & +? & (+23)                   \\
    example5 & 234 & +4                   &  23 & +?                   &  23 & +? & (+234)                  \\
    \bottomrule
\end{tabular}
\end{table}
\end{document}

它的渲染如下:

Examples   value1      value2    value3 (+smth)
example1     1  -1      12  +?    12  +?  (+123)
example2    12  +5     123  +?   123  +?  (+12)
example3   123  -10      1  +?     1  +?  (+1234)
example4    23  +123   234  +?   234  +?  (+23)
example5   234  +4      23  +?    23  +?  (+234)

这接近我想要的,但在+-符号之前有多余的空格,这既令人困惑,又难以适应页面。此外,由于+-的宽度不同(在显示的等宽输出中不可见),因此无法正确对齐。有没有办法去掉这些空格,让它看起来像下面这样?

Examples   value1    value2   value3 (+smth)
example1     1-1      12+?     12+?  (+123)
example2    12+5     123+?    123+?  (+12)
example3   123-10      1+?      1+?  (+1234)
example4    23+123   234+?    234+?  (+23)
example5   234+4      23+?     23+?  (+234)

我查看了对齐的示例@{},但由于有两个可能的对齐字符(+-),我无法使其工作。还有包,但我认为它也只适用于单个字符。

答案1

删除列间空格并使用数学模式

在此处输入图片描述

\documentclass{article}
\usepackage{array,booktabs}
\begin{document}
\begin{table}
\begin{tabular}{l*{3}{>{$}r<{$}@{}>{$}l<{$}}>{$}l<{$}}
    \toprule
    Examples & \multicolumn{2}{l}{value1} & \multicolumn{2}{l}{value2} & \multicolumn{3}{l}{value3 (+smth)} \\
    example1 &   1 & -1                   &  12 & +?                   &  12 & +? & (+123)                  \\
    example2 &  12 & +5                   & 123 & +?                   & 123 & +? & (+12)                   \\
    example3 & 123 & -10                  &   1 & +?                   &   1 & +? & (+1234)                 \\
    example4 &  23 & +123                 & 234 & +?                   & 234 & +? & (+23)                   \\
    example5 & 234 & +4                   &  23 & +?                   &  23 & +? & (+234)                  \\
    \bottomrule
\end{tabular}
\end{table}
\end{document}

答案2

您有三个复合列,其模式如下:number ± number,可以将其设置为@{}>{${}}c<{{}$}@{}。一种新的列类型对此很有用,请参见下文。我还将最后一列与前一列合并,使其与标题相似。

\documentclass{article}
\usepackage{array,booktabs}
\begin{document}

\begin{table}
\newcolumntype{C}{ @{}>{${}}c<{{}$}@{} }
\begin{tabular}{l *3{rCl} }
    \toprule
    Examples & \multicolumn{3}{c}{value1} & \multicolumn{3}{c}{value2} & \multicolumn{4}{c}{value3 (+smth)} \\
    example1 & 1   & - & 1                & 12  & + & ?                & 12  & + & ? (+123)               \\
    example2 & 12  & + & 5                & 123 & + & ?                & 123 & + & ? (+12)                \\
    example3 & 123 & - & 10               & 1   & + & ?                & 1   & + & ? (+1234)              \\
    example4 & 23  & + & 123              & 234 & + & ?                & 234 & + & ? (+23)                \\
    example5 & 234 & + & 4                & 23  & + & ?                & 23  & + & ? (+234)               \\ \bottomrule
\end{tabular}
\end{table}

\end{document}

在此处输入图片描述

相关内容