在目录和文档中独立设置标题样式

在目录和文档中独立设置标题样式

我正在使用自定义打字稿(之后帮助解决这个问题),其中包括(除其他外)两个额外重量,中等的半粗体以及它们的大小修饰符(例如\tfa\tfb)。由于自定义粗细,我为半粗体斜体、中等斜体等(\sbi以及\mdi等)创建了自定义宏,因为\em自定义粗细中不会交替使用常规/斜体。

然后我在带有大小修饰符(全局配置)的头部中使用半粗体,并且这些头部在 TOC 中采用独立样式(常规粗细),其工作符合预期。\sbi当我在特定头部中使用自定义宏时,它会按正文大小排版,而不是按头部大小排版(例如\sbic)。并且在目录中,它会变成半粗斜体,而不是常规斜体。更糟糕的是,如果我在特定头部(例如\sbic)中使用带大小修饰符的半粗斜体,它会在目录中获得相同的大小。

问题:有没有办法完全独立地设置文档和目录中的标题样式?有两种可能:

  • 在 TOC 中,完全删除任何特定样式/重量的头部(可接受)
  • 根据周围的粗细,在文档和目录中正确地在常规和斜体之间交替(在我的例子中,文本中使用半粗体,目录中使用常规体)

我的打字稿(摘录):

\definebodyfont [default] [rm]
  [tf=Serif            sa 1,
   bf=SerifBold        sa 1,
   it=SerifItalic      sa 1,
   % ...
   mdf=SerifMedium        sa 1,
   mif=SerifMediumItalic  sa 1,
   msf=SerifMediumSlanted sa 1,
   % ...
   sbf=SerifSemibold        sa 1,
   sbi=SerifSemiboldItalic  sa 1,
   sbs=SerifSemiboldSlanted sa 1,
   % ...
   sbfb=SerifSemibold sa 1.440,
   sbfc=SerifSemibold sa 1.728,
   % ...
   sbib=SerifSemiboldItalic sa 1.440,
   sbic=SerifSemiboldItalic sa 1.728,
   % ...
   ]

我的文件(摘录):

\setupbodyfont[garamond-premier, 12pt] % my typescript

\setuphead[chapter]   [style={\sbfc}] % heads in document: semibold
\setuphead[section]   [style={\sbfb}]

\setupcombinedlist[content][list={chapter, section}]
\setuplist[chapter]   [style={\tf}] % heads in TOC: regular
\setuplist[section]   [style={\tf}]

\starttext
\completecontent

\chapter[title={A chapter with {\sbic italics}}]
A text

\section[title={A section with {\sbib italics}}]
Another text
\stoptext

结果(目录和文档,摘录。请注意目录中斜体字的粗细和大小不正确):

截屏

答案1

您无需为字体添加其他选项,而应为mediumheavy粗细创建单独的字体。要访问章节标题和列表条目的额外粗细,您可以使用命令切换到不同的字体\switchtobodyfont

\setupbodyfont
  [antykwapoltawskiego]

\setuphead
  [chapter]
  [page=no,
   style={\switchtobodyfont[antykwapoltawskiego-light]\bfb}]

\setuplist
  [chapter]
  [style={\switchtobodyfont[antykwapoltawskiego-light]\bf}]

\setuppapersize [A5]

\starttext

\completecontent

\chapter{Weisman}

\samplefile{weisman}

\chapter{Ward}

\samplefile{ward}

\stoptext

在此处输入图片描述

答案2

在我上一篇文章中(您在问题中引用了这篇文章),我犯了一个错误。

字体替代品只能有两个字母,因为 ConTeXt 将使用它后面的任何内容作为大小说明符,就像b中的一样\tfb

此外,在指定字体选项之前,您实际上必须定义它们。下面的代码纠正了所有这些问题。要使字体切换不显示在目录中,您可以使用 指定替代文本list。我还建议使用\start...\stop所有命令的对。

\loadtypescriptfile[garamond-premier]

\definefontalternative[mf]
\definefontalternative[mi]
\definefontalternative[ms]
\definefontalternative[sf]
\definefontalternative[si]
\definefontalternative[ss]

\definebodyfont [default] [rm]
  [tf=Serif            sa 1,
   bf=SerifBold        sa 1,
   it=SerifItalic      sa 1,
   sl=SerifSlanted     sa 1,
   bi=SerifBoldItalic  sa 1,
   bs=SerifBoldSlanted sa 1,
   sc=SerifCaps        sa 1,
   %
   mf=SerifMedium        sa 1,
   mi=SerifMediumItalic  sa 1,
   ms=SerifMediumSlanted sa 1,
   %
   sf=SerifSemibold        sa 1,
   si=SerifSemiboldItalic  sa 1,
   ss=SerifSemiboldSlanted sa 1]
\stoptypescript

\setupbodyfont[garamond-premier]

\setuphead[chapter]   [style={\sfc}] % heads in document: semibold
\setuphead[section]   [style={\sfb}]

\setupcombinedlist[content][list={chapter, section}]
\setuplist[chapter]   [style={\tf}] % heads in TOC: regular
\setuplist[section]   [style={\tf}]

\starttext
\completecontent

\startchapter
  [title={A chapter with {\si italics}},
   list={A chapter with italics}]

  A text

  \startsection
    [title={A section with {\si italics}},
     list={A section with italics}]

    Another text

  \stopsection

\stopchapter

\stoptext

在此处输入图片描述

相关内容