缩小长文本行

缩小长文本行

我正在使用 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

使用 \scale 命令来限制文本宽度。

第二种方法是使用命令在一定长度后剪切文本\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

使用 \limitatetext 命令来限制文本宽度。

答案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;如果您愿意,您也可以保持其可配置性。

相关内容