Записки дебианщика
В этом блоге публикуются заметки и решения, найденные в процессе работы, освоения и жизни в дистрибутиве Debian GNU/Linux.
1/05/2009
Набор таблиц в ЛаТеХе: Tables in LaTeX
Этот пост является частью большой статьи
«Как оформить диплом в LaTeX?»,
которую написал virens,
ведущий блога «Записки дебианщика».

Этот пост написан давно, но всё ещё актуален:
Автор заходил править этот пост 6 октября 2013 года.
При наборе таблиц в LaTeX, как нигде, нужна правильная организация кода — таблицы это то, что в ТеХе делать сложнее всего. И если вы свалите в кучу все управляющие метки ЛаТеХа, то потом будете проклинать всё на свете. Здесь каждый выбирает свой стиль по своему вкусу, однако надо постараться отличать управляющие символы от собственно текста таблицы.
Кое-кто из комментаторов ниже распалялся по поводу того, что, дескать, «всё уже давно написано, читайте книжки». Я ещё раз уточню свою позицию по этому поводу: время тыкания людей в пудовые талмуды и дурно написанные мануалы прошло. Документация, как и программы, должны быть повёрнуты к пользователю лицом. Методические пособия типа этого помогут людям начать разбираться с предметом, подталкивая к изучению книг и делая кривую обучения более пологой.
Так как вёрстка таблиц в ЛаТеХ — дело не для слабонервных, лучше предварительно набросать на листке бумаги или графическом редакторе примерную схему таблицы. Делать наброски карандашом всегда проще, чем с воем и рыданиями переделывать код таблицы.
Небольшое введение в ЛаТеХнические таблицы
Таблица в LaTeX в идеологическом смысле очень похожа на рисунок: есть окружение \begin < table >. \end < table >, которое собственно и содержит все «опознавательные знаки» вроде подписи и ссылки, и собственно сама таблица \begin < tabular > <|rlc|>. \end < tabular >.
Поэтому окружений для создания таблиц в LaTeX два: \begin < tabular > <|rlc|>. \end < tabular >, которое управляет тем, как выглядит таблица, и \begin < table >. \end < table >, которое даёт вам возможность оформить заголовок таблицы с помощью команды \caption <> и поставить на таблицу ссылку с помощью привычной команды \label <>.
Набор простой таблицы в LaTeX
Например, если нам не требуется ссылка на таблицу или подпись под ней, тогда достаточно только окружения \begin < tabular >. \end < tabular >. Окружение tabular создаст простую таблицу, без подписи и ссылки. Вот пример кода простой таблицы в ЛаТеХе.
\begincenter> \begintabular> Расширение краёв: & \textbf & размер ФРТ \\ Аподизация: & \textbf & размер ФРТ \\ Сглаживания краёв: & \textbf& размер ФРТ \\ \endtabular> \endcenter>
Колонки отделяются символом &, строки в таблице заканчиваются двойным слешем \ после крайней колонки. А вот как таблица выглядит в документе:

Здесь есть партизанская засада: если вы внутрь окружения tabular поставите метку командой \label <>, а потом сошлётесь на неё, то получите совсем не то, что ждёте. Ссылка в тексте укажет на номер раздела, а вовсе не таблицы.
Тут-то мы и вспоминаем про замечательное окружение table, которое позволяет оформить таблицу с подписью и ссылкой. Вот как наша таблица будет выглядеть с этим окружением:
\begintable>[H] \caption \labeltabular:timesandtenses> \begincenter> \begintabular> Расширение краёв: & \textbf & размер ФРТ \\ Аподизация: & \textbf & размер ФРТ \\ Сглаживания краёв: & \textbf& размер ФРТ \\ \endtabular> \endcenter> \endtable>
Вот как это выглядит в документе:

Вроде как то же самое, только номер теперь стал 1.1. Простановка ссылок осуществляется так же, как и всегда, то есть: поставить ссылку в LaTeX можно командой \label < tabl:Textssylki >а сослаться на неё командой \ref < tabl:Textssylki >. Не забываем ставить тильду между словом и ссылкой слово~ \ref < tabl:Textssylki >чтобы ваша ссылка не уехала на другую строчку.
Управление видом таблицы в LaTeX
Сама таблица, то есть текст, набранный строго по столбцам и колонкам, делается с помощью окружения tabular. Важно помнить, что tabular есть просто текст-как-таблица и не содержит заголовка или ссылки — это делает окружение table.
Точное размещение таблиц
- оставить определение места таблицы в тексте на усмотрение ЛаТеХа — \begin < table >[h] «хотелось бы таблицу здесь»;
- настойчиво просить разместить таблицу после текста \begin < table >[h!] «очень хочу таблицу здесь», или
- ударить кулаком по столу — таблицу тут \begin < table >[H], то есть «хочу таблицу именно здесь и баста»
- с прибавлением буквы p мы заставляем поместить ЛаТеХ таблицу отдельно на страницу так: \begin < table >[pH].
- добавление букв t или b заставляют LaTeX поместить таблицу \begin < table >[tb!] вверху или внизу, соответственно.
Размеры колонок в таблице LaTeX
Сама по себе таблица находится в окружении \begin < tabular > <|rlc|>. \end < tabular >. Здесь вертикальная линия обозначает отделение линией столбцов, а R L и С выравнивание соответственно по правому / левому краю и по центру.
Если столбец слишком широкий, можно задать его ширину с помощью выражения p, которое сделает столбец шириной в 70\% от ширины линии, например так: \begin < tabular ><|pp> сделает таблицу с двумя колонками по 40\% от ширины линии и отчеркнёт вертикальными линиями по бокам.
Строки отделяются друг от друга при помощи команды \hline а каждая строка таблицы завершается двойным слешем \\ или командой \linebreak .
Подписи и ссылки на таблицы
Вставка подписи к таблице \caption < Исправьте это на подпись к таблице >и ссылки на таблицу \label < tabular:timesandtenses >делается так же, как и для рисунков. То есть сначала \caption < Исправьте это на подпись к таблице >а после этого вставляем \label < tabular:timesandtenses >для того, чтобы потом сослаться на таблицу \ref < tabular:timesandtenses >в тексте.
Важное замечание о порядке следования \label и \caption Если поставить \label < tab:some_table >до \caption <. >, то даже при использовании окружения table в ссылке будет выдаваться не номер таблицы, а номер раздела.
Напоминаю снова и снова о необходимости ставить понятные и информативные ссылки, чтобы вы сами смогли потом понять, где то место, куда вы ссылаетесь. Ставим длинные и подробные имена ссылок, чтобы потом не искать по Тайге ris21 или tabl43 . Никаких оправданий таким именам ссылок нет, и дядя Кнут будет недоволен.
Объединение нескольких колонок в одну
Иногда нужно объединить несколько колонок в одну на какой-то строке и убрать вертикальные линии для этого, например, чтобы сделать пояснения. В визуальных табличных редакторах типа OpenOffice.Calc это просто, но так как ЛаТеХе — это вообще говоря язык программирования, то здесь придётся немного сложнее. Для этого нужно воспользоваться командой \multicolumn .
Синтаксис у команды простой: \multicolumn <|c|> означает, что мы объединяем 2 (два) столбца в таблице, получившаяся ячейка будет центрирована и нарисованы вертикальные линии. В объединённой колонке на той строке, где мы поместим команду \multicolumn , будет текст Результаты измерений. Вот как это выглядит в коде:
\begintable>[H] \caption\labeltab:canonsummary>Измерительные характеристики цифровой камеры Canon EOS 400D.> \begincenter> \begintabular> \hline Параметр & Значение \\ \hline Разрешение & $3888 \times 2592$ \\ Размер сенсора & $22.2 \times 14.8$ мм \\ АЦП & 12~bit\\ \hline \multicolumn <|c|>\\ \hline Темновое смещение (BLO) & 256 \\ Максимальный линейный сигнал & 3070~DN \\ Значение насыщения & 3470~DN \\ \hline \endtabular> \endcenter> \endtable>
А вот как эта таблица будет выглядеть в документе:

Это может пригодиться особенно в длинных таблицах, которые простираются на несколько страниц и которые нужно переносить со страницы на страницу.
Многостраничные таблицы
Время от времени таблицы становятся длинными до неприличия и не влезают в одну страницу. Чтобы сделать многостраничную таблицу в LaTeX, используем пакет расширений \usepackage
\beginlongtable>[H]\linewidth>> $A$ & area of the (geometrical) pixel [m\textsuperscript2] \\ $c$ & Speed of light $\approx 3 \cdot 10^8$ m/s \\ $DYN_$ & Input dynamic range [1] \\ $DYN_$ & Output dynamic range~[1] \\ $E$ & irradiance on the sensor surface~[W/m\textsuperscript2] \\ $F$ & Non-whiteness coefficient \\ $h$ & Planck's constant h $\approx6.63 \cdot 10^ Js$ \\ $K$ & overall system gain~[DN/e-] \\ $k_d$ & Doubling temperature of the dark current~[$^\circ$C] \\ $N_d$ & dark current~[e-/s] \\ $N_$ & dark current for a housing temperature of $30^\circ C$~[e-/s]\textsuperscript2 \\ $S_g^2$ & variance coefficient of the spatial gain noise~[\%] \\ \endlongtable>
Вот как это выглядит в документе:

Стоит упомянуть, что если столбец слишком широкий, можно задать его ширину вот так: \begin < longtable >[h]> с помощью выражения p, которое сделает столбец шириной в 70% от ширины линии.
Поворот таблицы в LaTeX
Ну и под занавес приведу пример достаточно сложной таблицы, которая повёрнута на 90 градусов (таблица в ландшафтной ориентации в ЛаТеХе). Поворот сделан при помощи команды \rotatebox < 90 > < я - объект >что обеспечивает поворот любого объекта на 90 градусов. Так как данные структурированы и код организован достаточно логично, редактировать таблицу относительно просто.
\rotatebox %это обеспечивает поворот любого объекта \beginminipage>\linewidth> \begintable>[H] \caption \begincenter> \begintabular><|p<5cm>c|c|> \hline \multicolumn<|c|>\textbf>\\ \hline \textbf & \textbf & \textbf \\ \hline \multicolumn <|c|>\\ \hline Шумы квантования & $6.3 \div 22.6\%$ & $0.2 \div 0.5\%$ \\ \hline \multicolumn <|c|>\\ \hline Шумы фотоприёмника & $8.8 \div 87.5\%$ & $7.1 \div 87.6\%$ \\ \hline \multicolumn <|c|>\\ \hline декодирование ФРТ той же реализацией шума & $6 \div 13\%$ & $0.5 \div 15\%$ \\ \hline декодирование ФРТ с другой реализацией шума & $6 \div 14\%$ & $0.3 \div 12\%$ \\ \hline декодирование идеальным ФРТ & $6 \div 6.5\%$ & $0.2 \div 6.4\%$ \\ \hline \endtabular> \endcenter> \endtable> \endminipage>>
Вот как таблица выглядит в документе:

Есть и другие команды для поворота объектов в LaTeX, например turn из пакета rotating . Преимущество команды \rotatebox в том, что она содержится в пакете \usepackage < rotating >и обычно graphicx уже подключён для отображения иллюстраций в LaTeX.
Заключение
- Продвинутые таблицы в ЛаТеХе: advanced tables in LaTeX
- Перенос таблиц из MS Excel или OpenOffice Calc в LaTeX через Calc2LaTeX
48 комментариев:
Как-то напрягает ширина столбца в 0.7\linewidth. Не мелковато получится?
В TeX’е этот материал есть или только тут, в html? Ответить Удалить
В тексте статьи везде «\textbf
Если не трудно, расскажите как делать вертикальные подписи в шапке таблицы. Иногда бывает нужно. Ответить Удалить
2 uleysky
> Как-то напрягает ширина столбца в 0.7\linewidth. Не мелковато получится?
Хотя да… Ширина в 70 % строки — это серьёзно.
> В TeX’е этот материал есть или только тут, в html?
Скорее всего, он как раз в TeX’е и есть, просто тут стоит какой-то хитрый конвертер LaTeX → HTML, в котором есть немного недочётов.
Действительно, команды \textit, \textbf и т. п. в тексте статьи не дают ожидаемого результата. Плюс, после названий команд (без аргументов, с аргументами всё в порядке) в тексте остаётся вертикальная черта (|), скорее всего, это что-то с интерпретацией \verb’а.
Но это лирика, и я не буду на ней задерживаться. (Сложносочинённое предложение. Я не вычитывал всё пристально, так что, возможно, это ещё не всё.)
В таблице из раздела «Набор простой таблицы в LaTeX» там не весь второй столбец полужирным шрифтом набран, хотя в исходнике — именно так.
В таблице из раздела «Таблицы с объединением столбцов» не совсем тот результат, что должен давать приведённый исходник. Ячейка «Нестандартные болты» не растянута на две строки. Ответить Удалить
Может лучше получившиеся таблицы давать в виде картинок? Ответить Удалить
> Попробуйте такое в книжках разыскать, и я пожелаю вам удачи.
книга
М.Гуссенс, Ф.Миттельбах, А.Самарин
«Путеводитель по пакету LaTeX и его расширению LaTeX2e»
стр. 155 пункт 5.6.4 Ответить Удалить
> Попробуйте такое в книжках разыскать, и я пожелаю вам удачи.
Еще одна книга:
Котельников И. А., Чеботаев П. З. «LaTeX по-русски», 3-е издание, 2004 г., стр. 288 Ответить Удалить
> Попробуйте такое в книжках разыскать, и я пожелаю вам удачи.
Еще книга:
Роженко А. И. «Искусство верстки в LaTeX’е», 2005 г., стр. 144.
В книге Евгения Балдина тоже про это есть. Так что почти во всех книгах про LaTeX на русском есть про таблицы (и даже больше и порой несколько понятней). В книге Львовского действительно про таблицы написано маловато, но она и была написана довольно давно, одной из самых первых (1-е издание). Ответить Удалить
Таблица «Нестандартные болты для левой резьбы», изображенная на Вашей странице, не совсем соответствует тому, что получается в результате исполнения указанного Вами же кода на LaTeX’e (с необходимой преамбулой разумеется). Не соответствует она как раз в существенной части.
Может быть в html-коде надо что-то подправить? ТщательнЕе надо. Ответить Удалить
В общем, я так думаю, что это всё писано под LaTeX (стиль кавычек, \textbf и компания), а потом прогнаное через конвертер (или в самом блоге стоит конвертер) в HTML, в котором есть кучка багов.
По крайней мере, ясно, почему в «Нестандартных болтах» не та таблица: конвертер не воспринял тот хак с растянутым столбом. Так как эту штуку будет довольно трудно сделать, то лучше залезть и руками поправить (colspan = 2 или что-то в этом роде). Ответить Удалить
>В общем, я так думаю, что это всё писано под LaTeX (стиль кавычек, \textbf и компания), а потом прогнаное через конвертер (или в самом блоге стоит конвертер) в HTML, в котором есть кучка багов.
>По крайней мере, ясно, почему в «Нестандартных болтах» не та таблица: конвертер не воспринял тот хак с растянутым столбом. Так как эту штуку будет довольно трудно сделать, то лучше залезть и руками поправить (colspan = 2 или что-то в этом роде).
Все это совершенно очевидно. Но автор блога ругает в частности Кручинина (я с ним не знаком и не являюсь его апологетом) за документацию (в значительной степени справедливо) и других. Так пусть посмотрит на себя со стороны. И, если эта страница и есть то лицо, которым повернута документация к пользователю, то искаженная гримасой. Возможно я ошибаюсь.
Впрочем, автор все-таки делает полезное дело. Сам не люблю «вордодятлов». Просто полагаю, что если уж делаешь работу, то делай ее не наспех. (Имею интерес относительно Дебиана и у меня возникает вопрос, а не пишет ли автор блога (Михаил) заметки о Дебиане так же как и о LaTeX’e, и не стоит ли вместо этого почитать другую, в частности оригинальную, документацию.) Защита диссертации не может служить оправданием. Есть очень хороший принцип «Исповедуй то, что проповедуешь». Ответить Удалить
Кстати, книга Котельникова и Чеботаева, по-моему, вполне повернута к читателю лицом. Содержит очень много примеров, начиная от самых простых. Правда там целая страница посвящена окружению «verse», которое позволяет набирать стихи. Это, конечно, очень большой ее недостаток, и поэтому она совершенно не пригодна для изучения LaTeX’а. Кроме того, там нет значка диаметра.
Хотя, справедливости ради надо отметить, что для тех, кому СРОЧНО надо написать диплом или диссертацию в LaTeX’e, это действительно не совсем подходит. Ответить Удалить
2 uleysky комментирует.
Как-то напрягает ширина столбца в 0.7\linewidth. Не мелковато получится?
В самый раз 🙂
В TeX’е этот материал есть или только тут, в html?
Как ниже в комментариях уже попеняли, именно в ЛаТеХе это и пишется, а потом переводится в HTML. Я не большой спец в этом деле, признаться.
2 yuriy.petrovskiy комментирует.
В тексте статьи везде «\textbf» вместо соответствующего выделения жирным шрифтом
Каюсь, упустил, поправил. Спасибо!
2 Анонимный комментирует.
Если не трудно, расскажите как делать вертикальные подписи в шапке таблицы.
Если честно — смутно себе это представляю. Готового ответа в лёт не дам.
2 Hina-Ichigo комментирует.
Скорее всего, он как раз в TeX’е и есть, просто тут стоит какой-то хитрый конвертер LaTeX → HTML
Обычный latex2html, и я им не сильно часто пользуюсь.
Плюс, после названий команд (без аргументов, с аргументами всё в порядке) в тексте остаётся вертикальная черта (|), скорее всего, это что-то с интерпретацией \verb’а.
Нет, это я пропустил после конвертации. Моя вина. Уже починил. Спасибо, что отозвались.
В таблице из раздела «Набор простой таблицы в LaTeX» там не весь второй столбец полужирным шрифтом набран, хотя в исходнике — именно так.
Согласен. Ближе к концу месяца выкрою полчаса и сделаю таблицы картинками.
2 kean комментирует.
Может лучше получившиеся таблицы давать в виде картинок?
У меня была такая мысль, но времени было очень-очень мало.
2 Анонимный комментирует.
книга
М.Гуссенс, Ф.Миттельбах, А.Самарин
«Путеводитель по пакету LaTeX и его расширению LaTeX2e»
стр. 155 пункт 5.6.4
Хм. (и ниже). Упрёк принят. Экспрессию убрал :-)))
2 Анонимный комментирует.
Может быть в html-коде надо что-то подправить? ТщательнЕе надо.
Я часть текста ради подсветки сохранял как HTML из Kile, вот и результат. Про тщательнее совершенно справедливо. 🙂
2 Анонимный комментирует.
К вопросу о том, чем должна быть повернута к пользователю документация.
Лицом, а не мануалом 🙂 Но про тщательнее уже принял меры.
2 Hina-Ichigo комментирует.
В общем, я так думаю, что это всё писано под LaTeX
Ну естественно.
Но автор блога ругает в частности Кручинина
Есть такое. Он написал хороший пакет disser, но категорически не хочет писать о нём развёрнутую документацию. Фраза «аспиранты — народ не глупый, захотят — разберутся» убивает совершенно.
И, если эта страница и есть то лицо, которым повернута документация к пользователю, то искаженная гримасой.
Это не совсем то лицо, но оно (лицо) хочет быть лучше. И старается это делать. На фоне написания кандидатской диссертации, 4 трудов в конференцию и 3 научных статей, не считая раздачи пинков студентам, дипломнику и некоторым нерадивым начальникам в числе 8 штук.
Так что вы в автора-то помидором кидать обождите :-))
Впрочем, автор все-таки делает полезное дело.
Он старается, да.
Имею интерес относительно Дебиана и у меня возникает вопрос, а не пишет ли автор блога (Михаил) заметки о Дебиане так же как и о LaTeX’e
Я не говорю, что мои заметки идеальны. Они просто есть, и я стараюсь (и надеюсь на вашу помощь) сделать их лучше. Пишу о том, что работает и что делал я собственными руками. Может, изобретая по ходу велосипеды и иногда допуская ошибки.
Но кто же из нас не ошибается?
и не стоит ли вместо этого почитать другую, в частности оригинальную, документацию.
Так её никто и не отменяет, а дополняет. Приятно ведь найти ответ на вопрос в гугле за 1 минуту, а не сидеть час за талмудом документации. Мне, во всяком случае.
2 Анонимный комментирует.
Кстати, книга Котельникова и Чеботаева, по-моему, вполне повернута к читателю лицом.
Это да, очень достойная книжка, только в сети её найти не просто.
Выражаю благодарность комментаторам за большое количество помидоров, брошенных в сторону автора 🙂 Ошибки поправил, комментарии постарался учесть. Планирую через некоторое время заменить таблицы на рисунки. Ответить Удалить
> Есть такое. Он написал хороший пакет disser, но категорически не хочет писать о нём развёрнутую документацию. Фраза «аспиранты — народ не глупый, захотят — разберутся» убивает совершенно.
Эту фразу, так же как и про отсутствие документации, написал Евгений Балдин в своих статьях двухлетней давности. Документация по disser уже есть. Ответить Удалить
Первое, что бросилось в глаза — ты, virens, забыл обрамить основное тело поста в Остальное не вычитывал. Ответить Удалить
>Выражаю благодарность комментаторам за большое количество помидоров, брошенных в сторону автора 🙂 Ошибки поправил, комментарии постарался учесть. Планирую через некоторое время заменить таблицы на рисунки.
Вооот! Приятно иметь дело с адекватным человеком! Будем читать про Дебиан и дальше.
Как сделать таблицу в латехе
Окружение tabular используют для верстки таблиц, возможно, с горизонтальными и вертикальными линиями. L A T E X автоматически определяет ширину столбцов.
Аргумент спецификация команды
определяет формат таблицы. Используйте l для столбца текста, выровненного влево, r для текста, выровненного вправо и c для центрированного текста, p < ширина >для столбца, содержащего выровненный текст с переносом строк, и | для вертикальной линии. Внутри окружения tabular знак > переходит к следующему столбцу, команда начинает новую строку, а hline вставляет горизонтальную линию.
\begin <|r|l|>\hline 54 & шестнадцатеричное \\ 124 & восьмеричное \\ 1010100 & двоичное \\ \hline \hline 84 & десятичное \\ \hline \end
| 54 | шестнадцатеричное |
| 124 | восьмеричное |
| 1010100 | двоичное |
| 84 | десятичное |
\begin<|p<4.7cm>|> \hline Добро пожаловать в абзац в рамочке. Надеемся, вам всем тут понравится.\\ \hline \end
| Добро пожаловать в абзац в рамочке. Надеемся, вам всем тут понравится. |
При помощи конструкции @ <. >можно указать разделитель столбцов. Эта команда удаляет пробел между столбцами и заменяет его на то, что включено в фигурные скобки. Одно из частых использований этой команды показано ниже, при рассказе о проблеме выравнивания по десятичной точке. Другое возможно использование — для подавления ведущего пробела в таблице при помощи @<> :
\begin l @<>> \hline нет ведущего пробела\\ \hline \end
| нет ведущего пробела |
\begin \hline ведущий пробел слева и справа\\ \hline \end
| ведущий пробел слева и справа |
Поскольку встроенный способ выровнять числовые столбцы по десятичной точке отсутствует 13 , мы можем > T E X и добиться этого при помощи двух столбцов: выровненной вправо целой части и выровненной влево дробной. Команда @ <.>в строке \begin заменяет нормальный пробел между столбцами просто на >, давая эффект одного столбца, выровненного по десятичной точке. Не забудьте заменить в ваших числах точку на разделитель столбцов ( & )! Метку столбца можно поместить над нашим числовым > командой multicolumn:
\begin l> Выражение с $\pi$ & \multicolumn \\ \hline $\pi$ & 3&1416 \\ $\pi^<\pi>$ & 36&46 \\ $(\pi^<\pi>)^<\pi>$ & 80662&7 \\ \end
| Выражение с | Значение | |
| 3 | . | 1416 |
| 36 | . | 46 |
| 80662 | . | 7 |
Tables
There are three ways you can insert tables in Overleaf:
- Using the Insert table button in the editor toolbar.
- Copying and pasting a table from another document while using Visual Editor.
- Writing the LaTeX code for the table in Code Editor.
If you’re new to LaTeX, using the toolbar in Visual Editor (option 1) is a great way to get started. And you can switch between Visual Editor and Code Editor to see the code behind the table. This page focuses on option 3.
Contents
- 1 Creating a simple table in L a T e X
- 2 Tables with a fixed width
- 3 Combining rows and columns
- 4 Multi-page tables
- 5 Positioning tables
- 6 Captions, labels and references
- 7 List of tables
- 8 Changing the appearance of a table
- 8.1 Line width and cell padding
- 8.2 Colour alternating rows
- 8.3 Colouring a table (cells, rows, columns and lines)
Creating a simple table in L a T e X
We can start with one of the simplest examples of a table:
\begincenter> \begintabular> c c c > cell1 & cell2 & cell3 \\ cell4 & cell5 & cell6 \\ cell7 & cell8 & cell9 \endtabular> \endcenter>

The tabular environment is the default L a T e X method to create tables. You must specify a parameter to this environment; here we use which tells LaTeX there are three columns and the text inside each one of them must be centred.
The tabular environment provides additional flexibility; for example, you can put separator lines in between each column:
\begincenter> \begintabular> |c|c|c| > \hline cell1 & cell2 & cell3 \\ cell4 & cell5 & cell6 \\ cell7 & cell8 & cell9 \\ \hline \endtabular> \endcenter>

Here is a description of the constructions used in the example above:
< |c|c|c| >This declares that three columns, separated by a vertical line, are going to be used in the table. Each c means that the contents of the column will be centred. You can also use r to align the text to the right and l for left alignment. \hline This will insert a horizontal line on top of the table and at the bottom too. There is no restriction on the number of times you can use \hline . cell1 & cell2 & cell3 \\ Each & is a cell separator and the double-backslash \\ sets the end of this row.
Below you can see a second example which uses various vertical and horizontal lines (often called «rules»):
\begincenter> \begintabular>||c c c c||> \hline Col1 & Col2 & Col2 & Col3 \\ [0.5ex] \hline\hline 1 & 6 & 87837 & 787 \\ \hline 2 & 7 & 78 & 5415 \\ \hline 3 & 545 & 778 & 7507 \\ \hline 4 & 545 & 18744 & 7560 \\ \hline 5 & 88 & 788 & 6344 \\ [1ex] \hline \endtabular> \endcenter>

Tables with a fixed width
When formatting a table you might require a fixed width, either for each column or for the entire table. The following example adds the array package to document preamble:
\usepackagearray>
and uses it to set fixed column widths:
\documentclassarticle> \usepackagearray> \begindocument> \begincenter> \begintabular> | m5em> | m1cm>| m1cm> | > \hline cell1 dummy text dummy text dummy text& cell2 & cell3 \\ \hline cell1 dummy text dummy text dummy text & cell5 & cell6 \\ \hline cell7 & cell8 & cell9 \\ \hline \endtabular> \endcenter> \enddocument>

In the tabular environment, the parameter m sets a width of 5em for the first column ( 1cm for the other two) and centres the text in the middle of the cell. The aligning options are m for middle, p for top and b for bottom. When using these parameters the text is automatically formatted to fit inside each cell.
If you don’t need to control the width of each cell, but of the entire table and then evenly distribute the space within, use the tabularx package. See the example below:
\documentclassarticle> \usepackagetabularx> \begindocument> \begintabularx>0.8\textwidth> | >\raggedright\arraybackslash>X | >\centering\arraybackslash>X | >\raggedleft\arraybackslash>X | > \hline item 11 & item 12 & item 13 \\ \hline item 21 & item 22 & item 23 \\ \hline \endtabularx> \enddocument>

The environment tabularx is similar to tabular but more flexible. To use it, add the line \usepackage to the document preamble. Notice that the environment opening statement is different, in the example the table width is set to 0.8\textwidth , which is 80% of the document’s text width. You can use any of the L a T e X units to set that value.
The prefix inside braces | >X | >X | >X | sets the alignment of each column: the first one to left, the second one to center and the third one to right.
Combining rows and columns
Rows and columns can be merged to create larger table cells. The following example uses the \multicolumn command to merge several columns:
\documentclassarticle> \usepackagemultirow> \begindocument> \begintabular> |p3cm>||p3cm>|p3cm>|p3cm>| > \hline \multicolumn4>|c|>Country List> \\ \hline Country Name or Area Name& ISO ALPHA 2 Code &ISO ALPHA 3 Code&ISO numeric Code\\ \hline Afghanistan & AF &AFG& 004\\ Aland Islands& AX & ALA &248\\ Albania &AL & ALB& 008\\ Algeria &DZ & DZA& 012\\ American Samoa& AS & ASM&016\\ Andorra& AD & AND &020\\ Angola& AO & AGO&024\\ \hline \endtabular> \enddocument>

Let’s review each component of the command \multicolumn<|c|> \\ :
The number of columns to be combined: 4 in this case. <|c|>Delimiters and alignment of the resulting cell: in this case the text will be centred and a vertical line will be drawn at each side of the cell. Text to be displayed inside the cell.
To combine rows you need to add the multirow package to your document preamble:
\usepackagemultirow>
You can then use the \multirow command in your document:
\documentclassarticle> \usepackagemultirow> \begindocument> \begincenter> \begintabular> |c|c|c|c| > \hline col1 & col2 & col3 \\ \hline \multirow3>4em>Multiple row> & cell2 & cell3 \\ & cell5 & cell6 \\ & cell8 & cell9 \\ \hline \endtabular> \endcenter> \enddocument>

The multirow command takes three parameters; our example uses the following settings:
- the number of rows to be combined: 3
- the width of the column: 4em
- the content of the cell: Multiple row
Multi-page tables
If you have to insert a very long table, which takes up two or more pages in your document, use the longtable package. First, add the following line to your document preamble:
\usepackagelongtable>
You can then use the longtable environment, as shown in the following example:
\documentclassarticle> \usepackagelongtable> \begindocument> \beginlongtable>[c]| c | c |> \captionLong table caption.\labellong>>\\ \hline \multicolumn2>| c |>Begin of Table>\\ \hline Something & something else\\ \hline \endfirsthead \hline \multicolumn2>|c|>Continuation of Table \reflong>>\\ \hline Something & something else\\ \hline \endhead \hline \endfoot \hline \multicolumn2>| c |>End of Table>\\ \hline\hline \endlastfoot Lots of lines & like this\\ Lots of lines & like this\\ Lots of lines & like this\\ Lots of lines & like this\\ Lots of lines & like this\\ Lots of lines & like this\\ Lots of lines & like this\\ Lots of lines & like this\\ . Lots of lines & like this\\ \endlongtable>

The behaviour of longtable is similar to the default tabular , but generates tables that can be broken by the standard L a T e X page-breaking algorithm. There are four longtable -specific elements:
\endfirsthead Everything above this command will appear at the beginning of the table, in the first page. \endhead Whatever you put before this command and below \endfirsthead will be displayed at the top of the table in every page except the first one. \endfoot Similar to \endhead , what you put after \endhead and before this command will appear at the bottom of the table in every page except the last one. \endlastfoot Similar to \endfirsthead . The elements after \endfoot and before this command will be displayed at the bottom of the table but only in the last page where the table appears.
Positioning tables
Positioning a table is easy if they’re inside a float table environment.
\documentclassarticle> \begindocument> Below is a table positioned exactly here: \begintable>[h!] \centering \begintabular>||c c c c||> \hline Col1 & Col2 & Col2 & Col3 \\ [0.5ex] \hline\hline 1 & 6 & 87837 & 787 \\ 2 & 7 & 78 & 5415 \\ 3 & 545 & 778 & 7507 \\ 4 & 545 & 18744 & 7560 \\ 5 & 88 & 788 & 6344 \\ [1ex] \hline \endtabular> \endtable> \enddocument>

The parameter h! passed to the table environment declaration establishes that this table must be placed here, and override L a T e X defaults. The positioning parameters that can be passed-in include:
h Will place the table here approximately. t Position the table at the top of the page. b Position the table at the bottom of the page. p Put the table in a special page, for tables only. ! Override internal L a T e X parameters. H Place the table at this precise location, pretty much like h!.
For further examples on table positioning see the Positioning images and tables article.
In this example there are a few more commands:
\centering Centres the table relative to the float container element. \[1ex] This adds extra space to the cell.
Captions, labels and references
Tables can be captioned, labelled and referenced by means of the table environment.
\documentclassarticle> \begindocument> Table \reftable:1> is an example of a referenced \LaTeX<> element. \begintable>[h!] \centering \begintabular>||c c c c||> \hline Col1 & Col2 & Col2 & Col3 \\ [0.5ex] \hline\hline 1 & 6 & 87837 & 787 \\ 2 & 7 & 78 & 5415 \\ 3 & 545 & 778 & 7507 \\ 4 & 545 & 18744 & 7560 \\ 5 & 88 & 788 & 6344 \\ [1ex] \hline \endtabular> \captionTable to test captions and labels.> \labeltable:1> \endtable> \enddocument>

There are three important commands in the example:
\caption As you may expect this command sets the caption for the table. If you create a list of tables this caption will be used there. You can place it above or below the table. \label If you need to reference the table within your document, set a label with this command. The label will number the table and, when combined with the \ref command, will allow you to reference it. \ref This code will be substituted by the number corresponding to the referenced table.
List of tables
To create a list of tables use the \listoftables command. The caption of each table will be used to generate this list. For languages supported by the babel package, the title «List of tables» will be translated accordingly. See the article about International language support for more info.
\documentclassarticle> \begindocument> \listoftables \vspace5pt> The table \reftable:1> is an example of referenced \LaTeX<> elements. \begintable>[h!] \centering \begintabular>||c c c c||> \hline Col1 & Col2 & Col2 & Col3 \\ [0.5ex] \hline\hline 1 & 6 & 87837 & 787 \\ 2 & 7 & 78 & 5415 \\ 3 & 545 & 778 & 7507 \\ 4 & 545 & 18744 & 7560 \\ 5 & 88 & 788 & 6344 \\ [1ex] \hline \endtabular> \captionThis is the caption for the first table.> \labeltable:1> \endtable> \begintable>[h!] \centering \begintabular>||c c c c||> \hline Col1 & Col2 & Col2 & Col3 \\ [0.5ex] \hline\hline 4 & 545 & 18744 & 7560 \\ 5 & 88 & 788 & 6344 \\ [1ex] \hline \endtabular> \captionThis is the caption for the second table.> \labeltable:2> \endtable> \enddocument>

Changing the appearance of a table
Several table elements can be modified to suit the needs of your document. Below you will learn how to modify the line thickness, the line colour and the background colour of the cells in your table.
Line width and cell padding
The legibility of a table can sometimes be improved by incrementing the column spacing and row stretch.
\documentclassarticle> \setlength\arrayrulewidth>0.5mm> \setlength\tabcolsep>18pt> \renewcommand\arraystretch>1.5> \begindocument> \begintabular> |p3cm>|p3cm>|p3cm>| > \hline \multicolumn3>|c|>Country List> \\ \hline Country Name or Area Name& ISO ALPHA 2 Code &ISO ALPHA 3 \\ \hline Afghanistan & AF &AFG \\ Aland Islands & AX & ALA \\ Albania &AL & ALB \\ Algeria &DZ & DZA \\ American Samoa & AS & ASM \\ Andorra & AD & AND \\ Angola & AO & AGO \\ \hline \endtabular> \enddocument>

A description of the commands is provided below:
\setlength This sets the thickness of the borders of the table. In the example is 0.5mm but you can use other units—see the article Lengths in LaTeX for a complete list. \setlength The space between the text and the left/right border of its containing cell is set to 18pt with this command. Again, you may use other units if needed. \renewcommand The height of each row is set to 1.5 relative to its default height.
Colour alternating rows
You can apply alternating colours to the rows of your table by using the xcolor package with the table option, as demonstrated in the following example:
\documentclassarticle> \usepackage[table]xcolor> \setlength\arrayrulewidth>0.5mm> \setlength\tabcolsep>18pt> \renewcommand\arraystretch>2.5> \begindocument> \rowcolors3>green!80!yellow!50>green!70!yellow!40> \begintabular> |p3cm>|p3cm>|p3cm>| > \hline \multicolumn3>|c|>Country List> \\ \hline Country Name or Area Name& ISO ALPHA 2 Code &ISO ALPHA 3 \\ \hline Afghanistan & AF &AFG \\ Aland Islands & AX & ALA \\ Albania &AL & ALB \\ Algeria &DZ & DZA \\ American Samoa & AS & ASM \\ Andorra & AD & AND \\ Angola & AO & AGO \\ \hline \endtabular>> \enddocument>

Notice the braces right before the command
\rowcolors3>green!80!yellow!50>green!70!yellow!40>
and after the tabular environment. The command \rowcolors takes three parameters each passed inside braces:
- the row to start,
- the colour for odd rows and
- the colour for even rows.
See the xcolor package documentation (at the further reading section) for a list of available colours and how to create your own. In the example the colours green and yellow are mixed in different proportions.
For the command to work make sure to add
\usepackage[table]xcolor>
to the preamble of your L a T e X file.
Colouring a table (cells, rows, columns and lines)
All elements in a table can be customized to use a specific colour. Again, this functionality is provided by xcolor so you must add
\usepackage[table]xcolor>
to the preamble. Below you can see an example.
\documentclassarticle> \usepackage[table]xcolor> \setlength\arrayrulewidth>1mm> \setlength\tabcolsep>18pt> \renewcommand\arraystretch>2.5> \newcolumntypes>>\columncolor[HTML]AAACED>> p3cm>> \arrayrulecolor[HTML]DB5800> \begindocument> \begintabular> |s|p3cm>|p3cm>| > \hline \rowcolorlightgray> \multicolumn3>|c|>Country List> \\ \hline Country Name or Area Name& ISO ALPHA 2 Code &ISO ALPHA 3 \\ \hline Afghanistan & AF &AFG \\ \rowcolorgray> Aland Islands & AX & ALA \\ Albania &AL & ALB \\ Algeria &DZ & DZA \\ American Samoa & AS & ASM \\ Andorra & AD & \cellcolor[HTML]AA0044> AND \\ Angola & AO & AGO \\ \hline \endtabular> \enddocument>

Below is a description about how to change the colour of each element in the table:
- Colour of the lines. The command \arrayrulecolor is used for this. In the example an HTML format is used, but other formats are available too, see the xcolor documentation for a complete list (link provided at the further reading section).
- Background colour of a cell. Use the command \cellcolor . You can either enter the name directly inside the braces (red, gray, green and so on) or pass a format parameter inside brackets (HTML in the example) and then set the desired colour inside the braces using the established format.
- Background colour of a row. In this case \rowcolor will accomplish that. The same observations about colour selection mentioned in the two previous commands are valid for this one.
\newcolumntypes>>\columncolor[HTML]AAACED>> p3cm>>
Reference guide
A brief description of parameters in the tabular environment.
Tables can be created using tabular environment.
\begin[pos] table content \end
where options can be:
- pos : Vertical position. It can assume the following values:
- cols : Defines the alignment and the borders of each column. It can have the following values:
To separate between cells and introducing new lines use the following commands:
& column separator \\ start new row (additional space may be specified after \\ using square brackets, such as \\[6pt] ) \hline horizontal line between rows \newline start a new line within a cell (in a paragraph column) \cline partial horizontal line beginning in column i and ending in column j Further reading
For more information see
- How to insert tables in Overleaf
- Positioning images and tables
- Lists of tables and figures
- Lengths in LaTeX
- Using colours in LaTeX
- xcolor package manual
- tabularx package manual
- tabu package manual
- longtable package manual
- Documentation Home
- Learn LaTeX in 30 minutes
Overleaf guides
- Creating a document in Overleaf
- Uploading a project
- Copying a project
- Creating a project from a template
- Using the Overleaf project menu
- Including images in Overleaf
- Exporting your work from Overleaf
- Working offline in Overleaf
- Using Track Changes in Overleaf
- Using bibliographies in Overleaf
- Sharing your work with others
- Using the History feature
- Debugging Compilation timeout errors
- How-to guides
- Guide to Overleaf’s premium features
LaTeX Basics
- Creating your first LaTeX document
- Choosing a LaTeX Compiler
- Paragraphs and new lines
- Bold, italics and underlining
- Lists
- Errors
Mathematics
- Mathematical expressions
- Subscripts and superscripts
- Brackets and Parentheses
- Matrices
- Fractions and Binomials
- Aligning equations
- Operators
- Spacing in math mode
- Integrals, sums and limits
- Display style in math mode
- List of Greek letters and math symbols
- Mathematical fonts
- Using the Symbol Palette in Overleaf
Figures and tables
- Inserting Images
- Tables
- Positioning Images and Tables
- Lists of Tables and Figures
- Drawing Diagrams Directly in LaTeX
- TikZ package
References and Citations
- Bibliography management with bibtex
- Bibliography management with natbib
- Bibliography management with biblatex
- Bibtex bibliography styles
- Natbib bibliography styles
- Natbib citation styles
- Biblatex bibliography styles
- Biblatex citation styles
Languages
- Multilingual typesetting on Overleaf using polyglossia and fontspec
- Multilingual typesetting on Overleaf using babel and fontspec
- International language support
- Quotations and quotation marks
- Arabic
- Chinese
- French
- German
- Greek
- Italian
- Japanese
- Korean
- Portuguese
- Russian
- Spanish
Document structure
- Sections and chapters
- Table of contents
- Cross referencing sections, equations and floats
- Indices
- Glossaries
- Nomenclatures
- Management in a large project
- Multi-file LaTeX projects
- Hyperlinks
Formatting
- Lengths in L a T e X
- Headers and footers
- Page numbering
- Paragraph formatting
- Line breaks and blank spaces
- Text alignment
- Page size and margins
- Single sided and double sided documents
- Multiple columns
- Counters
- Code listing
- Code Highlighting with minted
- Using colours in LaTeX
- Footnotes
- Margin notes
Fonts
- Font sizes, families, and styles
- Font typefaces
- Supporting modern fonts with X Ǝ L a T e X
Presentations
Commands
Field specific
- Theorems and proofs
- Chemistry formulae
- Feynman diagrams
- Molecular orbital diagrams
- Chess notation
- Knitting patterns
- CircuiTikz package
- Pgfplots package
- Typesetting exams in LaTeX
- Knitr
- Attribute Value Matrices
Class files
- Understanding packages and class files
- List of packages and class files
- Writing your own package
- Writing your own class
Advanced TeX/LaTeX
Создание таблицы с разным количеством ячеек в строках в LaTeX

Как сделать такую таблицу в LaTeX ? Суть в том, что первый и последний столбцы должны быть выровнены по ширине.
Ячейки посередине должны выглядеть следующим образом: в первых двух строках между первым и вторым столбцом идут пять одинаковых по ширине ячеек, в третьей строке — четыре, и в последних двух строках — тоже пять. Фотография выражает структуру таблицы. Таблица для вычисления значения величины с погрешностью по результатам нескольких измерений.Отслеживать
Имя Фамилия
задан 27 апр 2021 в 12:10
Имя Фамилия Имя Фамилия
2,718 2 2 золотых знака 10 10 серебряных знаков 34 34 бронзовых знака1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Если бы автор вопроса приложил свою попытку сделать такую таблицу, то я мог бы использовать данные оттуда (чтобы самому не тратить время на ввод формул). Но раз примера не было, то приведу таблицы с минимальным содержанием.
Для создания такой таблицы можно сделать вложенную таблицу и использовать команду \multicolumn . Проблема будет с отбивками, которые тех вставляет вокруг ячеек — у вложенной таблицы они будут отличаться от внешней. Поэтому, проще всего будет избавиться от всех этих отбивок (командой @<> в преамбуле каждой из таблиц). Для задания ячеек будет удобнее использовать один из спецификаторов столбцов из пакета array : p, m или b — они позволяют руками задать требуемую ширину столбца (это касается первого и последнего, которые должны быть шире остальных). Далее можно использовать тот же тип и для всех внутренних столбцов, но тогда понадобится размер подбирать точно, чтобы вертикальные линии совпадали. Либо можно воспользоваться спецификатором столбцов X из пакета tabularx и окружением для таблиц tabularx , которое позволяет задать ширину всей таблицы. Далее пара примеров.
Первый вариант: использовно обычное окружение tabular и ручной подбор ширины столбцов.
\documentclass[11pt] \usepackage[utf8] \usepackage \newcolumntype[1]<>p> \begin \centering \begin< |@<>C@<>|*C@<>|>@<>C@<>| > \hline a & b & c & d & e & f & g\\ \hline a & b & c & d & e & f & g\\ \hline start & \multicolumnl@<>>< \beginC@<>|>> 1 & 2 & 3 & 4 %\\ \hline 1 & 2 & 3 & 4 \\ \end> & end \\ \hline a & b & c & d & e & f & g\\ \hline a & b & c & d & e & f & g\\ \hline \end \end

Результат выглядит так:
Второй вариант, с автоматическим вычислением ширины внутренних столбцов и окружением tabularx мне кажется более удобным; здесь нужно указать только ширину таблиц целиком и ширины первого и последнего столбца (для вложенной и внешней таблиц эти значения должны, конечно же, совпадать):
\documentclass[11pt] \usepackage[utf8] \usepackage \usepackage \newcolumntype[1]<>p> \begin \centering \begin< |@<>C@<>|*>X@<>|>@<>C@<>| > \hline a & b & c & d & e & f & g \\ \hline a & b & c & d & e & f & g \\ \hline \multicolumnl@<>>< \begin< |@<>C@<>| @<>*>X@<>|> @<>C@<>|> start & 1 & 2 & 3 & 4 & stop %\\ \hline start & 1 & 2 & 3 & 4 & stop \\ \end> \\ \hline a & b & c & d & e & f & g\\ \hline a & b & c & d & e & f & g\\ \hline \end \end

Соответственно, результат для этого варианта:
В обоих случаях для столбцов фиксированной ширины использовался определенный мной в преамбуле формат C , а для формата с автоподбором ширины я не стал переопределять столбец, а просто явно добавил в преамбулу таблиц команду > — она просто должна выравнивать содержимое ячейки по центру.
Также, в обоих случаях я оставил закомментированной для вложенной таблицы вторую строку — можно раскомментировать и посмотреть, как будут выглядеть таблицы в этом случае.