当有上标脚注标记时,强制表格对齐表格中的值

当有上标脚注标记时,强制表格对齐表格中的值

我有一张包含一些数据的表格(右对齐),我想在表格底部为其中一条记录添加注释。但是,当我在记录旁边添加上标标记时,它会将值推到更左侧,导致右对齐丢失。

以下是 MWE:

\documentclass{article}
\usepackage{booktabs} 
\usepackage{multicol}
\begin{document}
\begin{table}
\centering
\caption{Test table}
\begin{tabular}{lrrr} \toprule
col 1 & col 2 & col 3 & col 4\\ \midrule
%
test 1 & 2 & 3$^\dagger$ & 4\\
test 2 & 6 & 7 & 8\\
%
\bottomrule
\multicolumn{4}{l}{\footnotesize$^\dagger$Some note goes here.}
\end{tabular}
\end{table}
\end{document}

制作:

在此处输入图片描述

有没有办法强制它按列中的值对齐?我能想到的唯一方法是放置一个左对齐的额外列来放置标记,但我想检查是否有更好的方法来做到这一点。

答案1

我建议您加载该threeparttable包并使用该包的\tnote指令和threeparttable环境tablenotes

在此处输入图片描述

\documentclass{article}
\usepackage{booktabs}
\usepackage[flushleft]{threeparttable}
\begin{document}

\begin{table}
\centering
\begin{threeparttable}

\caption{Test table}

\begin{tabular}{@{} lccc @{}} 
\toprule
col 1 & col 2 & col 3 & col 4 \\ 
\midrule
test 1 & 2 & 3\tnote{$\dagger$} & 4 \\
test 2 & 6 & 7 & 8 \\
\bottomrule
\end{tabular}

\smallskip\footnotessize
\begin{tablenotes}
\item[$\dagger$] Some note goes here.
\end{tablenotes}

\end{threeparttable}
\end{table}

\end{document}

答案2

该软件包nicematrix提供了一个带有自己的表格注释系统的环境{NiceTabular}。用户可以使用命令插入表格注释,\tabularnote就像在 中执行的操作一样\footnote

如果命令\tabularnote{...}恰好位于单元格的末尾(后面没有任何空格),则注释的标签将以重叠位置(向右)组成。以下是一个例子:

\documentclass{article}
\usepackage{booktabs}
\usepackage{nicematrix}
\usepackage{enumitem}
\usepackage{caption}

\begin{document}

\NiceMatrixOptions{ notes = { code-before = \footnotesize } }

\begin{table}
\centering
\caption{Test table}

\begin{NiceTabular}{@{} lccc @{}} 
\toprule
col 1 & col 2 & col 3 & col 4 \\ 
\midrule
test 1 & 2 & 3\tabularnote{First note.} & 4 \\
test 2 & 6\tabularnote{Second Note}& 7 & 8 \\
\bottomrule
\end{NiceTabular}
\end{table}

\end{document}

第一个代码的输出

改变数字的样式很容易。例如,用 1、2、3…… 代替 a、b、c……,也就是\alph\arabic

\documentclass{article}
\usepackage{booktabs}
\usepackage{nicematrix}
\usepackage{enumitem}
\usepackage{caption}

\begin{document}

\NiceMatrixOptions{ notes = { code-before = \footnotesize , style = \arabic{#1} } }

\begin{table}
\centering
\caption{Test table}

\begin{NiceTabular}{@{} lccc @{}} 
\toprule
col 1 & col 2 & col 3 & col 4 \\ 
\midrule
test 1 & 2 & 3\tabularnote{First note.} & 4 \\
test 2 & 6\tabularnote{Second Note}& 7 & 8 \\
\bottomrule
\end{NiceTabular}
\end{table}

\end{document}

第二段代码的输出

但是,用 †、‡、¶... 替换 a、b、c... 稍微复杂一些:

\documentclass{article}
\usepackage{booktabs}
\usepackage{nicematrix}
\usepackage{enumitem}
\usepackage{caption}
\usepackage{ifthen}

\begin{document}


\NewDocumentCommand{\Symbol}{m}
  {
    \ifthenelse{\value{#1}=0}
      {\relax}
      {\ifthenelse{\value{#1}=1}
         {$\dagger$}
         {\ifthenelse{\value{#1}=2}
            {$\ddagger$}
            {\ifthenselse{\value{#1}=3}
               {\P}
               {}}}}}

\NiceMatrixOptions { notes = { code-before = \footnotesize , style = \Symbol{#1} } }

\begin{table}
\centering
\caption{Test table}

\begin{NiceTabular}{@{} lccc @{}} 
\toprule
col 1 & col 2 & col 3 & col 4 \\ 
\midrule
test 1 & 2 & 3\tabularnote{First note.} & 4 \\
test 2 & 6\tabularnote{Second Note}& 7 & 8 \\
\bottomrule
\end{NiceTabular}
\end{table}

\end{document}

第三个代码的输出

相关内容