Работа в системе LaTeX



         

Бесконечно сжимаемые интервалы - часть 2


\hbox to 0pt{\hss текст}

и все будет в порядке. В самом деле, \текст имеет ширину, отличную от нуля; чтобы блок имел в итоге нулевую ширину, приходится "уменьшать" тот интервал, где стоит \hss; так как интервал уже нулевой, то это уменьшение сводится к тому, что текст сдвигается влево до тех пор, пока расстояние между его концом и точкой отсчета не станет равным нулю - а это и означает, что правый конец текста стал его точкой отсчета. В лекции 5 мы сказали, что эта проблема решается с помощью TeX'овской команды \llap, а теперь мы видим, как ее можно определить:

\newcommand{\llap}[1]{\hbox to 0pt{\hss #1}}

Кстати говоря, именно так она и определяется.

А если сказать

\hbox to 0pt{текст \hss}

то что, спрашивается, будет? Ответ: на сей раз будет уменьшаться интервал после текста; стало быть, сам текст никуда не сдвинется, но после него будет сделан такой "отрицательный пробел", чтобы суммарная ширина равнялась нулю. Иными словами, TeX будет просто считать, что ширина блока равняется нулю - мы обманули TeX, убедив его, что наш текст не занимает места по горизонтали! Для такого обмана (к нему приходится прибегать нередко) предусмотрена специальная TeX'овская команда \rlap, определяемая так:

\newcommand{\rlap}[1]{\hbox to 0pt{#1\hss}}

Все это также напоминает ситуацию с командой \lefteqn — и напоминает не случайно, поскольку эта команда определяется фактически так:

\newcommand{\lefteqn}[1]{\rlap{$\displaystyle #1$\hss}}


Содержание  Назад  Вперед