问题
尝试获取章节标题的单词首字母。章节样式应用如下:
\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,
]