我想要在同一行中有两个表。我使用figure
环境插入它们,然后使用 minipages,在每个 minipage 中我包含一个表。
问题是它不允许我在表格中添加标题。
这是我的代码:
\begin{figure}[h]
\begin{minipage}{0.5\columnwidth}
\begin{table}
\caption{Datos medidos para $L_1$.}
\label{1L1}
\begin{tabular}{|c|c|c|c|}
\hline
n& $S_o$ [cm]& $S_i$ [cm]& $y_i$ [cm]\\
& $\pm0.05$ cm& $\pm0.05$ cm& $\pm0.05$ cm\\
\hline
1& 10.0& 56.7& 17.8\\
\hline
2& 12.0& 36.7& 10.7\\
\hline
\end{tabular}
\end{table}
\end{minipage}
\begin{minipage}
.....
\end{minipage}
\end{figure}
它向我显示了错误:Not outer in par mode \caption
如果我退休\begin{table}
,\end{table}
它编译得很好,但标题写着图 #。我希望它是表 #......
答案1
不要将table
环境嵌套在另一个浮动环境(例如figure
环境)中。相反,使用单个table
环境来包裹两个minipage
环境,每个环境包含一个tabular
环境加\caption
和\label
指令。
此外,请考虑让表格看起来更加开放,比如省略所有垂直条并减少水平条的数量。
\documentclass{article}
\usepackage{booktabs}
\begin{document}
\begin{table}[h]
\small
\begin{minipage}{0.48\textwidth}
\centering
\caption{Datos medidos para $L_1$.}
\label{1L1}
\begin{tabular}{@{}l ccc@{}}
\toprule
n& $S_o$ [cm]& $S_i$ [cm]& $y_i$ [cm]\\
& $\pm0.05$ cm& $\pm0.05$ cm& $\pm0.05$ cm\\
\midrule
1& 10.0& 56.7& 17.8\\
2& 12.0& 36.7& 10.7\\
\bottomrule
\end{tabular}
\end{minipage}\hfill % maximize space between the minipages
\begin{minipage}{0.48\textwidth}
\centering
\caption{Datos medidos para $L_2$.}
\label{2L2}
\begin{tabular}{@{}l ccc@{}}
\toprule
n& $S_o$ [cm]& $S_i$ [cm]& $y_i$ [cm]\\
& $\pm0.05$ cm& $\pm0.05$ cm& $\pm0.05$ cm\\
\midrule
1& 10.0& 56.7& 17.8\\
2& 12.0& 36.7& 10.7\\
\bottomrule
\end{tabular}
\end{minipage}
\end{table}
\end{document}
答案2
像 @Mico 一样,我会使用booktabs
, 和floatrow
,这样做是为了并排放置浮动元素,并且标题和表格之间的间距比默认值更好。我还使用makecell
, 对前两行进行分组,因为它们在语义上是关联的。这会产生更短的代码:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{booktabs, floatrow, makecell}
\floatsetup{floatrowsep=qquad}
\begin{document}
\begin{table}[h]
\small\centering
\begin{floatrow}
\ttabbox{ \caption{Datos medidos para $L_1$.} \label{1L1}}
{\begin{tabular}{@{}l ccc@{}}
\toprule
\thead{n}& \thead{ $S_o$ [cm]\\ $\pm0.05$ cm}& \thead{$S_i$ [cm]\\ $\pm0.05$ cm}& \thead{$y_i$ [cm]\\ $\pm0.05$ cm}\\
\midrule
1& 10.0& 56.7& 17.8\\
2& 12.0& 36.7& 10.7\\
\bottomrule
\end{tabular}}
\ttabbox{ \caption{Datos medidos para $L_2$.} \label{2L2}}
{\begin{tabular}{@{}l ccc@{}}
\toprule
\thead{n}& \thead{ $S_o$ [cm]\\ $\pm0.05$ cm}& \thead{$S_i$ [cm]\\ $\pm0.05$ cm}& \thead{$y_i$ [cm]\\ $\pm0.05$ cm}\\
\midrule
1& 10.0& 56.7& 17.8\\
2& 12.0& 36.7& 10.7\\
\bottomrule
\end{tabular}}
\end{floatrow}
\end{table}
\end{document}
答案3
我猜,问题在于,您想floating
在另一个floating
环境中使用环境(图中的表格)。如果您删除\begin{table}
... ,\end{table}
它可以解决错误,但\caption{}
将成为 的一部分figure
。解决您的问题的廉价方法是将字符串“Figure”重命名为“Table”:
\renewcommand{\figurename}{Table}
唯一的弱点是,这个“假表格标签”将被视为图形标签(在图形列表中,在表格列表中等......)。
如果您想在文档中执行此技巧一次,则必须\figurename
通过存储它来恢复。
这是我的完整代码:
\documentclass{article}
\usepackage[margin=2cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\begin{document}
\let\OldFigurename\figurename %% store the original 'Figure'
\renewcommand{\figurename}{Table} %% overwrite 'Figure' with 'Table'
\begin{figure}[h]
\begin{minipage}{0.5\columnwidth}
\caption{Datos medidos para $L_1$.}
\label{1L1}
\begin{tabular}{|c|c|c|c|}
\hline
n& $S_o$ [cm]& $S_i$ [cm]& $y_i$ [cm]\\
& $\pm0.05$ cm& $\pm0.05$ cm& $\pm0.05$ cm\\
\hline
1& 10.0& 56.7& 17.8\\
\hline
2& 12.0& 36.7& 10.7\\
\hline
\end{tabular}
\end{minipage}
\begin{minipage}{0.5\columnwidth}
\caption{Datos medidos para $L_1$.}
\label{1L1}
\begin{tabular}{|c|c|c|c|}
\hline
n& $S_o$ [cm]& $S_i$ [cm]& $y_i$ [cm]\\
& $\pm0.05$ cm& $\pm0.05$ cm& $\pm0.05$ cm\\
\hline
1& 10.0& 56.7& 17.8\\
\hline
2& 12.0& 36.7& 10.7\\
\hline
\end{tabular}
\end{minipage}
\end{figure}
\renewcommand{\figurename}{\OldFigurename} %% restore 'Figure'
\begin{figure}
\caption{Datos medidos para $L_1$.}
\label{1L1}
\begin{tabular}{|c|c|c|c|}
\hline
n& $S_o$ [cm]& $S_i$ [cm]& $y_i$ [cm]\\
& $\pm0.05$ cm& $\pm0.05$ cm& $\pm0.05$ cm\\
\hline
1& 10.0& 56.7& 17.8\\
\hline
2& 12.0& 36.7& 10.7\\
\hline
\end{tabular}
\end{figure}
\end{document}