Problemas con múltiples \starthanging \stophanging en ConTeXT

Problemas con múltiples \starthanging \stophanging en ConTeXT

Estoy intentando colocar varias figuras con texto lateral adicional usando ConTeXT, una tras otra.

Cuando hay dos figuras seguidas se superponen. ¿Cómo deberían separarse?

El siguiente código crea figuras superpuestas cuando ejecuto ConTeXT.

\starthanging{
\placefigure[force][fig:first]{Caption 1} {\externalfigure[first-figure][width=\textwidth]}}
\inother[width=5cm]{Some text for the other bit}
\stophanging

\starthanging{
\placefigure[force][fig:second]{Caption 2} {\externalfigure[second-figure][width=\textwidth]}}
 \inother[width=5cm]{Some text for the other bit 2}
\stophanging

Lo que estoy tratando de hacer es esto:

ingrese la descripción de la imagen aquí

Respuesta1

Como mencionó Aditya, colgar es el enfoque equivocado aquí. En el hilo que enlazó con Hans y Wolfgang ya se ofrecen dos soluciones. Presentaré una tercera, basada en la solución de Wolfgang, con las siguientes características:

  • El texto adicional se escribe en el margen, no sólo cerca de la figura.
  • Utiliza la interfaz margindata. Esto permite manipular el texto del margen utilizando el método habitual.Interfaz de contexto.
  • Intenté evitar los comandos de bajo nivel tanto como fuera posible.
  • El texto de la figura adicional es opcional.
  • Los textos de margen adicionales están centrados de forma predeterminada. Si su altura excede la altura de la figura, están alineadas desde arriba.

El código

\useMPlibrary [dum]  %% only for the screenshot

\setuppagenumbering
  [alternative=doublesided]

\definemargindata
  [FigureMargin]
  [inouter]
  [voffset=-\dimexpr\nextboxht-\strutheight\relax]

\definemarginframed
  [FigureMargin]
  [height=\nextboxht,
   align={flushleft, lohi}]

\starttexdefinition FigureText
  \dowithnextbox{
    \startlinealignment[middle]
      \copy\nextbox
      \doifsomething{\floatuserdataparameter{text}}
        {\FigureMargin{\floatuserdataparameter{text}}}
    \stoplinealignment
    }
    \hbox
\stoptexdefinition

\setupfloat
  [figure]
  [command=\FigureText]

Primero, se define un conjunto de datos de margen individual. Para alinear correctamente el texto del margen, utiliza un marco con eltodas las configuraciones que los marcos suelen aceptar.

Luego se define el comando FigureTextque escribe el contenido de la figura y el texto del margen adicional. No es responsable del título. El comando FigureTexttoma un argumento, que es el contenido de la figura. El dowithnextboxtruco permite un fácil acceso a las dimensiones del cuadro, que se utiliza para alinear correctamente el texto del margen. Esto permite la definición de la macro sin parámetro.

El texto del margen se pasa como segundo argumento a \startplacefigure y recogió usando \floatuserdataparameter.

Ejemplo

Aquí hay un ejemplo de cómo usarlo:

\showframe
\starttext
\dorecurse{2}{%%
  \startplacefigure
    [title=Some figure]
    [text=Some additional text for the margin.]
    \externalfigure
  \stopplacefigure

  \startplacefigure
    [title=Another figure]
    [text=Some more margin text for the other figure.]
    \externalfigure [dum] [width=\textwidth]
  \stopplacefigure
}
\stoptext

captura de pantalla1

Advertencias

No se tiene en cuenta la altura de los textos de los márgenes. Si los flotantes se colocan consecutivamente, los textos de los márgenes pueden superponerse. Ejemplo:

\starttext
\dorecurse{2}{%%
  \startplacefigure
    [title=Some figure]
    [text=\input ward\par]
    \externalfigure
  \stopplacefigure}
\stoptext

captura de pantalla2

información relacionada