1 - TEX команды
Самые полезные для меня команды TEX
Минисправочник по TEX для практической работы в сегодняшней реальности
Символы
Специальные символы
- \# pound sign #
- \$ dollar sign $
- \% percent sign %
- \& ampersand &
- \_ underscore _
- \lq left quote ‘
- \rq right quote ’
- \lbrack left bracket [
- \rbrack right bracket ]
- \dag dagger symbol †
- \ddag double dagger symbol ‡
- \copyright copyright symbol c©
- \P paragraph symbol ¶
- \S section symbol §
Произвольные символы
{\char65}
{\char `A}
{\char `\A}
Акценты
наименование |
Tex input |
Tex output |
Compose |
grave |
\`o |
ò |
cmp+` o |
acute |
\’o |
ó |
cmp+’ o |
circumflex |
\^o |
ô |
cmp+^ o |
umlaut/dieresis/tr ́emat |
\“o |
ö |
cmp+” o |
tilde |
\~o |
õ |
cmp+~ o |
macron |
\=o |
ő |
cmp+= o |
dot |
\.o |
ȯ |
cmp+. o |
Продолжение для символов требующих пробела
наименование |
Tex input |
Tex output |
Compose |
cedilla |
\c o |
ǫ |
cmp+, o |
underdot |
\d o |
ọ |
cmp+! o |
underbar |
\b o |
o᤻ |
o C-x 8 RET 193b |
h ́acˇek |
\v o |
ǒ |
cmp+v o |
breve |
\u o |
ŏ |
cmp+u o |
tie |
\t oo |
o͡o |
o C-x 8 RET 0361 o |
Hungarian umlaut |
\H o |
ő |
cmp+= o |
|
|
ơ |
cmp++ o |
|
|
° |
cmp+o o |
|
|
§ |
cmp+s o |
|
|
ø |
cmp+? o |
или команда \accent94 или номер в таблице шрифта
Встроенные шрифты
имя |
описание |
\fivebf |
use 5-point bold font |
\fivei |
use 5-point math italic font |
\fiverm |
use 5-point roman font |
\fivesy |
use 5-point math symbol font |
\sevenbf |
use 7-point bold font |
\seveni |
use 7-point math italic font |
\sevenrm |
use 7-point roman font |
\sevensy |
use 7-point math symbol font |
\tenbf |
use 10-point bold text font |
\tenex |
use 10-point math extension font |
\teni |
use 10-point math italic font |
\tenrm |
use 10-point roman text font |
\tensl |
use 10-point slanted roman font |
\tensy |
use 10-point math symbol font |
\tenit |
use 10-point italic font |
\tentt |
use 10-point typewriter font |
\nullfont
— отменить шрифты (пусто)
В Tex по умолчанию доступны 16 шрифтов
Наименование |
команда |
Roman |
\rm |
Boldface |
\bf |
Italic |
\it |
Slanted |
\sl |
Typewriter |
\tt |
Math symbol5 |
\cal |
Верхний и нижний регистр
\lccode 〈charcode〉 [ 〈number〉 table entry ]
\uccode 〈charcode〉 [ 〈number〉 table entry ]
\char\uccode`s \char\lccode`a \char\lccode`M
— выдаст Sam
Строка в верхний или нижний регистр
\lowercase { 〈token list〉 }
\uppercase { 〈token list〉 }
Пробелы
\
— вставит пробел после команды
~
— неразрывный пробел
\/
— курсивный пробел
\obeyspaces
— не сжимает пробелы, а сохраняет их как есть
- \spacefactor [ 〈number〉 parameter ] — 1000 норма, <1000 больше сжимается между словами, >1000 больше растягивается.
- \spaceskip [ 〈glue〉 parameter ] — применяет клей при SF < 2000
- \xspaceskip [ 〈glue〉 parameter ] — применяет клей для SF > 2000
- \sfcode 〈charcode〉 [ 〈number〉 table entry ] — устанавливает spacefactor для отдельного символа (для . он 3000)
Выравнивание строк
\centerline 〈argument〉
\leftline 〈argument〉
\rightline 〈argument〉
\line{}
— выровняет по левому и правому краю
\llap{}
— печатает влево от курсора
\rlap{}
— печатает вправо от курсора
\noindent
\llap{off left }
\line{\vrule $\Leftarrow$ left margin of examples\hfil right margin of examples $\Rightarrow$\vrule}
\rlap{ off right}
Параграф
\par
— новый абзац
\parskip=
\parindent=
\endgraf
— синоним \par
\parfillskip [ 〈glue〉 parameter ]
— \parfillskip = 0pt plus 1fil по умолчанию, определяет последнюю строку в абзаце.
\indent
— Если TEX находится в вертикальном режиме, как это происходит после окончания абзаца, эта команда вставляет межабзацную связку \parskip, переводит TEX в горизонтальный режим, начинает абзац и делает отступ в этом абзаце на \parindent. Если TEX уже находится в горизонтальном режиме, эта команда просто создает пробел шириной \parindent. Два \indent подряд создают два отступа.
\noindent
— запрещает отступ в начале абзаца
\textindent 〈argument〉
— используется для печатания сносок и пунктов списков
\everypar [ 〈token list〉 parameter ]
— назначает команды для выполнения перед началом нового абзаца
\everypar = {$\Longrightarrow$\enspace}
Now pay attention!\par I said,
"Pay attention!".\par
I'll say it again! Pay attention!
на выходе получим:
⇒ Now pay attention!
⇒ I said, “Pay attention!”.
⇒ I’ll say it again! Pay attention!
\hsize
— ширина печатной области
\leftline{\raggedright\vtop{\hsize = 2.5in Here is some text that we put into a paragraph that is an inch and a half wide.}\qquad \vtop{\hsize = 1.5in Here is some more text that we put into another paragraph that is an inch and a half wide.}}
шикарный пример как печатать в 2 колонки без мути в Latex
\narrower
— сужает абзац слева и справа на \parindent
\leftskip [ 〈glue〉 parameter ]
— отступ слева
\rightskip [ 〈glue〉 parameter ]
— отступ справа
\raggedright
— убирает выравнивание справа
\ttraggedright
— тоже для мониширинного текста
\hang
— Эта команда устанавливает отступ во второй и последующих строках абзаца на \parindent, отступ абзаца
\hangafter [ 〈number〉 parameter ]
— определяет, какие строки имеют отступ: Если n < 0, первые −n строк абзаца будут иметь отступ. Если n ≥ 0, все строки абзаца, кроме первых n, будут иметь отступ.
\hangindent [ 〈dimen〉 parameter ]
— определяет величину отступа и то, находится ли он слева или справа: Если x ≥ 0, строки будут иметь отступ x слева. Если x < 0, строки будут иметь отступ -x справа.
\prevgraf [ 〈number〉 parameter ]
— количество строк в абзаце
\vadjust { 〈vertical mode material〉 }
— Эта команда вставляет указанный 〈материал вертикального режима〉 сразу после выходной строки, содержащей позицию, в которой встречается команда. Вы можете использовать его, например, чтобы вызвать выброс страницы или вставить дополнительное пространство после определенной строки.
Полезная штука для вставки указателей и линий:
Some of these words are \vadjust{\kern8pt\hrule} to be found above the line and others are to be found below it.
Выдаст линиюпод строкой:
Some of these words are to be found above the line and others are to be found
below it.
\parshape n i1l1 i2l2 . . . inln
Это магия TEX для абзацев
Эта команда определяет форму первых n строк абзаца, следующего абзаца, если вы находитесь в вертикальном режиме, и текущего абзаца, если вы находитесь в горизонтальном режиме. «i» — это отступ слева и справа, а «l» — это длина строки, n — это количество строк, на которые будет выполнено воздействие.
Line breaks
\break
— просто прервет строку
\nobreak
\allowbreak
— для математики полезен
\penalty 〈number〉
— штраф 10000 или -10000 управляет разрывом строк
\obeylines
— концу строки присваивает значение конец абзаца (полезно для стихов и программного кода)
\slash
— поставит /, но $\backslash$
работает в математической моде
\pretolerance [ 〈number〉 parameter ]
— (по умолчанию 100)
\tolerance [ 〈number〉 parameter ]
— (200) это как штрафы \penalty определяют плохость для абзацев, чтобы их разрывать на странице.
\emergencystretch [ 〈dimen〉 parameter ]
— Если TEX не может набрать абзац, не превысив \tolerance, он попытается еще раз, добавив \emergencystretch к растягиванию каждой строки.
\looseness [ 〈number〉 parameter ]
— Этот параметр дает вам возможность изменить общее количество строк в абзаце по сравнению с оптимальным.
\linepenalty [ 〈number〉 parameter ]
— Этот параметр определяет штраф, который TEX начисляет за каждый перенос строки при разбиении абзаца на строки.
\adjdemerits [ 〈number〉 parameter ]
— Этот параметр определяет дополнительные недостатки, которые TEX прикрепляет к точке останова между двумя соседними строками, которые «визуально несовместимы».
\exhyphenpenalty [ 〈number〉 parameter ]
— Увеличение этого параметра препятствует тому, чтобы TEX заканчивал строку явным дефисом. Обычный TEX устанавливает \exhyphenpenalty равным 50.
\hyphenpenalty [ 〈number〉 parameter ]
— Увеличение этого параметра препятствует использованию в TEX переноса слов. Обычный TEX устанавливает \hyphenpenalty равным 50.
\doublehyphendemerits [ 〈number〉 parameter ]
— Увеличение значения этого параметра препятствует TEXу расставлять переносы в двух строках подряд.
\finalhyphendemerits [ 〈number〉 parameter ]
— Увеличение значения этого параметра препятствует тому, чтобы TEX заканчивал предпоследнюю строку дефисом.
Переносы слов Hyphenation
\-
— расставить в тех местах слов, где допускается перенос.
\discretionary { 〈pre-break text〉 } { 〈post-break text〉 } { 〈no-break text〉 }
— Эта команда определяет «дискреционный разрыв», а именно место, где TEX может разорвать строку. Он также сообщает TEXу, какой текст поместить по обе стороны от разрыва.
% Accounts for German usage: ‘flicken’, but ‘flik% ken’: German
"fli\discretionary{k-}{k}{ck}en"
\hyphenation { 〈word〉 . . . 〈word〉 }
— TEX хранит словарь исключений из своих правил расстановки переносов. В каждой словарной статье указано, как следует писать через дефис то или иное слово.
\hyphenation{Gry-phon my-co-phagy}
\hyphenation{man-u-script man-u-scripts piz-za}
\uchyph [ 〈number〉 parameter ]
— разрешает перенос в верхнем регистре
\language [ 〈number〉 parameter ]
— устанавливает язык для переносов в абзаце
\setlanguage 〈number〉
— установит текущий язык
\lefthyphenmin [ 〈number〉 parameter ] \righthyphenmin [ 〈number〉 parameter ]
— левое и правое количество слогов при переносе
\hyphenchar 〈font〉 [ 〈number〉 parameter ]
— установит символ переноса
\hyphenchar\tenrm = ‘% Set hyphenation for tenrm font to ‘-’.
\hyphenchar\tentt = -1 % Don’t hyphenate words in font tentt.% нет переноса
Секции и заголовки
- `\beginsection 〈argument〉 \par` --- заголовок секции
- `\item 〈argument〉 \itemitem 〈argument〉` --- отступ для списков
- `\proclaim 〈argument〉. 〈general text〉 \par` --- теоремы
\proclaim Theorem 1.
What I say is not to be believed.
\proclaim Corollary 1. Theorem 1 is false.\par
Команды для создания страниц
Межстрочный клей
-
\baselineskip [ 〈glue〉 parameter ]
— расстояние от базовой линии одного блока до другой
-
\lineskiplimit [ 〈dimen〉 parameter ]
— минимальное значение межстрочного клея
-
\lineskip [ 〈glue〉 parameter ]
— расстояние между низом верхнего блока и верхом нижнего блока
-
\prevdepth [ 〈dimen〉 parameter ]
— глубина блока
-
\normalbaselineskip [ 〈glue〉 parameter ]
— хранит значение baselineskip
-
\normallineskiplimit [ 〈dimen〉 parameter ]
— хранит значение lineskiplimit
-
\normallineskip [ 〈glue〉 parameter ]
— хранит значение lineskip
-
\normalbaselines
— устанавливает значатения, хранящиеся в параметрах normal…
-
\offinterlineskip
— отключает вставку межстрочного клея
-
\nointerlineskip
— Эта команда сообщает TEXу не вставлять межстрочный клей перед следующей строкой. На последующие строки это не влияет.
-
\openup 〈dimen〉
— Эта команда увеличивает \baselineskip на 〈dimen〉.
Разрыв страниц
\break
—
\nobreak
—
\allowbreak
—
\penalty 〈number〉
—
\goodbreak
— Эта команда завершает абзац, а также указывает TEXу, что это подходящее место для разрыва страницы.
\smallbreak \medbreak \bigbreak
—
\eject \supereject
— Эти команды вызывают разрыв страницы в текущей позиции и завершают текущий абзац. Если нет vfill будет пытаться сам растянуть страницу.
\filbreak
— Эта команда обеспечивает своего рода условный разрыв страницы. Он сообщает TEXу разбить страницу, но не в том случае, если текст до более позднего \filbreak также помещается на той же странице.
\raggedbottom \normalbottom
— сообщает TEXу, что нужно разрешить некоторую вариативность нижних полей на разных страницах.
Параметры разрыва страницы
\interlinepenalty [ 〈number〉 parameter ]
— Этот параметр определяет штраф за разрыв страницы между строками абзаца.
\clubpenalty [ 〈number〉 parameter ]
— Этот параметр определяет штраф за разрыв страницы сразу после первой строки абзаца.
\widowpenalty [ 〈number〉 parameter ]
— Этот параметр определяет штраф за разрыв страницы непосредственно перед последней строкой абзаца.
\displaywidowpenalty [ 〈number〉 parameter ]
— Этот параметр определяет штраф за разрыв страницы непосредственно перед последней строкой частичного абзаца, который непосредственно предшествует математическому отображению.
\predisplaypenalty [ 〈number〉 parameter ]
— Этот параметр определяет штраф за разрыв страницы непосредственно перед математическим отображением. Обычный TEX устанавливает \predisplaypenalty равным 10000.
\postdisplaypenalty [ 〈number〉 parameter ]
— Этот параметр определяет штраф за разрыв страницы сразу после математического отображения.
\brokenpenalty [ 〈number〉 parameter ]
— Этот параметр определяет штраф за разрыв страницы сразу после строки, которая заканчивается произвольным элементом (обычно дефисом).
\insertpenalties [ 〈number〉 parameter ]
— Этот параметр содержит сумму определенных штрафов, которые накапливает TEX при размещении вставок на текущей странице.
\floatingpenalty [ 〈number〉 parameter ]
— Этот параметр определяет штраф, который TEX добавляет к \insertpenalties, когда построитель страниц добавляет вставку на текущую страницу и обнаруживает, что предыдущая вставка того же типа на этой странице была разделена, оставив ее часть для последующих страниц.
\pagegoal [ 〈dimen〉 parameter ]
— Этот параметр определяет желаемую высоту текущей страницы. TEX устанавливает \pagegoal в текущее значение \vsize, когда он впервые помещает блок или вставку на текущую страницу.
\pagetotal [ 〈dimen〉 parameter ]
— Этот параметр определяет накопленную естественную высоту текущей страницы. TEX обновляет \pagetotal по мере добавления элементов в основной вертикальный список.
\pagedepth [ 〈dimen〉 parameter ]
— Этот параметр определяет глубину текущей страницы.
\pageshrink [ 〈dimen〉 parameter ]
— Этот параметр определяет степень сжатия накопленного клея на текущей странице.
\pagestretch [ 〈dimen〉 parameter ] \pagefilstretch [ 〈dimen〉 parameter ] \pagefillstretch [ 〈dimen〉 parameter ] \pagefilllstretch [ 〈dimen〉 parameter ]
— Эти четыре параметра вместе определяют степень растяжения клея на текущей странице. n0 + n1fil + n2fill + n3filll
Макет страницы
\hsize [ 〈dimen〉 parameter ]
— горизонтальный размер текста
\vsize [ 〈dimen〉 parameter ]
— вертикальный размер текста
\hoffset [ 〈dimen〉 parameter ] \voffset [ 〈dimen〉 parameter ]
— отступ слева и сверху
\topskip [ 〈glue〉 parameter ]
— TEX вставляет клей вверху каждой страницы, чтобы гарантировать, что базовая линия первого блока на странице всегда находится на одинаковом расстоянии d от верха страницы.
\parskip [ 〈glue〉 parameter ]
— Этот параметр определяет «пропуск абзаца», то есть вертикальную склейку, которую TEX вставляет в начало абзаца.
\maxdepth [ 〈dimen〉 parameter ]
— Этот параметр определяет максимальную глубину нижнего поля на странице.
Номер страницы
\pageno [ 〈number〉 parameter ]
— Этот параметр содержит номер текущей страницы в виде целого числа. Номер страницы обычно является отрицательным для страниц титульной страницы, которые нумеруются маленькими римскими цифрами, а не арабскими цифрами.
\pageno = 30 % Number the next page as 30. Don’t look for this explanation on page \number\pageno.
\advancepageno
— Эта команда добавляет 1 к номеру страницы n в \pageno, если n ≥ 0, и вычитает из него 1, если n < 0.
\nopagenumbers
— создает пустой нижний колонтитул
\folio
— Эта команда создает номер текущей страницы, значением которого является число n, содержащееся в \pageno. Если n ≥ 0, TEX выдает n как десятичное число, а если n < 0, TEX выдает −n в виде строчных римских цифр.
\headline [ 〈token list〉 parameter ]
— заголовок
\footline [ 〈token list〉 parameter ]
— подвал
Метки Marks
\mark { 〈text〉 }
— Эта команда заставляет TEX добавлять метку, содержащую 〈текст метки〉, к любому списку, который он в данный момент создает.
\firstmark \botmark \topmark
— Эти команды расширяются до текста метки в элементе, созданном предыдущей командой \mark.
\splitfirstmark \splitbotmark
— Эти команды расширяются до текста метки, сгенерированного более ранней командой \mark, которая создала элемент в списке элементов vbox V .
\footnote 〈argument1 〉 〈argument2 〉
—
To quote the mathematician P\’olya is a ploy.\footnote *{This is an example of an anagram, but not a strict one.}
\vfootnote 〈argument1 〉 〈argument2 〉
— \footnote, и \vfootnote вставляют знак ссылки перед самой сноской, но \vfootnote не вставляет знак ссылки в текст.
Вставки
\topinsert 〈vertical mode material〉 \endinsert
— пытается разместить материал вверху текущей страницы.
\midinsert 〈vertical mode material〉 \endinsert
— пытается поместить материал в текущую позицию.
\pageinsert 〈vertical mode material〉 \endinsert
— помещает материал отдельно на следующую страницу.
\insert 〈number〉 { 〈vertical mode material〉 }
— Эта примитивная команда обеспечивает базовый механизм создания вставок, но она почти никогда не используется за пределами определения макроса. Необходимо три элемента для insert
- \box n — это место, где TEX накапливает материал для вставок с кодом n. Когда TEX разбивает страницу, он помещает в \box n столько вставочного материала, сколько поместится на странице. Ваша процедура вывода должна затем переместить этот материал на реальную страницу. Вы можете использовать \ifvoid (стр. 238), чтобы проверить, есть ли какой-либо материал в \box n. Если не весь материал помещается, TEX сохраняет остатки для следующей страницы.
- \count n — коэффициент увеличения f. Когда TEX вычисляет вертикальное пространство, занимаемое на странице вставкой n материала, он умножает вертикальную протяженность этого материала на f/1000. Таким образом, вы обычно устанавливаете f равным 500 для вставки двух столбцов и 0 для примечания на полях.
- \dimen n определяет максимальное количество вставок n материала, которые TEX поместит на одну страницу.
- \skip n указывает дополнительное пространство, которое TEX выделяет на странице, если страница содержит какой-либо материал вставки n. Это место дополнительное пространство, занимаемое самой вставкой.
Изменение процедуры вывода
\output [ 〈token list〉 parameter ]
— Этот параметр содержит текущую процедуру вывода, т. е. список токенов, который TEX расширяет, когда находит разрыв страницы.
\plainoutput
— Эта команда вызывает обычную процедуру вывода TEXа.
\shipout 〈box〉
— Эта команда инструктирует TEX отправить 〈box〉 в файл .dvi.
\deadcycles [ 〈number〉 parameter ]
— Этот параметр содержит количество раз, когда TEX инициировал процедуру вывода с момента последнего выполнения команды \shipout.
\maxdeadcycles [ 〈number〉 parameter ]
— Если значение \deadcycles превышает значение \maxdeadcycles, TEX предполагает, что процедура вывода зациклилась.
\outputpenalty [ 〈number〉 parameter ]
— TEX устанавливает этот параметр, когда разрывает страницу.
\holdinginserts [ 〈number〉 parameter ]
— Если этот параметр больше 0, когда TEX обрабатывает разрыв страницы, TEX воздержится от обработки вставок.
Разрыв вертикальных списков
\vsplit 〈number〉 to 〈dimen〉
— Эта команда заставляет TEX разделить блок с номером 〈number〉, который мы назовем B2, на две части.
\splitmaxdepth [ 〈dimen〉 parameter ]
— Этот параметр определяет максимально допустимую глубину поля, полученного в результате \vsplit.
\splittopskip [ 〈glue〉 parameter ]
— Этот параметр определяет клей, который TEX вставляет в верхнюю часть блока, полученного в результате \vsplit.
Горизонтальная и вертикальная мода
\thinspace
— Эта команда создает положительный керн, ширина которого составляет одну шестую em, т.е. она заставляет TEX смещать свою позицию вправо на эту величину. Полезно при использовании одиночных и двойных ковычек.
\negthinspace
— Эта команда создает отрицательный керн, ширина которого составляет одну шестую em, т. е. заставляет TEX смещать свою позицию влево на эту величину.
\enspace
— Эта команда создает керн, ширина которого равна 1em.
\enskip \quad \qquad
— Каждая из этих команд создает шарик горизонтального клея, который не может ни растягиваться, ни сжиматься. 1/2em, 1em, 2em.
\smallskip \medskip \bigskip
— вертикальный отступ.
\smallskipamount [ 〈glue〉 parameter ]
— Эти параметры определяют количество клея, производимого командами \smallskip, \medskip и \bigskip.
\medskipamount [ 〈glue〉 parameter ]
\bigskipamount [ 〈glue〉 parameter ]
Вертикальные и горизонтальные отступы (клей)
\hskip 〈dimen1 〉 plus 〈dimen2 〉 minus 〈dimen3 〉
— горизонтальная
\vskip 〈dimen1 〉 plus 〈dimen2 〉 minus 〈dimen3 〉
— вертикальная
\hbox to 2in{one\hskip 0pt plus .5in two}
\hglue 〈glue〉
— Команда \hglue создает горизонтальное склеивание, которое не исчезает при разрыве строки
\vglue 〈glue〉
— команда \vglue создает вертикальную склейку, которая не исчезает при разрыве страницы.
\topglue 〈glue〉
— Эта команда заставляет пространство от верха страницы до верха первого поля на странице быть склеенным.
\kern 〈dimen〉
— В горизонтальном режиме TEX перемещает свое положение вправо (при положительном керне) или влево (при отрицательном керне). В вертикальном режиме TEX перемещает свою позицию вниз по странице (при положительном керне) или вверх (при отрицательном керне).
\centerline{$\Downarrow$}\kern 3pt % a vertical kern
\centerline{$\Longrightarrow$\kern 6pt % a horizontal kern
{\bf Heed my warning!}\kern 6pt % another horizontal kern
$\Longleftarrow$}
\kern 3pt % another vertical kern
\centerline{$\Uparrow$}
\hfil \hfill
— Эти команды создают бесконечно растягиваемый горизонтальный и вертикальный клей, который подавляет любое конечное растяжение, которое может присутствовать.
\vfil \vfill
\hss \vss
— Эти команды создают горизонтальный и вертикальный клей, который одновременно бесконечно растягивается и бесконечно сжимается.
\hfilneg \vfilneg
— Эти команды отменяют эффект предыдущего \hfil или \vfil. В то время как \hfil и \vfil производят бесконечно растягиваемый позитивный клей, \hfilneg и \vfilneg производят бесконечно растягиваемый негативный клей.
Управление Box-ами
\hbox { 〈horizontal mode material〉 }
\hbox to 〈dimen〉 { 〈horizontal mode material〉 }
\hbox spread 〈dimen〉 { 〈horizontal mode material〉 }
Эта команда создает hbox (горизонтальный прямоугольник), содержащий 〈материал горизонтального режима〉.
\vtop 〈vertical mode material〉
\vtop to 〈dimen〉 { 〈vertical mode material〉 }
\vtop spread 〈dimen〉 { 〈vertical mode material〉 }
\vbox { 〈vertical mode material〉 }
\vbox to 〈dimen〉 { 〈vertical mode material〉 }
\vbox spread 〈dimen〉 { 〈vertical mode material〉 }
Эти команды создают vbox (вертикальный блок), содержащий 〈материал вертикального режима〉.
\boxmaxdepth [ 〈dimen〉 parameter ]
— Этот параметр содержит размер D. TEX не будет создавать блок, глубина которого превышает D.
\underbar 〈argument〉
— Эта команда помещает 〈аргумент〉 в hbox и подчеркивает его, не обращая внимания на все, что выступает за базовую линию блока.
\everyhbox [ 〈token list〉 parameter ]
— Эти параметры содержат списки токенов, которые TEX расширяет в начале каждого создаваемого им hbox или vbox.
\everyvbox [ 〈token list〉 parameter ]
Создание box-ов для многократного использования
\setbox 〈register〉 = 〈box〉
— команда устанавливают содержимое регистра, номер которого равен 〈register〉.
\box 〈register〉
— команда выводит содержимое регистра
\setbox0 = \hbox{mushroom}
\setbox1 = \vbox{\copy0\box0\box0}
\box1 %выведет box1 и забудет его содержимое
\copy 〈register〉
— копирует содержимое box n не стирая его содержимого
\unhbox 〈register〉
— Эти команды создают список, содержащийся в регистре ящика 〈register〉, и делают этот регистр ящика недействительным.
\unvbox 〈register〉
— эти команды освобождают память и очищают box с выбранным номером
\unhcopy 〈register〉 \unvcopy 〈register〉
— Эти команды создают список, содержащийся в блочном регистре 〈register〉, и оставляют содержимое регистра нетронутым.
Смещение Box-ов
\moveleft 〈dimen〉 〈box〉 \moveright 〈dimen〉 〈box〉
— сдвинуть влево, сдвинуть вправо
\lower 〈dimen〉 〈box〉 \raise 〈dimen〉 〈box〉
— сдвинуть вниз, сдвинуть вниз.
Размеры Box-ов
\ht 〈register〉 [ 〈dimen〉 parameter ]
— высота
\dp 〈register〉 [ 〈dimen〉 parameter ]
— глубина
\wd 〈register〉 [ 〈dimen〉 parameter ]
— ширина
Эти команды хранят размеры box-ов
\setbox0 = \vtop{\hbox{a}\hbox{beige}\hbox{bunny}}%
The box has width \the\wd0, height \the\ht0, and depth \the\dp0.
Struts и фантомы
\strut
— Эта команда создает блок, ширина которого равна нулю, а высота (8,5 пт) и глубина (3,5 пт) соответствуют более или менее типичной строке текста в cmr10, простом шрифте TEX по умолчанию.
\mathstrut
— Эта команда создает фантомную формулу, ширина которой равна нулю, а высота и глубина такие же, как у левой круглой скобки.
\phantom 〈argument〉
— Эта команда создает пустое поле того же размера и размещения, что и 〈аргумент〉, если бы он был набран.
\hphantom 〈argument〉
—hphantom создает блок той же ширины, что и 〈аргумент〉, но с нулевой высотой и глубиной.
\vphantom 〈argument〉
— vphantom создает блок той же высоты и глубины, что и 〈аргумент〉, но нулевой ширины.
\smash 〈argument〉
— Эта команда вводит 〈аргумент〉, но заставляет высоту и глубину содержащего его поля равняться нулю.
\null
— Эта команда создает пустой hbox. \setbox0 = \null
Неправильные поля (ошибки формирования документа)
\overfullrule [ 〈dimen〉 parameter ]
— Этот параметр определяет ширину правила, которое TEX добавляет к переполненному hbox. Plain TEX устанавливает значение 5pt.
\hbadness [ 〈number〉 parameter ] \vbadness [ 〈number〉 parameter ]
— Эти параметры определяют пороговые значения горизонтальной и вертикальной неисправности для сообщения о недостаточном или переполненном ящиках.
\badness
— Эта команда возвращает числовое значение дефектности блока (горизонтального или вертикального), созданного TEX в последний раз.
\hfuzz [ 〈dimen〉 parameter ] \vfuzz [ 〈dimen〉 parameter ]
— Эти параметры определяют величину, на которую ящик может превысить свой естественный размер, прежде чем TEX сочтет его переполненным.
\hfuzz = .5in \hbox to 2in{This box is longer than two inches.}
Получение последнего элемента из списка
- \lastkern
- \lastskip
- \lastpenalty
- \lastbox
Эти управляющие последовательности возвращают значение последнего элемента в текущем списке. Это не настоящие команды, поскольку они могут появляться только как часть аргумента.
Эти управляющие последовательности наиболее полезны после вызовов макросов, в которые могли быть вставлены объекты указанных типов.
- \unkern
- \unskip
- \unpenalty
Если последний элемент в текущем списке имеет тип керн, клей или пенальти соответственно, эти команды удаляют его из этого списка. Если элемент не того типа, эти команды не имеют никакого эффекта.
Rules and leaders
\hrule
\hrule height 〈dimen〉 width 〈dimen〉 depth 〈dimen〉
\vrule
\vrule width 〈dimen〉 height 〈dimen〉 depth 〈dimen〉
Команда \hrule создает горизонтальную линию; команда \vrule создает вертикальное линию.
По умолчанию \hrule будет расширено по горизонтали до границ самого внутреннего поля или выравнивания. Высота 0,4 пт; Глубина 0pt.
Leaders
\leaders 〈box or rule〉 〈skip command〉
\cleaders 〈box or rule〉 〈skip command〉
\xleaders 〈box or rule〉 〈skip command〉
заполняют горизонтальное или вертикальное пространство копиями узора
〈box or rule〉
— указывает шаблон
〈skip command
— указывает команду для заполнения, т.е. пространство
\def\pattern{\hbox to 15pt{\hfil.\hfil}}
\line{Down the Rabbit-Hole {\leaders\pattern\hfil} 1}
\line{The Pool of Tears {\leaders\pattern\hfil} 9}
\line{A Caucus-Race and a Long Tale {\cleaders\pattern \hfil} 19}
\line{Pig and Pepper {\xleaders\pattern\hfil} 27}
\dotfill \hrulefill
— Эти команды соответственно заполняют окружающее горизонтальное пространство рядом точек на базовой линии и горизонтальной линией на базовой линии.
\hbox to 3in{Start {\dotfill} Finish}
\hbox to 3in{Swedish {\hrulefill} Finnish}
\leftarrowfill \rightarrowfill
— Эти команды заполняют окружающее горизонтальное пространство стрелками, указывающими влево или вправо.
\hbox to 3in{\vrule \rightarrowfill \ 3 in \leftarrowfill\vrule}
Выравнивание
+ 〈text〉 & 〈text〉 & · · · \cr
\+ 〈text〉 & 〈text〉 & · · · \cr
\tabalign
— Эти команды начинаются с одной строки с выравниванием по вкладкам.
\cleartabs % обнуляет установки предыдущих settabs
\+ {\bf if }$a[i] < a[i+1]$ &{\bf then}&\cr
\+&&$a[i] := a[i+1]$;\cr
\+&&{\it found }$:=$ {\bf true};\cr
\+&{\bf else}\cr
\+&&{\it found }$:=$ {\bf false};\cr
\+&{\bf end if};\cr
\settabs 〈number〉 \columns
— задает одинаковый размер колонкам
\settabs \+ 〈sample line〉 \cr
— задает шаблон с образцом
\cleartabs
— очищает предыдущие settabs
Общие выравнивания
\halign { 〈preamble〉 \cr 〈row〉 \cr . . . 〈row〉 \cr }
\halign to 〈dimen〉{ 〈preamble〉 \cr 〈row〉 \cr . . . 〈row〉 \cr }
\halign spread 〈dimen〉{ 〈preamble〉 \cr 〈row〉 \cr . . . 〈row〉 \cr }
Эта команда создает горизонтальное выравнивание, состоящее из последовательности строк, где каждая строка, в свою очередь, содержит последовательность записей столбцов. TEX регулирует ширину записей столбца, чтобы разместить самую широкую запись в каждом столбце.
\valign { 〈preamble〉\cr 〈column〉\cr . . . 〈column〉\cr }
\valign to 〈dimen〉{ 〈preamble〉\cr 〈column〉\cr . . . 〈column〉\cr }
\valign spread 〈dimen〉{ 〈preamble〉\cr 〈column〉\cr . . . 〈column〉\cr }
делает вертикальную таблицу
\ialign
— Эта команда ведет себя так же, как \halign, за исключением того, что она сначала устанавливает клей \tabskip равным нулю, а \everycr — пустым.
\cr
— Эта команда завершает преамбулу горизонтального или вертикального выравнивания.
\endline
— Эта команда является синонимом команды \cr.
\crcr
— Эта команда ведет себя так же, как \cr, за исключением того, что TEX игнорирует ее, если она идет сразу после \cr или \noalign.
\omit
— Эта команда сообщает TEX игнорировать шаблон при горизонтальном или вертикальном выравнивании
\span
— Значение этой команды зависит от того, появляется ли она в преамбуле или в записи выравнивания. Помещение \span перед токеном в преамбуле приводит к немедленному расширению этого токена в соответствии с обычными правилами расширения макросов TEXа. Размещение \span вместо «&» между двумя записями столбца или строки приводит к объединению этих столбцов или строк.
\multispan 〈number〉
— Эта команда сообщает TEX, что следующие столбцы 〈number〉 в строке с горизонтальным выравниванием или строки 〈number〉 в столбце с вертикальным выравниванием должны быть объединены в один столбец или строку.
\noalign { 〈vertical mode material〉 } \noalign { 〈horizontal mode material〉 }
— Чаще всего \noalign используется для добавления дополнительного пробела после строки или столбца.
\tabskip [ 〈glue〉 parameter ]
— Этот параметр определяет количество горизонтального или вертикального клея, который TEX накладывает между столбцами горизонтального выравнивания или между строками вертикального выравнивания.
\hidewidth
— Эта команда сообщает TEX игнорировать ширину следующей записи столбца при горизонтальном выравнивании.
\everycr [ 〈token list〉 parameter ]
— TEX расширяет 〈список токенов〉 всякий раз, когда он выполняет \cr — в конце каждой преамбулы. Т.е. выполняет список команд после \cr.
Математическая мода
Скобки
\lbrace { \{
} \rbrace } \}
[ \lbrack
] \rbrack
〈 \langle
〉 \rangle
Стрелки
← \leftarrow
← \gets
⇐ \Leftarrow
→ \rightarrow
→ \to
⇒ \Rightarrow
↔ \leftrightarrow
⇔ \Leftrightarrow
←− \longleftarrow
⇐= \Longleftarrow
−→ \longrightarrow
=⇒ \Longrightarrow
←→ \longleftrightarrow
⇐⇒ \Longleftrightarrow
⇐⇒ \iff
←↩ \hookleftarrow
↪→ \hookrightarrow
↽ \leftharpoondown
⇁ \rightharpoondown
↼ \leftharpoonup
⇀ \rightharpoonup
⇀↽ \rightleftharpoons
7→ \mapsto
7−→ \longmapsto
↓ \downarrow
⇓ \Downarrow
↑ \uparrow
⇑ \Uparrow
l \updownarrow
m \Updownarrow
↗ \nearrow
↘ \searrow
↖ \nwarrow
↙ \swarrow
Основные команды
Шрифты
\font
\font 〈control sequence〉 = 〈fontname〉
\font 〈control sequence〉 = 〈fontname〉 scaled 〈number〉
\font 〈control sequence〉 = 〈fontname〉 at 〈dimen〉
Это заставляет TEX загружать файл метрик шрифта (файл .tfm) для 〈fontname〉.
Если ни масштабированный 〈number〉, ни 〈dimen〉 отсутствуют, шрифт используется в его дизайнерском размере — размере, в котором он обычно выглядит лучше всего. В противном случае загружается увеличенная версия шрифта.
Scaled
— 〈number〉, шрифт увеличивается в 〈number〉/1000.
Если присутствует 〈dimen〉, шрифт масштабируется до 〈dimen〉
\font\tentt = cmtt10
\font\bigttfont = cmtt10 scaled \magstep2
\font\eleventtfont = cmtt10 at 11pt
\fontdimen 〈number〉 〈font〉 [ 〈dimen〉 parameter ]
— изменяет различные параметры шрифта
номер |
значение |
1 |
slant per point |
2 |
interword space |
3 |
interword stretch |
4 |
interword shrink |
5 |
x-height (size of 1ex) |
6 |
quad width (size of 1em) |
7 |
extra space |
Here’s a line printed normally.\par
\dimen0=\fontdimen2\font %сохранить значение пробела в dimen0
\fontdimen2\font=3\fontdimen2\font % увеличить пробел в 3 раза
\noindent Here’s a really spaced-out line.
\fontdimen2\font=\dimen0 %восстановить первоначальные значения
\magnification = 〈number〉
— масштабирование
\mag [ 〈number〉 parameter ]
— лучше использовать первое
\magstep 〈number〉
— Эта команда расширяется до коэффициента увеличения, необходимого для увеличения всего документа (кроме истинных размеров) на 1,2r, где r — значение 〈number〉. 〈число〉 должно быть от 0 до 5.
\magstephalf
— маштабирование в полразмера
Конвертирование информации в токене
\number 〈number〉
— Эта команда создает представление числа в виде последовательности токенов символов.
\number 24 \quad \count13 = -10000 \number\count13
выдаст: 24 -10000
\romannumeral 〈number〉
— Эта команда создает представление числа римскими цифрами в виде последовательности токенов символов.
\time [ 〈number〉 parameter ]
— TEX устанавливает этот параметр равным количеству минут, прошедших с полуночи (текущего дня).
\day [ 〈number〉 parameter ]
— TEX устанавливает этот параметр на текущий день месяца. Это число от 1 до 31.
\month [ 〈number〉 parameter ]
— TEX устанавливает для этого параметра текущий месяц. Это число от 1 до 12.
\year [ 〈number〉 parameter ]
— TEX устанавливает для этого параметра текущий год
\fmtname \fmtversion
— Эти команды создают имя и номер версии формата TEX, например, обычного TEX или LATEX, который вы используете.
\jobname
— Эта команда создает базовое имя файла, с которым был вызван TEX.
Значение переменных
\meaning 〈token〉
— Эта команда определяет значение 〈токена〉.
[{\tt \meaning\eject}] [\meaning\tenrm] [\meaning Y]
вернет:
[macro:->\par \break ] [select font cmr10] [the letter Y]
\string 〈control sequence〉
— Эта команда создает символы, составляющие имя control sequence
\escapechar [ 〈number〉 parameter ]
— Этот параметр определяет код ASCII символа, который TEX использует для представления escape-символа
\fontname 〈font〉
— Эта команда создает имя файла для 〈font〉. Имя файла — это 〈имя шрифта〉, которое использовалось для определения 〈font〉.
\font\myfive=cmr5
[\fontname\myfive]
вернет [cmr5]
Grouping
\begingroup \endgroup
— Эти две команды начинают и завершают группу.
\global
— Эта команда делает следующее определение или назначение глобальным
\globaldefs [ 〈number〉 parameter ]
— тоже, что \global\def
\aftergroup 〈token〉
— Когда TEX встречает эту команду во время ввода, он сохраняет 〈токен〉. После окончания текущей группы он вставляет 〈token〉 обратно во входные данные и расширяет их.
\afterassignment 〈token〉
— Когда TEX встречает эту команду, он сохраняет 〈token〉 в специальном месте. После следующего выполнения присваивания он вставляет 〈token〉 во входные данные и расширяет их.
Macros
\def 〈control sequence〉 〈parameter text〉 { 〈replacement text〉 }
— Эта команда определяет 〈последовательность управления〉 как макрос с указанным 〈текстом параметра〉 и 〈текстом замены〉.
\edef 〈control sequence〉 〈parameter text〉 { 〈replacement text〉 }
— Эта команда определяет макрос таким же общим способом, как и \def. Разница в том, что TEX немедленно расширяет 〈текст замены〉 \edef (но при этом ничего не выполняя).
Вы можете запретить расширение управляющей последовательности, которая в противном случае была бы расширена, используя \noexpand или можете отложить раскрытие управляющей последовательности, используя команду \expandafter.
Команды \write, \message, \errmessage, \wlog и \csname расширяют свои списки токенов, используя те же правила, которые \edef использует для расширения замещающего текста.
\gdef 〈control sequence〉 〈parameter text〉 { 〈replacement text〉 }
— эквивалентно \global\def
.
\xdef 〈control sequence〉 〈parameter text〉 { 〈replacement text〉 }
— эквивалентно \global\edef
\long
— Эта команда используется как префикс к определению макроса. Он сообщает TEX, что аргументы макроса могут включать токены \par
\long\def\aa#1{\par\hrule\smallskip#1\par\smallskip\hrule}
\aa{This is the first line.\par
This is the second line.} % without \long, TeX would complain
\outer
— Эта команда используется как префикс к определению макроса. Он сообщает TEX, что макрос является внешним (стр. 83) и не может использоваться в определенных контекстах.
\outer\def\chapterhead#1{%
\eject\topglue 2in \centerline{\bf #1}\bigskip}
% Using \chapterhead in a forbidden context causes an
% error message.
\chardef 〈control sequence〉=〈charcode〉
— Эта команда определяет 〈последовательность управления〉 как 〈символьный код〉. Хотя \chardef чаще всего используется для определения символов, его также можно использовать для присвоения имени числу в диапазоне 0–255, даже если вы не используете это число в качестве кода символа.
\chardef\percent = ‘\%
21\percent, {\it 19\percent}
% Get the percent character in roman and in italic
выдаст: 21%, 19%
\mathchardef 〈control sequence〉=〈mathcode〉
— определит математический символ
\let 〈control sequence〉 = 〈token〉
— определит синоним команды
\futurelet 〈control sequence〉 〈token1 〉 〈token2 〉
—
\csname 〈token list〉 \endcsname
— Эта команда создает управляющую последовательность из 〈списка токенов〉. Он обеспечивает способ синтеза управляющих последовательностей, в том числе тех, которые вы обычно не можете написать. 〈список токенов〉 сам может включать в себя управляющие последовательности; он расширяется так же, как заменяющий текст определения \edef
\def\capTe{Te} This book purports to be about \csname\capTe X\endcsname.
\expandafter 〈token1 〉 〈token2 〉
— Эта команда сообщает TEXу расширить 〈token1〉 в соответствии со своими правилами расширения макросов после расширения 〈token2〉 на один уровень.
\def\aa{xyz}
\tt % Use this font so ‘\’ prints that way.
[\string\aa] [\expandafter\string\aa] [\expandafter\string\csname TeX\endcsname]
%выводит: [\aa] [xyz] [\TeX]
\noexpand 〈token〉
— Эта команда сообщает TEX о подавлении расширения 〈token〉, если 〈token〉 является управляющей последовательностью, которую можно расширить.
\the 〈token〉
— Эта команда обычно расширяется до списка токенов символов, представляющих 〈токен〉. Это могут быть регистры, переменные и т.д. \parindent \deadcycles \count0 \catcode \fontdimen3\sevenbf \hyphenchar \skewchar \skewchar\teni \lastpenalty, \lastskip, \lastkern \chardef \mathchardef
Кроме того, \the может расширяться до несимвольных токенов в следующих двух случаях:
- \the 〈font〉, который расширяется до последней определенной управляющей последовательности, которая выбирает тот же шрифт, что и управляющая последовательность 〈font〉
- \the 〈переменная токена〉, которая расширяется до копии значения переменной, например, \the \everypar
Сравнения Conditional
\if 〈token1 〉 〈token2 〉
— Эта команда проверяет, имеют ли 〈token1 〉 и 〈token2 〉 одинаковый код символа, независимо от кодов их категорий.
\ifcat 〈token1 〉 〈token2 〉
— Эта команда проверяет, имеют ли 〈token1〉 и 〈token2〉 одинаковый код категории.
\ifx 〈token1 〉 〈token2 〉
— Эта команда проверяет, совпадают ли 〈token1〉 и 〈token2〉. В отличие от \if и \ifcat, \ifx не расширяет токены, следующие за \ifx, поэтому 〈token1 〉 и 〈token2 〉 — это два токена сразу после \ifx.
\ifnum 〈number1 〉 〈relation〉 〈number2 〉
— Эта команда проверяет, удовлетворяют ли 〈номер1〉 и 〈номер2〉 〈отношению〉, которое должно быть либо «<», «=» или «>».
\ifodd 〈number〉
— Эта команда проверяет, является ли 〈число〉 нечетным.
\ifdim 〈dimen1 〉 〈relation〉 〈dimen2 〉
— Эта команда проверяет, удовлетворяют ли 〈dimen1 〉 и 〈dimen2 〉 〈отношению〉, которое должно быть либо «<», «=» или «>».
\ifhmode \ifvmode \ifmmode \ifinner
— определяет в какой моде находится Tex
\ifhbox 〈register〉 \ifvbox 〈register〉 \ifvoid 〈register〉
— Эти команды проверяют содержимое ящика-регистра с номером 〈register〉.
\ifeof 〈number〉
— Эта команда проверяет входной поток на конец файла.
\ifcase 〈number〉〈case0 text〉 \or 〈case1 text〉 \or . . . \or 〈casen text〉 \else 〈otherwise text〉 \fi
— Эта команда представляет тест с пронумерованными несколькими случаями. Если 〈number〉 имеет значение k, TEX расширит 〈casek text〉, если он существует, и 〈иначе text〉, если его нет.
\iftrue \iffalse
— Эти команды эквивалентны тестам, которые всегда верны или всегда ложны.
\else
— Эта команда представляет «ложную» альтернативу условной проверки.
\fi
— Эта команда завершает текст условной проверки.
\newif \if〈test name〉
— Эта команда называет три управляющих последовательности именами \alphatrue, \alphafalse и \ifalpha, где alpha — это 〈имя теста〉
Циклы и повторы
\loop α \ifΩ β \repeat
— Эти команды предоставляют конструкцию цикла для TEXа. Здесь α и β — произвольные последовательности команд, а \ifΩ — любой из условных тестов. \repeat заменяет \fi, соответствующий тесту, поэтому вам не нужно явно писать \fi для завершения теста.
\count255 = 6
\loop
\number\count255\
\ifnum\count255 > 0
\advance\count255 by -1
\repeat
Пустота
\relax
— Эта команда сообщает TEXу ничего не делать.
\empty
— Эта команда вообще не требует токенов. Он отличается от \relax тем, что исчезает после раскрытия макроса.
Регистры
\count 〈register〉 = 〈number〉
\dimen 〈register〉 = 〈dimen〉
\skip 〈register〉 = 〈glue〉
\muskip 〈register〉 = 〈muglue〉
\toks 〈register〉 = 〈token variable〉
\toks 〈register〉 = { 〈token list〉 }
%Регистру \toks можно назначить либо переменную токена (регистр или параметр),
%либо список токенов. Когда вы назначаете список токенов регистру токенов,
%токены в списке токенов не расширяются.
\count 〈register〉
\dimen 〈register〉
\skip 〈register〉
\muskip 〈register〉
\toks 〈register>
Первые шесть команд, перечисленных здесь, присваивают что-то регистру. Остальные пять управляющих последовательностей не являются настоящими командами, поскольку могут появляться только как часть аргумента. Они возвращают содержимое указанного регистра. Хотя вы не можете использовать эти управляющие последовательности сами по себе в качестве текстовых команд, вы можете использовать \the для преобразования их в текст и набора их значений.
\newcount
— Резервирование регистров
\maxdimen
— Эта последовательность управления дает 〈размер〉, который является наибольшим размером, приемлемым для TEX
Операции над регистрами: \advance, \multiply, \divide, \setbox, \box
.
Объявление регистров
\newcount %каждый резервирует регистр указанного типа.
\newdimen
\newskip
\newmuskip
\newtoks
\newbox
\newread %зарезервируйте входной поток и выходной поток соответственно.
\newwrite
\newfam %резервирует семейство математических шрифтов.
\newinsert %резервирует тип вставки.
\newlanguage %резервирует набор шаблонов расстановки переносов.
\countdef 〈control sequence〉 = 〈register〉
\dimendef 〈control sequence〉 = 〈register〉
\skipdef 〈control sequence〉 = 〈register〉
\muskipdef 〈control sequence〉 = 〈register〉
\toksdef 〈control sequence〉 = 〈register〉
Эти команды определяют 〈последовательность управления〉 для ссылки на регистр указанной категории, номер которого равен 〈register〉.
Операции над регистрами
\advance 〈count register〉 by 〈number〉
\advance 〈dimen register〉 by 〈dimen〉
\advance 〈skip register〉 by 〈glue〉
\advance 〈muskip register〉 by 〈muglue〉
Эта команда добавляет совместимое количество в регистр.
\multiply 〈register〉 by 〈number〉
\divide 〈register〉 by 〈number〉
Эти команды умножают и делят значение в 〈register〉 на 〈number〉 (которое может быть отрицательным).
Завершение работы
\bye
— заканчивается документ
\end
— Эта команда сообщает TEX создать последнюю страницу и завершить задание. Однако он не заполняет страницу, поэтому обычно лучше использовать \bye, а не \end.
\input 〈filename〉
— Эта команда сообщает TEX прочитать входные данные из файла 〈имя файла〉. Когда этот файл исчерпан, TEX возвращается к чтению из предыдущего источника ввода.
\endinput
— Эта команда сообщает TEXу прекратить чтение ввода из текущего файла, когда он в следующий раз достигнет конца строки.
\inputlineno
— Эта команда возвращает число (не строку), задающее номер текущей строки, определенный как номер, который будет отображаться в сообщении об ошибке, если ошибка произойдет в этот момент.
\openin 〈number〉 = 〈filename〉
— Эта команда сообщает TEXу открыть файл с именем 〈имя файла〉 и сделать его доступным для чтения через входной поток, обозначенный 〈number〉 . Number от 0 до 15. Чтение из файла выполняется командой \read
. Номера потоков определяются с помощью команды \newread
.
\closein 〈number〉
— Эта команда сообщает TEXу закрыть входной поток с номером 〈number〉, т. е. прекратить связь между входным потоком и его файлом.
\read 〈number〉 to 〈control sequence〉
— Эта команда сообщает TEX прочитать строку из файла, связанного с входным потоком, обозначенным 〈номером〉, и назначить токены в этой строке 〈управляющей последовательности〉.
Output
\openout 〈number〉 = 〈filename〉
— Эта команда сообщает TEXу открыть файл с именем 〈имя файла〉 и сделать его доступным для записи через выходной поток, обозначенный 〈номер〉. 〈число〉 должно быть от 0 до 15.
\closeout 〈number〉
— Эта команда сообщает TEXу закрыть выходной поток с номером 〈number〉.
\write 〈number〉 { 〈token list〉 }
— Эта команда сообщает TEX записать 〈список токенов〉 в файл, связанный с выходным потоком, обозначенным 〈номер〉.
\immediate
— Эта команда должна предшествовать командам \openout, \closeout или \write. Он сообщает TEXу выполнить указанную операцию с файлом без задержки.
\special { 〈token list〉 }
— Эта команда сообщает TEX записать 〈список токенов〉 непосредственно в файл .dvi при следующей отправке страницы.
\newlinechar [ 〈number〉 parameter ]
— Этот параметр содержит символ, обозначающий новую строку на выходе. Когда TEX встречает этот символ при чтении аргумента команды \write, \message или \errmessage, он начинает новую строку.
Интерпретация входных символов
\catcode 〈charcode〉 [ 〈number〉 table entry ]
— Эта запись таблицы содержит код категории символа, код ASCII которого равен 〈charcode〉.
\active
— Эта команда содержит код категории для активного символа, а именно цифру 13.
\mathcode 〈charcode〉 [ 〈number〉 table entry ]
— Эта запись таблицы содержит математический код символа, ASCII-код которого равен 〈charcode〉
\delcode 〈charcode〉 [ 〈number〉 table entry ]
— Эта запись таблицы определяет код-разделитель для входного символа, код ASCII которого равен 〈charcode〉.
\endlinechar [ 〈number〉 parameter ]
— Этот параметр содержит код символа, который TEX добавляет в конец каждой входной строки.
\ignorespaces
— Эта команда сообщает TEXу читать и расширять токены, пока не найдет тот, который не является токеном пространства, игнорируя любые токены пространства, которые он находит на своем пути.
Отладка кода Tex’s
\show 〈token〉 \showthe 〈argument〉 \showbox 〈number〉 \showlists
— Эти команды записывают информацию в журнал вашего запуска TEXа
\tracingonline [ 〈number〉 parameter ]
— Если этот параметр больше нуля, TEX будет отображать результаты трассировки (включая \showbox и \showlists) на вашем терминале в дополнение к записи их в файл журнала.
\message { 〈token list〉 } \errmessage { 〈token list〉 }
— Эти команды отображают сообщение, заданное 〈списком токенов〉, на вашем терминале, а также записывают его в журнал. Все макросы в сообщении раскрываются, но команды не выполняются.
\wlog { 〈token list〉 }
— Эта команда записывает 〈список токенов〉 в файл журнала.
\errhelp [ 〈token list〉 parameter ]
— Этот параметр содержит список токенов, который TEX отображает, когда вы запрашиваете помощь в ответ на команду \errmessage.
\newhelp 〈control sequence〉 { 〈help text〉 }
— Эта команда назначает справочное сообщение, заданное 〈текстом помощи〉, 〈последовательности управления〉.
Инициализация TEX
\dump
— Эта команда, которая не должна появляться внутри группы, сбрасывает содержимое памяти TEXа в файл формата (стр. 65). Используя virtex, специальную «чистую» форму TEXа, вы можете затем перезагрузить файл формата на высокой скорости и продолжить работу в том же состоянии, в котором находился TEX на момент создания дампа. \dump также завершает выполнение. Поскольку \dump можно использовать только в initex, а не в рабочих формах TEXа, он полезен только тем, кто устанавливает TEX.
\everyjob [ 〈token list〉 parameter ]
— Этот параметр содержит список токенов, который TEX расширяет в начале каждого задания. Поскольку назначение \everyjob не может повлиять на текущий запуск (к тому времени, когда вы выполните назначение, будет уже слишком поздно), оно полезно только для людей, которые подготавливают файлы форматирования.
2 - TEX for the Impatient
Обзор документации TEX по книге TEX for the Impatient
Это не полный конспект. Это дополнение к предыдущим знаниям. Поэтому, только отличия от другой статьи.
Некоторые команды
\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 теорема
Печатает первое предложение выделенным жирным, а остальной абзац курсивом.
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
{\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 — вставить текс в выходной файл
- при смене языка поместит информацию
3 - TEX
Документация TEX, в объеме,которуюя использую для своих задач
TEX это база, на которой строятся все прекрасные вещи из Latex и Tikz
Введение
% A small font and close interline spacing make this work
\smallskip\font\sixrm=cmr6 \sixrm \baselineskip=7pt
\dimen0=\fontdimen3\font \dimen2=\fontdimen4\font
\fontdimen3\font=1.8pt \fontdimen4\font=.9pt
\noindent \hfuzz=.1pt
\parshape 30 0pt 120pt 1pt 118pt 2pt 116pt 4pt 112pt 6pt
108pt 9pt 102pt 12pt 96pt 15pt 90pt 19pt 84pt 23pt 77pt
27pt 68pt 30.5pt 60pt 35pt 52pt 39pt 45pt 43pt 36pt 48pt
27pt 51.5pt 21pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt 53pt
16.75pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt
53pt 14.6pt 48pt 24pt 45pt 30.67pt 36.5pt 51pt 23pt 76.3pt
The wines of France and California may be the best known,
but they are not the only fine wines. Spanish wines are
often underestimated, and quite old ones may be available at
reasonable prices. For Spanish wines the vintage is not so
critical, but the climate of the Bordeaux region varies
greatly from year to year. Some vintages are not as good as
others, so these years ought to be s\kern -.1pt p\kern -.1pt
e\kern -.1pt c\hfil ially n\kern .1pt o\kern .1pt
t\kern .1pt e\kern .1pt d\hfil: 1962, 1964, 1966. 1958,
1959, 1960, 1961, 1964, 1966 are also good California
vintages. Good luck finding them!
\fontdimen3\font=\dimen0 \fontdimen4\font=\dimen2

Изучаю книгу A Gentle Introduction to TEX
Первый шаг Создать файл.
Я это делаю в своем любимом Emacs
Here is my first \TeX\ sentence.
\bye
и сохранил с именем test.tex
Второй шаг выполнить tex
Получилось два файла на выходе: test.dvi и test.log
В test.log
This is TeX, Version 3.141592653 (TeX Live 2024) (preloaded format=tex 2024.10.2) 5 JAN 2025 20:03
**test.tex
(./test.tex [1] )
Output written on test.dvi (1 page, 292 bytes).
А файл dvi
вполне себе просматривается emacs, в том виде, как и должно быть.
Специальные символы в Tex
символ |
назначение |
как вывести в tex |
\ |
спец символ и инструкции |
$\backslash$ |
{ |
открывает группу |
${$ |
} |
закрывает группу |
$}$ |
% |
комментарии |
% |
& |
разграничение колонок в таблице |
& |
~ |
неразрываемый пробел |
~{} |
$ |
начало и окончание математической моды |
$ |
^ |
надстрочник |
^{} |
_ |
подстрочник |
_{} |
# |
определение заменяемого символа |
# |
Набор текста с акцентом
Акцент — это надстрочники и подстрочники над и под буквами
Акцент за которым следует буква
наименование |
Tex input |
Tex output |
Compose |
grave |
\`o |
ò |
cmp+` o |
acute |
\’o |
ó |
cmp+’ o |
circumflex |
\^o |
ô |
cmp+^ o |
umlaut/dieresis/tr ́emat |
\“o |
ö |
cmp+” o |
tilde |
\~o |
õ |
cmp+~ o |
macron |
\=o |
ő |
cmp+= o |
dot |
\.o |
ȯ |
cmp+. o |
Продолжение для символов требующих пробела
наименование |
Tex input |
Tex output |
Compose |
cedilla |
\c o |
ǫ |
cmp+, o |
underdot |
\d o |
ọ |
cmp+! o |
underbar |
\b o |
o᤻ |
o C-x 8 RET 193b |
h ́acˇek |
\v o |
ǒ |
cmp+v o |
breve |
\u o |
ŏ |
cmp+u o |
tie |
\t oo |
o͡o |
o C-x 8 RET 0361 o |
Hungarian umlaut |
\H o |
ő |
cmp+= o |
|
|
ơ |
cmp++ o |
|
|
° |
cmp+o o |
|
|
§ |
cmp+s o |
|
|
ø |
cmp+? o |
По этой ссылке весь unicode а в Emacs C-x 8 RET в помощь. ⤖ https://www.compart.com/en/unicode/
Но и это еще не всё!
Это нужно при оформлении HTML документации просто пишем имя через &Rarrtl
и получаем результат.
Можно создать собственную комбинацию клавиш
Создайте пустой ~/.XCompose и включите в него содержимое стандартного файла, используя директиву include “%L”, например:
# ~/.XCompose
include "%L"
<Multi_key> <g> <a> : "α"
<Multi_key> <g> <b> : "β"
<Multi_key> <g> <g> : "γ"
Определение шрифта
В Tex по умолчанию доступны 16 шрифтов
Наименование |
команда |
Roman |
\rm |
Boldface |
\bf |
Italic |
\it |
Slanted |
\sl |
Typewriter |
\tt |
Math symbol5 |
\cal |
Масштабирование шрифта
используем команду \magstep 0...5
или \magstephalf
\font\bigrm = cmr10 scaled \magstep 5 %объявим свой шрифт crm10 и смасштабируем 5 magstep
\font\bigbigrm = cmr14 scaled \magstep 3
Имена стандартных шрифтов TEX
CMBSY10 |
CMBXSL10 |
CMBXTI10 |
CMBX10 |
CMBX12 |
CMBX5 |
CMBX6 |
CMBX7 |
CMBX8 |
CMBX9 |
CMB10 |
CMCSC10 |
CMDUNH10 |
CMEX10 |
CMFF10 |
CMFIB8 |
CMFI10 |
CMITT10 |
CMMIB10 |
CMMI10 |
CMMI12 |
CMMI5 |
CMMI6 |
CMMI7 |
CMMI8 |
CMMI9 |
CMR10 |
CMR12 |
CMR17 |
CMR5 |
CMR6 |
CMR7 |
CMR8 |
CMR9 |
CMSLTT10 |
CMSL10 |
CMSL12 |
CMSL8 |
CMSL9 |
CMSSBX10 |
CMSSDC10 |
CMSSI10 |
CMSSI12 |
CMSSI17 |
CMSSI8 |
CMSSI9 |
CMSSQI8 |
CMSSQ8 |
CMSS10 |
CMSS12 |
CMSS17 |
CMSS8 |
CMSS9 |
CMSY10 |
CMSY5 |
CMSY6 |
CMSY7 |
CMSY8 |
CMSY9 |
CMTCSC10 |
CMTEX10 |
CMTEX8 |
CMTEX9 |
CMTI10 |
CMTI12 |
CMTI7 |
CMTI8 |
CMTI9 |
CMTT10 |
CMTT12 |
CMTT8 |
CMTT9 |
CMU10 |
CMVTT10 |
|
|
|
|
- CM — Computer Modern
- B — Bold
- R — roman
- I — italic
- CSC — small caps
- SL — наклонный
- SS — sans serif
- SY — symbols
- TT — моноширинный
Форма выводимого текста
Tex понимает различные единицы измерения:
и другие
- ex — высота маленькой x
- em — ширина большой M
Форма страницы
Три части:
наименование |
команда |
значение |
ширина |
\hsize |
6.5in |
высота |
\vsize |
8.9in |
горизонтальный отступ |
\hoffset |
0 |
вертикальный отступ |
\voffset |
0 |
\vfill \eject
— оборвет страницу и начнет новую
\hsize = 4in — определяет горизонтальный размер текста в текущем абзаце
0.75\hsize установит размер \hsize 0.75 от последнего значения
\vsize — задает вертикальный размер страницы
\hoffset \voffset — задают смещение текста относительно левого верхнего угла страницы. По умолчанию они равны 1in.
Команды \hsize и \vsize нужно давать в начале абзаца
Команды \hoffset \voffset действуют на всю страницу где они находятся и последняя переустановит всех предыдущих на этой странице
Для \hoffset и \voffset нет пределов страницы. Спокойно выведет текст за его пределами
\magnification = \magstep 3
Ставится в самом начале документа до начала первого символа и увеличивает весь документ, вместе с \hsize и \vsize
чтобы сохранить неизменными \hsize и \vsize используем true
\hsize = 5 true in
Форма параграфа
На размер абзаца влияет \hsize
Tex всегда читает весь абзац целиком и применяет последние настройки.
функция |
команда |
значение |
ширина |
\hsize |
6.5in |
отступ первой линии |
\parindent |
20pt |
расстояние между линиями |
\baselineskip |
12pt |
расстояние между абзацами |
\parskip |
0pt |
команда \noindent убирает первый отступ линии, тоже,что и \parindent= 0pt
\rightskip \leftskip
это команды margin отступов слева и справа от обзаца
\narrower — изменяет оба значения сразу значением равным \parindent
\hangindent=2.5 in \hangafter=2
первую строку заполняет полностью на всю ширину, а следующую с отступом. Если положительное, то слева, если отрицательное, то справа.
\hangafter указывает после какой строки начинать отступ.
По умолчанию равно 1. Если поставлю 0, то отступ начнется с первой строки. Если отрицательное, то первые строки будут с отступом, а следующие на полную ширину.
еще есть команда \hang — которая сделает отступ абзаца на длину \parindent
\parshape
Создает абзацы любой формы
\item
Начинает абзац с отступом \parindent и вначале указывает значение, которое в {}
Команда \itemitem сделает двойной отступ
\parskip = 0pt \parindent = 30 pt \noindent
Answer all the following questions:
\item{(1)} What is question 1?
\item{(2)} What is question 2?
\item{(3)} What is question 3?
\itemitem{(3a)} What is question 3a?
\itemitem{(3b)} What is question 3b?
\parskip
расстояние между параграфами
и его друг \vskip 1 in — задают интервал между абзацами
(у него нет знака равно)
\vglue 1 in — вставляет 1 in куда угодно, даже в начале страницы.
Эта команда поставит на текущей странице все, что находится между командами \topinsert и \endinsert
Я умышленно поставил \vskip -2 in и весь текстстраницы улетел вверх.
\smallskip, \medskip, \bigskip
Для смещений между абзацами. Действует только на текущий абзац.
Форма строки
\hfill \break — разорвет строку
\hfill — заполнит пространство
\line{} — выведет строку
\liftline{} \rightline{} \centerline{} выравнивает строку
\hfil — заполняет пространство для выравнивания
\raggedrigth — обрыв правого выравнивания
\hskip 1 in — горизонтальный отступ
Сноски
\footnote{}{}
в первой части {} могут быть знаки \dag, \ddag, \S, \P или номер ссылки в формате Tex {${}^{21}$} но сейчас работает {$^{21}$}
в Latex немного измененный формат \footnote{}
определяется командами
\headline{} — header
\footline{} — footer
аналогично как при заполнении \line{}
\headline={\hfil \tenrm Page \the\pageno}
\tenrm — это шрифт roman 10pt
\the\pageno — номер страницы
\folio — тоже номер страницы, но выводит римские буквы когда \pageno отрицательный
\pageno=-1 может быть любого значения
Четные и нечетные заголовки
\headline={\ifodd \pageno {...}\else {...}\fi}
Переполнение или недобор в боксах
При переполнении или недоборе в строках появляется slug
— слизень █ который показывает проблему в этой строке.
vbox hbox
Так Tex делит на блоки всю страницу и заполняет ее
vbox — вертикальные блоки абзацев
hbox — горизонтальные блоки строк
\hbadness
Это параметр плохости строки — по умолчанию 1000
Накапливается от количества пробелов, вставленных в строку для ее выравнивания.
Увеличения параметра до 10000 подавляет все сообщения о плохости блока.
\tolerance
Это параметр устанавливает на сколько строка может превышать допустимый размер
По умолчанию = 200. 10000 также стирает все предупреждения.
\hfuzz
Параметр, который определяет, на сколько может выступать переполнение строки \hfuzz = 0.1 pt
\overfullrule
это толщина слизняка slug
, появляющегося на полях.
Если установить его 0pt то маркеры будут незаметны
\hyphenation{data-base}
установка переносов для лучшего форматирования боксов
\vbadness
параметры для вертикального наполнения текста на странице
Группы
При наборе текст можно упаковать в группы {}
При выходе из группы, все настройки возвращаются к тем, которые были до входа в группу.
{ \hsize = 4 in \parindent = 0 pt \leftskip = 1 in will produce a paragraph that is four ... (this is an easy mistake to make). \par }
Математичесский режим
Третий режим Tex математический. Задается $…$ в строке и $$…$$ для многострочного блока.
Теоремы — это тоже почти математика.
\proclaim — макрос,который выделит первое предложение до точки. А оставшуюся часть абзаца выдаст как описание теоремы.
\proclaim Theorem 1 (H.~G.~Wells). In the country of the blind, the one-eyed man is king.
Матрицы
Это мне всегда больше нравилось.
$$\pmatrix{
a & b & c & d \cr
b & a & c+d & c-d \cr
0 & 0 & a+b & a-b \cr
0 & 0 & ab & cd \cr
}.$$
создаст матрицу с круглыми скобками
\hfill — выравнивают значения в матрице
\matrix
удаляет разделители круглые скобки и их можно задать явно с помощью команд: \left и \right
$$ \left |
\matrix{
a & b & c & d \cr
b & a & c+d & c-d \cr
0 & 0 & a+b & a-b \cr
0 & 0 & ab & cd \cr
}
\right | $$
типы скобок: (){}[]||
еще можно значения замещать многоточием: \cdots, \vdots, \ddots
Выравнивание по знаку =
$$\eqalign{
a+b &= c+d \cr
x &= w + y + z \cr
m + n + o + p &= q \cr
}$$
Можно нумеровать уравнения тоже через знак &
$$\eqalignno{
a+b &= c+d & (1) \cr
x &= w + y + z \cr
m + n + o + p &= q & * \cr
}$$
Таблицы и tabbing
\settabs — команда создать tabbing
\settabs 4 \columns %установить 4 равных столбца
\+ British Columbia & Alberta & Saskatchewan & Manitoba \cr
\+ Ontario & Quebec & New Brunswick & Nova Scotia \cr
\+ & Prince Edward Island & Newfoundland \cr
+ — начало строки
\cr — завершение строки
\hfil, \hfill выравнивают текст в ячейках
\settabs \+ \hskip 1 in & \hskip 2 in & \hskip 1.5 in & \cr
— это более жизненный пример таблицы с установленными значениями ширины столбцов
или так: \settabs \+ ---------- & ------------------ & ----------------------- & \cr
черточки не выводятся, так же как и любой текст
\hrule — начертит линию под строкой
+\strut — сделает отступ вокруг строки
$$\vbox{
\settabs \+ ----------------&-----&----\cr
\+Plums&\hfill \$1&.22\hfill \cr
\+Coffee&\hfill 1&.78\hfill \cr
\+Granola&\hfill 1&.98\hfill \cr
\+Mushrooms&\hfill &.63\hfill \cr
\+Kiwi fruit&\hfill& .39\hfill \cr
\+Orange juice&\hfill 1&.09\hfill \cr
\+Tuna&\hfill 1&.29\hfill \cr
\+Zucchini&\hfill 0&.64\hfill \cr
\+Grapes&\hfill 1&.69\hfill \cr
\+Smoked beef&\hfill &.75\hfill \cr
\+Broccoli&\hfill\underbar{\ \ 1}&\underbar{.09}\hfill \cr
\+Total&\hfill \$12&.55\hfill \cr
}$$
Горизонтальное выравнивание и шаблон \halign
\halign{шаблон} \cr
\halign{\hskip 2 in $#$& \hfil \quad # \hfil & \qquad $#$ & \hfil \quad # \hfil \cr
вместо # будет подставлено значение из строки
\halign{\hskip 2 in $#$& \hfil \quad # \hfil & \qquad $#$ & \hfil \quad # \hfil \cr \alpha & alpha & \beta & beta \cr
\gamma & gamma & \delta & delta \cr
\epsilon & epsilon & \zeta & zeta \cr
}
\hrule — горизонтальная линия
\vrule — вертикальная линия
\offinterlineskip — позволяет зафиксировать раздвижение строк в таблице
\moveright 2 in
\vbox{\offinterlineskip
\halign{\strut \vrule \quad $#$\quad &\vrule \hfil \quad #\quad \hfil &\vrule \quad $#$\quad &\vrule \hfil \quad #\quad \hfil \vrule \cr
\noalign{\hrule}
\alpha & alpha & \beta & beta \cr
\noalign{\hrule} \gamma & gamma & \delta & delta \cr
\noalign{\hrule} \epsilon & epsilon & \zeta & zeta \cr
\noalign{\hrule}
}}
финальный вариант. \moveright сдвинет box на два In вправо
но для этого также исправно работают \centrline, а также \rightline и \leftline
Создание своих макросов
\def\name{}
name — только буквы или одна не буква
Задать переменные #1
\def\name#1#2{#1...#2}
Задать синоним команде \let
\let \newname = \oldname
работать будут оба имени
Протокол ошибок Tex
обязательно в конце ввода поставить \bye
! Undefined control sequence. %название ошибки
l.1 \line{ The left side \hfli %успешно прочитанная строка
the right side} % продолжение строки после ошибки
? %что делать?
варианты ответа:
Ответ |
буква |
результат |
help |
h |
причина указана на терминале |
insert |
i |
показать следующую строку |
exit |
x |
завершить tex |
scroll |
s |
прокрутить ошибки |
run |
r |
продолжить работу |
quiet |
q |
подавляет вывод в терминал |
carry on |
|
продолжить лучше как можно |
Большие файлы
\input filename
добавит маленькие файлы в большой
Линии rule
\hrule \vrule — имеют параметры width height depth
\vrule height 0 pt depth 0.4 pt width 3 in
Boxes
\vbox и \hbox — основные кирпичи в tex.
Вкладывая их друг в друга можно получить любой результат.
Задать размер \hbox to 5cm{}
у \vbox есть брат \vtop — будет выравнивать по верхнему краю boxes
\vbox{ \hrule
\hbox{\vrule{} The text to be boxed \vrule}
\hrule }
А это будет текст в рамочке, а с ключевым слово \strut — оно будет с отступами
Перемещение box по странице
\moveright \moveleft — переместит вертикальный бокс
\raise \lower — переместит горизонтальный бокс
Линии в боксе
\hbox to 5 in{Getting Started\hrulefill 1}
и еще есть \dotfill — полезно для оглавления