Tex: подробное описание С. М. Львовский


 Параметры со значением длины


Download 1.51 Mb.
Pdf ko'rish
bet105/143
Sana08.05.2023
Hajmi1.51 Mb.
#1444247
1   ...   101   102   103   104   105   106   107   108   ...   143
Bog'liq
LaTeX-Lvovsky

3. Параметры со значением длины
Наряду с со счетчиками
— переменными с целочисленными значениями, при создании соб
ственных макроопределений возникает нужда и в переменных, значениями которых являют

ся длины. Например, в предыдущем разделе мы, разрабатывая команду \RAZDEL, в явном
виде задали промежуток между заголовком раздела и остальным текстом. Если этот про

межуток нам почему-либо захочется изменить, то придется снова залезать в определение
команды \RAZDEL. Было бы удобнее, если бы в наше м распоряжении был параметр под на
званием, скажем, \OTSTUP, так что можно было бы в определении команды \RAZDEL написать


VII.3. ПАРАМЕТРЫ СО ЗНАЧЕНИЕМ ДЛИНЫ
154
\vspace{\OTSTUP}
и потом отдельно написать, допустим,
\OTSTUP=2mm
(или присвоить параметру \OTSTUP другое значение). Правда, в богатом наборе TEXовских
и L
A
TEXовских параметров требуемого нам параметра \OTSTUP нет. Но это не страшно, по
скольку его можно создать. Для этого используется команда \newlength:
\newlength{\OTSTUP}
После того, как Вы, допустим, в преамбуле, дали эту команду, будет определен новый па

раметр со значением длины; его можно будет обычным образом использовать в аргументах
команд наподобие \vspace и ему можно будет обычным образом присваивать значения.
Теперь
— точные правила. Команда \newlength имеет один обязательный аргумент —
имя команды, обозначающей определяемый Вами параметр. Это имя должно подчиняться
обычным правилам для TEXовских команд (backslash, после которого следует либо одна не
буква, либо последовательность букв). Если это имя уже занято, L
A
TEX выдаст сообщение
об ошибке. Определение нового параметра, совершаемое командой \newlength, является
«глобальным»: даже если эта команда была дана внутри группы, TEX будет помнить о суще
ствовании этого параметра и по выходе из группы. По этой, в частности, причине разумное
место для команды \newlength
— преамбула.
Определенный нами параметр со значением длины приобретает такой же статус, как уже
существующие TEXовские и L
A
TEXовские параметры, такие, как \parindent, \textwidth,
и т. п. Рассмотрим, что можно делать с этими параметрами.
Во-первых, параметрам со значением длины можно присваивать значения. Делается это
точно так же, как это объяснялось в разделе I.2.6 на примере параметра \parindent: для
присваивания значения надо написать имя параметра, знак равенства, и после знака равен

ства
— величину присваиваемой длины. Пробелы после указания единицы длины TEXом
игнорируются (скорее всего, Вы будете присваивать значения параметрам в преамбуле до

кумента или между абзацами, где лишние пробелы никого не волнуют). Длина должна быть
выражена в единицах, воспринимаемых TEXом (см. их список в разделе I.2.10). Даже если
Вы присваиваете нулевую длину, какая-то единица длины должна быть явно указана (напри

мер, 0pt). Кроме того, можно воспользоваться L
A
TEXовской командой \setlength, имеющей
два обязательных аргумента: первый
— имя параметра, второй — значение длины, присваи
ваемое этому параметру. Таким образом, команды
\parindent=1.5em
и
\setlength{\parindent}{1.5em}
равносильны. Наконец, отметим, что, как мы уже неоднократно отмечали, присваивания, сде

ланные внутри группы, забываются по выходе из этой группы.
В предыдущем абзаце мы немного слукавили, умолчав об одной возможной неприятности. Дело
в том, что, если после команды присваивания, не использующей \setlength, следует (пусть даже
после пробела) слово plus или minus, то TEX, скорее всего, выдаст Вам сообщение об ошибке, по
скольку решит, что длина должна иметь, помимо
«естественного размера», еще и plus- или minus-
компоненту (см. стр.
80
; ниже мы поговорим подробнее о такой возможности). Если Вы пишете текст


VII.3. ПАРАМЕТРЫ СО ЗНАЧЕНИЕМ ДЛИНЫ
155
на русском языке, вероятность такого стечения обстоятельств ничтожна. Тем не менее, забывать о та

кой опасности не следует, и особенно если команда присваивания входит в макроопределение: Вы же
не знаете заранее, в какое место вставите свой макрос. Чтобы застраховаться от этой неприятности
раз и навсегда, пользуйтесь \setlength, хоть при этом и придется нажать на большее число клавиш.
Ср. также обсуждение команд \hrule и \vrule в разделе III.9.
Параметры со значением длины можно использовать всюду, где в аргументе L
A
TEXовской
команды требуется указать размер. Пусть, например, в преамбуле документа написано
\newlength{\PRIMER}
Тогда посмотрите на следующий пример:
9
9
8
8
9
9
\PRIMER=10mm
9\hspace{\PRIMER}9
{\PRIMER=20mm
8\hspace{\PRIMER}8}
9\hspace{\PRIMER}9
Обратите внимание, что, если присвоение параметру нового значения происходило внутри
группы, то по выходе из группы новое значение забывается, а прежнее
— восстанавливается.
Параметры со значением длины можно указывать с коэффициентом
— положительной
или отрицательной десятичной дробью (можно использовать как десятичную точку, так и
десятичную запятую). Например, если значение параметра \PRIMER равно 10 мм, то коман
да \hspace{2.71\PRIMER} сделает пробел длиной 27,1 мм.
Можно также прибавлять длину к значению параметра: если значение параметра \abcd
равно x, то после выполнения команды
\addtolength{\abcd}{y}
где y
— длина, значение параметра \abcd станет равно x + y. В качестве y в этой команде
может использоваться как явно указанная длина (например, 1.2in), так и параметр со зна

чением длины (возможно, с числовым коэффициентом). Наконец, L
A
TEX предоставляет еще
полезную команду
\settowidth{параметр}{текст}
которая присваивает параметру параметр значение, равное ширине текста. Вот пример:
слово
слово
слово
\settowidth{\PRIMER}{\Large SLOWO }
{\Large SLOWO }SLOWO
\hspace{\PRIMER}SLOWO
В разделе III.7.3 у нас шла речь о том, что некоторые используемые в TEXе дл ´ины могут
обладать растяжимостью или сжимаемостью. Параметрам, созданным с помощью коман

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


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

Download 1.51 Mb.

Do'stlaringiz bilan baham:
1   ...   101   102   103   104   105   106   107   108   ...   143




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling