我想给表格添加标签,但不将其放入表格环境中。来自这我知道这行不通,但那里提供的解决方案也行不通,因为如果我将表格(tabularx)放在表格环境中,表格不会继续在下一页显示,而是会给出一个 vbox 溢出错误...您如何解决此类问题?谢谢您的帮助!
这是我使用的脚本:
\documentclass{article}
\usepackage{booktabs, tabularx, array}
\newcolumntype{s}[1]{>{\hsize=#1\hsize}X}
\begin{document}
\begin{tabularx}{\linewidth}{
@{}
s{0.5}
s{2}
>{\raggedright\arraybackslash}s{0.5}
@{}
}
\label{tab:primer}
\caption[blabla]{blablabla}\\
\toprule
\textbf{Number} & \textbf{Sequence (5' $\rightarrow$ 3')} & \textbf{Application}\\[6pt]
\midrule
\endfirsthead
\toprule
\textbf{Number} & \textbf{Sequence (5' $\rightarrow$ 3')} & \textbf{Application}\\[6pt]
\midrule
\endhead
1 & 2 & 3\\
\end{tabularx}
\end{document}
答案1
即使添加了必要的文档前言,您的代码片段也无法编译,原因有两个:
- 你有一个混合长桌和表格型表格序言中的命令。标题是
longtable
,但列定义是tabularx
。 - 你把 放
label
错了地方。最好的地方是里面标题,即\caption[blabla]{blablabla\label{tab:primer}}\\
。
如果你要使用表格型,我建议你使用KOMA 脚本-class 并使用内部命令将标题设置在浮动之外,而不是标题-包裹。
如果你使用长桌,它有自己的标题命令(KOMA 脚本可以融入其中)。但是,如果没有其他包,则无法在 longtable 中使用 X-columns,例如三部分表或者板状的, 作为Zarko 建议我要补充的是板状的是长桌和表格型。您的代码将通过三处小改动进行编译:
- 代替表格型和板状的在你的文档的序言中
- 按照上述方法将 移到
\label
内。您应该在末尾更改为以便在标题后留出一些空间caption
\\
\\[10pt]
\begin{tabularx}
随之改变\begin{xltabular}
\end{tabularx}
\end{xltabular}
以下是您的示例scrartcl-class。此表将不是在页面边界处换行。如果你需要这个功能,@Zarko 已经为你提供了一个可行的解决方案:
\documentclass{scrartcl}
\usepackage{booktabs, array, tabularx}
\begin{document}
\captionaboveof{table}{blablabla%
\label{tab:primer}%
}
\newcolumntype{s}[1]{>{\hsize=#1\hsize}X}
\begin{tabularx}{\linewidth}{
@{}
s{0.5}
s{2}
>{\raggedright\arraybackslash}s{0.5}
@{}
}
\toprule
\textbf{Number} & \textbf{Sequence (5' $\rightarrow$ 3')} & \textbf{Application}\\[6pt]
\midrule
1 & 2 & 3\\
\end{tabularx}
\end{document}
答案2
我会使用,这是和xltabular
的完美结合。它允许在表格环境中使用标题:longtable
tabularx
\documentclass{article}
\usepackage[margin=25mm]{geometry}
\usepackage{ragged2e}
\usepackage{booktabs, makecell, xltabular}
\renewcommand\theadfont{\bfseries\small}
\newcolumntype{R}{>{\RaggedRight}X}
\newcolumntype{s}[1]{>{\hsize=#1\hsize}X}
\usepackage[skip=1ex]{caption}
\usepackage{lipsum}
\begin{document}
\begin{xltabular}{\linewidth}{@{} c
>{\hsize=1.6\hsize}R
>{\hsize=0.4\hsize}R
@{} }
\caption[blabla]{blablabla}
\label{tab:primer}
\addtocounter{table}{-1} \\
\toprule
\thead{Number}
& \thead{Sequence ($5'\rightarrow 3'$)}
& \thead{Application} \\
\midrule
\endfirsthead
\caption[]{blablabla (cont.)} \\
\thead{Number}
& \thead{Sequence ($5'\rightarrow 3'$)}
& \thead{Application} \\
\midrule
\addlinespace[-3pt]
\endhead
\midrule[0.8pt]
\multicolumn{3}{r}{continue on the next page}
\endfoot
\bottomrule
\endlastfoot
1 & 2 & 3 \\
\addlinespace
2 & \lipsum[1-2] & \\
\addlinespace
3 & \lipsum[3] & \\
\addlinespace
4 & \lipsum[4] & \\
\addlinespace
5 & \lipsum[5] & \\
\end{xltabular}
\end{document}