Я работаю над шаблоном 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