
\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
столбцами.
Вторая таблица рассматривает случай, когда другие столбцы должны быть другого типа (с выравниванием по десятичному знаку в этом случае, обратите внимание на правильный знак «-100» в столбцах S
пакета siunitx
) с использованием a \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}