Выравнивание headnumbercontent с headtextcontent в headalternative

Выравнивание headnumbercontent с headtextcontent в headalternative

Я работаю над шаблоном ConTeXt для набора нескольких книг, а это значит, что мне нужно учесть главы, которые могут иметь или не иметь подзаголовок, эпиграф и т. д. Я нашел точное решение, которое искал, вэтот вопрос, за исключением одной проблемы...

Когда я начинаю добавлять дополнительные строки, т. е. набираю подзаголовок под заголовком, номер главы выравнивается по строке подзаголовка, а не остается на строке заголовка.

Примечание:Я использовал alternative=marginдо \setupheadперехода на это решение. Чтобы сохранить этот дизайн с новой настройкой рендеринга, я добавил \inleftmargin{}решение Адитьи. Не уверен, что это относится к делу, но я подумал, что укажу на это, на всякий случай.

Редактировать:Вот минимальный, компилируемый пример...

\setuphead [chapter][alternative=newchapterhead]

\defineheadalternative
  [newchapterhead]
  [renderingsetup=newchapterhead]

\startsetups newchapterhead
    \vbox {
    \inleftmargin{\headnumbercontent}\space\headtextcontent
    \doifsomething{\structureuservariable{subtitle}}
      {\blank[small]\structureuservariable{subtitle}}}
\stopsetups

\starttext
\startchapter[title={My Chapter Title}][subtitle={My Chapter Subtitle}]
\input knuth
\stopchapter
\stoptext

Компилируется в:
Минимальный пример результата

решение1

Ммм, я бы использовал фреймовый механизм ConTeXt вместо vbox, и \margindata. Вот мое предложение:

\definemargindata [chapterhead] [left] 

\setuphead [chapter][alternative=newchapterhead]

\defineheadalternative
  [newchapterhead]
  [renderingsetup=newchapterhead]

\startsetups newchapterhead
    \framed[align=right,frame=off]{\chapterhead{\headnumbercontent}\headtextcontent
    \doifsomething{\structureuservariable{subtitle}}
      {\blank[small]\structureuservariable{subtitle}}}
\stopsetups

\starttext
\startchapter[title={My Chapter Title}][subtitle={My Chapter Subtitle}]
  \input knuth
\stopchapter
\stoptext

Что, я полагаю, и есть то, чего вы хотите: введите описание изображения здесь

Кстати, хороший пример!

решение2

\dontleavehmodeВ вашем определении отсутствует a . \spaceЭто ненужно, а в этом ответе даже вредно.

\setuphead
  [chapter]
  [alternative=newchapterhead]

\defineheadalternative
  [newchapterhead]
  [renderingsetup=newchapterhead]

\startsetups newchapterhead
    \vbox{%
      \dontleavehmode
      \inleftmargin{\headnumbercontent}
      \headtextcontent
      \doifsomething{\structureuservariable{subtitle}}
        {\blank[small]\structureuservariable{subtitle}}}
\stopsetups

\starttext
\startchapter[title={My Chapter Title}][subtitle={My Chapter Subtitle}]
  \input knuth
\stopchapter
\stoptext

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

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