我希望将表格置于中央并且标题从表格的开始位置开始(参见所附屏幕截图中的红线)。
梅威瑟:
\documentclass[12pt,a4paper]{article}
\usepackage{float}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{table}[H]\centering
\caption{Q\&A} \label{tab:mzdcq19}
\begin{tabular*}{.8\linewidth}{ll}
Question&Answer\\\hline
1+1
&2\\
1+2
&3\\
\end{tabular*}
\end{table}
\lipsum[1]
\end{document}
答案1
为了实现列之间所需的分隔,需要@{\extracolsep{\fill}}
在两列之间插入一条指令。
相反,如果你这样做不是需要表格占据的宽度,0.8\textwidth
并且可以使用自然列宽,则不应该使用环境tabular*
>tabular
而是使用环境。
\documentclass[12pt,a4paper]{article}
\usepackage{float}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{table}[H]
\centering
\caption{OP's original form}
\begin{tabular*}{.8\linewidth}{ll}
Question&Answer\\\hline
1+1
&2\\
1+2
&3\\
\end{tabular*}
\vspace{5mm}
\caption{With \texttt{@\{\string\extracolsep\{\string\fill\}\}}}
\begin{tabular*}{.8\linewidth}{l@{\extracolsep{\fill}}l}
Question&Answer\\
\hline
1+1
&2\\
1+2
&3\\
\end{tabular*}
\vspace{5mm}
\caption{With \texttt{tabular} instead of \texttt{tabular*}}
\smallskip
\begin{tabular}{ll}
Question&Answer\\
\hline
1+1
&2\\
1+2
&3\\
\end{tabular}
\end{table}
\lipsum[1]
\end{document}
针对原始发帖人的后续评论的附录
事实证明,我最初的回答未能解决 OP 的目标。(这种失败可能是因为我被我认为@{\extracolsep{\fill}}
在某种tabular*
情况下不寻常且无法解释的指令缺失所困扰……)
虽然它可能的去利用threeparttable
环境来实现 OP 的目标,我认为这样做有点矫枉过正,因为主要能力该包的\tnote
宏和tablenotes
环境永远不会被使用。作为替代方案,为了避免不寻常的使用tabular*
,我建议 (a) 使用tabularx
环境,(b) 将标题和tabularx
环境嵌入minipage
宽度为 的中0.8\linewidth
,以及 (c) 使用包的功能caption
在 内左对齐标题minipage
。
\documentclass[12pt,a4paper]{article}
\usepackage{lipsum} % for filler text
\usepackage{tabularx,caption}
\begin{document}
\lipsum[1]
\begin{table}[ht!]
\captionsetup{singlelinecheck=false,skip=0.333\baselineskip}
\centering
\begin{minipage}{0.8\linewidth}
\caption{Q\&A} \label{tab:mzdcq19}
\begin{tabularx}{\textwidth}{@{}lX} % use 'X' for the 2nd column
Question&Answer\\ \hline
1+1 &2 \\
1+2 &3 \\
\end{tabularx}
\end{minipage}
\end{table}
\lipsum[1]
\end{document}
答案2
您可以使用 和 来实现这一点caption
:threeparttable
使用 键singlelinecheck=false
会生成一个从当前行开头开始的标题,就像一个普通段落;threeparttable
测量表格宽度,因此当前行与此宽度相对应。此外,如果您愿意,使用 键margin=\tabcolsep
,标题将从表格内容开始的位置开始:
\documentclass[12pt,a4paper]{article}
\usepackage{float, caption, threeparttable}
\usepackage{lipsum}
\begin{document}
\lipsum[11]
\begin{table}[H]
\centering
\begin{threeparttable}
\captionsetup{singlelinecheck=false, skip = 4pt}
\caption{Q\&A} \label{tab:mzdcq19}
\begin{tabular*}{.8\linewidth}{ll}
Question&Answer\\\hline
1+1
&2\\
1+2
&3\\
\end{tabular*}
\end{threeparttable}
\end{table}
\lipsum[11]
\begin{table}[H]
\centering
\begin{threeparttable}
\captionsetup{singlelinecheck=false, skip=4pt, margin=\tabcolsep}
\caption{Q\&A} \label{tab:mzdcq19}
\begin{tabular*}{.8\linewidth}{ll}
Question&Answer\\\hline
1+1
&2\\
1+2
&3\\
\end{tabular*}
\end{threeparttable}
\end{table}
\end{document}