如果我的图形位于左侧或右侧和顶部,我希望它们与旁边的文本行齐平。目前,图形的顶部边缘大致与第二行齐平。这似乎是浮动的标准位置,例如查看这一页
目前担任:
应该:
如何将图形顶部设置为与第一行的 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