问题

问题

问题

尝试获取章节标题的单词首字母。章节样式应用如下:

  \setuphead[chapter][
    command=\StyleChapter,
    % Hide the header's chapter name.
    header=empty,
    % Hide the footer's page number.
    footer=empty,
  ]

为了强调单词的第一个字符(例如“Bread”),我写道:

\define[2]\StyleChapter{%
  \framed[
    frame=off,
    width=local,
    align={flushright,low,nothyphenated,verytolerant},
    width=\dimexpr\textwidth+\rightmargindistance,
    height=\dimexpr\textheight-\footerheight,
  ]{\substring{#2}{1}{1}}{#2}
}

也:

  ]{\substring{#2}{1}{1}{#2}}

和:

  ]{{#2}{\substring{#2}{1}{1}}}

和:

\defineframed[StyleChapterFramed][
  frame=off,
  width=local,
  align={flushright,low,nothyphenated,verytolerant},
  width=\dimexpr\textwidth+\rightmargindistance,
  height=\dimexpr\textheight-\footerheight,
]

\define[2]\StyleChapter{%
  \StyleChapterFramed{%
    {\getfirstcharacter{#2}\firstcharacter #2}
  } 
} 

及其变体。ConTeXT 中似乎\substring没有可用的宏?我试图产生的效果是:

午餐

我目前达到的效果:

汤

使用以下内容会产生字母 H,但我尝试使用章节标题,即参数#2

{\getfirstcharacter{Hello}\firstcharacter #2}

关于如何在 ConTeXt 中获取子字符串有什么想法吗?

答案1

要获取字符串的第一个字符,请使用\getfirstcharacter。例如:

\getfirstcharacter{Hello} \firstcharacter -- \remainingcharacters

因此,要复制章节中的第一个字符,您可以使用:

\defineframed
  [StyleChapterFramed]
  [
    frame=off,
    width=local,
    align={flushright,low,nothyphenated,verytolerant},
    width=\dimexpr\textwidth+\rightmargindistance\relax,
    height=\dimexpr\textheight-\footerheight\relax,
  ]

\define[1]\StyleChapter
  {\getfirstcharacter{#1}\StyleChapterFramed{\firstcharacter #1}}

\setuphead
  [chapter]
  [
    deeptextcommand=\StyleChapter,
  ]

相关内容