\documentclass[pdflatex]{sn-jnl}
\usepackage{amsmath}
\title[Article Title]{Article Title}
\begin{document}
\maketitle
\begin{table}[htb]
\caption{Title}
\label{tab24022314}
\setlength{\tabcolsep}{1pt}
\begin{tabular}{|c|c|}
\hline
a & b \\
c & d \\
\hline
\end{tabular}
\begin{tablenotes}
\item The conditions
\end{tablenotes}
\end{table}
\end{document}
这才是一个正确用法。你没看 sn-jnl.cls
文件,1324行已经有 \usepackage{threeparttable}
了,从1332行开始又重新定义了 table
环境,重定义里用了 threeparttable
@u7867 我来补充点信息吧..
首先你的mwe.tex
中:
% line 13
\begin{table}[htb]
\caption{Title} \label{tab24022314}
\begin{threeparttable}%[htb]
\setlength{\tabcolsep}{1pt}
\begin{tabular}{|c|c|}}%<-多了一个「}」
\hline
a & b \\
c & d \\
\hline
\end{tabular}
\begin{tablenotes}
\item The conditions
\end{tablenotes}
\end{threeparttable}
\end{table}
我猜测你是在这里下载到的模板,在提问时,对于可公开获取的内容,理应贴出来下载链接,这样更方便保证来源的官方性.
从上述的页面可以下载到:
sn-article.tex
文件:sn-article.texuser-manual
!!!同时熟悉模板给的示例问题,并结合手册逐段做理解...我假定你也不想去读Osvert Wang说的源码sn-jnl.cls
文件...
编译你的代码可以得到如下错误:
! Package threeparttable Error: Illegal nested threeparttable environments.
See the threeparttable package documentation for explanation.
Type H <return> for immediate help.
...
l.12 \setlength
{\tabcolsep}{1pt}
?
什么是nested threeparttable environments
呢?
你这里是table
内嵌threeparttable
再内嵌tabular
.
事实上此时table
和threeparttable
都提供了浮动环境来让tabular
浮动...
作为用户,应该始终熟读「User Manual」再使用!!!
其中的7.3节告诉了正确的使用方式,和啸行老师提到的一致:
再在上面的示例中找对应的用法,此时已经自动实现了三线表:
作为用户,如果仔细阅读过「User Manual」和「示例代码」,其实是不会做出手动调用threeparttable
并作神必嵌套这件事的...
你没看sn-jnl.cls
文件,1324行已经有\usepackage{threeparttable}
了,从1332行开始又重新定义了 table 环境,重定义里用了threeparttable
% sn-jnl.cls Line 1323~1350
\usepackage[figuresright]{rotating}%
\usepackage{threeparttable}
\let\tableorg\table%
\let\endtableorg\endtable%
\let\sidewaystableorg\sidewaystable%
\let\endsidewaystableorg\endsidewaystable%
\renewenvironment{table}[1][]%
{\begin{tableorg}[#1]%
\begin{center}
\begin{threeparttable}
\tablebodyfont%
\renewcommand\footnotetext[2][]{{\removelastskip\vskip3pt%
\let\tablebodyfont\tablefootnotefont%
\hskip0pt\if!##1!\else{\smash{$^{##1}$}}\fi##2\par}}%
}{\end{threeparttable}\end{center}\end{tableorg}}
\renewenvironment{sidewaystable}[1][]%
{\begin{sidewaystableorg}[#1]%
\begin{center}
\begin{threeparttable}
\tablebodyfont%
\renewcommand\footnotetext[2][]{{\removelastskip\vskip3pt%
\let\tablebodyfont\tablefootnotefont%
\hskip0pt\if!##1!\else{\smash{$^{##1}$}}\fi##2\par}}%
}{\end{threeparttable}\end{center}\end{sidewaystableorg}}
所以"什么是nested threeparttable environments
呢?"
因为此时的table
内部已经是一个threeparttable
,所以你在table
内部用threeparttable
就是在嵌套threeparttable
环境...