Привет, коллеги. Кто много работает с Латехом, как я, тот хорошо знает, как трудно сделать таблицу (по ссылке исчерпывающее руководство). Точнее, не трудно, а надо помнить много чего, что обычно забывается как раз к тому моменту, как потребуется. Конечно, мы можем создать шаблон, который будет вставляться по нажатию клавиши или выбираться из меню. Но есть методы более изощренные: не мы первые встали перед такой проблемой.
Если вы, как и я, работаете в Линукс или другой подобной системой, у вас наверняка стоит Перл. А для Перла есть прекрасный модуль LaTeX::Table, который позволяет создавать таблицы Латеха произвольной сложности. Это тоже требует освоения, но намного проще, чем освоение самих средств ЛаТеХа.
Впрочем, модуль предоставляет утилиту ltpretty, которая предназначена именно для запуска из текстового редактора и позволяет текстовую таблицу оформить как таблицу Латех.
Формат прост: первая строка настраивает таблицу: тут можно задать метку label=mytable и caption=Это таблица. Поля разделяются точкой с запятой (;).
Вторая строка — заголовок (имена столбцов), далее — строки данных. Элементы строки разделяются символом &, как и в ТеХе. Пустые строки создают горизонтальный разделитель.
Например:
label=MyTbl;caption=Это таблица, блин
столбец 1 & столбец & Ещё один столбец
2 & 3 & 42
5 & 7 & 42
11 & 13 & $6\cdot 9$
будучи пропущено через утилиту (выделим строки командой V и передадим утилите посредством :!ltpretty), даст:
\begin{table}
\centering
\begin{tabular}{llr}
\toprule
столбец 1 & столбец & Ещё один столбец \\
\midrule
2 & 3 & 42 \\
5 & 7 & 42 \\
\midrule
11 & 13 & $6\cdot 9$ \\
\bottomrule
\end{tabular}
\caption{Это таблица, блин}
\label{MyTbl}
\end{table}
Вроде, не так и сложно.
Окружение table создает плавающую таблицу, которую ЛаТеХ помещает там, где считает нужным. Можно подсказать ему, где лучше, поместив после \begin{table} в квадратных скобках t (верх страницы), b (низ), p (отдельная страница для плавающих таблиц и иллюстраций) и так далее.
Команда \centering включает режим выравнивания по центру. Окружение tabular создает собственно таблицу. Параметры в фигурных скобках, по одному на столбец, описывают выравнивание (l,c,r — левое, по центру и правое, соответственно) и могут содержать вертикальную черту | (или две: ||), символизирующую вертикальные линии таблицы (или двойную линию). Можно вставить в ячейку таблицы целый параграф (с переносом строк), включив "выравнивание" \p{ширина}.
\toprule и другие такие команды проводят линии вверху таблицы, внизу, посередине. Для них надо подключить пакет booktabs. Можете заменить их на простой \hline. Можно провести линию только для нескольких ячеек: \cline{3-5}.
Столбцы (элементы строки) разделяют символы &, а завершает строку символ \\. Если ячейка таблицы пуста, между двумя амперсандами просто ничего не ставим.
Команда \caption задает подпись к таблице, а метку (для ссылок на таблицу) задает \label. Ссылку потом делаем через \ref{метка}, и номер страницы с таблицей доступен через \pageref{метка}. Это относится не только к таблицам и рисункам, а вообще к чему угодно: параграфам и главам и даже просто позициям в тексте.
Пакет array добавляет вертикальное выравнивание, а пакет siunitx - выравнивание чисел по десятичной точке.
Пакет xcolor позволяет использовать цвет. В том числе покрасить строки или столбцы попеременно в серый/белый, например.
Сливать ячейки по горизонтали можно: команда \multicolumn. Пакет multirow позволяет слияние и по горизонтали, и по вертикали.
Пакет graphicx, используемый также для рисунков, дает возможность изменять размер таблиц как целого. Разумеется, вместе с текстом внутри, за размером шрифта надо следить и изменять при необходимости.
Пакет rotating поможет создавать повернутые таблицы (альбомное расположение или таблица на полях), а таблицы на много страниц - пакет longtable.
Если модуль LaTeX::Table у вас не установлен, то установите его:
perl -MCPAN 'install LaTeX::Table'
Проверить, установлен ли, можно так: perl -E 'use LaTeX::Table' или просто попробуйте вызвать ltpretty.
Сам модуль чрезвычайно мощный и позволяет создавать таблицы в самых сложных случаях: многостраничные, со слитыми и расщепленными ячейками и т.п.
Но и сам требует освоения. Документация утилит на Перле и его модулей всегда содержится внутри и доступна через perldoc: perldoc ltpretty или perldoc LaTeX::Table. Если Вы владеете Перл и нуждаетесь в сложных таблицах, изучите; создав себе свое средство под ваши нужды и привязав его в Вим, мы можете забыть о сложностях, создавая таблицы по щелчку пальцев. Кстати, можно поставить (так же, как выше) утилиту csv2pdf, основанную на модуле LaTeX::Table (есть еще ряд зависимостей) и преобразующую в PDF таблицы формата CSV. В этом формате данные строки разделяются запятыми (можно указать и другой символ) и это довольно удобно как для ввода данных в программы, так и для выдачи из них. А вот читать их не всегда здорово. Вим помогает отформатировать таблицы, но порой удобнее PDF, особенно если вам надо показать таблицу кому-то еще, кто не так крут, как вы.
Удачи, коллеги!