массив: установить ширину для определенных столбцов

массив: установить ширину для определенных столбцов

У меня есть 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}

Результат

Связанный контент