Набор таблиц в ЛаТеХе: 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 создаст простую таблицу, без подписи и ссылки. Вот пример кода простой таблицы в ЛаТеХе.

\begin{center}
\begin{tabular}{ccc}
Расширение краёв: & \textbf{1,0-1,4} & размер ФРТ \\
Аподизация: & \textbf{0,25-0,30} & размер ФРТ \\
Сглаживания краёв: & \textbf{0,25-0,50}& размер ФРТ \\
\end{tabular}
\end{center}
 
Колонки отделяются символом &, строки в таблице заканчиваются двойным слешем \ после крайней колонки. А вот как таблица выглядит в документе:


Здесь есть партизанская засада: если вы внутрь окружения tabular поставите метку командой \label{}, а потом сошлётесь на неё, то получите совсем не то, что ждёте. Ссылка в тексте укажет на номер раздела, а вовсе не таблицы.

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

\begin{table}[H]
\caption{Исправьте это на подпись к таблице}
\label{tabular:timesandtenses}
\begin{center}
\begin{tabular}{ccc}
Расширение краёв: & \textbf{1,0-1,4} & размер ФРТ \\
Аподизация: & \textbf{0,25-0,30} & размер ФРТ \\
Сглаживания краёв: & \textbf{0,25-0,50}& размер ФРТ \\
\end{tabular}
\end{center}
\end{table}
 
Вот как это выглядит в документе:


Вроде как то же самое, только номер теперь стал 1.1. Простановка ссылок осуществляется так же, как и всегда, то есть: поставить ссылку в LaTeX можно командой \label{tabl:Textssylki} а сослаться на неё командой \ref{tabl:Textssylki}. Не забываем ставить тильду между словом и ссылкой слово~\ref{tabl:Textssylki} чтобы ваша ссылка не уехала на другую строчку.


Управление видом таблицы в LaTeX

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

Точное размещение таблиц

Окружение table позволит вам указывать LaTeX, где вы хотите видеть таблицу:
  1. оставить определение места таблицы в тексте на усмотрение ЛаТеХа - \begin{table}[h] "хотелось бы таблицу здесь";
  2. настойчиво просить разместить таблицу после текста \begin{table}[h!] "очень хочу таблицу здесь", или
  3. ударить кулаком по столу - таблицу тут \begin{table}[H], то есть "хочу таблицу именно здесь и баста"
    • с прибавлением буквы p мы заставляем поместить ЛаТеХ таблицу отдельно на страницу так: \begin{table}[pH].
    • добавление букв t или b заставляют LaTeX поместить таблицу \begin{table}[tb!] вверху или внизу, соответственно.

Размеры колонок в таблице LaTeX

Сама по себе таблица находится в окружении \begin{tabular}{|rlc|} ... \end{tabular}. Здесь вертикальная линия обозначает отделение линией столбцов, а R L и С выравнивание соответственно по правому / левому краю и по центру.

Если столбец слишком широкий, можно задать его ширину с помощью выражения p{0.7\linewidth}, которое сделает столбец шириной в 70\% от ширины линии, например так: \begin{tabular}{|p{0.4\linewidth}p{0.4\linewidth}} сделает таблицу с двумя колонками по 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{2}{|c|}{Результаты измерений} означает, что мы объединяем 2 (два) столбца в таблице, получившаяся ячейка будет центрирована и нарисованы вертикальные линии. В объединённой колонке на той строке, где мы поместим команду \multicolumn, будет текст Результаты измерений. Вот как это выглядит в коде:

\begin{table}[H]
\caption{\label{tab:canonsummary}Измерительные характеристики цифровой камеры Canon EOS 400D.}
\begin{center}
\begin{tabular}{|c|c|}
\hline
Параметр & Значение \\
\hline
Разрешение & $3888 \times 2592$ \\
Размер сенсора & $22.2 \times 14.8$ мм \\
АЦП & 12~bit\\
\hline
\multicolumn{2}{|c|}{Результаты измерений} \\
\hline
Темновое смещение (BLO) & 256 \\
Максимальный линейный сигнал & 3070~DN \\
Значение насыщения & 3470~DN \\
\hline
\end{tabular}
\end{center}
\end{table} 
 
А вот как эта таблица будет выглядеть в документе:


Это может пригодиться особенно в длинных таблицах, которые простираются на несколько страниц и которые нужно переносить со страницы на страницу.


Многостраничные таблицы

Время от времени таблицы становятся длинными до неприличия и не влезают в одну страницу. Чтобы сделать многостраничную таблицу в LaTeX, используем пакет расширений \usepackage{longtable}, который подключаем в преамбуле документа (там, где остальные команды типа \usepackage). В остальном всё то же самое, как и раньше, только используем окружение longtable вместо table. Вот пример:

\begin{longtable}[H]{lp{0.7\linewidth}}
$A$ & area of the (geometrical) pixel [m\textsuperscript2] \\
$c$ & Speed of light $\approx 3 \cdot 10^8$ m/s \\
$DYN_{in}$ & Input dynamic range [1] \\
$DYN_{out}$ & 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^{-34} Js$ \\
$K$ & overall system gain~[DN/e-] \\
$k_d$ & Doubling temperature of the dark current~[$^\circ$C] \\
$N_d$ & dark current~[e-/s] \\
$N_{d30}$ & dark current for a housing temperature of $30^\circ C$~[e-/s]\textsuperscript2 \\
$S_g^2$ & variance coefficient of the spatial gain noise~[\%] \\
\end{longtable} 
 
Вот как это выглядит в документе:



Стоит упомянуть, что если столбец слишком широкий, можно задать его ширину вот так: \begin{longtable}[h]{lp{0.7\linewidth}} с помощью выражения p{0.7\linewidth}, которое сделает столбец шириной в 70% от ширины линии.



Поворот таблицы в LaTeX

Ну и под занавес приведу пример достаточно сложной таблицы, которая повёрнута на 90 градусов (таблица в ландшафтной ориентации в ЛаТеХе). Поворот сделан при помощи команды \rotatebox{90}{я - объект} что обеспечивает поворот любого объекта на 90 градусов. Так как данные структурированы и код организован достаточно логично, редактировать таблицу относительно просто. 

\rotatebox{90}{ %это обеспечивает поворот любого объекта
\begin{minipage}{1.5\linewidth}
\begin{table}[H]
\caption{Сравнение количественных данных по влиянию искажений на результат декодирования}
\begin{center}
\begin{tabular}{|p{5cm}c|c|}
\hline
\multicolumn{3}{|c|}{\textbf{Графические изображения}}\\
\hline
\textbf{Характеристика} & \textbf{8-битные} & \textbf{16-битные}\\
\hline
\multicolumn{3}{|c|}{Влияние шумов квантования}\\
\hline
Шумы квантования
& $6.3 \div 22.6\%$
& $0.2 \div 0.5\%$ \\
\hline
\multicolumn{3}{|c|}{Влияние шумов фотоприёмника}\\
\hline
Шумы фотоприёмника
& $8.8 \div 87.5\%$
& $7.1 \div 87.6\%$ \\
\hline
\multicolumn{3}{|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
\end{tabular}
\end{center}
\end{table}
\end{minipage}} 
 
Вот как таблица выглядит в документе:


Есть и другие команды для поворота объектов в LaTeX, например turn из пакета rotating. Преимущество команды \rotatebox в том, что она содержится в пакете \usepackage{rotating} и обычно graphicx уже подключён для отображения иллюстраций в LaTeX.

Заключение

В этом разделе я собрал все примеры таблиц, которые использовал в реальных документах. Этого должно хватить для того, чтобы оформить простые таблицы в LaTeX. Более сложные таблицы описаны в постах:
Главное - не лениться структурировать код таблицы, и тогда таблицы в ЛаТеХе не превратятся для вас в камеру пыток.

48 комментариев: |высказаться!| RSS-лента дискуссии.|
uleysky комментирует...

Как-то напрягает ширина столбца в 0.7\linewidth. Не мелковато получится?

В TeX'е этот материал есть или только тут, в html?

yuriy.petrovskiy комментирует...

В тексте статьи везде "\textbf{tabular}" вместо соответствующего выделения жирным шрифтом

Анонимный комментирует...

Если не трудно, расскажите как делать вертикальные подписи в шапке таблицы. Иногда бывает нужно.

Hina-Ichigo комментирует...

2 uleysky
> Как-то напрягает ширина столбца в 0.7\linewidth. Не мелковато получится?

Хотя да… Ширина в 70 % строки — это серьёзно.

> В TeX’е этот материал есть или только тут, в html?
Скорее всего, он как раз в TeX’е и есть, просто тут стоит какой-то хитрый конвертер LaTeX → HTML, в котором есть немного недочётов.

Действительно, команды \textit, \textbf и т. п. в тексте статьи не дают ожидаемого результата. Плюс, после названий команд (без аргументов, с аргументами всё в порядке) в тексте остаётся вертикальная черта (|), скорее всего, это что-то с интерпретацией \verb’а.

Но это лирика, и я не буду на ней задерживаться. (Сложносочинённое предложение. Я не вычитывал всё пристально, так что, возможно, это ещё не всё.)

В таблице из раздела «Набор простой таблицы в LaTeX» там не весь второй столбец полужирным шрифтом набран, хотя в исходнике — именно так.

В таблице из раздела «Таблицы с объединением столбцов» не совсем тот результат, что должен давать приведённый исходник. Ячейка «Нестандартные болты» не растянута на две строки.

kean комментирует...

Может лучше получившиеся таблицы давать в виде картинок?

Анонимный комментирует...

> Попробуйте такое в книжках разыскать, и я пожелаю вам удачи.

книга
М.Гуссенс, Ф.Миттельбах, А.Самарин
"Путеводитель по пакету LaTeX и его расширению LaTeX2e"
стр. 155 пункт 5.6.4

Анонимный комментирует...

> Попробуйте такое в книжках разыскать, и я пожелаю вам удачи.

Еще одна книга:
Котельников И. А., Чеботаев П. З. "LaTeX по-русски", 3-е издание, 2004 г., стр. 288

Анонимный комментирует...

> Попробуйте такое в книжках разыскать, и я пожелаю вам удачи.

Еще книга:
Роженко А. И. "Искусство верстки в LaTeX'е", 2005 г., стр. 144.

В книге Евгения Балдина тоже про это есть. Так что почти во всех книгах про LaTeX на русском есть про таблицы (и даже больше и порой несколько понятней). В книге Львовского действительно про таблицы написано маловато, но она и была написана довольно давно, одной из самых первых (1-е издание).

Анонимный комментирует...

Таблица "Нестандартные болты для левой резьбы", изображенная на Вашей странице, не совсем соответствует тому, что получается в результате исполнения указанного Вами же кода на LaTeX'e (с необходимой преамбулой разумеется). Не соответствует она как раз в существенной части.

Может быть в html-коде надо что-то подправить? ТщательнЕе надо.

Анонимный комментирует...

К вопросу о том, чем должна быть повернута к пользователю документация. Я неплохо разбираюсь в LaTeX'e, но не сразу (каюсь) понял что это за окружения такие \textbf{tabular} и \textbf{table}. Впрочем, может быть новички сразу поймут что это такое.

ТщательнЕе надо.

Hina-Ichigo комментирует...

В общем, я так думаю, что это всё писано под LaTeX (стиль кавычек, \textbf и компания), а потом прогнаное через конвертер (или в самом блоге стоит конвертер) в HTML, в котором есть кучка багов.

По крайней мере, ясно, почему в «Нестандартных болтах» не та таблица: конвертер не воспринял тот хак с растянутым столбом. Так как эту штуку будет довольно трудно сделать, то лучше залезть и руками поправить (colspan = 2 или что-то в этом роде).

Анонимный комментирует...

>В общем, я так думаю, что это всё писано под LaTeX (стиль кавычек, \textbf и компания), а потом прогнаное через конвертер (или в самом блоге стоит конвертер) в HTML, в котором есть кучка багов.

>По крайней мере, ясно, почему в «Нестандартных болтах» не та таблица: конвертер не воспринял тот хак с растянутым столбом. Так как эту штуку будет довольно трудно сделать, то лучше залезть и руками поправить (colspan = 2 или что-то в этом роде).

Все это совершенно очевидно. Но автор блога ругает в частности Кручинина (я с ним не знаком и не являюсь его апологетом) за документацию (в значительной степени справедливо) и других. Так пусть посмотрит на себя со стороны. И, если эта страница и есть то лицо, которым повернута документация к пользователю, то искаженная гримасой. Возможно я ошибаюсь.

Впрочем, автор все-таки делает полезное дело. Сам не люблю "вордодятлов". Просто полагаю, что если уж делаешь работу, то делай ее не наспех. (Имею интерес относительно Дебиана и у меня возникает вопрос, а не пишет ли автор блога (Михаил) заметки о Дебиане так же как и о LaTeX'e, и не стоит ли вместо этого почитать другую, в частности оригинальную, документацию.) Защита диссертации не может служить оправданием. Есть очень хороший принцип "Исповедуй то, что проповедуешь".

Анонимный комментирует...

Кстати, книга Котельникова и Чеботаева, по-моему, вполне повернута к читателю лицом. Содержит очень много примеров, начиная от самых простых. Правда там целая страница посвящена окружению "verse", которое позволяет набирать стихи. Это, конечно, очень большой ее недостаток, и поэтому она совершенно не пригодна для изучения LaTeX'а. Кроме того, там нет значка диаметра.

Хотя, справедливости ради надо отметить, что для тех, кому СРОЧНО надо написать диплом или диссертацию в LaTeX'e, это действительно не совсем подходит.

virens комментирует...

2 uleysky комментирует...
Как-то напрягает ширина столбца в 0.7\linewidth. Не мелковато получится?
В самый раз :-)

В TeX'е этот материал есть или только тут, в html?
Как ниже в комментариях уже попеняли, именно в ЛаТеХе это и пишется, а потом переводится в HTML. Я не большой спец в этом деле, признаться.

2 yuriy.petrovskiy комментирует...
В тексте статьи везде "\textbf{tabular}" вместо соответствующего выделения жирным шрифтом
Каюсь, упустил, поправил. Спасибо!

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 уже есть.

Programmaster комментирует...

Первое, что бросилось в глаза — ты, virens, забыл обрамить основное тело поста в <span class="fullpost"></span> — и поэтому на главной показан пост полностью, что, естественно, не есть хорошо.
Остальное не вычитывал.

Анонимный комментирует...

>Выражаю благодарность комментаторам за большое количество помидоров, брошенных в сторону автора :-) Ошибки поправил, комментарии постарался учесть. Планирую через некоторое время заменить таблицы на рисунки.

Вооот! Приятно иметь дело с адекватным человеком! Будем читать про Дебиан и дальше.

В благодарность предлагаю Вам Михаил полезные на мой взгляд ссылки (их у меня очень много):
http://www.ctan.org/tex-archive/help/Catalogue/catalogue.html
http://www.ctan.org/tex-archive/help/Catalogue/alpha.html
http://www.ctan.org/tex-archive/help/Catalogue/bytopic.html
Знаю Ваше отношение к CTAN (но там ведь такие же люди как и Вы, делают работу наверное бесплатно). Я этими страницами активно пользуюсь для поиска информации и документации. Кстати, про документацию к пакету "disser". Каждый желающий может посмотреть на "документацию" к этому пакету и составить свое мнение по этому поводу:
http://www.ctan.org/tex-archive/help/Catalogue/entries/disser.html

http://www.ctan.org/tex-archive/info/
Здесь, правда, надо примерно знать что и где искать. Но тут этого очень много. Например:

Все возможные (и невозможные) символы:
http://www.ctan.org/get/info/symbols/comprehensive/symbols-a4.pdf

Очень хорошее руководство про то, как набирать математику:
http://www.ctan.org/get/info/math/voss/mathmode/Mathmode.pdf

Как вставлять графику:
http://www.ctan.org/get/info/epslatex/english/epslatex.pdf

И еще очень много чего:
http://www.ctan.org/get/info/gentle/gentle.pdf
http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=impatient
http://www.ctan.org/get/info/l2tabu/english/l2tabuen.pdf

Я, кстати, уже перешел на KOMA-Script:
http://www.ctan.org/tex-archive/help/Catalogue/entries/koma-script.html
Это замена стандартным классам article, report, book (развитие которых заморожено). KOMA-Script активно развивается.

Пользуюсь разработками Александра Роженко:
http://www.ctan.org/tex-archive/help/Catalogue/entries/ncctools.html
http://www.ctan.org/tex-archive/help/Catalogue/entries/ncclatex.html
(правда классом ncclatex не пользуюсь, пользуюсь KOMA-Script)

Ну и разумеется для презентаций пользуюсь классом beamer (весьма достойная вещь):
http://www.ctan.org/tex-archive/help/Catalogue/entries/beamer.html

Анонимный комментирует...

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

\documentclass[a4paper,11pt]{scrartcl} % Это класс "статья" от KOMA-Script

\usepackage{fixltx2e}
\usepackage{ifpdf}

\usepackage[cp1251]{inputenc} % Instead of "cp1251" may be "koi8r" etc
\ifpdf\usepackage{cmap} % Makes PDF files, generated by pdflatex "searchable and copyable" in Adobe Reader and other compliant PDF viewers (MUST be loaded before "fontenc" package!!!)
\fi
\usepackage[T2A]{fontenc}
\usepackage[english,russian]{babel}

\usepackage[margin=2.5cm]{geometry}
\usepackage{amssymb,amsmath}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{fancyhdr}
\usepackage{indentfirst}
\usepackage{cite}

Использую и другие пакеты. Здесь отсутствует пакет "caption". Он не нужен, т. к. используется класс от KOMA-Script. Там команда \caption определяется отдельно и так же как и в пакете "caption" допускает самые разнообразные настройки.

virens комментирует...

2 Анонимный комментирует...
Эту фразу, так же как и про отсутствие документации, написал Евгений Балдин в своих статьях двухлетней давности. Документация по disser уже есть.
Учту и посмотрю. Пакет-то хороший, я сейчас в нём свой диссер оформляю.

2 Version3nix комментирует...
Пока читал сознание перевернулось несколько раз.
Эвон как. Отчего ж? :-)

2 Programmaster комментирует...
Первое, что бросилось в глаза — ты, virens, забыл обрамить основное тело поста в span class="fullpost"
Нет, не забыл. Просто там столько всяких span-ов понакручено, что где-то fullpost-овский закрывающий span теряется. Сегодня только благодаря шаманским пляскам вроде всё закрыл. Редактировать теперь страшно :-)))

на главной показан пост полностью, что, естественно, не есть хорошо.
Ага, грузится долго, это я согласен.

P.S. Твои правки вношу в статьи. Пока остановился на "Эмуляторы для Linux: быстрый обзор".


2 Анонимный комментирует...
Вооот! Приятно иметь дело с адекватным человеком!
А я разве прыгал по сцене с криком "Дывелоперс, дывелоперс"? :-))

В благодарность предлагаю Вам Михаил полезные на мой взгляд ссылки (их у меня очень много)
Отлично! Большущее спасибо, я такие ссылки очень люблю!

Внести обещаю не сразу (до конца января у нас аврал), но обязательно внесу чуток позднее. Отгрузка ссылок в комментарии очень приветствуется!

Кстати, про документацию к пакету "disser".
Чувствую, что придётся писать её мне. :-)

Ну и разумеется для презентаций пользуюсь классом beamer (весьма достойная вещь):
Я про неё писал и сам пользуюсь. Но мне в лаборатории сказали так: Миша, на конференции МИФИ твои презентации будут в PowerPoint. Без базару :-)

2 Анонимный комментирует...
\documentclass[a4paper,11pt]{scrartcl} % Это класс "статья" от KOMA-Script
Я хотел бы использовать минимум сторонних классов.

\ifpdf\usepackage{cmap} % Makes PDF files, generated by pdflatex "searchable and copyable"
Занятно. Я использую dvipdfmx для конвертирования в PDF и всё работает. На русском ещё использую usefont.


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

Анонимный комментирует...

Еще полезные ссылки на CTAN:

VisualFAQ:
http://www.ctan.org/tex-archive/info/visualFAQ/

Short Course by George Gratzer:
http://www.ctan.org/tex-archive/info/Math_into_LaTeX-4/

Анонимный комментирует...

За longtable спасибо, приходильсь мучаться.

Анонимный комментирует...

linewidth это ширина строки, никак не линии.
и никак не дядя Кнут, а профессор Кнут.

потом, здесь все про ручное выравнивание ширины столбцов стаблицы. однако, имеется окружение tabularx, которое может делать выравнивание ширины столбцов автоматически. про него нет ни слова. не говоря уже про другие окружения для табличного оформления.

Вы, очевидно, никогда не читали М. Гуссенс, Ф. Миттельбах, А. Самарин. "Путеводитель по пакету LaTeX и его расширению LaTeX2e"

Примеры в представленной заметке дико примитивные.

\begin{table}[H] будет работать, как написано (сделает "неплавающий" объект, здесь - таблицу) только если подключен пакет float.

Миша.

Анонимный комментирует...

Имхо стоит написать о ltxtable - это longtable и tabularx.

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

Вообще сильно помогает emacs + table.el

Анонимный комментирует...

Подскажите, пожалуйста, как сделать таблицу с заголовком, но без номера. Мне нужно, чтобы она вообще не участвовала в нумерации.
Суть проблемы в том, что таблица, которую мне нужно вставить слишком широкая. она не помещается на страницу. Я решила разбить ее на две части: одна из них Таблица с номером и названием, вторая соответственно Продолжение без номера.
Может есть какой то другой способ? Подскажите, пожалуйста, буду очень благодарна :)

Анонимный комментирует...

чтобы окружение minipage стало доступным, следует подключить пакет footnpag

Миша.

P.S. у вас плохая привычка не указывать, какие пакеты нужно подключать в преамбуле. новичкам эти сведения нужны обязательно.

Анонимный комментирует...

Тоже намучался с таблицами (еще предстоит - диплом на носу, но никаких wysiwyg), но нет единых рекомендаций по оформлению текста в ячейках. Например то же выравнивание в столбцах задаваемое в преамбуле окружения table {ccc}, даст выравнивание в столбцах по центру, а если я указываю ограниченную ширину столбца p{100px}, то выравнивание уже будет по левому краю. Как это изменить (поборол тем что в каждой ячейке задавал окружение center, но это не есть правильно, так думаю). Еще как изменять шрифт на всю таблицу, строки, столбцы, оформление заголовков (выравнивание, подпись), перенос заголовков на несколько страниц

саша комментирует...

Привет!Спасибо. А как подсчитать общее число рисунков и таблиц в диссере?

Elnara комментирует...

Почему у меня не отображается номер таблицы? задаю \label в окружении \begin{table} \end{table}

\caption отражается, а номер таблицы \label ну никак не хочет!

в чем дело может быть, подскажите?!

Анонимный комментирует...

Как увеличить размер шрифта в латехе?

Анонимный комментирует...

для поворота часто удобно юзать окружение landscape

\usepackage{lscape}
...
\begin{landscape}
...
\end{landscape}

Анонимный комментирует...

Уважаемый автор, пожалуйста добавить в свою статью следующее:

Путем экспериментов со связкой MikTex 2.8 + WinEdt я выяснил, что если поставить \label{tab:some_table} до \caption{...}, то даже при использовании окружения table в ссылке будет выдаваться не номер таблицы, а номер раздела.

Анонимный комментирует...

«если поставить \label{tab:some_table} до \caption{...}»

У меня (texlive, debian lenny / ubuntu hardy heron) в таком случае номер в ссылке вообще отсутствует,
причём не только для окружения table, но и для figure.

Анонимный комментирует...

А как сделать, чтобы 4 системы уравнений были в два столбика написаны?:(( помогите:)

Анонимный комментирует...

Можно, например, в виде четырёх блоков в таблице (тогда, в принципе, можно пронумеровать каждую систему отдельно):
\begin{table}
\begin{tabular}{cc}
\parbox{0.45\linewidth}{$$
\left\{
\begin{array}{rcrll}
A [x] &+& B [y] &=& C \\
D [x] &-& F [y] &=& E \\
\end{array}
\right.
$$}
&
\parbox{0.45\linewidth}{$$
\left\{
\begin{array}{rcrll}
A [x] &+& B [y] &=& C \\
D [x] &-& F [y] &=& E \\
\end{array}
\right.
$$}
\\
\parbox{0.45\linewidth}{$$
\left\{
\begin{array}{rcrll}
A [x] &+& B [y] &=& C \\
D [x] &-& F [y] &=& E \\
\end{array}
\right.
$$ }
&
\parbox{0.45\linewidth}{$$
\left\{
\begin{array}{rcrll}
A [x] &+& B [y] &=& C \\
D [x] &-& F [y] &=& E \\
\end{array}
\right.
$$ }
\\
\end{tabular}
\end{table}

или в виде одной большой матрицы:
$$
\begin{array}{cc}
\left\{
\begin{array}{rcrll}
A [x] &+& B [y] &=& C \\
D [x] &-& F [y] &=& E \\
\end{array}
\right.
&
\left\{
\begin{array}{rcrll}
A [x] &+& B [y] &=& C \\
D [x] &-& F [y] &=& E \\
\end{array}
\right.
\\ \\
\left\{
\begin{array}{rcrll}
A [x] &+& B [y] &=& C \\
D [x] &-& F [y] &=& E \\
\end{array}
\right.
&
\left\{
\begin{array}{rcrll}
A [x] &+& B [y] &=& C \\
D [x] &-& F [y] &=& E \\
\end{array}
\right.
\\
\end{array}
$$

Анонимный комментирует...

Присоединяюсь к предложению от 13.08.2010 15:34:00, сама ломала голову в течение получаса над тем, что же я делаю не так :(

virens комментирует...

@Анонимный комментирует...
Присоединяюсь к предложению от 13.08.2010 15:34:00, сама ломала голову в течение получаса над тем, что же я делаю не так
Добавлено! Спасибо за ценный комментарий и пинок автору :-) Он это ценит!

Анонимный комментирует...

Подскажите, пожалуйста, как выровнять название таблицы (тот который в \caption{название таблицы}) по левому краю - так, как это необходимо согласно ДСТУ(т.е. у нас в Украине).

Часа 2 ухлопал - а результата нет(не рабоют их варианты и все: пробывал \captionoptions и еще пару библиотечек левых) - может потому, что использую G7-32 - не знаю...

Заранее спасибо.

саша комментирует...

по таблице - посмотри как это сделано в классе vakthesis и загляни на linux.org.ua

RadishFM комментирует...

Весьма неплохо, еще бы показали, что-нить из красивого оформления таблицы.Границы двойными линиями, выделение цветом и т.д.

Анонимный комментирует...

Подскажите пожалуйста, как сделать таблицу шириной во всю страницу, если текс сделан в 2 столбца?! Заранее спасибо.

Анонимный комментирует...

Подскажите, пожалуйста, как сделать несколько таблиц в ряд! Пыталась воспользоваться окружением minipage:
\begin{minipage}{0.45\linewidth}
\begin{table}[h]
\begin{tabular}{c|c}
....
\end{tabular}
\end{table}
\end{minipage}
Но компилятор выдает ошибку: Not in outer par mode.
Если убрать оттуда окружение table, то все работает, но команда \caption тогда подписывает таблицу как "рис."
Как быть?

Анонимный комментирует...

подскажите пожалуйста можно ли набрать таблицу с невидимыми полями??

virens комментирует...

@RadishFM комментирует...

Весьма неплохо, еще бы показали, что-нить из красивого оформления таблицы.

Это будет в посте, который появится очень скоро - я не хочу всё сваливать в один пост. Раскраска в новом посте будет, кстати.


@Анонимный комментирует...

подскажите пожалуйста можно ли набрать таблицу с невидимыми полями??

Это как? Если имеется в виду объединить строки\столбцы вместе, то да - командами \multirow и \multicol. Это описано в посте, который совсем скоро появится на главной странице.

-----

Так, пост переделан, хотя материал остался тот же самый.

Я вычистил код поста, который уже переделывался и дописывался много раз, отчего пост начал терять свою структуру. Пост написан в Markdown и сконвертирован в HTML. Добавлены иллюстрации для каждой из таблиц - они теперь в виде рисунков, а не HTML-кода.

Прибил баг в посте: оказывается, команда \rotatebox требует пакета \usepackage{graphicx}. А я и не знал :-)

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

am комментирует...

Вопрос нубский может:
как изменить размер шрифта в заголовке таблицы. Где написано "Table 1. Bla bla bla"

Анонимный комментирует...

Добавьте, пожалуйста, ссылки на "Таблицы с объединением столбцов" и "Продвинутые таблицы в LateX",

virens комментирует...

@Анонимный комментирует...

Добавьте, пожалуйста, ссылки на "Таблицы с объединением столбцов" и "Продвинутые таблицы в LateX"

Добавил ссылки. Спасибо за поправку.

Vlad Salat комментирует...

Скажите, пожалуйста, вопрос, наверное, не совсем не в этой теме, но где еще разместить, не знаю. У меня есть страница в А4 формате, я хочу повернуть ее в альбомную ориентацию и разместить слева, чтобы помещалась на странице A5.
Оригинал: http://s3.hostingkartinok.com/uploads/images/2013/10/0028dce4e7fcf565499fc239c865561a.png
Если сделать
\usepackage{pdflscape}
...
\begin{landscape}
...
\end{landscape},
то у меня на странице не помещаются все объекты, грубо говоря - не масштабируются, и все кроме заголовка уезжает на другую страницу. А если просто печатать А4 на половинке в повернутом варианте, то ничего не вылезает, и все помещается. Как исправить это?
В результате: http://s3.hostingkartinok.com/uploads/images/2013/10/2ad59552c6830a8372f07157950a62c6.png
http://s6.hostingkartinok.com/uploads/images/2013/10/2969dee9ae2bd91d93359f0be5004455.png

virens комментирует...

@Vlad Salat комментирует...

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

Я такое делаю с помощью pdfpages: грубо говоря, делаешь страницу в латехе как ты хочешь, потом компилируешь её в PDF, и с помощью пакета pdfpages вставляешь в другой документ как картинку (векторную). Оно так проще.

У меня есть страница в А4 формате, я хочу повернуть ее в альбомную ориентацию и разместить слева, чтобы помещалась на странице A5.
Есть у меня наброски на Лунодроме на эту тему - должно помочь. Процедура такая: делаем документ со страницей в латехе, компиляем его в PDF. Потом делаем другой документ, вставляем туда \usepackage{pdfpages} и вставляем ссылку на PDF-ник.

Надеюсь, помог чем-то.

Отправить комментарий

Подписаться на RSS-ленту комментариев к этому посту.