上下文:将浮动(图形)和文本顶部放置在同一高度

上下文:将浮动(图形)和文本顶部放置在同一高度

如果我的图形位于左侧或右侧和顶部,我希望它们与旁边的文本行齐平。目前,图形的顶部边缘大致与第二行齐平。这似乎是浮动的标准位置,例如查看这一页

目前担任:

当前状态

应该:

應該規定

如何将图形顶部设置为与第一行的 X 高度齐平?有没有办法定义偏移量来移动图形顶部?或者更优雅的解决方案?(我尝试了几个命令,但没有找到合适的命令)

附言:我用\setuplayout[grid=yes]

答案1

在网格上排版图像时,需要考虑几个因素。第一个是标题或标题的存在。

无标题

如果没有提供标题,则图像的底部与网格对齐。顶部对齐取决于图像的高度。要将顶部与正文字体的 x 高度对齐,图像的高度需要为基线距离加上正文字体的 x 高度的倍数。

\startplacefigure [location={none,left}]
  \externalfigure [dummy] [height=\dimexpr2\lineheight+\exheight\relax]
\stopplacefigure

但是,图像随后会与第二行对齐。要按照您的要求将其与第一行对齐,请提供选项high

\startplacefigure [location={none,left,high}]
  \externalfigure [dummy] [height=\dimexpr2\lineheight+\exheight\relax]
\stopplacefigure

带标题

标题会让事情变得稍微复杂一些。在浮动和标题之间有一个\blank插入,它将图像向上移动。为了将其与基线对齐,需要补偿支柱的深度。

\setupcaptions [figure] [inbetween={\blank[\strutdepth]}]

要将所有图形对齐到第一行,您可以sidealign全局使用键。这样就不需要为每个图形指定值。

\setupfloats [figure] [sidealign=line]

微调

另一个微调浮动垂直位置的选项是使用命令 \movesidefloat。参数可以是例如+2*line-1*line。该命令直接在之前使用\startplacefigure

文档

关于浮动位置和网格的更多细节,请参阅详细手册

完整示例

\useMPlibrary        [dum]
\setuplayout         [grid=yes]
\setupinterlinespace [line=20pt]

\setupfloats   [figure] [sidealign=line]
\setupcaptions [figure] [inbetween={\blank[\strutdepth]}]

\starttext
\showgrid

\startplacefigure [title=A short caption, location=left]
  \externalfigure [dummy] [height=\dimexpr2\lineheight+\exheight\relax]
\stopplacefigure
\input ward

\startplacefigure
  [title={There is not so much basic instruction, as of now, as there was
    in the old days, showing the differences between good and bad typographic design.},
   location=left]
  \externalfigure [dummy] [height=\dimexpr3\lineheight+\exheight\relax]
\stopplacefigure
\input zapf

\startplacefigure [title=Short caption, location=left]
  \externalfigure [dummy] [height=\dimexpr5\lineheight+\exheight\relax]
\stopplacefigure
\input ward

\page

\movesidefloat [line]
\startplacefigure [location={none,left}]
  \externalfigure [dummy] [height=\dimexpr2\lineheight+\exheight\relax]
\stopplacefigure
\input ward

\movesidefloat [line]
\startplacefigure [location={none,left}]
  \externalfigure [dummy] [height=\dimexpr3\lineheight+\exheight\relax]
\stopplacefigure
\input zapf

\movesidefloat [line]
\startplacefigure [location={none,left}]
  \externalfigure [dummy] [height=\dimexpr5\lineheight+\exheight\relax]
\stopplacefigure
\input ward

\stoptext

第一页

第二页

相关内容