Как сделать таблицу в латехе
Используя это, первые две таблицы появляются после пункта 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 , в аргументе которой описывается как сама линейка, так и ее пересечения с вертикальными линейками. Вот первый пример ее использования:
Аргумент команды \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-документ, и вам подойдёт любой из них, но так как я обо всём рассказываю, то должен рассказать хотя бы об одном. Я подготавливаю схемы в 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:
И отметим конвертацию шрифтов в пути (в Stroke Style -> Width у надписей советую ставить значения 0.1-0.3, иначе надписи в pdf-файле получаются очень толстыми):
Теперь в шапку LaTeX-документа наряду с остальными пакетами нужно добавить пакет graphicx:
А в тело документа вставить новую картинку:
И вот результат:
Пакеты pgf
Пакет pgfplotstable помогает очень гибко настраивать/составлять таблицы и позволяет считывать таблицу из csv-файла при компиляции.
Пакет pgfplots позволяет строить практически любые цветные настраиваемые графики на основе таблиц.
Установка пакетов на Windows/MikTex описана в документации (англ., PDF) , в случае Ubuntu нужно сделать следующее:
В конец файла добавить (заменять версию lucid на вашу не нужно):
Таблицы
Таблицы будем подготавливать в Gnumeric. Можно использовать любой табличный редактор, главное - гибкая возможность экспорта в текстовый вид.
Создадим таблицу, в первых трёх столбцах которой будут различные значения, а в четвёртом столбце - среднее по этим трём значениям и сохраним её под именем work_0001_2010_table01.gnumeric (кстати, gnumeric умеет сохранять таблицы в формате LaTeX, но мы намереваемся использовать пакет pgfplotstable, поэтому не будем этого делать):
Теперь необходимо экспортировать таблицу в текстовый файл. Важно заметить две вещи, первая: в текстовый файл импортируется только текущий лист (Sheet), вторая: для того, чтобы удобно работать со столбцами при использовании пакета pgfplotstable, необходимо в первой строке таблицы указать короткие однословные названия (алиасы) для столбцов.
Таблицу можно сохранить в CSV, но если вы используете русскую локаль в операционной системе, то дробные числа в таблице будут представлены с использованием запятой. Так что лучше сохраним файл в формате Text (configurable), а назовём его, для удобства, work_0001_2010_table01.dat
После этого вас спросят о дополнительных настройках - символ конца строки установите в соответствии с вашей операционной системой, разделитель - "пробел" и отключите кавычки.
В результате должен получиться такой файл:
Теперь можно вставить таблицу в LaTeX-документ. Добавьте в заголовок:
Теперь, в теле документа, настроим вывод у пакета pgf (запятые в качестве дробных разделитей, округление до шести знаков) и загрузим файл с данными, привязав его к алиасу midvalues:
Теперь опишем саму таблицу:
Снова перекомпилируем файл, и вот результат:
Графики
В завершение построим график по данной таблице.
Добавьте в заголовок документа:
И, в тело документа:
Мы указываем только значения для оси y и pgf автоматически подбирает значения на оси x, но в команде addplot также можно указать и столбец-источник для оси x: table[x=mid,y=b]
Снова перекомпиляция, и теперь мы видим отличный график-за-пять-минут по нашим значениям (значения я подбирал наугад, поэтому выглядят они не очень удачно (чуть лучше на графике с логарифмическими осями, однако задание сделать его таковым я лучше оставлю вам на дом), но надеюсь суть понятна).
Я привёл лишь простейший пример, но пакет pgfplots обладает настолько широкими возможностями, что если вы заинтересованы в данной теме, то вы просто обязаны хотя бы очень подробно рассмотреть всё руководство по пакету (англ., PDF).
Заключение
Итак, LaTeX и pgfplots - удобный способ оформлять не только текстовые документы с формулами, но и целые работы со схемами, графиками и таблицами. Причём делать их просто и удобно. Желаю вам большого количества полезных и легко созданных научных работ!
Вот такой вот примерчик таблица в латех на две колонки:
здесь содержимое выравнивалось по правому и по левому краю
а вот пример таблицы из трёх колонок где все три столбца выровнены по центру (обратите внимание на , где с (це) - как раз и есть выравнивание по центру):
А вот ещё пример таблицв с 4-мя колонками и тремя строки (в коде специально выделены три переноса) - но без разделительных линий:
Читайте также: