Необычный заголовок с горизонтальной линейкой и несколькими текстовыми элементами в ConTeXt

Необычный заголовок с горизонтальной линейкой и несколькими текстовыми элементами в ConTeXt

Я хочу создать заголовок вроде следующего:

_________________________________________________________________________________
|                             |                                    | Sufix      |
| Prefix unwrapped (CAPS)     | Unwrapped title (Small Caps)       | wraped     |
|                             |                                    | as needed  |
=================================================================================
        Ba ba                                  Ba ba
•     Sub text 1     •   Sub text 2   •      Sub text 3       •    Sub text 4   •
          Ba                                Black Sheep

Он должен быть:

  • растянутый на всю страницу
  • подчеркнуто цветом (=)
  • нет никаких помех сверху, слева, справа или посередине (|, _)
  • Подтекст, отделенный символом-разделителем (•), выровнен по центру или по верхнему краю и настроен для оптимального размещения.

На данный момент я сделал следующее (первая часть названия/заголовка):

\define[3]\TITLE{\midaligned{\framed[frame=off,align=middle,bottomframe=on,framecolor=blue]
                                {\inframed[frame=off]{{\tfa\WORD#1}: {\tfb\sc#2}}\inframed[frame=off]{{\tfa, #3}}}}}

Но это не дает желаемых результатов.

Как мне это сделать?

решение1

Я не совсем понимаю спецификации, поэтому попробую ответить на них по порядку.

  • Я предполагаю, что ширина Prefix + Title < \textwdith. Если нет, то один из этих двух также должен переноситься.
  • Непонятно, как Prefixи Titleдолжно быть выровнено по вертикали. Я выбрал выравнивание по центру (так называется lohiв ConTeXt)

Концептуально, самый простой метод — использовать ТАБЛИЦЫ. Итак, базовый макрос:

\define[3]\TITLE
  {\startTABLE[setups=table:title]
      \NC #1 \NC #2 \NC #3 \NC \NR
    \stopTABLE}

Теперь нам осталось только определить настройки table:titleдля правильного форматирования, что можно сделать следующим образом:

\startsetups table:title
  \setupTABLE[each][each][frame=off,bottomframe=on,rulethickness=2bp]
  \setupTABLE[column][1][style=WORD, align=lohi]
  \setupTABLE[column][2][style=\sc,  align=lohi]
  \setupTABLE[column][3][align={hyphenated,tolerant}]
\stopsetups

Вот и все!

Вот полный код с выводом:

\startsetups table:title
  \setupTABLE[each][each][frame=off,bottomframe=on,rulethickness=2bp]
  \setupTABLE[column][1][style=WORD, align=lohi]
  \setupTABLE[column][2][style=\sc,  align=lohi]
  \setupTABLE[column][3][align={hyphenated,tolerant}]
\stopsetups

\define[3]\TITLE
  {\startTABLE[setups=table:title]
      \NC #1 \NC #2 \NC #3 \NC \NR
    \stopTABLE}

\showframe % To visualize the page frame
\starttext

\TITLE{prefix}{Unwrapped title}{\dorecurse{5}{A very long text\space}}

\stoptext

который дает

введите описание изображения здесь

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

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