Ich versuche, Abbildungen in einem Buch zu platzieren, das ich gerade setze. Die meisten davon landen am oberen Seitenrand. Ich möchte, dass meine Bildunterschriften eine kleinere Schriftart mit kleinerem Zeilenabstand verwenden als der Haupttext des Buches.
\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
So wie ich das sehe, richtet ConTeXt Floats auf einem Raster an der untersten Zeile einer Bildunterschrift aus. Das Ergebnis ist, dass die Oberseite des Bildes je nach Bildhöhe und Zeilenanzahl in der Bildunterschrift auf einer zufälligen Höhe endet.
Mein Ziel ist es, die Oberkante des Bildes an der X-Höhe der oberen Zeile auszurichten, sodass sie mit dem Text auf der gegenüberliegenden Seite übereinstimmt. Alle erforderlichen Leerzeichen sollten unter der Überschrift stehen. Gibt es eine Möglichkeit, dies zu erreichen, ohne jeden Float manuell anzupassen?
Antwort1
Sie können dies tun, indem Sie den Float-Platzierungsbefehl in der Ausgaberoutine überschreiben. Ich habe einfach den ursprünglichen Befehl kopiert\page_one_command_flush_float_box
, umbenannt und entfernt \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