\begin{table}[h]
\centering
\caption{My Caption}
\label{my-label}\smallskip
\begin{tabular}{c|c c c}
\small{Text} & \small{Qgc} & \small{Qgc} & \small{Qgc} \\ & \small{{[}MVar{]}} & \small{{[}MVar{]}} & \small{{[}MVar{]}} \\ \hline
\small{A} & \small{-100} & \small{100.00} & \small{100} \\
\small{B} & \small{-100} & \small{100} & \small{100} \\
\small{C} & \small{-100} & \small{100} & \small{100} \\
\end{tabular}
\end{table}
答案1
只是桌子上的一些注释:
无需到处重复
\small
,只需small
在开头添加即可。此外,\small
它是一个开关而非命令,它没有{}
。第 2 列到第 4 列主要是数字数据,因此最好通过添加
>{$}c<{$}
其列规范来放入数学模式。相同的列标题
Qgc [MVar]
重复三次,因此就\multicolumn{3}{c}{Qgc [MVar]}
足够了。删除所有垂直规则并使用
booktabs
可以进一步提高可读性。最好让 LaTeX 决定放置表格的最佳位置,而不是强制使用此处
[h]
说明符。不过,在最终修订时,您可以在文本中上下移动表格代码部分以更改表格出现的位置。
。
\documentclass{article}
\usepackage{booktabs}
\begin{document}
\begin{table}[htbp]
\small\centering
\caption{My Caption}
\label{my-label}
\begin{tabular}{@{}c *3{>{$}c<{$}}@{}}
\toprule
Text & \multicolumn{3}{c}{Qgc [MVar]} \\ \cmidrule(r){1-1} \cmidrule(l){2-4}
A & -100 & 100.00 & 100 \\
B & -100 & 100 & 100 \\
C & -100 & 100 & 100 \\ \bottomrule
\end{tabular}
\end{table}
\end{document}
答案2
前面的一个评论:你没有\small
正确使用指令:它确实不是接受一个参数。因此,在表格单元格内,\small{Qgc}
与 的作用相同\small Qgc
。最好减少代码混乱,对吧?
其次,由于环境中每个单元格的内容tabular
都应该以 呈现\small
,因此最好简单地发出\small
指令前启动tabular
环境(并\small
从各个单元中删除指令)。
第三,如果要缩小tabular
环境内容,那么从排版角度来说,缩小相关内容也是个好主意\caption
。实现此目的的一种简单方法是加载包并在语句之前立即caption
发出适当的指令。\captionsetup
\caption
还请记住在数学模式下排版负数以生成印刷上适当的-
(数学模式“减号”)符号,而不是简单的破折号。
最后(在我看来,也可能是最不重要的),使用一个\multirow
语句(由包提供multirow
)将标签“文本”垂直居中。
\documentclass{article}
\usepackage{multirow}
\usepackage[skip=0.333\baselineskip]{caption}
\begin{document}
\begin{table}[h]
\centering
\caption{Original version}
\label{version:one}
\begin{tabular}{c|c c c}
\small{Text} & \small{Qgc} & \small{Qgc} & \small{Qgc} \\
& \small{{[}MVar{]}} & \small{{[}MVar{]}} & \small{{[}MVar{]}} \\
\hline
\small{A} & \small{-100} & \small{100.00} & \small{100} \\
\small{B} & \small{-100} & \small{100} & \small{100} \\
\small{C} & \small{-100} & \small{100} & \small{100} \\
\end{tabular}
\bigskip
\captionsetup{font=small}
\caption{Modified Version}
\label{version:two}
\small
\begin{tabular}{c|c c c}
\multirow{2}{*}{Text} & Qgc & Qgc & Qgc \\
& [MVar] & [MVar] & [MVar] \\
\hline
A & $-100$ & 100.00 & 100 \\
B & $-100$ & 100 & 100 \\
C & $-100$ & 100 & 100 \\
\end{tabular}
\end{table}
\end{document}
答案3
一种没有多行也没有多列但有列的解决方案m
。
第二个表处理其他列必须是另一种类型的情况(在这种情况下使用十进制对齐,请注意包S
的列中的“-100”中的正确符号siunitx
)使用\parbox
以允许在标题中换行。
还要注意,在这种情况下,列宽可能是由于宽度\parbox
,或者是由于小数点前/后数字保留的空间(示例的情况)。
\documentclass{article}
\usepackage{array,siunitx,booktabs}
\newcolumntype{T}{>{\centering\arraybackslash}m{3em}}
\newcolumntype{U}{S[table-format=4.2]}
\setlength{\belowcaptionskip}{1em}
\begin{document}
\begin{table}
\centering
\caption{My Caption}
\label{my-label}
\small
\begin{tabular}{TTTT}\toprule
Text & Qgc [MVar] & Qgc [MVar] & Qgc [MVar] \\\midrule
A & -100 & 100.00 & 100\\
B & -100 & 100 & 100\\
C & -100 & 100 & 100\\\bottomrule
\end{tabular}
\caption{My Caption}
\begin{tabular}{TUUU}\toprule
Text &
\parbox{3em}{\centering Qgc [MVar]} &
\parbox{3em}{\centering Qgc [MVar]} &
\parbox{3em}{\centering Qgc [MVar]}\\\midrule
A & -100 & 100.00 & 100\\
B & -100 & 10 & 100\\
C & -100 & 1.0 & 100\\\bottomrule
\end{tabular}
\end{table}
\end{document}
答案4
移动Text
到 的位置\raisebox
,或使用\makecell
的默认位置(垂直/水平c
插入):
\documentclass{article}
\usepackage{booktabs,makecell}
\begin{document}
\begin{table}
\centering
\begin{tabular}{c c c c}
\toprule
\raisebox{-.5\normalbaselineskip}[0pt][0pt]{Text}
& Qgc & Qgc & Qgc \\
& [MVar] & [MVar] & [MVar] \\
\midrule
A & $-100$ & 100.00 & 100 \\
B & $-100$ & 100 & 100 \\
C & $-100$ & 100 & 100 \\
\bottomrule
\end{tabular}
\bigskip
\begin{tabular}{c c c c}
\toprule
Text & \makecell{Qgc \\{}[MVar]} & \makecell{Qgc \\{}[MVar]} & \makecell{Qgc \\{}[MVar]} \\
\midrule
A & $-100$ & 100.00 & 100 \\
B & $-100$ & 100 & 100 \\
C & $-100$ & 100 & 100 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}