我正在创建表格,但我希望标题与表格宽度相同。我无法使用threeparttable
和minipage
环境,因为我的大学的标准模板不允许这样做。我需要在tabular
环境中使用一些东西。
\begin{table}[h]
\begin{center}
\caption{Exemplo Exemplo Exemplo Exemplo Exemplo Exemplo Exemplo Exemplo }
\renewcommand\tabcolsep{3pt}
\begin{tabular}{c|c|c|c|c|c}
\hline
1 & 1 & 2 & 3 & 4 & 5 \\ \hline
2 & Text Text & Text Text & Text Text & Text Text & Text Text \\
3 & Text Text & Text Text & Text Text & Text Text & Text Text \\ \hline
\end{tabular}%
\end{center}
\end{table}
我不想手动指定宽度,因为我有很多表格。我需要一些命令来\changecaptionwidth
自动\captionwidth
使用表格宽度。这可能吗?
答案1
我确信您对要求有误解,minipage
这是一个核心 latex 环境,如果允许您使用 latex,那么您就可以使用。同样,如果允许您使用此处发布的答案中的宏,那么即使由于某种原因您无法加载文件,minipage
您也可以使用从中复制的宏。threeparttable
然而,它足够简单,可以满足要求,只需测量表格并将标题设置为该宽度。
\documentclass{article}
\newbox\tblbox
\begin{document}
\begin{table}[htp]% never use [h]
\centering % not \begin{center} in floats
\renewcommand\tabcolsep{3pt}
\sbox\tblbox{\begin{tabular}{c|c|c|c|c|c}
\hline
1 & 1 & 2 & 3 & 4 & 5 \\ \hline
2 & Text Text & Text Text & Text Text & Text Text & Text Text \\
3 & Text Text & Text Text & Text Text & Text Text & Text Text \\ \hline
\end{tabular}}%
% \end{center}
\parbox{\wd\tblbox}{\centering
\caption{Exemplo Exemplo Exemplo Exemplo Exemplo Exemplo Exemplo Exemplo }
\smallskip
\usebox\tblbox
}
\end{table}
\end{document}
答案2
\documentclass{article}
\usepackage{caption}
\captionsetup{width=.75\textwidth}
\begin{document}
\begin{table}[h]
\begin{center}
\caption{Exemplo Exemplo Exemplo Exemplo Exemplo Exemplo Exemplo Exemplo }
\renewcommand\tabcolsep{3pt}
\begin{tabular}{c|c|c|c|c|c}
\hline
1 & 1 & 2 & 3 & 4 & 5 \\ \hline
2 & Text Text & Text Text & Text Text & Text Text & Text Text \\
3 & Text Text & Text Text & Text Text & Text Text & Text Text \\ \hline
\end{tabular}%
\end{center}
\end{table}
\end{document}
答案3
既然您可以使用tabular
,我认为使用tabularx
也不是问题。您想为设置任何合适的总宽度tabularx
,就像.8\textwidth
我下面所做的那样。然后,标题只不过是 tabularx 中的一行。该行只有一个单元格,就像p{\dimexpr.8\textwidth-\tabcolsep}
自动换行一样。
\documentclass[10pt,a4paper]{article}
\usepackage{tabularx}
\begin{document}
\begin{table}[!htbp]
\centering
\renewcommand\tabcolsep{3pt}
\begin{tabularx}{.8\textwidth}{c*5{|X}}
\multicolumn{6}{p{\dimexpr.8\textwidth-\tabcolsep}}{\caption{Exemplo Exemplo Exemplo Exemplo Exemplo Exemplo Exemplo Exemplo}}\\[-.5\normalbaselineskip]
\hline
1 & 1 & 2 & 3 & 4 & 5 \\ \hline
2 & Text Text & Text Text & Text Text & Text Text & Text Text \\
3 & Text Text & Text Text & Text Text & Text Text & Text Text \\ \hline
\end{tabularx}%
\end{table}
\end{document}
答案4
如果您被允许加载该floatrow
包,它会定义一个\ttabbox
命令,该命令默认将标题宽度设置为表格宽度(类似地,它有一个ffigbox
用于图形的命令):
\documentclass{article}
\usepackage{floatrow}
\begin{document}
\begin{table}[htp]%
\centering %
\ttabbox{\begin{tabular}{c|c|c|c|c|c}
\hline
1 & 1 & 2 & 3 & 4 & 5 \\ \hline
2 & Text Text & Text Text & Text Text & Text Text & Text Text \\
3 & Text Text & Text Text & Text Text & Text Text & Text Text \\ \hline
\end{tabular}}%
{\caption{Exemplo Exemplo Exemplo Exemplo Exemplo Exemplo Exemplo Exemplo }}
\end{table}
\end{document}