Ноу Інти, лекція, блоки і клей

Ще раз про лінійках

В аргументі команди \ hbox може бути присутнім і TeX'овская команда \ vrule. Її цінність в тому, що вона автоматично створює лінійку, висота і глибина якої дорівнює висоті і глибині осяжний блоку (ширина цієї лінійки буде за замовчуванням дорівнює пункту). Як пояснювалося в розд. 3.10. можна задати в явному вигляді ширину лінійки за допомогою ключового слова width. висоту - за допомогою ключового слова height. а також (про що в "Набір тексту" не говорилося) глибину за допомогою ключового слова depth (ці три ключових слова можуть слідувати після \ vrule в довільному порядку). Наведемо один приклад використання \ vrule всередині \ hbox.

Попередній абзац в початковому тексті виглядав так:

Цей текст потребує деяких поясненнях. По-перше, в останньому рядку перша з фігурних дужок закриває аргумент команди \ parbox. а друга - \ hbox. По-друге, ми скористалися оточенням \ flushleft. щоб LaTeX сам подбав про розумних відступи до і після абзацу. Параметр \ textwidth означає, як ми пам'ятаємо, ширину сторінки. Тепер розглянемо, що є присутнім усередині \ hbox. Спочатку там йде лінійка, потім відступ на, і потім - величезна "буква", створена командою \ parbox. Згідно із загальним правилом, висота і глибина лінійки, заданої командою \ vrule. дорівнює висоті і глибині осяжний блоку, а вони в нашому випадку збігаються з висотою і глибиною "величезною літери" (адже крім неї, іншого тексту в нашому \ hbox немає). Тим самим лінійка виходить якраз потрібних розмірів, що і було потрібно!

Зверніть ще увагу на знак відсотка після \ hbox - без нього вийшло б, що аргумент команди \ hbox починається з пробілу, відповідно і лінійка починалася б не з початку, а після пробілу.

Насправді в попередньому прикладі було б краще, якби правий край виділеного абзацу йшов врівень з правим краєм іншого тексту. Щоб домогтися цього, треба перший аргумент команди \ parbox не взяти зі стелі, а обчислити. Для цього нам знадобляться змінні зі значенням довжини. Припускаючи, що ми визначили за допомогою \ newlength змінні \ shirina і \ raznost. зробимо ось що:

Ми скористалися командою \ settowidth. щоб знайти розмір, який займає лінійка разом з пропуском. До речі, якщо просто написати \ hbox>. то на друку ми нічого не побачимо (всередині \ hbox 'а ніякого тексту немає, так що висота і глибина лінійки дорівнює нулю і вона тим самим невидима); проте ж ця команда створить пробіл, величина якого дорівнює 0.4pt плюс 0.5em. Заключне зауваження: оскільки, як і будь-яке оточення, обмежує групу, всі наші маніпуляції з параметрами \ shirina і "\ raznost" забудуться після виходу з цього оточення.

Команда \ vbox

Тепер розглянемо другу основну команду TeX'а для генерації блоків - команду \ vbox. Ця команда створює блок, обробляючи текст у вертикальному режимі. Ось перший приклад:

Як бачите, блоки, створювані \ hbox. ставляться один під іншим таким чином, щоб їх точки відліку лежали на одній вертикальній прямій.

Насправді в аргументі команди \ vbox може перебувати і звичайний текст; при появі першої ж букви або, скажімо, команди \ mbox або іншої команди LaTeX'а для генерації блоків TeX переходить в горизонтальний режим, який триває до команди, завершальній абзац (\ par або порожнього рядка). Ми не будемо вдаватися в деталі; для тих додатків, які ми маємо на увазі, досить використовувати команду \ vbox так, як було наказано вище.

Коли TeX при виконанні команди \ vbox становить блоки один з одним, він має в своєму розпорядженні їх так, щоб їх базисні лінії були, по можливості, на рівних відстанях один від одного, так що зазвичай між блоками буде присутній додатковий пробіл. З іншого боку, лінійки, створені командою \ hrule. приставляються до блокам без додаткового прогалини. Щоб при цьому лінійка не опинилася впритул до тексту, зручно до відповідного блоку вставити \ strut. Наступний приклад покликаний пояснити сказане:

Як завжди, \ vbox посеред абзацу поводиться просто як велика буква. Зверніть також увагу, що ми не намагалися прибрати зайвий пробіл між \ hbox і \ hrule. в вертикальному режимі прогалини ніякого впливу на текст не роблять.

Ось ще приклад, коли за допомогою комбінації блоків і лінійок текст береться в рамку:

Як і раніше ми використовуємо \ strut. щоб горизонтальні лінійки не підходили надто близько до тексту (і \ для тієї ж мети по горизонталі).