我尝试使用 显示表格的行号lineno
,即edtable
。表格使用 设置threeparttable
,行号工作正常,但包含标题时编译失败。显示的错误消息是you can't use \hrule here except with leaders
。我使用caption
包,但使用 KOMA 标题时编译也会失败。MWE 说明了这个问题。
\documentclass{scrartcl}
\usepackage{threeparttable}
\usepackage{caption}
\usepackage[edtable]{lineno}
% That's the definition of caption@hrule from caption3.sty
% Redefine something here?
% \makeatletter
% \renewcommand*\caption@hrule{\hrule\@height\z@}
% \makeatother
\begin{document}
\begin{table}\centering
\begin{threeparttable}
\caption{A simple table}
\resetlinenumber[1]
\begin{edtable}{tabular}{l*{3}{c}}
& \multicolumn{1}{c}{(1)} & \multicolumn{1}{c}{(2)} & \multicolumn{1}{c}{(3)} \\
Variable 1 & 1.85 & 0.92 & 1.11 \\
& (0.34) & (0.24) & (0.14) \\
\end{edtable}
\end{threeparttable}
\end{table}
\end{document}
答案1
经过一些头痛之后:
\documentclass{scrartcl}
\usepackage[edtable]{lineno}
\usepackage{caption}
\usepackage{threeparttable}
\usepackage{xpatch}
\makeatletter
\newenvironment{etabular}
{\resetlinenumber[1]\let\@centercr\relax\edtable{tabular}}
{\endedtable}
\newenvironment{etabular*}
{\resetlinenumber[1]\let\@centercr\relax\edtable{tabular*}}
{\endedtable}
\catcode`\*=11
\xpatchcmd{\threeparttable}
{\TPT@hookarg{tabularx}}
{\TPT@hookarg{tabularx}\TPT@hookin{etabular}\TPT@hookarg{etabular*}}
{}{}
\catcode`\*=12
\makeatother
\begin{document}
\begin{table}\centering
\begin{threeparttable}[b]
\caption{A simple table}
\begin{etabular}{l*{3}{c}}
& \multicolumn{1}{c}{(1)} & \multicolumn{1}{c}{(2)} & \multicolumn{1}{c}{(3)} \\
Variable 1 & 1.85\tnote{1} & 0.92 & 1.11 \\
& (0.34) & (0.24) & (0.14) \\
\end{etabular}
\begin{tablenotes}
\item[1] A note
\end{tablenotes}
\end{threeparttable}
\end{table}
\end{document}
应该让环境
edtable
为人所知threeparttable
;但是我们不能将它传递给钩子,因为它
edtable
有一个可选参数,所以我对它使用了一个“包装器”;该命令
\resetlinenumber
在 中是不允许的threeparttable
,所以我在新环境中将其隐藏;发出
\@centercr
的会edtable
导致臭名昭著的“可能缺失\item
”错误,因此我将其中和;环境
\threeparttable
已修补,使得etabular
了解环境(参见这个答案)。
etabular*
对内部调用 的环境也做了类似的修补\begin{edtable}{tabular*}
。在这种情况下,必须使用\TPT@hookarg
而不是\TPT@hookin
,就像 for 一样tabular*
。