Еще раз о линейках
В аргументе команды \hbox может присутствовать и TeX'овская команда \vrule. Ее ценность в том, что она автоматически создает линейку, высота и глубина которой равна высоте и глубине объемлющего блока (ширина этой линейки будет по умолчанию равна
![](../../../../img/tex/0/f/1/0f14ed036dc6e1a2105864ad6f4e31da.png)
![](../../../../img/tex/8/6/5/86520523928d660e3c7e372979eea005.png)
Предыдущий абзац в исходном тексте выглядел так:
\begin{flushleft} \hbox{% \vrule\hspace{.5em}\parbox{.9\textwidth}% {Иногда используется следующий способ выделения текста: абзац набирается с некоторым отступом от левого поля, а слева от него, вровень с левым полем, печатается вертикальная линейка.}} \end{flushleft}Этот текст нуждается в некоторых пояснениях. Во-первых, в последней строке первая из фигурных скобок закрывает аргумент команды \parbox, а вторая - \hbox. Во-вторых, мы воспользовались окружением \flushleft, чтобы LaTeX сам позаботился о разумных отступах до и после абзаца. Параметр \textwidth означает, как мы помним, ширину страницы. Теперь рассмотрим, что присутствует внутри \hbox. Сначала там идет линейка, затем отступ на
![](../../../../img/tex/4/7/8/47858fa776be1dd88045e346ef58cfa9.png)
Обратите еще внимание на знак процента после \hbox — без него получилось бы, что аргумент команды \hbox начинается с пробела, соответственно и линейка начиналась бы не с начала, а после пробела .
На самом деле в предыдущем примере было бы лучше, если бы правый край выделенного абзаца шел вровень с правым краем остального текста. Чтобы добиться этого, надо первый аргумент команды \parbox не взять с потолка, а вычислить. Для этого нам понадобятся переменные со значением длины. Предполагая, что мы определили с помощью \newlength переменные \shirina и \raznost, сделаем вот что:
\begin{flushleft} \shirina=\textwidth \settowidth{\raznost}{\vrule\hspace{.5em}} \addtolength{\shirina}{-\raznost} \noindent\hbox{% \vrule\hspace{.5em}\parbox{\shirina}% {Иногда используется ... ... линейка.}} \end{flushleft} Мы воспользовались командой \settowidth, чтобы найти размер, который занимает линейка вместе с пробелом. Кстати, если просто написать \hbox{\vrule\hspace{.5em}}, то на печати мы ничего не увидим (внутри \hbox'а никакого текста нет, так что высота и глубина линейки равна нулю и она тем самым невидима); однако же эта команда создаст пробел, величина которого равна 0.4pt плюс 0.5em. Заключительное замечание: поскольку {flushright}, как и всякое окружение, ограничивает группу, все наши манипуляции с параметрами \shirina и "\raznost" забудутся по выходе из этого окружения.