將網格上的圖形與其頂部邊緣對齊

將網格上的圖形與其頂部邊緣對齊

我正在嘗試將數字放入我正在排版的書中。其中大多數最終出現在頁面頂部。我希望我的標題使用比書的正文更小的字體和更小的行距。

\usemodule[visual] % for fake words and images
\useMPlibrary[dum]

\setuppapersize[B5]

\setuplayout[
    backspace=25mm,
    topspace=20mm,
    width=131mm,
    height=200mm,
    footer=0mm,
    grid=yes]
\showgrid

\setupinterlinespace[
    line=3.5ex]

\setupbodyfont[serif,12pt]

\setupcaptions[figure][
    number=no,
    style={\itx\setupinterlinespace[small]}]

\starttext

\startplacefigure[
    location=top,
    title={\fakenwords{30}{0}}]
\externalfigure[dummy][width=\textwidth,height=7cm]
\stopplacefigure

\fakenwords{80}{1} \par
\fakenwords{80}{2}

\stoptext

在此輸入影像描述

據我所知,ConTeXt 將網格上的浮動元素與標題的底線對齊。結果是圖像的頂部以隨機高度結束,具體取決於圖像高度和標題中的行數。

我的目標是將圖像的頂部邊緣與頂線的 X 高度對齊,以便它與對頁上的文字相符。任何必要的空白都應位於標題下方。有沒有辦法在不手動調整每個浮動的情況下實現它?

答案1

您可以透過覆寫輸出例程中的浮動放置命令來完成此操作。我只是複製了原來的命令\page_one_command_flush_float_box,重新命名並刪除\snaptogrid

\usemodule[visual] % for fake words and images
\useMPlibrary[dum]

\setuppapersize[B5]

\setuplayout
  [backspace=25mm,
   topspace=20mm,
   width=131mm,
   height=200mm,
   footer=0mm,
   grid=yes]

\showgrid

\setupinterlinespace[line=3.5ex]

\setupbodyfont[serif,12pt]

\setupcaptions
  [figure]
  [number=no,
   style={\itx\setupinterlinespace[small]}]

\unexpanded\def\dontsnapfloatbox % \page_one_command_flush_float_box
  {\expandafter\ifconditional\csname c_page_floats_center_box\endcsname
     \ifdim\wd\floatbox<\hsize
       \global\setbox\floatbox\hpack to \hsize{\hss\box\floatbox\hss}%
     \fi
   \fi
   \hpack{\box\floatbox}}

\setupoutputroutine
  [singlecolumn]
  [page_otr_command_flush_float_box=\dontsnapfloatbox]

\starttext

\startplacefigure
  [location=top,
   title={\fakenwords{30}{0}}]
  \externalfigure[dummy][width=\textwidth,height=7cm]
\stopplacefigure

\fakenwords{80}{1} \par
\fakenwords{80}{2}

\stoptext

在此輸入影像描述

相關內容