Краткое содержание
Это занятие завершает пятый раздел курса, посвящённый таблицам и рисункам. Оно восстанавливает цепочку принципов и механизмов, ведущую от простейшей таблицы к рисунку TikZ, помещённому в плавающий объект, и для каждого звена указывает, какой принцип в нём используется и на каком занятии он установлен; соотносит достигнутое с планом курса и уточняет, какие вопросы, лишь намеченные здесь, остаются следующим разделам; повторяет в итоговом тесте навыки входного теста; и заканчивается шестью задачами повышенной трудности, более сложными, чем задачи занятий, которые требуют сочетать несколько занятий, чтобы набрать таблицу лабораторного отчёта по требованиям факультета, найти шесть дефектов в документе, который компилируется без предупреждений, составить рисунок из фотографии и нарисованной схемы, построить таблицу по файлу данных, переделать схему, которая не переживает перехода к двум колонкам, и выбрать окружение для трёх разных таблиц.
Цели обучения
- Восстанавливать порядок механизмов раздела, указывая принцип, на который опирается каждый из них.
- Объяснять, почему так много дефектов таблиц, изображений и плавающих объектов компилируется без предупреждений, и где искать их след в результате.
- Отличать то, что раздел установил, от того, что он лишь наметил и что разовьют следующие разделы.
- Набирать таблицы и рисунки, сочетающие выровненные числа, подписи, названия, ссылки, подрисунки и чертежи, и предсказывать, что даст исходный код, который их сочетает.
- Выбирать для каждой таблицы, изображения или рисунка окружение, размер и место, которые выдерживают изменения документа.
Что достигнуто в разделе
Раздел ставил целью, чтобы данные, изображения и рисунки работы читались так же ясно, как её текст, нумеровались и упоминались в ссылках так же, как её разделы и уравнения, и находили своё место на странице без того, чтобы автор задавал его вручную. Цель достигнута с опорой на то, что введение считало известным из предыдущих разделов: ссылки, зависящие от того, что запоминает метка; выравнивание из предыдущего раздела, где каждая \\ открывает строку, а каждый & отделяет ячейку; и преамбулу с собственными командами, где решения принимаются один раз. Поэтому пройденный путь можно прочитать как единую цепочку из пяти участков.
Удобочитаемые таблицы
Занятие об удобочитаемых таблицах применило к тексту принцип выравнивания: tabular строит строку на каждую \\ и ячейку между каждой парой &, с одной буквой столбца на ячейку, а целое есть бокс, который движок размещает целиком. Из правила счёта оно вывело два вида ошибок: громкую, «Extra alignment tab», которая при пропущенной \\ указывается на следующей строке, и тихую, строку с меньшим числом ячеек, которую движок принимает. Оно заменило сетку тремя линейками booktabs, с укороченной \cmidrule и \addlinespace; выровняло числа по десятичной запятой столбцом S пакета siunitx, чей table-format резервирует место, которое более широкое число превышает, не оставляя иного следа, кроме «Overfull \hbox» в журнале, и чью запятую нужно объявить через \sisetup, потому что siunitx не берёт её у babel; перенесло единицы измерения в заголовки, в фигурных скобках в столбцах S; и набрало текст с рваным правым краем с помощью \raggedright\arraybackslash.
Сложные и длинные таблицы
Занятие о сложных и длинных таблицах распространило правило счёта на \multicolumn, занимающую место нескольких ячеек, и показало, что забытый начальный & сдвигает групповой заголовок незаметно для движка, потому что частичные линейки зависят только от своих номеров. Оно дало таблицам ширину строки с помощью tabularx или tabular* с \extracolsep{\fill} и отвергло \resizebox, меняющий кегль; распределило длинные таблицы по нескольким страницам пакетом longtable, который повторяет свои заголовки, нумерует один раз, если продолжение несёт \caption[], требует ещё одного прохода, чтобы закрепить ширины, и теряет строки, если заключить его в table; и построило таблицы из единственного источника, файла данных, пакетами csvsimple и pgfplotstable, предупредив, что filecontents* без overwrite не перезаписывает файл.
Изображения в документе
Занятие об изображениях в документе установило, что \includegraphics создаёт бокс, который движок ставит в строку как большую букву, и вывело из этого абзацный отступ, из-за которого изображение выступает за ширину строки, способ его центрировать и способ поставить два изображения рядом. Оно выразило размеры относительно \linewidth, который подстраивается под место; показало, что ширина и высота без keepaspectratio молча искажают изображение и что параметры применяются в порядке записи; отличило векторную графику, которая экспортируется в PDF, от фотографий, разрешение которых движок не проверяет; и изучило поиск файлов: без расширения PDF молча предпочитается PNG, а \graphicspath требует двойных фигурных скобок.
Плавающие рисунки и таблицы
Занятие о плавающих рисунках и таблицах вывело плавание из неделимого бокса: то, что не делится и не помещается, переносится туда, где помещается, и поэтому на него ссылаются по номеру. Оно объяснило спецификаторы как разрешённые места, расширение [h] до [ht], пустоты от [H] и рисунок без возможного места, который задерживает остальные; набрало подпись, которая нумерует, вносит запись в список и в таблицах ставится сверху с отступом пакета caption; заменило «Рис.» на «Рисунок» командой \setlocalecaption, потому что babel отменяет \renewcommand, и исправило cleveref через \crefname, поскольку его параметр russian с LuaLaTeX не работает; убедилось, что caption выдаёт метку, поставленную перед подписью; и набрало подрисунки, независимые рисунки в одном figure и примечания к таблице с помощью threeparttable, показав сначала, что \footnote в плавающем объекте теряет свой текст.
Рисунки в TikZ
Занятие о рисунках в TikZ перешло от изображения, которое вставляют, к изображению, которое пишут. Оно началось с преамбулы: русский модуль babel делает активной двойную кавычку, и без \usetikzlibrary{babel} первая подпись библиотеки quotes не компилируется (а испанский модуль делает активным знак >, и там каскад ошибок вызывает уже первая стрелка). Оно прошло декартовы, полярные и относительные координаты с различием между + и ++; пути, параметры линии и наконечники arrows.meta; именованные узлы с якорями, расположенные друг относительно друга с помощью positioning; стили \tikzset и повторения \foreach; схемы разных дисциплин, график функции, синус которой молча измеряется в градусах, и pgfplots; и завершилось помещением рисунка в плавающий объект и сравнением трёх способов его уменьшить.
На следующей схеме пять участков собраны в единую цепочку. Каждый узел столбца есть механизм или правило, пронумерованный в том порядке, в каком они опираются друг на друга, и соединённый дугой с предыдущими звеньями, которые он использует; вокруг расположены опоры, то есть принципы, к которым цепочка обращается снова и снова, и каждая соединена сплошной линией со звеньями, которые на неё опираются, и пунктирной со звеном, где она устанавливается, кроме тех, что установлены в предыдущих разделах: они изображены кольцами. Если нажать на опору, выделяются все звенья, которые её используют, а каждое звено ведёт к занятию, где оно изучается.
Опоры цепи
- AЧто запоминает метка. Метка запоминает последний номер, присвоенный до неё внутри её окружения, не зная, к чему она привязана. Устанавливается в третьем разделе. В этом модуле принимается без доказательства.
- BВыравнивание есть таблица. Окружение выравнивания строит строку на каждую
\\и ячейку на каждый отрезок между двумя&, даже если строка остаётся неполной. Устанавливается в предыдущем разделе. В этом модуле принимается без доказательства. - CРешать один раз. То, что решено в одном месте (команда или формат в преамбуле, стиль, файл данных), меняется во всём документе, если изменить его там; то, что скопировано вручную, перестаёт согласовываться. Устанавливается в предыдущих разделах. В этом модуле принимается без доказательства.
- DПроходы. Движок записывает во вспомогательные файлы то, что вычисляет за один проход, и использует это на следующем. Устанавливается в первом разделе. В этом модуле принимается без доказательства.
- EЧто делает babel по-русски. Русский модуль задаёт свои названия (Рис., Таблица, Список таблиц) в начале документа, после того как прочитана вся преамбула; делает активной двойную кавычку
"; и не превращает точку в числах в запятую, так что запятую объявляют siunitx и pgfplots. Устанавливается отчасти в предыдущем разделе. В этом модуле принимается без доказательства. - FБокс не делится. Таблица, изображение или рисунок есть бокс, который движок размещает целиком, как большую букву, и который не разрывается между двумя страницами. Устанавливается в: 1. Строки и ячейки.
- GКорректное не предупреждает. Движок предупреждает только о том, что не может набрать; корректный исходный код, который говорит не то, что хотел автор, компилируется без предупреждений, и дефект виден только в результате. Устанавливается в: 1. Строки и ячейки.
- HПлавать и ссылаться. То, что не делится и не помещается там, где написано, переносится туда, где помещается; поэтому на плавающий объект ссылаются по номеру и никогда по месту. Устанавливается в: 13. Почему они плавают.
Участок 1 Удобочитаемые таблицы
- Выбирать между таблицей, списком и рисунком в зависимости от того, как будут искать данные.
- Набирать таблицу с
tabularи линейками booktabs, без сетки. - Выравнивать числа по десятичной запятой столбцом
S. - Диагностировать ошибки таблицы, в том числе те, что не дают предупреждений.
Строки и ячейки.
tabularпереносит в текст правило выравнивания: одна буква на столбец,&между ячейками и\\в конце строки; строка с лишними ячейками даёт «Extra alignment tab», на следующей строке, если пропущена\\, строка с недостающими корректна, а целое есть бокс, который не делится.Опирается на: B (Выравнивание есть таблица), F (Бокс не делится), G (Корректное не предупреждает). Доказывается в уроке: Удобочитаемые таблицы.
Линейки вместо сетки. Без вертикальных и двойных линий:
\toprule,\midruleи\bottomrule,\cmidruleс подрезками и\addlinespace;\hlineвперемешку с ними не даёт предупреждения и оставляет две системы линий.Использует: 1. Строки и ячейки. Опирается на: G (Корректное не предупреждает). Доказывается в уроке: Удобочитаемые таблицы.
Числа по запятой. Столбец
Sвыравнивает по разделителю;table-formatрезервирует место, и более широкое число выступает, оставляя лишь безымянное «Overfull\hbox»;\sisetupзадаёт запятую, которую siunitx не берёт у babel; запятая тысяч, скопированная из английского текста, читается как десятичная.Использует: 1. Строки и ячейки. Опирается на: E (Что делает babel по-русски), G (Корректное не предупреждает), C (Решать один раз). Доказывается в уроке: Удобочитаемые таблицы.
Заголовки и текст. Единица измерения указывается один раз в заголовке, который в столбце
Sзаключается в фигурные скобки;\makecellразбивает длинный заголовок; столбец абзаца с рваным краем несёт\raggedright\arraybackslash, а без\arraybackslashпоявляется «Misplaced\noalign».Использует: 3. Числа по запятой, 2. Линейки вместо сетки. Опирается на: B (Выравнивание есть таблица). Доказывается в уроке: Удобочитаемые таблицы.
Участок 2 Сложные и длинные таблицы
- Группировать столбцы и считать ячейки каждой строки.
- Давать таблице ширину строки без масштабирования.
- Распределять длинную таблицу по нескольким страницам.
- Строить таблицу по её файлу данных.
Ячейки на несколько столбцов.
\multicolumnзанимает место нескольких ячеек, и счёт строки не должен превышать преамбулу таблицы; забытый начальный&молча сдвигает группу, потому что\cmidruleзависит только от своих номеров; лишняя ширина достаётся последнему столбцу группы.Использует: 1. Строки и ячейки, 2. Линейки вместо сетки. Опирается на: B (Выравнивание есть таблица), G (Корректное не предупреждает). Доказывается в уроке: Сложные и длинные таблицы.
Ширина строки. tabularx расширяет свои столбцы
Xили столбецL, объявленный через\newcolumntype;tabular*распределяет пробел между столбцами с\extracolsep{\fill};\resizeboxотвергается, потому что даёт каждой таблице свой кегль.Использует: 4. Заголовки и текст. Опирается на: F (Бокс не делится), C (Решать один раз). Доказывается в уроке: Сложные и длинные таблицы.
Многостраничные таблицы. longtable разрывается и повторяет свои заголовки с
\endfirstheadи\endhead; нумерует через\captionи продолжается с\caption[]; записывает свои ширины и просит ещё один проход; внутриtableснова становится боксом и теряет строки.Использует: 5. Ячейки на несколько столбцов. Опирается на: F (Бокс не делится), D (Проходы). Доказывается в уроке: Сложные и длинные таблицы.
Таблицы из данных. У данных один источник, файл: csvsimple копирует его текст, а pgfplotstable форматирует его числа;
filecontents*безoverwriteне перезаписывает существующий файл и лишь сообщает об этом.Использует: 3. Числа по запятой, 7. Многостраничные таблицы. Опирается на: C (Решать один раз), G (Корректное не предупреждает). Доказывается в уроке: Сложные и длинные таблицы.
Участок 3 Изображения в документе
- Задавать размер изображения относительно строки и предсказывать его размеры.
- Выбирать формат каждого изображения и проверять его разрешение.
- Называть, размещать и находить файлы изображений.
- Помещать изображение в строку как символ.
Изображение есть большая буква.
\includegraphicsсоздаёт бокс, стоящий на базовой линии: после абзацного отступа изображение сwidth=\linewidthвыступает; чтобы его центрировать, центрируют строку, а два изображения стоят рядом, если помещаются в неё.Опирается на: F (Бокс не делится). Доказывается в уроке: Изображения в документе.
Размер и порядок параметров. Размеры относительно
\linewidthподстраиваются под место; ширина и высота безkeepaspectratioмолча искажают; параметры применяются в порядке записи;trimтребуетclip, а несуществующая страница останавливает компиляцию.Использует: 9. Изображение есть большая буква. Опирается на: G (Корректное не предупреждает). Доказывается в уроке: Изображения в документе.
Форматы и разрешение. Графики векторные и экспортируются в PDF в размере использования; фотографии растровые и требуют около 300 пикселей на дюйм, чего движок не проверяет; SVG преобразуют заранее, а EPS преобразует graphicx.
Использует: 10. Размер и порядок параметров. Опирается на: G (Корректное не предупреждает). Доказывается в уроке: Изображения в документе.
Имена и пути. Без расширения движок перебирает фиксированный порядок и молча берёт PDF раньше PNG;
\graphicspathтребует двойных скобок, а с одинарными каждая буква становится папкой; черновой режим показывает, какой файл использован.Использует: 11. Форматы и разрешение. Опирается на: G (Корректное не предупреждает). Доказывается в уроке: Изображения в документе.
Участок 4 Плавающие рисунки и таблицы
- Объяснять, почему рисунок плавает, и ссылаться на него по номеру.
- Направлять и ограничивать место плавающих объектов.
- Давать каждому плавающему объекту подпись, название и метку.
- Набирать подрисунки и примечания внутри таблицы.
Почему они плавают.
figureиtableпереносят бокс туда, где он помещается, и на него ссылаются по номеру; буквы суть разрешённые места,[h]расширяется только до[ht],[H]оставляет пустоты, а рисунок без возможного места задерживает объекты своего вида.Использует: 1. Строки и ячейки, 9. Изображение есть большая буква. Опирается на: F (Бокс не делится), H (Плавать и ссылаться). Доказывается в уроке: Плавающие рисунки и таблицы.
Подпись.
\captionнумерует, набирает и вносит запись в список, которому нужен ещё один проход, и допускает краткое название; в таблицах ставится сверху, в рисунках снизу, а пакет caption задаёт её отступ и формат для всего документа.Использует: 13. Почему они плавают. Опирается на: D (Проходы), C (Решать один раз). Доказывается в уроке: Плавающие рисунки и таблицы.
Название и ссылка.
\setlocalecaption{russian}{figure}{Рисунок}даёт «Рисунок» в подписи, а babel отменяет\renewcommand{\figurename}; cleveref, чей параметрrussianс LuaLaTeX вызывает ошибки, требует\crefname{figure}{рисунок}{рисунки}; метка ставится после подписи, и с caption неверно поставленная даёт предупреждение и два вопросительных знака.Использует: 14. Подпись. Опирается на: A (Что запоминает метка), E (Что делает babel по-русски). Доказывается в уроке: Плавающие рисунки и таблицы.
Подрисунки и примечания. subcaption даёт буквы частям рисунка, которые cleveref называет «рисунок 1b»; независимые рисунки помещают в minipage внутри одного
figure, никогда наоборот;\footnoteв плавающем объекте молча теряет свой текст, а threeparttable связывает примечание с таблицей.Использует: 15. Название и ссылка, 9. Изображение есть большая буква. Опирается на: H (Плавать и ссылаться), G (Корректное не предупреждает). Доказывается в уроке: Плавающие рисунки и таблицы.
Участок 5 Рисунки в TikZ
- Подготовить преамбулу русского документа к рисованию.
- Задавать точки абсолютными, полярными и относительными координатами.
- Строить схемы из именованных узлов с собственными стилями.
- Поместить рисунок в плавающий объект и уменьшить его, не потеряв кегля текста.
Библиотека babel. Русский модуль делает активной двойную кавычку, и без
\usetikzlibrary{babel}подпись библиотеки quotes даёт ошибку неизвестного ключа (в испанском так ломается уже первая стрелка, из-за знака>); библиотека это исправляет; без arrows.meta или без positioning сообщения гласят «Unknown arrow tip kind» и «Unknown function of».Опирается на: E (Что делает babel по-русски). Доказывается в уроке: Рисунки в TikZ.
Координаты и пути. Координаты бывают декартовыми, полярными и относительными:
++сдвигает опорную точку, а+нет; забытая точка с запятой указывается на следующей строке, аsin(\x)молча измеряет угол в градусах.Использует: 17. Библиотека babel. Опирается на: G (Корректное не предупреждает). Доказывается в уроке: Рисунки в TikZ.
Узлы и стили. Узел есть бокс с именем и якорями; positioning располагает его относительно другого по расстоянию между краями, так что схема перестраивается сама;
\tikzsetзадаёт стили, а\foreachповторяет.Использует: 18. Координаты и пути. Опирается на: F (Бокс не делится), C (Решать один раз). Доказывается в уроке: Рисунки в TikZ.
Рисунок в плавающем объекте. Рисунок есть бокс и помещается в
figureс подписью и меткой;scaleсохраняет кегль,transform shapeего уменьшает, а\resizeboxуменьшает всё; pgfplots сcompatне получает от babel десятичную запятую: её запрашивает параметрuse comma.Использует: 19. Узлы и стили, 15. Название и ссылка, 6. Ширина строки. Опирается на: H (Плавать и ссылаться), E (Что делает babel по-русски). Доказывается в уроке: Рисунки в TikZ.
К библиографии. Цепочка останавливается там, где таблицы, изображения и рисунки набраны, пронумерованы и снабжены ссылками: происхождение данных и чужих изображений, которое здесь указывалось вручную в строке об источнике, в следующем разделе будет цитироваться из библиографической базы, в стиле каждой дисциплины.
Загрузка содержимого…