図形をグリッドの上端に合わせて配置する

図形をグリッドの上端に合わせて配置する

私はタイプセットしている本に図を配置しようとしています。図のほとんどはページの上部に配置されます。キャプションには、本のメインテキストよりも小さいフォントと小さい行間隔を使用したいと思います。

\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

ここに画像の説明を入力してください

関連情報