我使用“elsarticle”类,我想创建一个表,但最后一列超出了表的边界。
\documentclass[review]{elsarticle}
\usepackage{graphicx}
\usepackage{tabularx,booktabs}
\begin{table*}
\caption{some words }
\label{table1}
\begin{tabularx}{\textwidth}{@{}l*{12}{C}c@{}}
\toprule
Datasets & a & b & c & d & e & f & g& h & i & j &k & l \\
\midrule
a & 0.7291 & 0.0.7499 & 0.7499 & 0.7326 & 0.7499 & 0.7499 & 0.4726 & 0.7499 & 0.7499 & 0.7499 & 0.7499 & 0.7499\\
\bottomrule
\end{tabularx}
\end{table*}
如何修复。
答案1
如果您的文档只有一列,那么可能的解决方案是将数字四舍五入为三位小数并使用\small
字体大小:
编辑:
- 在 MWE(最小工作示例)中使用
S
列(在\siunitx
添加到 MWE 的包中定义),这允许对单元格中的数字进行舍入。有关更多详细信息,\siunitx
您可以在其文档中找到,该文档是 LaTeX 安装的一部分,也可以在 CTAN 上找到,例如这里:
\documentclass[review]{elsarticle}
\usepackage{booktabs}
\usepackage{siunitx} % added package, used for S columns
%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\usepackage{lipsum}
\begin{document}
\begin{table}
\caption{some words}
\label{table1}
\small
\setlength\tabcolsep{0pt}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}
l
*{12}{S[round-mode=places,
round-precision=3,
table-format=1.4]} }
\toprule
Datasets
& {a} & {b} & {c} & {d} & {e} & {f} & {g} & {h} & {i} & {j} & {k} & {l} \\
\midrule
a & 0.7291 & 0.7499 & 0.7499 & 0.7326 & 0.7499 & 0.7499
& 0.4726 & 0.7499 & 0.7499 & 0.7499 & 0.7499 & 0.7499 \\
\bottomrule
\end{tabular}
\end{table}
\lipsum[1]
\end{document}
(红线表示页面布局)
- 如果您认为表格中的所有小数都必不可少,那么解决方案可能是使用更小的字体大小,并将
\footnotesize
第一列标题中的文本分成两行。在这种情况下,使用包是有意义的makecell
:
\documentclass[review]{elsarticle}
\usepackage{graphicx}
\usepackage{booktabs,
makecell} % added package
\usepackage{siunitx} % added package
\usepackage{lipsum}
\begin{document}
\begin{table}
\caption{some words}
\label{table1}
\footnotesize
\setlength\tabcolsep{0pt}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}
l
*{12}{S[table-format=1.4]} }
\toprule
\makecell[l]{Data\\[-2ex] sets}
& {a} & {b} & {c} & {d} & {e} & {f} & {g} & {h} & {i} & {j} & {k} & {l} \\
\midrule
a & 0.7291 & 0.7499 & 0.7499 & 0.7326 & 0.7499 & 0.7499
& 0.4726 & 0.7499 & 0.7499 & 0.7499 & 0.7499 & 0.7499 \\
\bottomrule
\end{tabular*}
\end{table}
\lipsum[1]
\end{document}
但是,在您的 MWE 中,您使用table*
浮点数,浮点数用于两列文档。在这种情况下,使用makecell
包是有意义的
\documentclass[review, twocolumn]{elsarticle}
\usepackage{graphicx}
\usepackage{tabularx,booktabs}
\usepackage{siunitx}
%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\usepackage{lipsum}
\begin{document}
\begin{table*}
\caption{some words}
\label{table1}
\setlength\tabcolsep{0pt}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} l*{12}{S[table-format=1.4]} }
\toprule
Datasets
& {a} & {b} & {c} & {d} & {e} & {f} & {g} & {h} & {i} & {j} & {k} & {l} \\
\midrule
a & 0.7291 & 0.7499 & 0.7499 & 0.7326 & 0.7499 & 0.7499
& 0.4726 & 0.7499 & 0.7499 & 0.7499 & 0.7499 & 0.7499 \\
\bottomrule
\end{tabular*}
\end{table*}
\lipsum
\end{document}