В редакторах документов LaTeX есть визуальные средства для создания таблиц, подобные имеющимся в MS Word. Для оформления сложных (в смысле форматирования) таблиц существует МНОЖЕСТВО пакетов (вот лишь краткая сводка){rel="nofollow"}. Кроме того, есть пакеты, позволяющие создавать таблицы на основе массивов данных, например, результатов экспериментов.
Здесь мы рассмотрим только создание таблиц: вручную, визуальными средствами и с помощью импорта данных.
Вручную: tabular и table
Таблицы создаются при помощи окружения tabular
, а их расположение в документе и заголовки задаются в окружении table
.
Первая строка tabular
имеет вид:
\begin{tabular}[положение]{столбцы}
Аргумент столбцы
задает количество столбцов, выравнивание текста в них и использование вертикальных линий в качестве границ. Реализуются это с помощью следующих символов:
обозначение | значение |
---|---|
l |
выравнивание по левому краю |
с |
выравнивание по центру |
r |
выравнивание по правому краю |
p{'ширина'} |
колонка заданной ширины с текстом, вертикально выровненным по верхнему краю строки |
| |
вертикальная линия |
|| |
двойная вертикальная линия |
Внутри окружения tabular
записываются строки таблицы, разделенные на ячейки. Для этого используются следующие команды:
обозначение | значение |
---|---|
& |
разделитель столбцов |
| конец строки (Можно задать дополнительный пробел перед следующей строкой, указав после величину пробела в квадратных скобках. Например: [6pt] ) |
|
\hline |
горизонтальная линия |
Примеры:
\begin{tabular}{ l l l }
ИСЗ & Дата запуска & Масса, кг \\
Спутник-1 & 4 октября 1957 & 83.6 \\
Спутник-2 & 3 ноября 1957 & 508.3 \\
Эксплорер-1 & 1 февраля 1958 & 21.5 \\
\end{tabular}
\begin{tabular}{ | l | l | l | }
\hline
ИСЗ & Дата запуска & Масса, кг \\ \hline
Спутник-1 & 4 октября 1957 & 83.6 \\
Спутник-2 & 3 ноября 1957 & 508.3 \\
Эксплорер-1 & 1 февраля 1958 & 21.5 \\
\hline
\end{tabular}
\begin{tabular}{ | p{100pt} | r | c | }
\hline
ИСЗ & Дата запуска & Масса, кг \\ \hline
Спутник-1 & 4 октября 1957 & 83.6 \\
Спутник-2 & 3 ноября 1957 & 508.3 \\
Эксплорер-1 & 1 февраля 1958 & 21.5 \\
\hline
\end{tabular}
\begin{tabular}{ || l | l | c || }
\hline
ИСЗ & Дата запуска & Масса, кг \\ \hline
Спутник-1 & 4 октября 1957 & 83.6 \\ \hline
Спутник-2 & 3 ноября 1957 & 508.3 \\ \hline
Эксплорер-1 & 1 февраля 1958 & 21.5 \\
\hline
\end{tabular}
\begin{tabular}{ | l | l | l | }
\hline
ИСЗ & Дата запуска & Масса, кг [15pt] \\ \hline
Спутник-1 & 4 октября 1957 & 83.6 \\
Спутник-2 & 3 ноября 1957 & 508.3 \\
Эксплорер-1 & 1 февраля 1958 & 21.5 \\
\hline
\end{tabular}
Пробелы между символами, управляющими отображением столбцов, не нужны, но есть смысл ставить их для лучшей читаемости.
По умолчанию столбцы таблицы будут растягиваться в ширину независимо от того, поместится ли готовая таблица на страницу или нет. Задать ширину столбца можно с помощью p{'ширина'}
. Ширина указывается в единицах, понятных LaTeX'у, например, в пунктах (pt) или сантиметрах (cm), или в долях ширины текста (\textwidth
).
Необязательный параметр положение
используется для того, чтобы указать расположение таблицы по вертикали относительно базовой линии окружающего текста. Это может быть полезно, если таблица не вынесена из текста, как это обычно бывает, а является частью абзаца. Чтобы указать расположение используются следующие символы:
обозначение | значение |
---|---|
b |
выравнивание по нижнему краю |
с |
выравнивание по центру (по умолчанию) |
t |
выравнивание по верхнему краю |
А текст идет,
\begin{tabular}[b]{ | l | l | }
\hline
1 & 2 \\ \hline
3 & 4 \\
\hline
\end{tabular}
а текст идет...
\begin{tabular}[t]{ | l | l | }
\hline
1 & 2 \\ \hline
3 & 4 \\
\hline
\end{tabular}
Для помещения готовой таблицы в документ используется окружение table
. Работает оно аналогично окружению figure
для рисунков:
\begin{table}[h]
\caption{Первые искусственные спутники Земли}
\centering
\begin{tabular}{ | l | l | l |}
\hline
ИСЗ & Дата запуска & Масса, кг \\ \hline
Спутник-1 & 4 октября 1957 & 83.6 \\ \hline
Спутник-2 & 3 ноября 1957 & 508.3 \\ \hline
Эксплорер-1 & 1 февраля 1958 & 21.5 \\
\hline
\end{tabular}
\label{table:satellites}
\end{table}
Визуальное редактирование: Texmaker, Kile
Создание таблиц вручную — одна из самых скучных операций в LaTeX. Поэтому естественно, что разрабатываются инструменты, упрощающие этот процесс. Так, в редакторе TeXmaker есть визуальный редактор таблиц доступный с помощью меню Помощник -> Быстрая таблица (Wizard -> Quick Tabular). Вот как выглядит в нем набор уже знакомой нам таблицы:
Аналогичное средство есть и в редакторе Kile:
В результате в текст документа будет вставлено готовое окружение tabular
с данными.
Если устанавливать редактор не хочется, а упростить создание таблиц нужно, то к вашим услугам онлайновый генератор таблиц.
Импорт данных: csvsimple, pgfplotstable, datatool,...
Пусть имеется файл данных testdata.csv
theta, x, y
30.0, 0.0, 0.0
60.0, 1.9098, 5.8779
90.0, 6.9098, 9.5106
120.0, 13.09, 9.5106
150.0, 18.09, 5.8779
180.0, 20.0, 0.0
который нужно импортировать в таблицу LaTeX.
Преобразование файла данных в таблицу можно выполнить с помощью пакета csvsimple
:
```latex:) \documentclass{article} \usepackage{csvsimple}
{class="img-responsive center-block"}
Простой импорт выполняется командой `\csvautotabular`. Более тонкий контроль за стилем столбцов подготавливаемой таблицы осуществляется с помощью `\csvreader`:
```latex
\documentclass{article}
\usepackage{csvsimple}
\begin{document}
\csvreader[tabular = | c | l | l | c |,
table head = \hline & X & Y & $\Theta$ \hline,
late after line= \hline
]
{testdata.csv}{theta=\theta, x=\x, y=\y}
{\thecsvrow & \x & \y & \theta}%
\end{document}
Заметьте, что мы не только сделали новые заголовки, но и изменили порядок следования столбцов, не меняя ничего в файле данных.
Как видим csvsimple
вовсе не так прост. Однако пакет pgfplotstable
предлагает еще больше возможностей. Начнем с простейшего примера, в котором аргументами команды \pgfplotstabletypeset
являются имя файла данных и разделитель (col sep
) — запятая (comma
):
\documentclass{article}
\usepackage{pgfplotstable}
\begin{document}
\pgfplotstabletypeset[col sep=comma]{testdata.csv}
\end{document}
По умолчанию данные округляются до сотых и выравниваются по центру столбца.
Рассмотрим пример посложнее. Здесь командой \pgfplotstableread
данные считываются в таблицу \table
, свойства которой затем настраиваются с помощью \pgfplotstabletypeset
:
\documentclass{article}
\usepackage{pgfplotstable}
\begin{document}
\pgfplotstableread[col sep=comma]{testdata.csv}{\table}
\pgfplotstabletypeset[
dec sep align, % Выравнивание по десятичной точке
fixed zerofill, % Дополнение недостающих цифр нулями
precision=4, % Число знаков после запятой
display columns/0/.style={precision=1}, % Стиль первого столбца (столбец 0)
] {\table}
\end{document}
Обратите внимание на индивидуальный стиль первого столбца и дополнение числа до требуемого количества знаков после запятой нулями.
\documentclass{article}
\usepackage{pgfplotstable}
\begin{document}
\pgfplotstabletypeset[
col sep=comma,
string type,
columns/theta/.style={column name=$\Theta$, column type={|l}},
columns/x/.style={column name=$x$, column type={|l}},
columns/y/.style={column name=$y$, column type={|c|}},
every head row/.style={before row=\hline, after row=\hline},
every last row/.style={after row=\hline},
]{testdata.csv}
\end{document}
Мы вновь переставили столбцы местами. Кроме того, обратите внимание на стили горизонтальных линий, заданные для первой и последней строк таблицы.
Полный список разделителей, доступных в pgfplotstable
: space
, tab
, comma
, semicolon
, colon
, braces
, &
, ampersand
.
Пакет datatool
позволяет не только создавать таблицы на основе импортируемых данных, но и строить графики, столбчатые и круговые диаграммы... Здесь самое время остановить перечисление, поскольку объем руководства пользователя к пакету превышает 200 страниц. Вот пример отображения страницы, импортированной с помощью datatool
\documentclass{article}
\usepackage{datatool}
\begin{document}
\DTLsetseparator{,} % разделитель ячеек
\DTLloaddb[keys={theta,x,y}]{mytable}{testdata.csv}
\DTLdisplaydb{mytable}
\end{document}
Импортированные данные будут помещены в таблицу mytable
. Выглядит не сложнее csvsimple
, не так ли? А теперь — пример манипуляций со столбцами:
\documentclass{article}
\usepackage{datatool}
\begin{document}
\DTLsetseparator{,}
\DTLloaddb[keys={theta,x,y}]{mytable}{testdata.csv}
\begin{tabular}{lll}
{\bf X} & {Y} & {$\Theta$}
\DTLforeach{mytable}{
\theta=theta,\x=x,\y=y}{
\x & \y & \theta}
\end{tabular}
\end{document}
До сих пор мы рассматривали импорт данных, не содержащих символы кириллицы. Пусть в нашем распоряжении файл satellites.csv
такого содержания:
ИСЗ | Дата запуска | Масса, кг
Спутник-1 | 4 октября 1957 | 83,6
Спутник-2 | 3 ноября 1957 | 508,3
Эксплорер-1 | 1 февраля 1958 | 21,5
Поскольку запятая в отечественной традиции используется для отделения целой части числа от дробной, в качестве разделителя ячеек выбран символ '|'
. Для отображения кириллицы нужно подключить соответствующие пакеты
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[russian,english]{babel}
Ничто не мешает нам поместить полученную таблицу в окружение table
(то же самое можно было сделать и во всех предыдущих примерах импорта). Не забудем указать основной язык документа (\selectlanguage
) для оформления заголовка таблицы.
\documentclass{article}
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[russian,english]{babel}
\usepackage{datatool}
\begin{document}
\selectlanguage{russian} % основной язык документа
\DTLsetseparator{|} % разделитель ячеек
\DTLloaddb[keys={name,date,mass}]{satellites}{satellites.csv}
\begin{table}
\caption{Первые искусственные спутники Земли}
\centering
\DTLdisplaydb{satellites}
\end{table}
\end{document}
Следует отметить, что при работе с файлами данных, содержащими кириллицу могут возникать проблемы. Как правило, они связаны с различием кодировок документа (например, UTF8) и файла (например, windows-1251).
Кроме указанных пакетов, есть немало сторонних инструментов для конвертации таблиц в LaTeX:
- Excel2LaTeX — макрос Excel для конвертации таблиц, подготовленных в этом табличном процессоре.
- Calc2LaTeX — макрос OpenOffice.org Calc.
- Gnumeric — свободный текстовый процессор, позволяющий сохранять всю таблицу или выделенный ее фрагмент в LaTeX (меню Data/Export Data/Export into Other Format...).
Комментарии
comments powered by Disqus