我正在使用 Context 来生成一本书。我的大多数章节标题都很短,适合分配给它们的空间。不过有些章节标题有点太长了,我想缩小它们以适合它们。
尝试类似的\scale[factor=fit]{Title}
方法,但它也会将较短的标题放大,使它们看起来太大。有没有办法告诉 Context 仅在文本太长时才进行缩放?
答案1
当您不想开始新行时,有两种方法可以处理长度超过一定宽度的文本。
第一种方法是当文本超过一定长度时缩小文本,您可以使用maxwidth
命令键设置文本的限制\scale
。
\setuplayout[width=8cm]
\starttext
\scale[maxwidth=\textwidth]{Short title.}
\scale[maxwidth=\textwidth]{A very very very very very very very very very very very long title.}
\stoptext
第二种方法是使用命令在一定长度后剪切文本\limitatetext
,并显示表示文本剩余部分的文本或符号。
\setuplayout[width=8cm]
\starttext
\limitatetext{Short title.}{\textwidth}{\unknown}
\limitatetext{A very very very very very very very very very very very long title.}{\textwidth}{\unknown}
\stoptext
答案2
笔记:Metafox 的答案更好。请使用那个答案。
以下是 Barbara 想法的基本实现:
\define[1]\ScaleToTextwidth
{\setbox\scratchbox\hbox{#1}%
\ifdim\wd\scratchbox>\textwidth%
\scale[width=\textwidth]{\unhbox\scratchbox}%
\else
\unhbox\scratchbox
\fi}
\starttext
\ScaleToTextwidth{Ward}
\ScaleToTextwidth{\input ward\endgraf}
\stoptext
这使
我把所有东西都缩放到\textwdith
;如果您愿意,您也可以保持其可配置性。