Итак, давайте попробуем вписать какое-нибудь математическое выражение.
Скажем, вместо 12, я напишу 6х2 внутри знаков доллара,
то есть в математическом режиме.
Ну, в таблице, естественно,
оказалось выражение шесть умножить на два, и
можно видеть, что средний столбик автоматически растянулся.
Если мы создаем табицу tabular таким простейшим способом, просто указывая,
как выравнивать столбцы, то ширина этих столбцов подберется автоматически.
У такого подхода есть плюсы и минусы.
Во-первых, плюс, конечно, в том, что не нужно думать о ширине столбцов:
они подберутся сами, такие, какие нужно.
Но проблема, которая возникает в связи с
этим подходом, заключается в обработке длинных строчек.
Если я хочу написать сюда что-нибудь, состоящее из многих слов,
скажем: "Это очень-очень длинное предложение из многих слов".
И попробую запустить это на обработку.
Ну, пока всё в порядке, то есть просто эта строка растянулась… этот столбец
растянулся в соответствии с шириной того,
что у него оказалось в первой строке.
Но что, если у меня в двух столбцах будет нечто такое длинное?
Я скопировал это в первый столбец.
Что будет тогда?
Тогда, опять же, просто эти столбцы растягиваются в
соответствии с шириной этого предложения, несмотря на то,
что это уже не позволяет таблице оставаться в
рамках полей, да и, вообще, в рамках бумаги.
Чтобы создавать ячейки, точнее столбцы, в которых могут
быть ячейки из нескольких строк, нужно сделать вот что.
Нужно, во-первых, подобрать ширину вручную: вот здесь вот вместо l, то есть вместо
описания первого столбца, я должен написать команду p, от слова
paragraph, без бэкслеша, и внутри
я должен указать ширину, скажем, 4 см должна быть ширина первого столбца.
Давайте посмотрим, что получается.
Первый столбец оказался шириной, действительно, 4 см,
и текст в нем обработался как обычный текст,
то есть расставились переносы, текст выровнялся по
ширине, и оказалось… оказался в нескольких строчках.
Можно сделать то же самое с правым столбцом,
то есть вместо r написать там, скажем, p, и пусть
он будет у меня 5 см. Запустить на обработку.
И этот столбец стал 5 см. И то же самое произошло,
то есть он выровнялся по ширине, обработался как обычный текст.
Это выглядит не очень хорошо, во всяком случае, наверняка
вам хочется сделать выравнивание не по ширине в этом случае, а
по левому краю или по центру, потому что при выравнивании
по ширине пробелы в таких
коротких строчках оказались огромными и некрасивыми.
Как это сделать, мы научимся в следующем уроке,
который будет посвящен обработке текста в целом.
Пока что давайте посмотрим на то, что будет, если
попытаться вставить в ячейку таблицы математику, как выключную формулу.
Если помните, в прошлом занятии мы говорили, что
формулы бывают внутри строки, in-line, и выключные - display.
Выключные формулы - это те, которым
посвящается целая строка и, возможно, присваивается номер.
Если я попробую здесь написать, скажем, какую-нибудь дробь,
x делить на y, и запустить это
на обработку… Я перешел в математический режим с
помощью команды бэкслэш квадратная скобка (\]) - если вы посмотрите, что
здесь написано, то вы убедитесь, что это точно так же сделанная выключная
формула, как мы делали в прошлый раз.
Однако, как можно видеть, это не сработало.
LaTeX выдал целую кучу ошибок и предупреждений.
Если помните, в прошлый раз я советовал вам
смотреть только на первую ошибку, потому что все
остальные ошибки могут быть или вызваны первой, или
вызваны той же самой причиной, которая вызывает первую.
Следовательно, нужно сосредоточиться на том, чтобы исправить то,
что написано в списке ошибок в первой строчке.
А написано здесь, что пропущен знак доллара.
Пропущен знак доллара - это ошибка,
которая обычно означает, что вы написали какое-то
математическое выражение не в математическом режиме или,
наоборот, какой-то текст написали в математическом режиме.
В данном случае этого не произошло, потому что мы перешли
в математический режим, сделали это
по-честному, написали там математическое выражение.
Однако, выключные формулы, сделанные таким способом, не работают в таблицах.
Если заменить переход в математический режим на обычные доллары и запустить
на обработку, то всё уже будет работать, и дробь x на y появится в ячейке.
Это происходит, потому что выключная формула не может быть в ячейке таблицы.
Ведь ячейка таблицы - это не целая строка документа, и поэтому нельзя сделать
выключную формулу в обычном смысле, в котором
мы привыкли ее делать в прошлый раз.
Но что, если мне нужно, чтобы буквы x и y в дроби выглядели не так мелко, то
есть были нормального размера, а не так, как
они делаются во внутритекстовой формуле в два раза меньше.
Для этого есть специальная команда, которую
мне нужно написать после открывающегося доллара.
Это команда \displaystyle.
То есть формула должна выглядеть, как будто она
выключная, но при этом быть внутритекстовой, потому что
выключных формул не бывает внутри…
…
внутри таблицы.
Ну и можно видеть, что я добился того, чего хотел: с помощью этой команды
\displaystyle дробь x делить на y отобразилась буквами нормального размера.
Однако тут вот есть вот какая проблема: поскольку изначально так
не было задумано, что здесь окажется большая формула, занимающая целые
две строчки, то знаменатель, в котором буква y практически касается
линейки, которая оказалась под ним - это может выглядеть не очень хорошо.
Может возникнуть желание немножко добавить пространства под
этой дробью, то есть в конце этой
строчки, чтобы низ буквы y не сливался
с линейкой, ограничивающей эту строку от следующей.
Для этого можно указать необязательный аргумент у
команды перехода на следующую строку (здесь есть команды
двойной бэкслэш перехода на следующую сроку), можно
в квадратных скобках написать здесь, скажем, 2 миллиметра.
Давайте посмотрим, что получится.
Так, ну 2 миллиметра, видимо, оказалось просто незаметным расстоянием.
Давайте сделаем, там, скажем, 6 миллиметров.
Вот, теперь видно, что произошло: 6
миллиметров добавилось к высоте этой строки снизу.
Мы сделали так, что теперь буква y не сливается
с линейкой, которая под ней, а там даже остается место.
Эту высоту 6 миллиметров можно подобрать в каждом случае индивидуально, так, чтобы
таблица хорошо смотрелась, если вы хотите
добиться идеального вида того, что вы делаете.
Давайте посмотрим: если вернуть линейку между первой и
второй строчкой, не налезет ли буква x на...
на нее.
Для этого я поставлю вот здесь вот \hline после
перехода на третью строку, нет, на вторую строку, - и да,
буква x не очень хорошо смотрится, потому что,
опять же, высота этой дроби больше, чем то, на что рассчитана эта строка.
Для того чтобы мне добиться небольшого вертикального пробела сверху,
то есть такого же, как я сделал здесь, 6 миллиметров, только не в конце строки,
а в начале, нужно использовать специальную команду: эта команда пока будет,
возможно, для вас не очень понятной, но я поясню, что означает она сама и
ее аргументы.
Команда \setlength. У нее есть 2 аргумента.
\setlength - это значит "поставить длину".
Я хочу пос...
изменить длину какого-то параметра внутри документа.
Параметр, который мне нужен, называется \extrarowheight.
Дополнительная высота столбца.
Вот такой параметр.
По умолчанию он равен нулю, потому что это дополнительная
высота столбца, - extra row height.
Именно он отвечает за небольшой или
большой вертикальный пробел вначале строки таблицы.
Если я напишу здесь, скажем, те же самые 6 миллиметров, и посмотрю, что
получится, то получится то, что мне нужно: а именно, вертикальный пробел появился
в начале строки, и теперь буква x не сливается с линейкой.
Однако, смотрите, я изменил \extrarowheight
на весь документ, то есть это какой-то
глобальный параметр, глобальная переменная, которую я сейчас поменял,
и дальше весь документ компилируется с ее новым значением.
Но мне нужно было, чтобы только эта строка расширилась.
Поэтому, что я могу сделать теперь, чтобы следующая...
чтобы со следующей строкой этого не происходило?
Я могу изменить его обратно: я его могу вот так вот скопировать, и после того, как
нужная мне вещь произошла, я могу вставить его
сюда еще раз, и снова поставить равным нулю.
Существует два способа задания таблиц с помощью
других окружений, похожих на tabular, которые позволяют
более или менее автоматически подбирать ширину столбцов в
тех случаях, когда в ячейках содержится целое предложение.
Первое из них - это tabularx.
Как подсказывает мне TeXstudio,
у него есть два обязательных аргумента: первый - это ширина, и давайте я сделаю
ширину на всю ширину текста, то есть я могу указать здесь как ширину
в абсолютных единицах в сантиметрах, так и задать относительные единицы.
Я сделал относительные, сказав, что ширина
таблицы должна составить 100% ширины строки.
В преамбуле нужно указать языком, похожим на то, что
было в ограничении tabular, как будут устроены столбцы.
Но только это ограничение tabularx позволяет написать здесь X.
X - это новый тип столбца, которого не было в окружении tabular,
который работает следующим образом: давайте я покажу вам на примере. Давайте я
создам три столбца X, сделаю только одну строчку, начну ее с \hline,
и вставлю туда какой-нибудь длинный текст.
"Это очень-очень длинное предложение из многих слов" -
в первый столбец, какой-нибудь текст покороче - в другой столбец…
во второй столбец, и, опять, длинное
предложение из еще большего количества слов - в третий столбец.
Давайте посмотрим, что получится.
Получается вот что: все столбцы, которые обозначены буквой X здесь в преамбуле,
то есть во втором обязательном
аргументе команды tabularx, подбираются равной ширины.
Я бы мог указать, вот, второй столбец, скажем,
второй столбец - в нем нет предложения, в
нем короткий текст у меня, поэтому мне не
нужно, чтобы он… чтобы в нем происходило такое выравнивание.
Поэтому я могу вместо X написать там
обычную букву с, которая говорит, что выравнивание
должно быть по центру, и чтобы ширина
столбца подбиралась в соответствии с шириной текста.
Что произошло?
Этот столбец теперь имеет ширину такую, какую он имел бы в обычной таблице, то
есть ширина столбца подобралась ровно так, как ширина текста, и переносов не будет.
То есть, если здесь будут длинные предложения, то этот
столбец будет растягиваться. Дальше из общей ширины таблицы, которая у
меня равна ширине текста, LaTeX вычел получившуюся ширину этого столбца, а
остальное разделил поровну между всем столбцами, в которых было...
был атрибут x.
Еще одно окружение, которое я бы хотел,
чтобы вы увидели - это окружение tabulary.
Оно похоже на tabularx, только работает немножко по-другому.
Смотрите, я могу написать здесь tabulary.
Опять же, ширина пусть будет равна ширине
текста, а в качестве аргументов
у столбцов я укажу вот какие буквы:
cкажем, С, J и R.
Вот что означают эти буквы: во-первых, обратите
внимание, что в этом окружении они заглавные.
Во-вторых, буквы C и R означают то же самое, что означали они в
окружении tabular, то есть это выравнивание
по центру и выравнивание по правому краю.
Буква J означает "justify", то есть выравнивание по ширине.
Давайте посмотрим, что получится в результате.
В результате, ну, естественно, что LaTeX выравнял содержимое
ячеек так, как было сказано: левую - по центру, вторую - посередине...
вторую, извините, по ширине, а третью - по правому краю.
Но, кроме того, ширина этих столбцов подобралась
таким образом, чтобы высота была примерно одинаковой.
То есть тот столбец, в котором содержимое
короткое, оказался узким, чтобы растянуться на три строчки.
Столбец, в котором текста много, оказался широким, чтобы
текст, который в нем, тоже вошел в три строчки.
Ну и левый столбец, в котором текст не очень длинный и не очень
короткий, оказался средним и по ширине, чтобы
так же занимать примерно столько же строчек.
Ну, три не получилось, видимо, получилось четыре.