我正在开发一个主 ConTeXt 模板来排版多本书,这意味着我需要考虑可能有或可能没有副标题、题词等的章节。我找到了我正在寻找的确切解决方案这个问题,除了一个问题……
当我开始添加额外的行,即在标题下方排版副标题时,章节编号与副标题行对齐,而不是与标题行对齐。
笔记:在切换到此解决方案之前,我曾使用过alternative=margin
。为了在新的渲染设置中保留该设计,我将其添加到了 Aditya 的解决方案中。不确定这是否相关,但我想指出这一点,以防万一。\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
你的定义中缺少了。\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