ConTeXt:数字章节大小 - 框

ConTeXt:数字章节大小 - 框

几天前,@Aditya 针对我发布的一个问题提供了完美的解决方案,代码如下:

 \setupinterlinespace[line=1.35em]
 \setupalign[hanging]

\setuphead
 [chapter]
 [
  page=yes,
  before={\blank[force,4*line]},
  after={\blank[4*line]},
   command=\mychap,
 ]

  \defineframed
[chapterframed]
[
offset=0.5em,
frame=off,
align={flushright,nothypenated},
location=top,
foregroundstyle=sans,
 ]

 \define[2]\mychap
  {\hbox to \hsize \bgroup
  \hfill
  \chapterframed[width=2cm]{#1}
   \chapterframed[width=0.5\textwidth, leftframe=on]{#2}
   \egroup}

   \def\chap#1/#2/{\placeinitial #1{\sc #2}}

    \starttext

   \chapter{The Séance}

    \chap O/n a march evening/, at eight

    \stoptext

我相信我可以找到一种方法来做两件事:1)设置标题中数字的大小。2)按我的意愿设置垂直线(框架左边缘)的大小。

我两样都做不到。我可以改变垂直线的大小,但对我来说总是太长了。我无法以任何方式操作 \chapterframed[width=2cm]{#1} 行中的参数 #1。我知道我要求太多了,但我真的想学习 ConTeXt,所以,我非常感谢大家在两个方面提供的帮助:a) 解决方案。b) 关于文档的指示,我可以在哪里理解解决方案。我觉得我在复制一些我有时不理解的代码(我读过关于 ConTeXt 文档的问题,但对于像这样的具体问题,我毫无用处。我感觉迷失在丛林中,很多路径都无处可去(断开或无效的链接)和弃用的“树”(命令)。)

(当然,我会感谢所有帮助,无论是形式 a)还是形式 b)。谢谢。

答案1

事情是这样的!使用 编译文档\showstruts,您将获得以下内容(细垂直线是支柱;粗垂直线来自leftframe=on

在此处输入图片描述

默认情况下,在节号和节标题周围(以及很多其他地方)ConTeXt添加一个,因为使用 strut 会使内容看起来更好。如果您不想要,可以添加到相应的命令。\strutstruct=no\setup...

因此,原则上

\setuphead[chapter][...., struct=no, ...]
\defineframed[chapterframed][...., struct=no,...]

应该可以工作,但是没有。你得到的结果如下:

在此处输入图片描述

strts 仍然存在。这是因为该命令\mychap没有调用初始化头部间距的辅助宏。为此,只需将 的定义更改\mychap为:

\define[2]\mychap
  {\hbox to \hsize \bgroup
   \headsetupspacing% <<<: Added this
   \hfill
   \chapterframed[width=2cm]{#1}
   \chapterframed[width=0.5\textwidth, leftframe=on]{#2}
   \egroup}

这使:

在此处输入图片描述

不再需要额外的 struts!以下是完整代码(\showstruts使用时请删除)

 \setupinterlinespace[line=1.35em]
 \setupalign[hanging]

\setuphead
 [chapter]
 [
  page=yes,
  before={\blank[force,4*line]},
  after={\blank[4*line]},
  command=\mychap,
  strut=no,
 ]

\showstruts

\defineframed
  [chapterframed]
  [
    offset=0em,
    frame=off,
    strut=no,
    align={flushright,nothypenated},
    location=top,
    foregroundstyle=sans,
  ]

\define[2]\mychap
  {\hbox to \hsize \bgroup
   \headsetupspacing
   \hfill
   \chapterframed[width=2cm]{#1}
   \chapterframed[width=0.5\textwidth, leftframe=on]{#2}
   \egroup}

\def\chap#1/#2/{\placeinitial #1{\sc #2}}

\starttext

\chapter{The Séance}

\chap O/n a march evening/, at eight

\stoptext

答案2

相关说明见代码中的注释,文档在Garden中:

事实上,每个\definesomething命令都继承自相应的\setupsomething命令。有关所有 ConTeXt 命令的所有有效键,请参阅命令参考

\setupinterlinespace[line=1.35em]
\setupalign[hanging]

\setuphead
  [chapter]
  [
    page=yes,
    before={\blank[force,4*line]},
    after={\blank[4*line]},
    command=\mychap,
    numberstyle=\tfa, % <- size of number
  ]

\defineframed
  [chapterframed]
  [
    offset=0.2em, % <- influences height of rule
    frame=off,
    align={flushright,nothypenated},
    location=top,
    foregroundstyle=sans,
  ]

\define[2]\mychap
  {\hbox to \hsize \bgroup
    \hfill
    \chapterframed[width=2cm]{#1}
    \chapterframed[width=0.5\textwidth, leftframe=on]{#2}
    \egroup}

\def\chap#1/#2/{\placeinitial #1{\sc #2}}

\starttext

\chapter{The Séance}

\chap O/n a march evening/, at eight

\stoptext

相关内容