.RU

С. М. Львовский Предварительная рабочая версия - страница 12


,1мм.

Можно также прибавлять длину к значению параметра: если значение параметра \abcd равно x, то после выполнения команды

\addtolength{\abcd}{y}

гдеy—длина,значениепараметра\abcdстанетравноx+y.Вкачествеyвэтойкомандеможетиспользоватьсякакявноуказаннаядлина(например,1.2in),такипараметрсозна�чениемдлины(возможно,счисловымкоэффициентом).Наконец,LATEX предоставляет еще полезную команду

\settowidth{параметр}{текст}

котораяприсваиваетпараметрупараметрзначение,равноеширинетекста.Вотпример:

слово слово \settowidth{\PRIMER}{\LargeSLOWO}{\LargeSLOWO}SLOWO

слово \hspace{\PRIMER}SLOWO

В разделе III.7.3 у нас шла речь о том, что некоторые используемые в TEXе дл ´

инымогутобладатьрастяжимостьюилисжимаемостью.Параметрам,созданнымспомощьюкоман�ды\newlength,такжеможноприсваиватьзначения,содержащиеplus-и/илиminus-компоненту.Если,например,мыхотим,чтобыпараметр\PRIMERимелестественныйразмер2смиприэтоммограстягиватьсяна4ммисжиматьсянаодинпункт,томожнонаписатьтак:

\setlength{\PRIMER}{2cmplus4mmminus1pt}

^ VII.4. СОЗДАНИЕ НОВЫХ ОКРУЖЕНИЙ

4. Создание новых окружений

4.1. Новые окружения: общий случай

Как мы уже имели возможность убедиться, для сокращения времени на написание длинных последовательностей команд удобно пользоваться макросами. В тех случаях, когда для до� стижениянеобходимогонамэффектатребуетсясложнаяпоследовательностькомандвнача� ле и в конце какого-то текста, LATEX дает нам возможность создать оформить соответствую� щие макросы в виде нового окружения. Как это делается, разберем на примере.

Предположим,намхочетсявзятьврамкуабзацтексташириной7см.Одинизвозможныхспособовсделатьэтотаков:

\begin{tabular}{|p{7cm}|}\hline—TOTTEKSTBUDETZAKL@ˆENWRAMKU.kAKWIDITE,OKRUVENIE,PREDNAZNAˆENNOEDLQWERSTKITABLIC,MOVNOISPOLXZOWATXIDLQ“TIHCELEJ.\\\hline\end{tabular}

что даст на печати вот что:


Этот текст будет заключен в рамку. Как видите, окружение, предназначен� ное для верстки таблиц, можно ис� пользовать и для этих целей.

Если таких рамок с текстом у Вас много, то можно сократить число нажатий на клавиши, определив окружение с именем, скажем, RAMKA, так, чтоб можно было бы просто писать

\begin{RAMKA}—TOTTEKSTBUDET......“TIHCELEJ.\end{RAMKA}

Определяется это окружение так:

\newenvironment{RAMKA}{\begin{tabular}{|p{7cm}|}\hline}{\\\hline\end{tabular}}

В общем случае команда \newenvironment имеет такой формат:

\newenvironment{имя}{открывающие_команды}{закрывающие_команды}

Здесьимя—имяопределяемогоокружения,открывающие_команды—командыи/илитекст,подставляемыевместокоманды\beginсименемокружения,закрывающие_команды

— команды и/или текст, подставляемые вместо команды \end с именем окружения.

Вместоокружения,определяемогоспомощью\newenvironment,можностемжеуспе�хомсоздатьдвамакроса:одиндляоткрывающих_команд,другойдлязакрывающих.На�пример,внашемслучаесрамкойможнобылобынаписать

\newcommand{\NAˆATX}{\begin{tabular}{|p{7cm}|}\hline}\newcommand{\KONˆITX}{\\\hline\end{tabular}}

^ VII.4. СОЗДАНИЕ НОВЫХ ОКРУЖЕНИЙ

157

и создавать рамки так:

\NAˆATX—TOTTEKST...\KONˆITX

Преимуществооформлениятакогородаконструкцийввидеокруженийсостоитвтом,чтоприэтомлегчеконтролироватьошибки:еслиВынапишете\begin{RAMKA}иприэтомзабу�детенаписатьсоответствующуюкоманду\end{RAMKA},тоLATEXвыдастсообщениеобошиб�ке,вкоторомровноэтоВамискажет;еслижеВызабудетекоманду\KONˆITX,тосообще�нияобошибкебудутменеепонятными.Крометого,нелишненапомнить,чтокоманды\beginи\end,ограничивающиеокружение,ограничиваютгруппу:всенеглобальныеопределенияиизмененияпараметров,происходящиевнутриокружения,забываютсяповыходеизнего.

Новые окружения можно определять так, чтобы они принимали аргументы. Пусть, на� пример, в зависимости от обстоятельств нам нужны рамки разной ширины. Тогда разумно модифицировать определение окружения RAMKA таким образом, чтобы ширина текста в рам� ке передавалась ему как аргумент. Соответствующее определение будет выглядеть так:

\newenvironment{RAMKA}[1]{\begin{tabular}{|p{#1}|}\hline}{\\\hline\end{tabular}}

После этого можно писать, например,

\begin{RAMKA}{6cm}tEKST...\end{ramka}

или даже


\begin{RAMKA}{.85\textwidth}tEKST...\end{ramka}

Общие правила таковы. Чтобы создать окружение с аргументами, надо воспользоваться командой \newenvironment c необязательным аргументом. Этот необязательный аргумент ставится между первым и вторым обязательными; как и в случае с \newcommand, он означает количество аргументов, которые будет требовать окружение, и это количество не может пре� вышать девяти; места, куда будут вставлены аргументы, по-прежнему обозначаются #1, . . . #9, причем эти значки можно употреблять только в открывающих командах (то есть во втором обязательном аргументе команды \newenvironment)

С помощью \newenvironment нельзя переопределить уже существующее окружение (ес� ли Вы все же попробуете так сделать, LATEX выдаст сообщение об ошибке). Если Вам дей� ствительно необходимо такое переопределение, надо пользоваться командой \renewenvironment, работающей точно так же, как и \newenvironment, с тем различием, что в качестве первого аргумента ей можно передавать только имя уже существующего окружения.

4.2. Окружениятипа«теорема»

Если Вы пишете математический текст, то в этом тексте будет содержаться немалое количе� ство теорем, лемм, определений и тому подобных вещей. Эти элементы математического тек� ста желательно оформлять специальным образом. Например, формулировки теорем часто

^ VII.4. СОЗДАНИЕ НОВЫХ ОКРУЖЕНИЙ

печатают,дляясности,другимшрифтом,самослово«теорема»такжевыделяют(третьим)шрифтом,ит.д.Чтобызадатьтакоеоформление,висходномтекстеприходитсянаписатьдовольномногоTEXовскихкоманд,илучшенеповторятьэтотдлинныйнаборкомандмногораз,асоздатьзаменяющееегомакроопределение,что,всвоюочередь,можетпотребоватьнекотороготруда(чем-топодобныммызанималисьвпредыдущихразделах,когдаразра�батываликоманду\z).ЕслижеВыилиредакция,скоторойВыимеетедело,неслишкомтребовательныкдеталямоформления,тосоответствующиемакросы(точнееговоря,новыеокружения)легкосоздатьизполуфабрикатов,предоставляемыхнамдляэтихцелейLATEXом.

Окружения, используемые в LATEXедляоформленияфрагментовтекстатипа«теорема»,заранеенеопределены.Деловтом,чтоколичестворазличныхтиповобъектовнаподобиетеоремы,присутствующихводномтексте,можетбытьдостаточновелико(предложение,утверждение,лемма,определение,замечание...),такчтоLATEX, в целях экономии машин� ной памяти и исходя их того, что на все вкусы таких окружений не напасешься, определять их предоставляет Вам. Как это делать, удобнее всего разобрать на примере.

Пустьвнашемтекстеприсутствуют«предложения».Давайтесоздадимокружениеpredlтакимобразом,чтобыможнобыло,например,писать

\begin{predl}

wOLGA WPADAET WПредложение 1. Волга впада� kASPIJSKOEMORE.

ет в Каспийское море.

\end{predl} Доказательство. См. любую {\bfdOKAZATELXSTWO.}sM.\географическую карту. ^ L@BU@ GEOGRAFIˆESKU@ KARTU.

Для создания такого окружения используется команда \newtheorem:

\newtheorem{predl}{pREDLOVENIE}

Каквидите,команда\newtheoremимеетдваобязательныхаргумента:первый—названиеокружения,котороемысоздаем,второй—заголовокнашей«теоремы».

Теперьобсудим,какработаютокружения,созданныеприпомощикоманды\newtheorem(будемназыватьихпростоокружениямитипа«теорема»).Во-первых,какВыужезамети�ли,«формулировка»печатаетсякурсивом,азаголовок–полужирнымшрифтом.Во-вторых,абзац,идущийпосленашегоокружения,начинаетсясабзацнымотступом,еслипослезакры�вающейокружениекоманды\endидетпустаястрока,ибезотступавпротивномслучае(такчтовэтомотношенииокружениятипа«теорема»ведутсебясовершенноаналогичнотакимокружениям,какquote,itemizeит.п.).В-третьих,окружениетипа«теорема»можетиметьнеобязательныйаргумент(какобычно,вквадратныхскобках).Текст,стоящийвэтихква�дратныхскобках,будетнапечатанвскобкахпослезаголовка«теоремы»иееномера.Обыч�ноэтоиспользуетсядляуказанияученого,чьимименемназвана«теорема»:

\begin{predl}[pIFAGOR]Предложение2(Пифагор).^ pIFAGOROWY [TANY NA

WSESTORONYRAWNY.

Пифагоровы штаны на все
стороны равны. \end{predl}


Вместесокружениемтипа«теорема»автоматическисоздаетсяисчетчик,хранящийегономер.Имяэтогосчетчикасовпадаетсименемокружения(такчтовнашемпримересчетчик

^ VII.4. СОЗДАНИЕ НОВЫХ ОКРУЖЕНИЙ

называетсяpredl);еслимыхотимизменитьпредставлениенапечатиномеровнашей«тео�ремы»,томожнообычнымобразомпереопределитьсоответствующуюthe-команду.Напри�мер,еслимыхотим,чтобыпредложениянумеровалисьпрописнымилатинскимибуквами,надовпреамбуленаписать:

\renewcommand{\thepredl}{\Alph{predl}}

«Теоремы»,определяемыеописаннымвышеспособом,будутиметьсплошнуюнумера�циюнапротяжениивсегодокумента.Какмыужепонимаем,этодалеконевсегдаудобно.Частохотелосьбысделатьтак,чтоб,например,вкаждойсекциинумерация«теорем»на�чиналасьзаново.Длятакихцелейпредусмотренакоманда\newtheoremснеобязательнымаргументом.Этотаргументставитсяпоследвухобязательныхипредставляетсобойимято�госчетчика,которомубудетподчиненсчетчикнашей«теоремы».Пусть,например,внашемтекстеестьнетолькопредложения,ноитеоремы(безкавычек),имыхотим,чтобынумера�циятеоремначиналасьзанововкаждойсекции.Тогдаможнонаписатьвпреамбулетак:

\newtheorem{theorem}{tEOREMA}[section]

После этого можно будет писать, например, вот что:

\begin{theorem}

sUMMA UGLOW TREUGOLXNIKAТеорема4.1.СуммаугловRAWNA $180^{\circ}$.

треугольникаравна180◦.

\end{theorem}

Обратитевнимание,что,если«теорема»определенатакимобразом(сосчетчиком,подчинен�нымдругомусчетчику),топредставлениеееномеранапечатиизменяется:приопределении

\newtheorem{xyz}[abcd]

(счетчик«теоремы»типаxyzподчиненсчетчикуabcd)команда\thexyzбудетопределенакак

\theabcd.\arabic{xyz}

(еслиВыхотите,чтобынумерация«теоремы»представляласьнапечатииначе,Выопять-та�киможетепереопределитьthe-команду).

Наконец, LATEXпредоставляетещеоднувозможностьнумерацииопределяемыхВами«теорем».Предположим,что,крометеорем,вВашемтекстеестьещеилеммы,иприэтомВыхотите,чтобылеммыитеоремынумеровалисьсовместно:теорема2.1,теорема2.2,затемлемма2.3,затемтеорема2.4,ит.д.Тогда,предполагая,чтоокружениеtheoremужеопреде�лено,каквыше,можноопределитьокружениеlemmaтак:

\newtheorem[theorem]{lemma}{lEMMA}

Вэтомслучаенеобязательныйаргументкоманды\newtheoremрасполагаетсяпередобяза�тельными;этотаргумент—имятогоокружениятипа«теорема»,совместноскоторымбудетнумероватьсяопределяемаяВами«теорема».

В заключение остается отметить, что команду \newtheorem можно использовать или с одним необязательным аргументом, или с другим, но не с обоими вместе.

Глава VIII.


Блоки

1. Текст состоит из блоков

Мы уже отмечали, что в процессе верстки TEX не принимает во внимание, как буквы будут выглядеть на печати, а лишь учитывает, сколько места надо отвести на каждый символ. Да� вайте обсудим этот процесс подробнее.

С точки зрения TEXа,каждаябуквапредставляетсобойблок(английскийтермин:box),тоестьпрямоугольниксвыделеннойточкойотсчета;горизонтальнаяпрямая,проходя�щаячерезточкуотсчета,называетсябазиснойлинией(английскийтермин:baseline).Блокхарактеризуетсятремяразмерами:шириной,высотойиглубиной.См.рисунок,накоторомтакжеизображенблок,соответствующийбуквеу.

высота
глубина





� �

� � � точка

отсчета базисная линия




��










��







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

= Крокодил





Страницы — это тоже блоки. Когда они составляются из блоков, соответствующих строкам, то эти блоки ставятся таким образом, чтобы точки отсчета были одна над другой, после че� го в качестве точки отсчета и базисной линии полученного блока берутся точка отсчета и базисная линия последнего из добавляемых блоков:

Когда, наконец, из строк составля�



Когда,наконец,изстроксоставля�ширина

ются страницы, то TEX составляет

их из блоков, соответствующих стро�

= ются страницы, то TEX составляет





их из блоков, соответствующих стро�





160

VIII.2. LATEXОВСКИЕКОМАНДЫДЛЯГЕНЕРАЦИИБЛОКОВ

Подведем итоги. При верстке текста TEX работает с блоками. Каждая буква также рас� сматривается как блок, но блоки могут состоять и из б ´

ольших фрагментов текста. В приве� денных выше примерах мы сталкивались с блоками, которые TEX делает автоматически; в настоящей главе пойдет речь о командах, предназначенных для создания блоков вручную. Сначала мы расскажем, какие средства для этого предоставляет нам LATEX, а затем рассмо� трим TEXовскиекоманды,имеющиебольшевозможностей,ноболеесложные.

2. LATEXовскиекомандыдлягенерацииблоков

2.1. Блокиизстроки´

С одной командой для генерации блоков мы уже знакомы: это команда \mbox. Эта коман� да создает блок из текста, набираемого в одну строку. Полученный блок рассматривается TEXомкакоднабольшаябуква:

pROKAZNICAMARTY[KA,

Проказница мартышка, \mbox{OSEL,KOZEL}Iосел, козел и косолапый KOSOLAPYJMI[KA\ldotsмишка...


Вэтомпримере,кстати, TEXникогданеразорветстрокумеждусловами«осел»и«козел»,-иникогданесделаетпереносоввэтихсловах:приверсткеабзацаTEX имеет дело не с этими словами по отдельности, а только с блоком, в который входят они оба вместе с пробелом между ними. По той же причине TEXнесможетрастянутьилисжатьпробелмеждуслова�ми«осел»и«козел»длявыравниваниястроквабзаце.

Теперь, когда мы знаем, что такое TEXовскиеблоки,можнопризнаться,чтоокруже�нияpicture,arrayиtabularтожегенерируютблоки,иименнопоэтомусоздаваемыйимитекствоспринимаетсяTEXомкакоднабольшаябуква.

Варгументекоманды\mboxможетприсутствоватьвсетоже,чтоможетбытьвобычномтекстевпределаходнойстроки:математическиеформулы,командысменышрифтаилипри�сваиваниязначенийкаким-топараметрам,командыдлягенерацииблоков(например,тотже\mbox,илидажеокруженияpictureилиarray),ит.д.Запрещенываргументекоман�ды\mboxпустыестрокииликоманды\par,выключныематематическиеформулы,окруже�ния,определяющиеабзацыспециальноговида(наподобиеitemizeилиcenter),команда\\итомуподобныевещи,«невписывающиесявстроку».Есливаргументе\mboxприсутству�юткомандысменышрифта,изменениякаких-топараметровилиопределениякоманд,топовыходеизблокавсеэтиизменениязабываются,посколькуфигурныескобки,ограничива�ющиеаргументкоманды\mbox,ограничиваюттакжеигруппу(«глобальные»командывро�де\setcounterсохраняютсвоедействиеиповыходеизблока).

Блок,создаваемыйкомандой\mbox,имеетширину,равную«естественной»длинестрокитекста,являющегосяегоаргументом.Можнотакжесоздатьблокизстрокитекста,шири�накоторогоотличнаотееестественнойдлины.Дляэтогоиспользуетсякоманда\makebox.Этакомандаимеетодинобязательныйаргумент,имеющийтакойжесмысл,какаргументкоманды\mbox,и,крометого,необязательныйаргумент—ширинублока,порождаемогокомандой:

tUDA\makebox[5em]{I}OBRATNO.

Туда и обратно.

VIII.2. LATEXОВСКИЕКОМАНДЫДЛЯГЕНЕРАЦИИБЛОКОВ

Как видите, необязательный аргумент ставится перед обязательным; длина в нем может быть указана, как обычно, либо в какой-либо из TEXовскихединиц,либочерезкакой�-либопараметрсозначениемдлины,возможно—счисловымкоэффициентом(см.раз�делVII.3).Самтекст,являющийсяобязательнымаргументомкоманды\makebox,разме�щаетсяпоцентрувблокеширины,указаннойвнеобязательномаргументе.Еслиуказатьвнеобязательномаргументекоманды\makeboxширину,меньшуюестественнойдлиныстро�ки,тотекстбудетвылезатьзакраяблока;посколькуместо,отводимоеTEXомблокуприверстке,определяетсятолькотем,каковыширина,высотаиглубинаблока,анетем,какиеразмерыреальноимееттекст,содержащийсявблоке,приэтомможетвозникатьналоже�ниеодноготекстанадругой.Например,размерыиточкаотсчетаблока,создаваемогоко�мандой\makebox[1.5em]{123456},выглядят,сточкизренияTEXа,так(дляясностимыиспользоваливэтомпримерекрупныйшрифт):

123456



Авоткактакой«выпирающийзакрая»блоквзаимодействуетсокружающимтекстом:

TEKST\makebox[1.5em]{123456}TEKST

тексттекст

123456

Можно также создать блок заданной ширины, в котором текст будет не центрирован, а прижат к правому или левому краю. Для этого в команде \makebox предусмотрен второй необязательный аргумент — буква l для текста, прижатого влево или r для текста, прижа� того вправо (можно также указать аргумент c — тогда текст будет центрирован, так же, как если бы второго необязательного аргумента не было). Пример:

текст \parindent=0pt екст \makebox[10em][r]{TEKST}\\кст \makebox[10em][r]{EKST}\\текст \makebox[10em][r]{KST}\\текст \makebox[10em][c]{TEKST}\\\makebox[10em][l]{TEKST}\\

Мы установили нулевое значение абзацного отступа, чтобы все строки, включая первую, на� чинались с самого начала. Кстати, обратите внимание, что у нас получилась верстка с вырав� ниванием без помощи таких вещей, как tabbing или tabular .

У команды \makebox значение ширины блока можно установить равным нулю. Если при этом присутствует необязательный аргумент l, то получится блок нулевой ширины, а текст будет выходить за его пределы вправо (и, стало быть, наложится на последующий текст в строке, если таковой присутствует); если присутствует необязательный аргумент r, то текст будет выходить влево за пределы блока (и тем самым накладываться на предшествующий текст):

TEKST\makebox[0pt][l]{???}TEKST\\

текст???

текст TEKST\makebox[0pt][r]{???}TEKST

текст

???текст

VIII.2. LATEXОВСКИЕКОМАНДЫДЛЯГЕНЕРАЦИИБЛОКОВ

2.2. Блоки из абзацев

Если необходимо создать блок, в котором размещается сверстанный TEXомабзацтекста,томожновоспользоватьсякомандой\parbox.Уэтойкомандыдваобязательныхаргумента:первый—длинастроквполучаемомабзаце,второй—собственнотекст.Например,такойтекст

вставили целый абзац

текста, сверстанного В строку по всем TEXовскимпрерваннаястрока.

правилам. После это�

го продолжается

получился следующим образом:

wSTROKU\qquad\parbox{4cm}{WSTAWILICELYJABZACTEKSTA,SWERSTANNOGOPOWSEM\TeXOWSKIMPRAWILAM.pOSLE“TOGOPRODOLVAETSQ}\qquadPRERWANNAQSTROKA.

Как видите, базисная линия блока, создаваемого командой \parbox, находится в точности посредине текста. По этой причине команду \parbox удобно использовать для включения больших фрагментов текста в математические формулы. Например, формула

длявсехфункцийf,

� b производная которых

f�(x)dx=f(b)−f(a)интегрируемапоРи�

a

ману. получается из такого исходного текста:

$$

\int_a^b f’(x)\,dx=f(b)-f(a)\qquad

\parbox{4cm}{DLQWSEHFUNKCIJ$f$,

^ PROIZWODNAQ KOTORYH INTEGRIRUEMA

POrIMANU.}$$

Если дать команду \parbox с необязательным аргументом, то создаваемый ею блок мож� но расположить относительно строки и по-иному: чтобы вровень с остальной строкой шла самая верхняя строка абзаца (для этого нужен аргумент t) или самая нижняя (аргумент b) (можно также указать аргумент c — тогда блок будет расположен по центру, так же, как ес� либынеобязательногоаргументавообщенебыло.Необязательныйаргументуэтойкоманды должен идти перед обязательными.

Во втором обязательном аргументе команды \parbox, задающем текст, может присут� ствовать вс ¨

е то же, что в обычном тексте, в том числе команды для пробелов по вертика� ли наподобие \vspace, пустые строки, разделяющие абзацы, выключные формулы и т. п. Абзацы, создаваемые командой \parbox, по умолчанию делаются без абзацного отступа и в режиме \sloppy. Если Вы хотите чего-то другого, можно прямо внутри аргумента ко� манды \parbox установить нужное Вам значение абзацного отступа, параметра \tolerance и т. п. (см. раздел III.6 по поводу смысла этих параметров).

VIII.2. LATEXОВСКИЕКОМАНДЫДЛЯГЕНЕРАЦИИБЛОКОВ

Нарядус\parbox,существуетещеодин,довольноэкзотический,способсоздатьблокизабзацев.Именно,существуетокружениеminipage(«министраница»),генерирующееблокизтекста,распо�ложенноговнутриэтогоокружения;блоксостоитизабзацев,ширинакоторыхзадаетсявобязатель�номаргументеокруженияminipage(также,каквкоманде\parbox);передобязательнымаргумен�томэтогоокруженияможетстоятьнеобязательный:букваt,bилиc,причемсмыслэтогоаргументаопять-такитакойже,каквкоманде\parbox.Основноеотличиеminipageот\parboxвтом,чтоктек�стувнутриэтогоокруженияможноделатьсноскиспомощьюкоманды\footnote,причемтекстснос�кипоявляетсяневнизустраницы,авнизублока,генерируемогоокружениемminipage.Приверсткекниги,которуюВычитаете,этоокружениеиспользовалосьдляпечатипримеров;придуматьразумноеприменениеэтойэкзотическойконструкциивнеучебныхпособийпоLATEXу автору не удалось.

2.3. Текст в рамке; комбинации блоков

В главе III мыужеупоминалипрокоманду\fbox,берущуюврамкуфрагменттекста,по�мещающегосявстроку.Нарядуснейестьикоманда\framebox,относящаясякнейтакже,как\makeboxотноситсяк\mbox:онабереттекстврамкузаданногоразмера,причемтекствнутриэтойрамкилибоцентрирует(еслинеобязательногоаргументанетилижезаданнеобязательныйаргументc),либоприжимаеткправомуилилевомукраюрамки(еслизаданнеобязательныйаргументrилиlсоответственно).Смыслирасположениеобязательныхинеобязательнаргументовукоманды\frameboxтакойже,какиуыхкоманды\makebox.

Точнее говоря, первый обязательный аргумент команды \framebox задает не ширину рамки, а ширину текста, помещаемого в эту рамку. Сама же рамка отделена от текста пробелом, равным значе� нию параметра \fboxsep; толщина линий в рамке равна значению параметра \fboxrule. Обоим этим параметрам можно обычным образом присваивать новые значения (см. раздел VII.3).

Кольскорокаждыйблок,создаваемый LATEXовскимикомандами,рассматриваетсяTEXомпростокакбольшаябуква,возможнылюбые,скольугоднопричудливые,комбинациитаких«букв».Пусть,например,намнадовзятьврамкуабзацтексташириной6см,чтобыполучи�лосьтак:

Внутри TEXовскихблоковмо�жетприсутствоватьнетолькособственнотекстилиформулы,ноидругиеблоки,внутриэтихблоков—ещеблоки,итакда�лее.Такимобразом,блокимогутбытьвложеныдругвдруга,какматрешки.

Простопоместитьэтоттекстваргументкоманды\fboxнеполучится,посколькунаштекстводнустрокунеукладывается,акоманда\fbox,подобнокоманде\mbox,текстов,неукла�дывающихсявстроку,непереваривает.Поэтомунужносделатьизнашегоабзацаблокспомощьюкоманды\parboxиэтотблок(тоестьуже«букву»)передатьвкачествеаргументакоманде\fbox:

\fbox{%\parbox{6cm}{%wNUTRI\TeX{}OWSKIHBLOKOWMOVET......DRUGWDRUGA,KAKMATRE[KI.}%}

VIII.2. LATEXОВСКИЕКОМАНДЫДЛЯГЕНЕРАЦИИБЛОКОВ

Обратите внимание на знаки процента, которыми заканчиваются первая и предпоследняя строка. Если бы их не было, то рамка отстояла бы от текста больше, чем надо, так как TEXрешилбы,чтоаргументкоманды\fboxимеетпробелдоипосле«буквы»,созданнойкоман�дой\parbox.См.стр.11 по поводу использования знака процента для удаления нежелатель� ных пробелов.

2.4. Сдвиги относительно базисной линии

Когда при исполнении команды \makebox или \mbox TEXсоздаетблокизменьшихблоков(каждаябуква,какмыпомним,—этоблок,избуквсоставляютсяслова—тожеблоки,и,наконец,блокимогутбытьзаданывявномвиде,вчастности,командой\mbox),тобло�киэтиразмещаютсявстрокетакимобразом,чтовсеихточкиотсчетарасположенынаод�нойвысоте(инымисловами,ихбазисныелиниипродолжаютоднадругую).Можно,однако,сдвинутьблокповертикалиотносительнобазиснойлинии.Дляэтогоудобновоспользовать�сяLATEXовскойкомандой\raisebox.Этакомандатребуетдвухобязательныхаргументов.Первыйизних—расстояние,накотороесдвигаетсяповертикалифрагменттекста,второй

— сам этот фрагмент текста. Пример:

Слово подскочило в строке. sLOWO\raisebox{2pt}{PODSKOˆILO}WSTROKE.

Текст, расположенный во втором обязательном аргументе этой команды, должен удовлетво� рять тем же требованиям, что и аргумент команды \mbox: в нем могут быть самые разные TEXовскиекоманды,приусловии,чтосрединихнебудеткомандтипапустойстроки,\par,\\итомуподобных,которые«нелезутвстроку»(затовэтомтексте,какводится,могутприсутствоватьлюбыекоманды,порождающиеблоки,вчастности,например,\parbox,аужвееаргументеоставляйтепустыхстрок,сколькодушеугодно).Еслипервыйобязательныйаргументкоманды\raiseboxотрицателен,тотекстбудет,естественно,неподнят,аопущен.Вот,например,какможноопределитькоманду\TeX,печатающуюэмблемуTEXа:

\newcommand{\TeX}{T\nolinebreak\hspace{-.1667em}\raisebox {-.5ex}{E}\nolinebreak\hspace{-.125em}X}

Тут же мы видим и примеры использования отрицательных промежутков для того, чтобы буквы сблизились. Отметим, что команды \nolinebreak использованы, чтобы не случилось разрыва строки посередине эмблемы.

На самом деле команда \TeX определяется более экономным способом, который требует меньше машинного времени и памяти, но использует не рассматриваемые нами средства TEXа.Времяотвре�менимыбудемприводитьопределениякоманд«впереводесTEXанаLATEX»,ввиде,болеепонятномчитателямэтойкниги.

Кроме вертикального сдвига блоков, команда \raisebox может делать еще одно полез� ное дело: с ее помощью можно обмануть TEX, заставив его считать, что блок, полученный после сдвига, имеет любую заданную нами высоту и глубину, независимо от того, сколько места реально занимает текст. Именно, эта команда может принимать, наряду с обязатель� ными,необязательныеаргументы.Междудвумяобязательнымиаргументамиможноуказать необязательный аргумент — высоту, которую, по мнению TEXа,должениметьсдвинутыйблок.Крометого,послепервогонеобязательногоаргументаможетстоятьвторой—глуби�на,которую,помнениюTEXа,будетиметьсдвинутыйблок.Вотпример:

VIII.3. КОМАНДА \hbox

sTROˆKA.\\

Строчка.

Ы wTORAQВторая

\raisebox{7pt}[1pt][10pt]{y}\\Третьястрочка.tRETXQSTROˆKA.

Буква Ы, поднятая на 7 пунктов над строчкой, наложилась на первую строку, поскольку в первом необязательном аргументе команды \raisebox мы приказали TEXу считать, что блок, образованный поднятой буквой Ы, имеет высоту всего лишь один пункт (стало быть, возвышаетсянадбазиснойлиниейвторойстрочкименьше,чемлюбаябуква),исоответствен� но TEX не сделал дополнительного интервала между первой и второй строками. С другой стороны, третья строка отъехала от второй, поскольку во втором необязательном аргументе команды \raisebox мы велели TEXу считать, что глубина блока, образованного поднятой буквой Ы, равна аж десяти пунктам, и TEX послушно оставил дополнительное место, чтобы этот блок не наложился на третью строчку!

Иногда разумно использовать команду \raisebox даже с нулевым обязательным аргу� ментом, только для того, чтобы менять (в глазах TEXа)высотуи/илиглубинублока,несдви�гаяегоотносительнобазовойлинии.ВглавеIX мы увидим пример такого использования этой команды.

3. Команда \hbox

Возможности, предоставляемые LATEXомдлягенерацииблоков,достаточныдляпростыхприложений,новболеесерьезныхслучаяхихнехватает.Вэтомиследующемразделахмырассмотримболеегибкиесредства,предоставляемыедляэтойцелинепосредственноязыкомTEX и макропакетом Plain TEX. Мы не будем пытаться описать все TEXовскиекомандыдлягенерацииблоков(книгу[2] ничто заменить не может), но сообщим тот необходимый мини� мум сведений, который необходим для модификации LATEXовскихстандартныхстилей,очемпойдетречьвследующейглаве.Подчеркнем,чтовсемиописываемымивэтомиследующемразделахTEXовскимисредствамиможнопользоватьсявLATEXовскихисходныхтекстах.

Прежде всего давайте вспомним (стр. 78), что в каждый момент трансляции исходного текста TEX находится в одном из трех следующих режимов: горизонтальном (в процессе верстки абзаца), вертикальном (между абзацами), или математическом (в процессе набо� ра математической формулы); при появлении первой же буквы или LATEXовскойкомандыдлягенерацииблокаилилинейки(ктаковымотносятся\mbox,\makebox,\fbox,\framebox,окруженияarrayилиpicture,атакжекоманда\rule1) TEX из вертикального режима вы� ходит и начинает очередной абзац.

Одна из основных TEXовскихкоманддлягенерацииблоковназывается\hbox.ВсвоемпростейшемвидеонаполностьюаналогичнаLATEXовскойкоманде\mbox,соднимважнымотличием:ввертикальномрежимекоманда\hboxненачинаетновогоабзаца,атолькодо�бавляетсгенерированныйеюблок(тоестьфактическистрочку)кужесверстаннойчастистраницы.Внутриабзаца(по-ученому:вгоризонтальномрежиме)команда\hboxдействуетточнотакже,каки\mbox.Вотпример:

1Но не \hrule или \vrule: это команды TEXовские,анеLATEXовские.

VIII.3. КОМАНДА \hbox

167

nASTRANICE\hbox{UVE}На странице уже присутствует PRISUTSTWUET ABZAC TEKSTA.

абзац текста. После того, как он ^ pOSLE TOGO, KAK ON кончится, TEX перейдет в верти� KONˆITSQ, \TeX{} PEREJDET W кальный режим.

WERTIKALXNYJ REVIM.

Строчка
Еще строчка


\hbox{sTROˆKA}\hbox{e]ESTROˆKA}tOLXKOТолько теперь начинается но� TEPERX NAˆINAETSQ NOWYJ ABZAC.

вый абзац.

Сравните с тем, что было бы при использовании LATEXовскойкоманды\mboxвместо\hbox:

^ nA STRANICE UVE PRISUTSTWUET

На странице уже присутствует ABZAC TEKSTA. pOSLE TOGO, KAK ON

абзац текста. После того, как он KONˆITSQ, \TeX{} PEREJDET W

кончится, TEX перейдет в верти� ^ WERTIKALXNYJ REVIM.

кальный режим.

Эти слова сразу начинают но� \mbox{—TISLOWA}SRAZUNAˆINA@Tвый абзац.

NOWYJ ABZAC.

3.1. Растяжимые интервалы

До сих пор шла речь о важных, но непринципиальных отличиях между TEXовским\hbox’омиLATEXовским\mbox’ом.Теперьпоговоримодополнительныхвозможностях,предоставляе�мыхTEXовскойкомандой.

Команда \hbox «в чистом виде» создает блок, ширина которого равна естественной длине текста, являющегося ее аргументом. Кроме этого, она может создавать блоки, любой задан� ной ширины. Для этого нужно сказать

\hbox to

ris-14-nezavisimaya-rabota-dvuh-zvonkov-s-dvuhprovodnim-podsoedineniem-elektronika-v-nashem-dome-odon.html
ris-14-turisticheskie-marshruti-i-osnovnie-elementi-infrastrukturi-turizma-po-bikinu.html
ris-15-strukturnaya-shema-obekta-i-tehnicheskih-ustrojstv-udk-621-317528-08-informacionno-izmeritelnaya-i.html
ris-16-principialnaya-shema-razvitiya-otrazhennoj-gipogennoj-zonalnosti-rossipej-3.html
ris-17-eto-segodnya-takzhe-verno-kak-i-v-proshlom-veke-itogi-poslednij-primer-kak-viyavit-prinimayushego-resheniya.html
ris-17-vneshnij-vid-mgv-1s-v-kronshtejne-kp-9-posobie-k-laboratornim-rabotam-issledovanie-harakteristik-malogabaritnoj.html
  • klass.bystrickaya.ru/aleksandr-ii-vstupil-na-prestol-v-1855-g-posle-smerti-svoego-otca-nikolaya-i-eshe-buduchi-prestolonaslednikom-cesarevich-aleksandr-nikolaevich-pervim-iz-doma-rom.html
  • reading.bystrickaya.ru/kompleks-po-discipline-psihologiya-i-pedagogika-korolev-2011.html
  • obrazovanie.bystrickaya.ru/prikaz-ot-09-2010-g-rabochaya-programma-uchebnogo-predmeta-uchebnogo-kursa-uchebnoj-disciplini-uchebnogo-modulya-mou-gimnaziya-stranica-3.html
  • thesis.bystrickaya.ru/povishenie-effektivnosti-processa-proizvodstvennogo-obucheniya-putem-ispolzovaniya-lichnostno-orientirovannogo-podhoda-opisan-po-rezultatam-raboti-v-vyazovskoj-srednej-obsheobrazovatelnoj-shkole.html
  • education.bystrickaya.ru/2-klass-programma-doroga-i-deti-izucheniya-pravil-dorozhnogo-dvizheniya-dlya-1-9-klassov-mou-starogolchihinskaya-osnovnaya-shkola.html
  • lesson.bystrickaya.ru/raschet-tehniko-ekonomicheskih-pokazatelej-deyatelnosti-stroitelnoj-organizacii.html
  • institute.bystrickaya.ru/glava-11-rouz-s-r79-ustrojstvo-pamyati-ot-molekul-k-soznaniyu-per-s-angl.html
  • znaniya.bystrickaya.ru/razdel-vii-psihoanaliz-vospitanie-obrazovanie-moskva-zam-glavnogo-tehnologa-moskva-hudozhnik-korrektori-verstka.html
  • ucheba.bystrickaya.ru/pregovori-za-prisedinyavane-na-blgariya-i-rumniya-km-evropejskiya-syuz-mart-2005-g.html
  • prepodavatel.bystrickaya.ru/tajni-monetnogo-dvora.html
  • write.bystrickaya.ru/glava-7-ruini-drevnih-hramov-80-krasnaya-kniga.html
  • testyi.bystrickaya.ru/4-slushat-i-slishat-rozhdenieslova-s-v-gippius-trening-razvitiya-kreativnosti-gimnastika-chuvstv-spb-izdatelstvo.html
  • upbringing.bystrickaya.ru/konkursa-issledovatelskih-i-tvorcheskih-rabot-molodezhi.html
  • kolledzh.bystrickaya.ru/546-diplomnie-raboti-po-metodike-2003-2004-uch-god-karelskij-gosudarstvennij-pedagogicheskij-universitet.html
  • crib.bystrickaya.ru/kniga-pervaya-stranica-21.html
  • holiday.bystrickaya.ru/n-a-a-gusej-nov-moskva-if-ran-2004.html
  • crib.bystrickaya.ru/kasha-fitnes-i-specnaz-rossijskaya-blagotvoritelnost-v-zerkale-smi.html
  • upbringing.bystrickaya.ru/kursovaya-rabota-po-discipline-ekonomicheskaya-teoriya-na-temu-gosudarstvennoe-regulirovanie-ekonomicheskih-processov-ego-formi-i-metodi.html
  • write.bystrickaya.ru/glava-55-icebookreaderprofessionalheaderstart.html
  • laboratornaya.bystrickaya.ru/programma-zdorovoe-pitanie-zalog-uspeshnogo-obucheniya-i-krepkogo-zdorovya-shkolnikov-municipalnogo-obrazovatelnogo-uchrezhdeniya.html
  • school.bystrickaya.ru/instituti-gosudarstvennoj-vlasti-v-rossii.html
  • lektsiya.bystrickaya.ru/predlagaem-vashemu-vnimaniyu-otveti-na-samie-rasprostranennie-voprosi-kasayushiesya-provedeniya-itogovoj-attestacii-oni-predstavleni-po-razdelam-spisok-kotorih-vi-vidite-nizhe.html
  • school.bystrickaya.ru/analiz-vidov-ponyatij-i-predlozheniya-po-ih-ispolzovaniyu-v-praktike-logicheskogo-obobsheniya-vivodov.html
  • school.bystrickaya.ru/kniga-vtoraya-kniga-pervaya-vneshnee-povestvovanie-3.html
  • laboratory.bystrickaya.ru/v-shkole-internate-s-uska-orochi-spravk-a.html
  • textbook.bystrickaya.ru/istoki-nacionalnih-repressij-v-sssr-nasilstvennoj-totalnoj-repressivnoj-deportacii-bili-podvergnuti.html
  • turn.bystrickaya.ru/ot-zakazchika-ot-ispolnitelya-proektno-iziskatelskie-raboti-po-remontu-iskusstvennih-sooruzhenij-na-avtomobilnih.html
  • tests.bystrickaya.ru/lingvistika-chast-5.html
  • urok.bystrickaya.ru/programma-disciplini-institucionalnaya-ekonomika-dlya-napravleniya-080500-62-menedzhment.html
  • literatura.bystrickaya.ru/reshenie-o-prazdnovanii-bilo-prinyato-v-1910-godu-na-ii-mezhdunarodnoj.html
  • tests.bystrickaya.ru/metodicheskie-rekomendacii-po-gosudarstvennoj-attestacii-vipusknikov-po-specialnosti-teoriya-i-metodika-prepodavaniya-inostrannyah-yazikov-i-kultur.html
  • ucheba.bystrickaya.ru/proektnie-menedzheri-fakultetov-i-institutov-niu-itmo.html
  • predmet.bystrickaya.ru/roman-borisovich-moe-pozhertvovanie-v-fond-navalnogo-eto-lichnaya-blagotvoritelnost.html
  • testyi.bystrickaya.ru/antropogennoe-vozdejstvie-na-biosferu.html
  • testyi.bystrickaya.ru/atiso.html
  • © bystrickaya.ru
    Мобильный рефератник - для мобильных людей.