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