Как сделать таблицу в латехе

Обновлено: 03.07.2024

Используя это, первые две таблицы появляются после пункта 1, как и ожидалось, однако затем отображается пункт 2, а последние две таблицы появляются на следующей странице. Как сделать так, чтобы таблицы отображались в правильном месте?

ОТВЕТЫ

Ответ 1

После выполнения еще нескольких поисковых запросов я столкнулся с пакетом float, который позволяет вам запретить LaTeX переставлять таблицы.

Ответ 2

Это сработало для меня:

В начале определения использования usepackage включают в себя:

И до и после добавить:

Это размещает таблицу именно там, где вы хотите в тексте.

Ответ 3

Что произойдет, если текст плюс таблицы плюс текст не помещается на одну страницу? Стараясь таким образом набрать набор, вы, скорее всего, столкнетесь со слишком короткими страницами; то есть, поскольку таблица по умолчанию не может перерыть страницу, она будет перенесена на следующую и оставит пробел на странице раньше. Вы заметите, что это никогда не увидите в опубликованной книге.

Плавающее поведение - хорошая вещь! Я рекомендую использовать [htbp] как значение по умолчанию для всех таблиц и цифр до тех пор, пока ваш документ не будет завершен; только тогда следует подумать о тонкой настройке их точного размещения.

Ответ 4

Здесь простое решение, от Wikibooks:

Пакет placeins предоставляет команду \FloatBarrier, которая может использоваться для предотвращения перемещения поплавков по ней.

Я просто кладу \FloatBarrier до и после каждой таблицы.

Ответ 5

Вы можете добавить это в свою преамбулу и при необходимости изменить значения:

В частности, интерес может представлять значение\floatpagefraction.

Ответ 6

Если вы хотите иметь две таблицы рядом друг с другом, вы можете использовать: (при загрузке пакета float )

У каждого будет свой заголовок и номер. Другой вариант - пакет subfigure .

Ответ 7

Доступные параметры

Таблица может быть легко размещена со следующими параметрами:

  • h Разместите поплавок здесь, т.е. примерно в той же точке, в которой он находится в исходном тексте (однако, не совсем точно)
  • t Положение вверху страницы.
  • b Положение внизу страницы.
  • p Разместите на специальной странице только для поплавков.
  • ! Переопределите внутренние параметры, которые LaTeX использует для определения "хороших" позиций с плавающей точкой.
  • H Размещает поплавок точно в том месте, в котором указан код LATEX. Требуется пакет с плавающей точкой. Это несколько эквивалентно h! ,

Если вы хотите использовать H (или h! ) Для точного позиционирования, убедитесь, что вы правильно установили пакет float в преамбуле:

пример

Если вы хотите разместить таблицу на той же странице, либо в точном месте, либо, по крайней мере, в верхней части страницы (что лучше всего подходит для латексного движка), используйте параметры h и t следующим образом:

Возможностей окружения вполне хватает для печати простейших линованных таблиц, но в более сложных случаях возникают проблемы. Если подключить стилевой пакет , работа с линованными таблицами облегчается.

Итак, предположим, что этот пакет подключен. Тогда для задания горизонтальных линеек становится доступной, наряду с уже известными \hline и \cline , новая команда \hhline , в аргументе которой описывается как сама линейка, так и ее пересечения с вертикальными линейками. Вот первый пример ее использования:

\begin</p>
<p> <|c|cc|c|>\hline А & Б & В & Г\\ \hhline <|=|~~|-|>Д & Е & Ж & З\\ \hline \end

Аргумент команды \hhline устроен следующим образом. Во-первых, в нем сказано, что на территории первой колонки линейка должна быть двойной (символ =), на территории второй и третьей колонок линейки не должно быть вовсе (символ ~ - "тильда"), а на территории четвертой колонки линейка должна быть одинарной (символ -). Если в таблице колонок, то в аргументе \hhline должны присутствовать символов -, = или ~, имеющих тот же смысл, что и выше.

Вот пример таблицы, в которой используются эти возможности команды \hhline :

Подчеркнем, что команда \hhline обрабатывает пересечения линеек независимо от того, какие вертикальные линейки заданы в преамбуле. Забота о том, чтобы аргумент \hhline был согласован с преамбулой, лежит на вас.

Таблицы, простирающиеся на несколько страниц

Как уже отмечалось, окружения и рассматриваются LaTeX'ом как одна большая буква, и потому не разбивается по страницам. Можно, однако, создавать таблицы, в которых и разбиение на страницы, и определение ширины колонок происходит автоматически. Для этого надо подключить стилевой пакет и использовать окружение . Как и окружение , оно принимает один обязательный параметр — преамбулу (устроенную точно так же, как у ); внутри окружения действуют в точности те же правила записи текста, что и в окружении (в частности, допустимы команды \hline , \cline и \multicolumn ). Разница с окружением в том, что получаемая при этом таблица может занимать несколько страниц и иметь произвольную длину.

Опишем теперь некоторые особенности окружения , связанные с разбиением на страницы.

Во-первых, после первого запуска LaTeX'а колонки таблицы, определенной как , могут оказаться невыровненными (это связано с тем, что при первом проходе LaTeX читает такую таблицу не целиком, а по кускам, и выравнивает эти куски независимо друг от друга). Чтобы добиться выравнивания, надо запустить LaTeX еще раз-другой (если есть необходимость в повторном запуске, об этом будет выдано предупреждение).

Во-вторых, вы имеете возможность сделать так, чтобы заголовок таблицы повторялся на каждой новой странице, на которой таблица продолжается. Для этого надо оформить заголовок в виде строки или группы строк (и/или команд \hline ), и при этом последнюю из этих строк надо завершить не командой \\ , а командой \endhead . Обычно, впрочем, повторяющийся заголовок не идентичен тому, который ставят в самом начале таблицы. Отдельный заголовок для начала таблицы также оформляют в виде одной или нескольких строк, последняя из которых завершается командой \endfirsthead . Кроме того, можно предусмотреть специальную группу строк, которая будет ставиться на каждой странице внизу таблицы — для этого надо записать строку или группу строк, завершив последнюю из них не командой \\ , как обычно, а командой \endfoot . Можно также предусмотреть отдельную группу строк, которая ставится внизу таблицы только на последней из занимаемых таблицей страниц. Для этого надо вместо \endfoot написать \endlastfoot . Группы строк, завершающиеся командами \endhead , \endfirsthead , \endfoot или \endlastfoot , должны стоять в начале окружения . Вот пример использования этих средств:


Этой таблице соответствовал такой исходный текст:

В таблице, оформленной с помощью , можно явно указать место разрыва страницы с помощью \newpage (а также \pagebreak в окружении или \nopagebreak ). Эти команды должны следовать непосредственно после \\ (можно с новой строки).

При этом автоматически нумеруемые таблицы можно обычным образом метить с помощью \label (и потом ссылаться на эти места с помощью \ref ), но необходимо соблюдать два ограничения:

  • метку нельзя ставить в строки, которые появятся на печати более одного раза (благодаря повторению заголовков на других страницах);
  • с команды \label не должна начинаться ни одна графа таблицы.

На автоматически нумерующийся заголовок выделяется по умолчанию 4 дюйма. Чтобы изменить этот размер, надо присвоить соответствующее значение параметру \LTcapwidth .

В отличие от окружения , таблица в окружении не рассматривается как одна большая буква, а сразу располагается между абзацами, по умолчанию - по центру. Чтобы таблица была прижата к правому краю, надо указать у окружения необязательный аргумент r (в квадратных скобках, между \begin и преамбулой); необязательный аргумент l даст таблицу, прижатую влево.

В этой статье я вкратце расскажу об общих способах при подготовке различных учебных документов в LaTeX, а конкретно - о подготовке титульной страницы, вставке векторных рисунков (схем), вставке таблиц и вставке графиков, создающихся на основе подготовленных данных, занесённых или даже вычисляемых в электронной таблице.

Процесс будет рассматриваться со стороны Ubuntu/TeX Live, хотя всё рассказанное можно будет сделать и в Windows с использованием MikTeX и на Маке с использованием MacTeX. Также я затрону дополнительные open-source пакеты (версии которых, опять же, есть для всех операционных систем), которые помогут в процессе и опишу какие действия необходимо предпринять, чтобы получившийся в результате документ выглядел максимально близко к желаемому :). Это Inkscape, Gnumeric и пакеты pgfplots и pgfplotstable для LaTex.

Если вы в первый раз используете LaTeX, рекомендую стандартный вводный документ (англ., PDF) и небольшой справочник по форматированию текста (англ.).
В качестве документации к pgfplots подойдёт официальная: pgplots (англ., PDF) , pgplotstable (англ., PDF).

Установка

Создадим тестовый документ в любом редакторе (для gedit вы можете установить gedit-latex-plugin). Условимся, что наш основной документ будет называться work_0001_2010.tex, а все относящиеся к нему файлы будут использовать это название + какой-либо постфикс:

Вставим представленный тект в качестве содержимого, сохраним:

Скомпилируем и посмотрим, что получилось:

Если всё было сделано правильно - перед нами готовый результат.

Титульная страница

Итак, генерируемая по умолчанию страница обычно не соответствует тому, что ожидают преподаватели или ученики. Я просто покажу шаблон и то, что должно из него получиться - результат больше похож на ожидания, но конечно, при желании или необходимости, вы можете изменить его как заблагорассудится.

Содержание включено для примера и оно обновится в соотвествии с главами только при следующей компиляции - это правило для LaTeX. В результате всё это должно выглядеть так:

latex_habr_titlepage.jpg

Схемы

Есть много способов вставить изображение в LaTeX-документ, и вам подойдёт любой из них, но так как я обо всём рассказываю, то должен рассказать хотя бы об одном. Я подготавливаю схемы в Inkscape (свободный векторный редактор), экспортирую их в PDF и затем вставляю в LaTeX-документ.

Inkscape очень удобен для подготовки схем - у прямых линий (да и у фигур и кривых) можно установить с любых концов стрелки или сделать их пунктирными (Object -> Fill and Stroke -> Stroke Style), сектора можно делать ограничивая углы развёртки у круга, любую фигуру можно залить стандартными для таких схем кистями (хоть в полька-точечку (Object -> Fill and Stroke -> Fill Style -> Polka dots)), кривые удобно рисовать инструментом Кривая Безье и кроме всего прочего есть "примагничивание" (правда оно почему-то включается в свойствах документа (File -> Document Properties -> Snap)). Практически любой график или схему из методички/учебника можно перенести в векторный вид за полчаса.

Итак, экспорт из Inkscape. Исходный файл, по принятому ранее соглашению, назовём work_0001_2010_graph01.svg

В меню File -> Save as… выберем формат *.pdf:

latex_habr_graph01_save.jpg

И отметим конвертацию шрифтов в пути (в Stroke Style -> Width у надписей советую ставить значения 0.1-0.3, иначе надписи в pdf-файле получаются очень толстыми):

latex_habr_graph01_pdf.jpg

Теперь в шапку LaTeX-документа наряду с остальными пакетами нужно добавить пакет graphicx:

А в тело документа вставить новую картинку:

И вот результат:

latex_habr_graph01_inside.jpg

Пакеты pgf

Пакет pgfplotstable помогает очень гибко настраивать/составлять таблицы и позволяет считывать таблицу из csv-файла при компиляции.

Пакет pgfplots позволяет строить практически любые цветные настраиваемые графики на основе таблиц.

Установка пакетов на Windows/MikTex описана в документации (англ., PDF) , в случае Ubuntu нужно сделать следующее:

В конец файла добавить (заменять версию lucid на вашу не нужно):

Таблицы

Таблицы будем подготавливать в Gnumeric. Можно использовать любой табличный редактор, главное - гибкая возможность экспорта в текстовый вид.

Создадим таблицу, в первых трёх столбцах которой будут различные значения, а в четвёртом столбце - среднее по этим трём значениям и сохраним её под именем work_0001_2010_table01.gnumeric (кстати, gnumeric умеет сохранять таблицы в формате LaTeX, но мы намереваемся использовать пакет pgfplotstable, поэтому не будем этого делать):

latex_habr_table01_save.jpg

Теперь необходимо экспортировать таблицу в текстовый файл. Важно заметить две вещи, первая: в текстовый файл импортируется только текущий лист (Sheet), вторая: для того, чтобы удобно работать со столбцами при использовании пакета pgfplotstable, необходимо в первой строке таблицы указать короткие однословные названия (алиасы) для столбцов.

Таблицу можно сохранить в CSV, но если вы используете русскую локаль в операционной системе, то дробные числа в таблице будут представлены с использованием запятой. Так что лучше сохраним файл в формате Text (configurable), а назовём его, для удобства, work_0001_2010_table01.dat

latex_habr_table01_savecsv.jpg

После этого вас спросят о дополнительных настройках - символ конца строки установите в соответствии с вашей операционной системой, разделитель - "пробел" и отключите кавычки.

latex_habr_table01_export.jpg

В результате должен получиться такой файл:

Теперь можно вставить таблицу в LaTeX-документ. Добавьте в заголовок:

Теперь, в теле документа, настроим вывод у пакета pgf (запятые в качестве дробных разделитей, округление до шести знаков) и загрузим файл с данными, привязав его к алиасу midvalues:

Теперь опишем саму таблицу:

Снова перекомпилируем файл, и вот результат:

latex_habr_table01_rendered.jpg

Графики

В завершение построим график по данной таблице.

Добавьте в заголовок документа:

И, в тело документа:

Мы указываем только значения для оси y и pgf автоматически подбирает значения на оси x, но в команде addplot также можно указать и столбец-источник для оси x: table[x=mid,y=b]

Снова перекомпиляция, и теперь мы видим отличный график-за-пять-минут по нашим значениям (значения я подбирал наугад, поэтому выглядят они не очень удачно (чуть лучше на графике с логарифмическими осями, однако задание сделать его таковым я лучше оставлю вам на дом), но надеюсь суть понятна).

latex_habr_plot01_rendered.jpg

Я привёл лишь простейший пример, но пакет pgfplots обладает настолько широкими возможностями, что если вы заинтересованы в данной теме, то вы просто обязаны хотя бы очень подробно рассмотреть всё руководство по пакету (англ., PDF).

Заключение

Итак, LaTeX и pgfplots - удобный способ оформлять не только текстовые документы с формулами, но и целые работы со схемами, графиками и таблицами. Причём делать их просто и удобно. Желаю вам большого количества полезных и легко созданных научных работ!

vedro-compota

Вот такой вот примерчик таблица в латех на две колонки:

здесь содержимое выравнивалось по правому и по левому краю

а вот пример таблицы из трёх колонок где все три столбца выровнены по центру (обратите внимание на , где с (це) - как раз и есть выравнивание по центру):

А вот ещё пример таблицв с 4-мя колонками и тремя строки (в коде специально выделены три переноса) - но без разделительных линий:

Читайте также: