几天前,@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 会使内容看起来更好。如果您不想要,可以添加到相应的命令。\strut
struct=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中:
\setuphead
\setupframed
(这就是\defineframed
继承)。
事实上,每个\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