위쪽 가장자리를 기준으로 그리드의 Figure 정렬

위쪽 가장자리를 기준으로 그리드의 Figure 정렬

제가 조판 중인 책에 그림을 배치하려고 합니다. 대부분은 페이지 상단에 표시됩니다. 캡션에 책의 본문보다 더 작은 글꼴과 더 작은 줄 간격을 사용하고 싶습니다.

\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

출력 루틴에서 float 배치 명령을 재정의하여 이를 수행할 수 있습니다. 나는 단순히 원래 명령을 복사했습니다.\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

여기에 이미지 설명을 입력하세요

관련 정보