背景
希望根据单词的宽度调整单词首字母的位置。
问题
计算类似于:
\define[1]\StyleChapterChar{%
\cldcontext{string.sub("#1",1,1)}%
}
% Use a nested frame to keep the overlain large letter together with
% the chapter title.
\define[1]\StyleChapter{%
\StyleChapterFramed{%
\framed[align=right, frame=off]{%
\startoverlay
\color[blue]{%
\StyleChapterChar{#1}%
}
\vskip-1.9em\hskip\dimexpr\averagecharwidth*33/10#1
\stopoverlay
}
}
}
这里,3.3 * \averagecharwidth
用于偏移文本。这会导致单词中强调的第一个字符的水平偏移在 和 之间变化很大A
。I
我想要用3.3 * \averagecharwidth
使用字符宽度的计算(例如3.3 * \charwidth{\StyleChapterChar}
)替换此计算()
问题
当您不知道该字符是什么时,如何获取单个字符的宽度?
想法
到目前为止我已经尝试了一些方法:
\define[1]\StyleChapterCharWidth{
\dimexpr\fontcharwd\font`#1
}
\define[1]\StyleChapterCharWidth{
\fontcharwd\font`#1
}
反引号(`)字符似乎表示下一个字符应按字面意思处理。
有关的
答案1
使用 Aditya 的线索:
\define[1]\StyleChapterChar{%
\cldcontext{string.sub("#1",1,1)}%
}
\define[1]\StyleChapter{%
\StyleChapterFramed{%
\framed[align=right, frame=off]{%
\startoverlay
% Calculate the offset of the large letter based on the width of
% the character. This allows the font to change without significantly
% affecting the distance between the emphasized first character of the
% chapter title and the complete chapter title.
\setbox\scratchbox\hbox{%
\StyleFontChapterCharacter\StyleChapterChar{#1}}%
% Shift the first character back relative to the chapter title.
\hskip-.55\wd\scratchbox%
\color[blue]{%
\StyleFontChapterCharacter%
\StyleChapterChar{#1}%
}
\vskip-1.9em
#1
\stopoverlay
}
}
}