Как также выровнять по вертикали горизонтально выровненное изображение и текст **при этом разрешить разрывы страниц**?

Как также выровнять по вертикали горизонтально выровненное изображение и текст **при этом разрешить разрывы страниц**?

Этот вопрос не требует фрагментов кода.
Он требует описания общих практик словами.

В простом TeX я хотел бы разместить изображение/прямоугольное поле слева от некоторого фрагмента текста, который обрабатывается в горизонтальном режиме.

Верхняя граничная линия прямоугольного блока, содержащего изображение, должна быть вертикально выровнена с граничной линией, обозначающей высоту первой строки текста. (Эта высота не является высотой a, \strutboxа зависит от содержимого этой первой строки. Это может быть высота заглавной буквы, высота x или сумма высоты x и высоты выносного элемента какой-либо буквы или что-то еще.)

По горизонтали между правой границей поля, содержащего изображение, и левым полем строк текста должен быть зазор около 1/3 дюйма.

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

Таким образом, ширина текста должна быть равна ширине обычной строки текста, уменьшенной на ширину горизонтального зазора (1/3 дюйма) и уменьшенной на ширину изображения.

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

В случае, если текст занимает меньше вертикального пространства, чем изображение, под текстом должен быть вертикальный зазор, длина которого равна высоте изображения + глубине изображения - высоте текста - глубине текста.

На данный момент я рассматриваю следующий подход:

Поместите изображение и горизонтальный зазор в горизонтальный блок. Назовем это imagebox.

Измерьте ширину области изображения.

Поместите текст в , \vtopчей размер \topskipравен 0pt и чей \hsizeравен разнице ширины imagebox и ширины обычной строки текста.
Давайте назовем этот box "промежуточным textbox".

Назначьте imagebox новую глубину: Высота imagebox + глубина imagebox - высота промежуточного текстового поля.
Назначьте imagebox новую высоту: Высота "промежуточного текстового поля".

  • Случай 1: Если текстовое поле по вертикали больше, чем поле изображения:

    Создайте "окружение \vbox", которое \hsizeравно разнице ширины imagebox и ширины обычной строки текста и которое \leftskipравно ширине imagebox и первая строка которого начинается с \llap(принимая \parindentво внимание) удерживающего "внутреннего \vbox" без \topskip, содержащего imagebox и отрицательного (вверх) вертикального скачка, длина которого равна глубине imagebox. \llapЗа ним следует текст. \unvboxокружение \vbox.

  • Случай 2: Если текстовое поле по вертикали меньше, чем поле изображения:

    Создайте «окружающую \vbox» область, ширина которой \hsizeравна ширине поля изображения, и которая в качестве первой/единственной строки содержит поле изображения, а первая строка \rlapсодержит «внутреннюю \vbox» область с «промежуточным текстовым полем», за которой следует отрицательный (вверх) вертикальный пропуск, длина которого равна глубине промежуточного текстового поля.

Вопросы:

Ad Case 1: Как можно гарантировать, что imagebox не будет прилипать к полю внизу? Достаточно ли иметь внутри \llap"окружающего \vbox" с последующим вертикальным положительным (вниз) пропуском, длина которого равна глубине imagebox, с последующим значительным уменьшением штрафа, с последующим отрицательным (вверх) вертикальным пропуском, длина которого также равна глубине imagebox?

Ad Case 2: И «окружение \vbox», и «внутреннее \vbox» не \unvboxредактируются. Как убедиться, что вертикальный клей наверху этих вертикальных коробок сочетается с вертикальным клеем поверх «окружения \vbox», как будто «окружения \vbox» и «внутреннего \vbox» там нет?

Связанный контент