背景

背景

背景

希望嵌入网格对齐的图像。更具体地说,我想渲染线性吸收和发射谱线不会导致散文排版偏离网格。(另请参阅:可见光谱的 RGB 值夫琅禾费线

mtx-context     | current version: 2019.06.11 19:20

问题

在下面的屏幕截图中,两个 SVG 文件被导入到文档中,但它们的高度(与顶部和底部的空白相结合)使文本偏离了网格:

第一颗系外行星

目前,光谱是从 SVG 文件导入的。它们不需要任何特定的高度;最好是允许 ConTeXt 设置网格上后续文本的高度。实际上,三列文本将具有相同的基线。

另外,小标题(关联知识) 也会使文本脱离网格布局。

代码

这两个问题(副标题和矢量图形)的最小工作示例很难重新创建。以下是相关部分。

页面和栏目

\definepapersize[BookPaperSize][
  width=24in,
  height=12in,
]

\setuppapersize[BookPaperSize]

\usemodule[newcolumnsets]

\definecolumnset[BookColumns][n=4,distance=.25in]
\setupcolumnset[BookColumns:1][width=11.75in]
\setupcolumnset[BookColumns:2][width=3.46in]
\setupcolumnset[BookColumns:3][width=3.46in]
\setupcolumnset[BookColumns:4][width=3.46in]

网格页面布局

\definemeasure[BookTextLayoutHeight][\dimexpr .5\paperheight - 1in\relax]

% halfline - Allow the chapter title and columnar text to top-align
\definelayout[BookTextLayout][
  topspace=.5in,
  backspace=.5in,
  width=\paperwidth,
  height=\measure{BookTextLayoutHeight},
  header=\zeropoint,
  footer=\zeropoint,
  setups=BookPenalties,
  grid=halfline,
]

\setuplayout[BookTextLayout]

\startsetups[BookPenalties]
  \setdefaultpenalties
  \setpenalties\widowpenalties{1}{10000}
  \setpenalties\clubpenalties {1}{10000}
\stopsetups

外部图形

\setupcaptions[location=none]

\setupexternalfigures[
  order={jpg,png,svg,pdf},
  location={local,default,global},
]

\def\inlinespectralexternalfigure[#1]{%
  \blank[small]
  \externalfigure[#1][width=\textwidth]
}

字体

\starttypescript [serif] [impactbody]
  \definefontsynonym [Serif]       [name:aleoregular] [features=default]
\stoptypescript

\starttypescript [sans] [impactheader]
  \definefontsynonym [SansCaps]   [name:gaugenormal][features={default,smallcaps}]
  \definefontsynonym [SansCapsBold][name:gaugebold][features={default,smallcaps}]
\stoptypescript

\definetypeface[impact] [rm] [serif] [impactbody]   [default]
\definetypeface[impact] [ss] [sans]  [impactheader] [default]

\usetypescript[impact]
\setupbodyfont[impact]

\def\FontSizeChapter{5}
\def\FontSizeSection{2.5}
\def\FontSizeSubsection{1.25}

\definefont[FontChapter][SansCapsBold sa \FontSizeChapter]
\definefont[FontSection][SansCaps sa \FontSizeSection]
\definefont[FontSubsection][SansCapsBold sa \FontSizeSubsection]

标题和首字母

\setuphead[subsubsection][
  style=\FontSubsection,
  number=no,
  before={\blank},
  after={\blank[small]},
  margin=\zeropoint,
  beforecommand={\startlinecorrection},
  aftercommand={\stoplinecorrection},
]

\setupinitial[
  state=start,
  color=BookBaseColour,
  distance=.25em,
  font=SansCapsBold sa 4.25,
  n=3,
]

插图

矢量图形包括:

问题

如何设置字体和外部图形以使其始终网格对齐?

想法

一些行不通的想法。

线路校正

使用linecorrection命令没有效果:

\def\inlinespectralexternalfigure[#1]{%
  \startlinecorrection
  \externalfigure[#1][width=\textwidth]
  \stoplinecorrection
}

图像填充

用空白填充 SVG 非常耗时、容易出错,并且不能提供足够细粒度的控制来完善网格对齐。

空白命令

插入\blank使用不同的数量(smalldepth)可以提供更多的控制,但仍然无法完美对齐。

答案1

来自网格诡计手册部分:

\definefloat[inlinefigure][inlinefigures][figure]
\setupcaption[inlinefigure][inbetween=]
\setupfloat[inlinefigure][default={here,none}]

\def\inlinespectralexternalfigure[#1]{%
  \placeinlinefigure{}{%
    \externalfigure[#1][width=\textwidth,lines=1,grid=yes]
  }
}

生成以下带有网格对齐文本的内嵌图像:

Grid-aligned text

相关内容