TEX for the Impatient
Categories:
Некоторые команды
\null
Ставится после большой буквы,чтобы Tex мог понять, что точку нужно воспринимать не как после большой буквы.
Двойные кавычки
Поставить две одинарные, а чтобы разделить одинарную от двойной между ними поставить команду ’text’\thinspace"
Объявление \def
\def\xmpheader#1/#2{% Now here’s the title.
\leftline{\xmplbx Example #1:\quad\xmplbxti #2}%
\vglue .5\baselineskip % skip an extra half line
}
Какие особенности?
при объявлении между параметрами указывается разделитель,которым будут отделяться параметры, это может быть пробел или как у меня #1/#2
. Сложные данные передаются просто в группе {}
.
Но определению \def я еще посвящу отдельную главу.
Управляем отступами
- \parindent = 0pt — отступ первой строки
- \noindent — подавить отступ
- \parskip = 6pt — отступ между абзацев
- \par — новый абзац
- \smallskip — маленький разрыв абзацев
- \medskip
- \bigskip
- \narrower — отступ слева и справа на ширину \parindent
- \vskip 1pc — вертикальный отступ
- \leftskip .5in — отступ слева
- \rightskip .5in — отступ справа
- \baselineskip = 7pt — межстрочный интервал
- \raggedright — отключить выравнивание по правому краю
- \leftline{} — строку выравнивает по левому краю
- \rightline{}
- \centerline{}
Определение символов
\chardef \\ = `\\
— определили \\ как backslash
\char `\^
— выводит символ по его коду
Акценты и диакритические знаки
\`
\'
\"
\^
...
через backslash ставим знак и дальше нужную букву.
Дроби
Макрос дробилка. На вход две цифири через слеш.
\def\frac#1/#2{\leavevmode
\kern.1em \raise .5ex \hbox{\the\scriptfont0 #1}%
\kern-.1em $/$%
\kern-.15em \lower .25ex \hbox{\the\scriptfont0 #2}%
}%
`\kern` --- сдвигает символ вправо или влево
`\raise` --- сдвигает вверх
`\lower` --- сдвигает вниз
`\leavevmode` --- переключается из вертикальной моды
Определение измеряемых величин \newdimen
Нужно для правильной разметки пространства
\newdimen\descindent
\descindent = 8pc
llap начинает печатать влево от текущей позиции курсора
rlap — делает тоже, но вправо. Позицию курсора при этом не меняет.
\llap{\hbox to \descindent{\bf Queen of Hearts\hfil}}%
замечательный прием:
- создать hbox длиной \descindent и поместить текст, выровненный по левому краю с помощью \hfil
\hbox \vbox
У этих замечательных box-ов есть переменные:
- to — которая задает размер
- spread — которая задает отступ текста, это установка для \hfil и \vfil
\hbox spread 8pt{\hfil\vbox spread 8pt{\vfil
\leaders заполняет окна символами
Для различных строк с подчеркиванием или точками, а также любые пространства для заполнения однообразным элементом
\line{\hfil\hbox to 3in{\leaders\hbox{ * }\hfil}\hfil}
Заполнит 3in звездочками и выровняет их по центру
У него есть 2 брата: \cleaders и \xleaders — которые заполняют не выравнивая элементы заполнения относительно разных строк.
\proclaim теорема
Печатает первое предложение выделенным жирным, а остальной абзац курсивом.
\footline \headline
footer и header
Таблицы
{\xmpheader 8/{A ruled table}% see p. 21
\bigskip \offinterlineskip % So the vertical rules are connected.
% \tablerule constructs a thin rule across the table.
\def\tablerule{\noalign{\hrule}}
% \tableskip creates 9pt of space between entries.
\def\tableskip{\omit&height 9pt&&&\omit\cr}
% & separates templates for each column. TeX substitutes
% the text of the entries for #. We must have a strut
% present in every row of the table; otherwise, the boxes
% won’t butt together properly, and the rules won’t join.
\halign{\tabskip = .7em plus 1em % glue between columns
% Use \vtop for whole paragraphs in the first column.
% Typeset the lines ragged right, without hyphenation.
\vtop{\hsize=6pc\pretolerance = 10000\hbadness = 10000
\normalbaselines\noindent\it#\strut}%
&\vrule #&#\hfil &\vrule #% the rules and middle column
% Use \vtop for whole paragraphs in the last column.
&\vtop{\hsize=11pc \parindent=0pt \normalbaselineskip=12pt
\normalbaselines \rightskip=3pt plus2em #}\cr
- \offinterlineskip — не дает масштабироваться вертикальным отступам в таблице
- \def\tablerule{\noalign{\hrule}} — для правильного отображения горизонтальных линий
- \def\tableskip{\omit&height 9pt&&&\omit\cr} — расстояние между строками в таблице
- \halign — определяет параметры колонок таблицы
- \vtop — выравнивает вертикальный бокс по верху
- \pretolerance = 10000\hbadness = 10000 — не показывает ошибки
- \vrule — рисует вертикальные линии
- \omit — отменяет действие шаблона в ячейке или строке и заменяет его обычным #
- \vtop{\hsize=11pc \parindent=0pt \normalbaselineskip=12pt \normalbaselines \rightskip=3pt plus2em #}\cr — чтобы задать в ячейке многострочный текст, а ячейку размером 11pc
Формулы математика
Очень большой раздел и пока им не интересуюсь
- eqno — выведет номер формулы справа
- leqno — выведет номер формулы слева
Концепция TEX
Активный символ \active
Это символ, которому будет назначено действие в TEX
- Символ нужно определить в \catcode назначить ему категорию 13 (\active)
- Определить действия через \def \let \chardef
Если символ не будет \active до определения, назначить ему команду не удастся
Например: \catcode ‘~ = \active \def~{\penalty10000\ }
alignment — выравнивание
Выравнивание TAB
- \settabs
- \+
- &
- \cr
{\hsize = 1.7 in \settabs 2 \columns
\+cattle&herd\cr
\+fish&school\cr
\+lions&pride\cr}
Выравнивание \haling
выравнивание с учетом настроек преамбулы
\halign{\hfil#\hfil &\hfil#\hfil &\hfil#\hfil \cr
- \tabskip =2pc — клей между колонками
- \noalign — вертикально выровнять строки
- \strut — увеличивает отступ между строк
- \valign — вертикальное выравнивание (это таблица на боку)
{\hsize=0.6in \parindent=0pt
\valign{#\strut&#\strut&#\strut\cr
one&two&three\cr
four&five&six\cr
seven&eight&nine\cr
ten&eleven\cr}}
Анатомия TEX
Текс расширяет макросы слева направо, но команда \expandafter может изменить порядокраскрытия макросов
Блоки в TEX
- reference point
- height
- width
- depth
- baseline
Коды категорий символов
Code | Назначение |
---|---|
0 | \ |
1 | { |
2 | } |
3 | $ |
4 | & |
5 | ^^M= |
6 | # |
7 | ^ и ^^K |
8 | _ и ^^A |
9 | ^^@ (ignored) |
10 | пробел ^^I |
11 | a..z A..Z |
12 | другие символы |
13 | ~ и ^^L активный |
14 | % |
15 | ^^? ошибка |
Символы
Категория 11 и 12
команда (напечатать символ) \char `h
тоже самое, что \char104
напечатает h
Классы символов
Используется в математической моде и влияет на выделение места для каждого символа
Команды TEX
Все, что должен выполнить TEX:
- активный символ
- последовательность управляющих символов
- сам символ
Сравнение
\ifα〈true text〉\else〈false text〉\fi
или \ifα〈true text〉\fi
проверка выполняется до расширения макросов
Управляющая последовательность
Обычно начинаетяс с \ и имя последовательности, определенное в \def
Заканчивается, когда TEX видит небукву. Или когда заканчивается управляющий символ.
Управляющий символ
состоит из \ и символа
Разделители — delimeters
обычно скобки в математической моде
dimention
код | значение |
---|---|
pt | point (72.27 points = 1 inch) |
pc | pica (1 pica = 12 points) |
bp | big point (72 big points = 1 inch) |
in | inch |
cm | centimeter (2.54 centimeters = 1 inch) |
mm | millimeter (10 millimeters = 1 centimeter) |
dd | didˆot point (1157 didˆot points = 1238 points) |
cc | cicero (1 cicero = 12 didoˆt points) |
sp | scaled point (65536 scaled points = 1 point) |
em | ширина M |
ex | высота x |
бесконечность: fil, fill, filll
Множитель перед размерами f/1000
\kern 8 true pt
— сделает неизменным размер при масштабировании
Шрифты
\font\имя=шрифт в системе
\font\twelvebf=cmbx12
Глобальное определение \globaldefs
распространяется на весь документ
или сокращенный вариант: \gdef или \xdef вместо \global\def и \global\edef
Клей \hskip
есть вертикальный и горизонтальный
\hskip 6pt plus 2pt minus 3pt
— клей может растягиваться и сжиматься
у клея есть свойства stretch — plus и shrink — minus
Межстрочный клей
определяет расстояние между строк и определяется параметрами:
\baselineskip, \lineskip, \lineskiplimit
item
текст с отступом
выравнивание
\leftskip, \rightskip, \raggedright
— установит размеры горизонтального бокса
kern
смещает символы горизонтально
leaders
заполнит пространство символами (нужно для оглавления)
Метка MARK
\topmark, \firstmark, \botmark
размещаются на странице и используются командой \mark
\def\section#1{\medskip{\bf#1}\smallskip\mark{#1}} % #1 is the name of the section
Определение section устанавливает метку с именем секции
Числа
- 52 — десятичное число
- ‘14 — восьмеричное число
- “FF — шестнадцатиричное число
- `с или `\с — ASCII последовательность, но лучше второй вариант, хотя они идентичны. Со вторым вариантом можно использовать `\\, `\%, `\^^M
Но нежелательно при использовании команды \edef
и \write
78 +078 "4E '116 `N `\N
— это один и тот же код
число печатается командой \number78
или \romannumeral78
— получим 78lxxviii
box255
в этот box помещается готовая страница
готовый box255 отправляется командой \shipout в файл .dvi
Разрыв страницы
В Tex разрывом страницы управляет штраф:
\penalty 10000 = \nobreak
\penalty -10000 = \break
Размер страницы
- \voffset — отступ сверху
- \hoffset — отступ слева
- hsize — ширина текста
- vsize — высота текста
Регистры
тип | контент |
---|---|
box | a box |
count | a number |
dimen | a dimension |
muskip | muglue |
skip | glue |
toks | a token list |
Все регистры имеют нумерацию от 0 до 255
Вызов регистра \box0 или \box100, \skip0 или \skip20
setbox3 = \hbox{text}
— присвоит значение регистру box3
count255 = -1
— присвоит -1
для резервирования регистров используются команды:
- \newbox,
- \newcount,
- \newdimen,
- \newmuskip,
- \newskip,
- \newtoks
Просмотреть содержимое регистра можно с помощью команды \showthe\dimen0
\whatsit
действия для TeX когда, что-то пошло не так
- команды \openout, \closeout, \write — откладывает запись в выходной файл до следующей команды
- \special — вставить текс в выходной файл
- при смене языка поместит информацию