ConTeXt:Grathwohl 的书籍设计代码

ConTeXt:Grathwohl 的书籍设计代码

我正在尝试理解此代码存在的问题(您可以在https://www.tug.org/TUGboat/tb25-1/grathwohl.pdf):

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

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

\defineexpandable\mychap#1#2%
{\hbox to \hsize \bgroup
\hfill
\setupframed
[offset=0.5em,frame=off]%
\tbox
{\framed
[width=2cm,align=left]
{\ss #1}}%

\tbox
{\framed
[width=.5\textwidth,
align=flushright,
leftframe=on]
{\hyphenpenalty 10000 \ss #2}}%
\egroup}

\def\Drop {\DroppedCaps
{} {Sans} {3\baselineskip}
{2pt} {1\baselineskip} {2}}

\def\chap#1/#2/{\Drop #1{\smallcaps #2}}

\starttext

\chapter{The S\’eance}

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

\stoptext

我不知道我是否尝试在 Mkiv 中执行过时的命令,我将不胜感激您的帮助。

答案1

在拖船文章中,mychap宏定义为\def\mychap#1#2(我不知道你为什么将其更改为,这是错误的语法)。在 MkIV 中,传递给键的\defineexpandable\mychap#1#2宏需要不可扩展:因此要么使用或(正如我下面所做的那样)。command\setuphead\unexpanded\def\mychap#1#2\define[2]\mychap

在 MkII 中,有两种大写字母删除机制,\DroppedCaps\placeinitial。在 MkIV 中,使用 lua 重新实现了大写字母删除功能,只\placeinitial保留了替代方案。因此,您需要使用\placeinitial而不是DroppedCaps

如果您进行了这些更改,代码就会编译。这是一个完整的工作示例。在此过程中,我还对代码进行了一点整理。

\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

这使:

在此处输入图片描述

相关内容