
У меня есть array
(в математическом режиме), для которого я хочу, чтобы первый столбец был немного шире остальных, а остальные должны быть одинаковой ширины. Если я просто напишу
\begin{array}{c|ccc}
10000 & 1 & 20 & 300
\end{array}
тогда второй, третий и четвертый столбцы имеют отдельную ширину, чего я хочу избежать. В идеале я хотел бы установить ширину первого столбца на eg, 2cm
а ширину остальных на 1cm
.
Есть ли способ это сделать? Я бы хотел избежать вложенных array
сред.
решение1
Я предполагаю, что (a) столбцы 2, 3 и 4 должны быть такими же широкими, как самый широкий элемент в любом из столбцов — «300» в таблице, которую вы предоставили — и (b) что содержимое этих содержимого должно быть центрировано. Если эта интерпретация верна, я предлагаю вам продолжить, определив новый тип столбца, вызываемый C
в коде ниже, который удовлетворяет этим предположениям, а также помещает свое содержимое в математический режим по умолчанию.
Я добавил в код вертикальные полосы, чтобы было видно, что столбцы 2, 3 и 4 действительно имеют одинаковую ширину.
\documentclass{article}
\newlength\mylen
\usepackage{array} % for "\newcolumntype" macro
\newcolumntype{C}{>{\hfil$}p{\mylen}<{$\hfil}} % centered, in math mode, fixed width
\begin{document}
\[
\settowidth\mylen{300} % choose widest element in columns 2--4
\begin{array}{|c|C|C|C|}
10000 & 1 & 20 & 300\\
1 & 101 & 555 & 888\\
\end{array}
\]
\end{document}
Обновление, июнь 2021 г.: За 4+ года, прошедших с тех пор, как я опубликовал этот ответ, пакет array
был значительно обновлен. Одним из обновлений является введение типа w
столбца, с которым приведенную выше настройку можно было бы переписать более кратко следующим образом:
\documentclass{article}
\newlength\mylen
\usepackage{array} % for 'w' column type
\begin{document}
\[
\settowidth\mylen{300} % choose widest element in columns 2--4
\begin{array}{| c | *{3}{wc{\mylen}|} }
10000 & 1 & 20 & 300\\
1 & 101 & 555 & 888
\end{array}
\]
\end{document}
решение2
Возможная возможность dcolumn
:
\documentclass{article}
\usepackage{dcolumn,booktabs}
\begin{document}
\[
\begin{array}{r *{3}{D{.}{.}{3.-1}}}
\toprule
10000 & 1 & 20 & 300 \\
100 & 10 & 10 & 10 \\
\bottomrule
\end{array}
\]
\[
\begin{array}{r *{3}{D{.}{.}{3.-1}}}
\toprule
10000 & 100 & 200 & 300 \\
100 & 100 & 100 & 100 \\
\bottomrule
\end{array}
\]
\end{document}
Вторая таблица показывает, что интервал тот же. Аргументами для D
типа столбца являются, соответственно, входной десятичный разделитель, выходной десятичный разделитель и формат чисел; здесь 3.-1
означает «три цифры в целой части и ни одной десятичной цифры».
решение3
Решение для \hphantom
получения одинаковой ширины столбцов со второго по четвертый:
\documentclass{article}
\begin{document}
\[
\begin{array}{c|ccc}
10000 & \hphantom{00}1 & \hphantom{0}20 & 300
\end{array}
\]
\end{document}
Тип столбца p
также работает в array
, например:
\documentclass{article}
\usepackage{array}
\begin{document}
\[
\begin{array}{>{\centering}p{2cm}|*{3}{>{\centering}p{1cm}}}
10000 & 1 & 20 & 300
\end{array}
\]
\end{document}
Или выровненные столбцы с пакетом siunitx
:
\documentclass{article}
\usepackage{siunitx}
\begin{document}
\[
\begin{array}{S[table-format=5]|*{3}{S[table-format=3]}}
10000 & 1 & 20 & 300
\end{array}
\]
\end{document}