我的代码如下,
\documentclass{article}
\usepackage{amsmath, amssymb}
\usepackage{setspace}
\usepackage{ulem}
\usepackage{float} % fix the table
\usepackage{bold-extra}
\usepackage{amsmath,bm}
\usepackage[margin=1in]{geometry}
\usepackage{color}
\usepackage{amsmath,amsopn}
\usepackage{bbm}
\usepackage{import}
\usepackage{hyperref}
\usepackage[Sonny]{fncychap}
\usepackage{mathrsfs}
\usepackage{tikz,pgfplots}
\usepackage{listings}
\usepackage{fancyhdr}
\usepackage{color}
%\usepackage{breqn}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{epstopdf}
\usepackage[titletoc,toc,title]{appendix}
\usepackage{mathtools}
\begin{document}
\begin{table}
\begin{subtable}{\textwidth}
\centering
\label{tab mtl a ins5}
\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|c|c|}
\hline
$10^{-2}$ & 5373 & 4248 &3137 & 2029 & 996 & 651 & 488 & 455 & 481 & 575 & 659 &491 \\
& 378(m) & 299(m) &221(m) & 143(m) & 70(m) & 46(m) & 34(m) & 32(m) & 34(m) & 40(m) & 46(m) &35(m) \\\hline
$10^{-5}$ & - & - &93712 &59616 & 25353 & 9737 & 19597 & 37621& 55079 &72379 & 90438 &84164 \\
& & &6591(m) &4193(m) & 1783(m) & 685(m) & 1378(m) & 2646(m)& 3874(m) &5091(m) & 6361(m) &5920(m) \\\hline
$10^{-8}$ & - & - & - &- & - &34076 &69287 & - & - & - & - &-\\
& & & & & &2397(m) &4873(m) & & & & & \\\hline
\end{tabular}
\end{subtable}
\end{table}
\end{document}
就像下图这样,表格的这一行有两行长。所以我想在水平方向上缩短每个条目之间的空间。
先感谢您!
答案1
这是我的解决方案,使用默认边距,a4paper
不拆分或翻转表格(无论如何,我首先推荐这个):
\documentclass[a4paper]{article}
\usepackage{lipsum} % dummy text to see text width
\usepackage{tabularx}
\newcolumntype{Y}{>{\footnotesize\raggedleft\arraybackslash}X}
\setlength{\tabcolsep}{0pt}
\usepackage{booktabs}
\begin{document}
\lipsum[2]\bigskip
\noindent\begin{tabularx}{\textwidth}{YYYYYYYYYYYYY}
\toprule
$10^{-2}$ & 5373 & 4248 & 3137 & 2029 & 996 & 651 & 488 & 455 & 481 & 575 & 659 & 491 \\
(m) & 378 & 299 & 221 & 143 & 70 & 46 & 34 & 32 & 34 & 40 & 46 & 35 \\\midrule
$10^{-5}$ & --- & --- & 93712 & 59616 & 25353 & 9737 & 19597 & 37621 & 55079 & 72379 & 90438 & 84164 \\
(m) & & & 6591 & 4193 & 1783 & 685 & 1378 & 2646 & 3874 & 5091 & 6361 & 5920 \\\midrule
$10^{-8}$ & --- & --- & --- & --- & --- & 34076 & 69287 & --- & --- & --- & --- & ---\\
(m) & & & & & & 2397 & 4873 & & & & & \\\bottomrule
\end{tabularx}
\bigskip\lipsum[3]
\end{document}
编辑:按照要求,下一个是没有传说文本和标题。标准方法是\caption{}
在table
环境中使用,即浮动对象(或多或少,取决于选项)。如果您在任何情况下都想要标题而不是浮动表格,请参阅capt-of
或captionof
包。我还添加了一个标签,并带有一些关于放置位置和使用方法(交叉引用)的指示,因为它在问题中的位置不太好。
\documentclass[a4paper]{article}
\usepackage{tabularx}
\newcolumntype{Y}{>{\footnotesize\raggedleft\arraybackslash}X}
\setlength{\tabcolsep}{0pt}
\usepackage{booktabs} % for nice rules in tables
% \usepackage[colorlinks]{hyperref} % uncomment and compile twice to have a reference link
\begin{document}
\begin{table}[h] % change [h] to [htbp] for free float
\caption{Some explanatory caption}
\label{tab:longtable} % remark: use meaningful and simple labels
\begin{tabularx}{\textwidth}{YYYYYYYYYYYYY}
\toprule
$10^{-2}$ & 5373 & 4248 & 3137 & 2029 & 996 & 651 & 488 & 455 & 481 & 575 & 659 & 491 \\
(m) & 378 & 299 & 221 & 143 & 70 & 46 & 34 & 32 & 34 & 40 & 46 & 35 \\
\midrule
$10^{-5}$ & --- & --- & 93712 & 59616 & 25353 & 9737 & 19597 & 37621 & 55079 & 72379 & 90438 & 84164 \\
(m) & & & 6591 & 4193 & 1783 & 685 & 1378 & 2646 & 3874 & 5091 & 6361 & 5920 \\
\midrule
$10^{-8}$ & --- & --- & --- & --- & --- & 34076 & 69287 & --- & --- & --- & --- & ---\\
(m) & & & & & & 2397 & 4873 & & & & & \\
\bottomrule
\end{tabularx}
\end{table}
Some text with a reference to table \ref{tab:longtable}. This reference need the label inside \texttt{table}, always under the caption (\verb|\caption{}\label{}|) or inside the caption (e.g. \verb|\caption{\label{}}|).
\end{document}
答案2
您正在对相同的包重复多次调用,例如amsmath
。
对于难以在页面上容纳的表格,我采取的方法是从独立副本中导入它。
我将首先创建一个文件,出于此示例的目的,我将其命名为table_01.tex
:
\documentclass{standalone}
\begin{document}
\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|c|c|}
\hline
$10^{-2}$ & 5373 & 4248 & 3137 & 2029 & 996 & 651 & 488 & 455 & 481 & 575 & 659 & 491 \\
& 378(m) & 299(m) & 221(m) & 143(m) & 70(m) & 46(m) & 34(m) & 32(m) & 34(m) & 40(m) & 46(m) & 35(m) \\\hline
$10^{-5}$ & - & - & 93712 & 59616 & 25353 & 9737 & 19597 & 37621 & 55079 & 72379 & 90438 & 84164 \\
& & & 6591(m) & 4193(m) & 1783(m) & 685(m) & 1378(m) & 2646(m) & 3874(m) & 5091(m) & 6361(m) & 5920(m) \\\hline
$10^{-8}$ & - & - & - & - & - & 34076 & 69287 & - & - & - & - & - \\
& & & & & & 2397(m) & 4873(m) & & & & & \\\hline
\end{tabular}
\end{document}
使用 进行编译pdflatex
。
然后我将使用graphicx
包导入独立程序,如下所示
\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage{subcaption}
\usepackage{graphicx}
\begin{document}
\begin{table}
\begin{subtable}{\textwidth}
\centering
\label{tab mtl a ins5}
\includegraphics[width=\textwidth]{table_01}
\end{subtable}
\caption{my table}
\end{table}
\end{document}
这种方法存在缺点。即导入的图像中的字体大小将与文本主体中的字体大小不同。因此,这也许是最后的解决办法。
否则,如果这不是一个合适的方法,我建议将表分成两部分:
\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage{subcaption}
\usepackage{graphicx}
\begin{document}
\begin{table}
\begin{subtable}{\textwidth}
\centering
\begin{tabular}{|c|c|c|c|c|c|c|}
\hline
$10^{-2}$ & 5373 & 4248 & 3137 & 2029 & 996 & 651 \\
& 378(m) & 299(m) & 221(m) & 143(m) & 70(m) & 46(m) \\\hline
$10^{-5}$ & - & - & 93712 & 59616 & 25353 & 9737 \\
& & & 6591(m) & 4193(m) & 1783(m) & 685(m) \\\hline
$10^{-8}$ & - & - & - & - & - & 34076 \\
& & & & & & 2397(m) \\\hline
\hline
$10^{-2}$ & 488 & 455 & 481 & 575 & 659 & 491 \\
& 34(m) & 32(m) & 34(m) & 40(m) & 46(m) & 35(m) \\\hline
$10^{-5}$ & 19597 & 37621 & 55079 & 72379 & 90438 & 84164 \\
& 1378(m) & 2646(m) & 3874(m) & 5091(m) & 6361(m) & 5920(m) \\\hline
$10^{-8}$ & 69287 & - & - & - & - & - \\
& 4873(m) & & & & & \\\hline
\end{tabular}
\end{subtable}
\caption{my table}
\end{table}
\end{document}
您可以尝试使用该booktabs
包。即使您不使用该包,也可以考虑其建议,避免在表格中使用垂直线。效果会非常好:
\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage{subcaption}
\usepackage{booktabs}
\usepackage{graphicx}
\begin{document}
\begin{table}
\begin{subtable}{\textwidth}
\setlength{\tabcolsep}{1em}
\setlength{\doublerulesep}{1ex}
\centering
\begin{tabular}{ccccccc}
\toprule
$10^{-2}$ & 5373 & 4248 & 3137 & 2029 & 996 & 651 \\
& 378(m) & 299(m) & 221(m) & 143(m) & 70(m) & 46(m) \\\midrule
$10^{-5}$ & -- & -- & 93712 & 59616 & 25353 & 9737 \\
& & & 6591(m) & 4193(m) & 1783(m) & 685(m) \\\midrule
$10^{-8}$ & -- & -- & -- & -- & -- & 34076 \\
& & & & & & 2397(m) \\\midrule\midrule
$10^{-2}$ & 488 & 455 & 481 & 575 & 659 & 491 \\
& 34(m) & 32(m) & 34(m) & 40(m) & 46(m) & 35(m) \\\midrule
$10^{-5}$ & 19597 & 37621 & 55079 & 72379 & 90438 & 84164 \\
& 1378(m) & 2646(m) & 3874(m) & 5091(m) & 6361(m) & 5920(m) \\\midrule
$10^{-8}$ & 69287 & -- & -- & -- & -- & -- \\
& 4873(m) & & & & & \\\bottomrule
\end{tabular}
\end{subtable}
\caption{my table}
\end{table}
\end{document}
对于最后一个例子,我将破折号从-
改为--
。
另一个想法是创建一个新的列类型,您可以为其指定列宽,并将其内容水平和垂直居中。为此,您需要使用包array
。
\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage{subcaption}
\usepackage{booktabs}
\usepackage{array}
\usepackage{graphicx}
%% Define a new column type `M`
%% the \let\nl\\ allows you to explicitly insert new lines using \nl
%% \arraybackslash allows you to terminate the row with \\ even if the immediately preceding column is of type `M`
\newcolumntype{M}[1]{>{\centering\let\nl\\\arraybackslash}m{#1}}
\begin{document}
\begin{table}
\begin{subtable}{\textwidth}
\setlength{\tabcolsep}{1em}
\setlength{\doublerulesep}{1ex}
\centering
\begin{tabular}{m{1cm}*{6}{M{1.25cm}}}
\toprule
$10^{-2}$ & 5373\nl 378(m) & 4248\nl 299(m) & 3137\nl221(m) & 2029\nl 143(m) & 996\nl70(m) & 651\nl46(m) \\\midrule
$10^{-5}$ & -- & -- & 93712\nl6591(m) & 59616\nl4193(m) & 25353\nl1783(m) & 9737\nl685(m) \\\midrule
$10^{-8}$ & -- & -- & -- & -- & -- & 34076\nl 2397(m) \\\midrule\midrule
$10^{-2}$ & 488\nl 34(m) & 455\nl 32(m) & 481\nl 34(m) & 575\nl 40(m) & 659\nl 46(m) & 491\nl 35(m) \\\midrule
$10^{-5}$ & 19597\nl 1378(m) & 37621\nl 2646(m) & 55079\nl 3874(m) & 72379\nl 5091(m) & 90438\nl 6361(m) & 84164\nl 5920(m) \\\midrule
$10^{-8}$ & 69287\nl 4873(m) & -- & -- & -- & -- & -- \\\bottomrule
\end{tabular}
\end{subtable}
\caption{my table}
\end{table}
\end{document}
答案3
假设您有“信纸”纸(8.5“ x 11”)而不是 A4 纸和 1“边距,则\setlength\tabcolsep{3pt}
(默认为6pt
)和\footnotesize
(两个指令都应紧接着插入\begin{table}
)的组合将成功使表格适合文本块,根据上述假设,文本块的宽度为 6.5“。
您的表格看起来会像这样(最左侧和最右侧的垂直条表示文本块的边缘):
\setlength\tabcolsep{2pt}
和的组合\small
也能成功将表格放入文本块中:
您对列间空白与表格材料字体大小的偏好应该决定这种组合是否优于\setlength\tabcolsep{3pt}
/ \footnotesize
。
您确实应该考虑简化单元格中的材料。例如,即使您只是用 替换所有(m)
术语m
(即,如果您省略括号),您也会节省大量空间,甚至不必减小字体大小,同时仍允许稍微宽松的\setlength\tabcolsep{3pt}
设置,并且仍将表格放入文本块中: