19
Лекция 11 ТеХ и Постскрипт

Лекция 11

  • Upload
    loman

  • View
    75

  • Download
    0

Embed Size (px)

DESCRIPTION

Лекция 11. ТеХ и Постскрипт. Ящики (boxes — боксы ). - PowerPoint PPT Presentation

Citation preview

Page 1: Лекция  11

Лекция 11

ТеХ и Постскрипт

Page 2: Лекция  11

Ящики (boxes — боксы)

• Я вам раньше не говорил о еще одном типе данных и о переменных такого типа. Это box. Обычный перевод – бокс. Это слово использовали авторы TROFF при своем подходе к набору формул, и Кнут заметив замечательные свойства этого понятия сделал его основным.

• В ТеХе бокс определяется как «двумерный объект прямоугольной формы, умеющий три измерения – ширину, высоту и глубину. У бокса есть базовая линия и точка привязки, все это видно на рисунке, взятом из книги «Все о ТеХе».

Page 3: Лекция  11

Типичный бокс с его размерами

Page 4: Лекция  11

Действия с боксами

• Боксы можно группировать вместе, составляя новые боксы. Два основных типа группируемых боксов — горизонтальные и вертикальные.

• Команда \hbox определяет горизонтальный бокс, в котором все внутренние боксы выстраиваются непосредственно друг за другом по их базовой линии.

• Горизонтальные боксы собирают вместе в вертикальный бокс или \vbox. Например, (это все цитата из Кнута)

• \vbox{\hbox{Две строки}\hbox{набора.}}• При обычном наборе ТеХ сам формирует горизонтальные и

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

Page 5: Лекция  11

Действия с боксами (еще)

• Боксы можно группировать при группировке сдвигать по вертикали и по горизонтали.

• Вот как выглядит содержимое команды \TeX для известного логотипа системы ТеХ

• \hbox{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125em X}

• Кроме появившихся здесь команд \kern для горизонтального сдвига и \lower для опускания бокcа, есть еще, конечно, команда \raise для поднимания бокса.

• Системные боксы — это боксовые регистры, имеющие номера от 0 до 255, ими нужно пользоваться очень осторожно, так как их ТеХ использует для своей работы. Рекомендуется формировать новый бокс в \box0 (командой \setbox0) и тут же его использовать.

Page 6: Лекция  11

Повторное использование бокса

• В ЛаТеХе есть возможность вводить переменные типа бокс, которым можно присваивать значения, а потом вставлять их в текст (не форматируя заново их содержимое).

• Вот эти команды • \newsavebox{mybox)• \savebox{mybox}[40pt]{Опять то же самое!} % l-r text• \sbox{mybox}{Опять то же самое! } % l-r-text• \usebox{mybox}

• Более сложный вариант использования сохраняемого текста дает процедура (обстановка) lrtext. Например,

• \begin{lrtext}{mybox} Опять \verb|ТО ЖЕ| самое \end{lrtext}

Page 7: Лекция  11

Средства для набора алгоритмов

• Я рассказывал уже о задаче такого набора алгоритмов, чтобы каждый пункт алгоритма имел нужный отступ, а весь алгоритм был бы отчеркнул слева вертикальной чертой.

• Необходимые макросы были написаны и использованы при наборе книги Д.Гасфилда «Строки, деревья etc.» по инициативе редактора книги О.М.Рощиненко, так что названия макросов начитаются с ОМ.

• Сначала мы посмотрим на макросы в рабочей форме.

Page 8: Лекция  11

Средства для набора алгоритмов (2)• \newlength{\OMW}\newlength{\OMw}\newlength{\OMh}• \newlength{\OMH}\newlength{\OMd}• \newcommand{\OMbx}[3][0pt]{\setlength{\OMw}{\linewidth}%• \addtolength{\OMw}{-5pt}\setlength{\OMW}{\OMw}%• \addtolength{\OMW}{-#2}%• \settoheight{\OMh}{\makebox{\begin{minipage}[b]{\OMW}#3\

end{minipage}}}%• \setlength{\OMH}{\OMh}\addtolength{\OMH}{7pt}\addtolength{\OMH}{#1}%• \setlength{\OMd}{-#1}\addtolength{\OMd}{-4pt}%• \noindent\raisebox{\OMd}[\OMh][#1]{\rule{0.2pt}{\OMH}}\rule{4.9pt}

{0pt}%• \makebox[\OMw][r]{\begin{minipage}[b]{\OMW}#3\end{minipage}}\\[#1]}• \newcommand{\kusu}[2][0pt]{\OMbx[#1]{8pt}{#2}}• \newcommand{\ktab}[2][0pt]{\OMbx[#1]{34pt}{#2}}• \newcommand{\ktabi}[2][0pt]{\OMbx[#1]{50pt}{#2}}

Page 9: Лекция  11

Средства для набора алгоритмов (3)• \newlength{\OMW} % Ширина набираемого текста• \newlength{\OMw} % Ширина текста с отступом• \newlength{\OMh} % Чистая высота набора• \newlength{\OMH} % Внешняя высота набора• \newlength{\OMd} % Спуск набора от базовой линии

• \newcommand{\OMbx}[3][0pt]{% основная команда• % #1 - ExtraH доп. верт. пробел • % #2 - Woffset гориз. отступ• % #2 - Text набираемый текст• \setlength{\OMw}{\linewidth}• \addtolength{\OMw}{-5pt}% OMw := linewidth - 5pt • \setlength{\OMW}{\OMw}• \addtolength{\OMW}{-#2}% OMW := OMw - Woffset • \settoheight{\OMh}• {\makebox{\begin{minipage}[b]{\OMW}#3\end{minipage}}}• % OMh := высота бокса ширины OMW с нужным текстом,• % выровненного по основанию

Page 10: Лекция  11

Средства для набора алгоритмов (4)• \newcommand{\OMbx}[3][0pt]{% основная команда• . . . . . . . . • \setlength{\OMH}{\OMh}• \addtolength{\OMH}{7pt}• \addtolength{\OMH}{#1}% OMH := OMh + 7pt + ExtraH• \setlength{\OMd}{-#1} • \addtolength{\OMd}{-4pt} OMd := -ExtraH - 4pt• \noindent% начался вывод текста • \raisebox{\OMd}[\OMh][#1]{% • \rule{0.2pt}{\OMH}} % вертикальная линейка• \rule{4.9pt}{0pt} % стандартный отступ после нее• \makebox[\OMw][r]• {\begin{minipage}[b]{\OMW}#3\end{minipage}• % нужный текст в такой же министранице, как раньше,• % она помещается в ящик ширины OMw с центровкой по• % правому краю.• }\\[#1]} % перевод строки с доп. пробелом ExtraH

Page 11: Лекция  11

Средства для набора алгоритмов (5)• \newcommand{\kusu}[2][0pt]{\OMbx[#1]{8pt}{#2}}• \newcommand{\ktab}[2][0pt]{\OMbx[#1]{34pt}{#2}}• \newcommand{\ktabi}[2][0pt]{\OMbx[#1]{50pt}{#2}}• \kusu{begin}[2pt]• \ktab{вычислить $m$ и $n$;} • \ktab{разместить и заполнить нулями матрицу $m\times n$;}• \ktab{в цикле по $k$ begin}• \ktabi{вычислить $i$ и $j$, соответствующие $k$;}• \ktabi{увеличить элемент $a[i,j]$ на единицу;}• \ktab{end;}• \kusu{end;}

Page 12: Лекция  11

Графические пакеты

• Теперь перейдем к вставке графики в ТеХ-овский текст. Для вставки используются специальные пакеты.

• Сейчас больше всего рекомендуется пакет graphicx (до него использовались пакеты graphics и epsfig).

• Этот пакет вводит некоторые новые возможности манипулирования с боксами, которые нам будут хорошо понятны после знакомства с ПостСкриптом.

Page 13: Лекция  11

Манипуляции с боксами в пакете• Возможны следующие команды:• \rotatebox{angle}{lr-text}• \scalebox{h-scale}[v-scale]{lr-text}• \reflectbox{lr-text} == \scalebox{-1}[1]{lr-

text}• \resizebox{width}{height}{lr-text}• Это соответственно поворот бокса на заданный угол,

масштабирование бокса (и его зеркальное отражение — как частный случай), а также масштабирование до заданного размера.

• Все эти действия можно выполнять отдельно, но они включены и в главную команду пакета в качестве факультативных

параметров.

Page 14: Лекция  11

Команда включения графического файла• Это на самом деле две команды• \includegraphics[keyval-list]{gr-file}• \includegraphics*[keyval-list]{gr-file}• Второй вариант отличается от первого тем, что к списку ключей

автоматически добавляется ключ clip.• Список ключей очень богат, он состоит из разделяемых запятыми

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

• Каждая запись включает имя ключа, за которым может следовать знак равенства и значение или набор значений. Например, возможны два варианта для ключа, ограничивающего изображаемую часть рисунка его «законной территорией»:

• clip• clip=true

Page 15: Лекция  11

Ключи поворота и масштабирования• scale=1.5 — гомотетичное изменение с заданным масштабом• width=0.7\totalwidth — подгонка ширины под заданную• heigth=50mm — подгонка высоты бокса под заданную.• totalheight — для полной высоты• keepaspectratio — для соблюдения пропорций при подгонке• angle=10 — угол поворота против часовой стрелки (по

умолчанию в градусах).• origin=c — Точка, вокруг которой производится поворот.

• Возможные значения этого ключа изображены на рисунке на следующем слайде.

Page 16: Лекция  11

Позиции точки поворота

• В квадратных скобках написаны возможные значения ключа origin для центра поворота картинки

Page 17: Лекция  11

Порядок задания ключей

• \includegraphics{angle=90,totalheight=0.45in]{box.eps} \includegraphics{totalheight=0.45in, angle=90]{box.eps}

• От порядка задания ключей зависит результат. Вот пример

Page 18: Лекция  11

Ключи ограничивающего бокса• bb=0 0 1in 2in — весь ограничивающий бокс (левый нижний

угол, потом правый верхний) • bbllx, bblly, bbrux, bbruy — параметры по

отдельности• natwidth, natheigth — натуральные размеры рисунка.• trim=1mm 5mm 3mm 12mm — отрезание полей рисунка• viewport=10pt 20pt 72pt 72pt — вырезание видимой

части из определенного ограничивающего бокса• draft=true — черновой режим импортирования, заменяющий

рисунок рамкой по размерам ограничивающего бокса.

Page 19: Лекция  11

Глобальная установка ключей• Для глобальной установки ключей в командах \rotatebox и \

includegraphics можно воспользоваться командой• \setkeys{operation}{keyval-list}• где operation принимает значения• Grot — при задании параметров \rotatebox• Gin — при задании параметров \includegraphics• Например, • \setkeys{Gin}{draft=true,width=0.5\textwidth}

• или • \setkeys{Grot}{units=6.28318}• чтобы задавать углы поворота в радианах.