On 1/3/2015 11:11 AM, Mojca Miklavec wrote:
Hi,
Is there any way to set the maximum width of a caption? I would like to make sure that no figure caption exceeds, say, 75% of text width.
Here's an example of "bad behaviour" in the second figure:
\starttext
\reservefigure [width=5cm,height=2cm,frame=on][force] {Some very small figure with not too much text: OK}
\input tufte
This can hardly be distinguished from the main text:
\reservefigure [width=\textwidth,height=.2\textwidth,frame=on][force] {\input tufte}
\input tufte
Desired behaviour:
\placefigure[force]{\input tufte} {\hbox to .75\textwidth{\hss\framed[width=\textwidth,height=.2\textwidth]{}\hss}}
\input tufte
\stoptext
I've seen an option maxwidth, but only in connection to \externalfigure[...][maxwidth=...].
I can cheat as on the third figure above, but that seems like an ugly approach to me.
can you test this a bit: \unprotect \setupcaptions [\c!maxwidth=.75\hsize] \def\strc_floats_prepare_stack_caption_auto {\ifx\p_strc_floats_caption_align\empty \else \doifnotinset\v!middle\p_strc_floats_caption_align{\let\captionovershoot\!!zeropoint}% \fi \edef\captionhsize{\the\wd\b_strc_floats_content}% \scratchwidth\floatcaptionparameter\c!maxwidth\relax \ifdim\captionhsize>.75\hsize % float is wider than \hsize \setbox\b_strc_floats_caption\vbox {\settrialtypesetting \strc_floats_caption_set_align \hsize\scratchwidth \notesenabledfalse \strc_floats_make_complete_caption}% \ifdim\ht\scratchbox>\lineheight % more lines \setbox\b_strc_floats_caption\vbox {\strc_floats_caption_set_align \hsize\dimexpr\captionhsize-\captionovershoot\relax \ifdim\hsize<\captionminwidth\relax \hsize\scratchwidth \fi \strc_floats_make_complete_caption}% \else \setbox\b_strc_floats_caption\vbox {\strc_floats_caption_set_align \hsize\scratchwidth \strc_floats_make_complete_caption}% \fi \else % float is smaller of equal to \hsize \ifdim\captionhsize<\captionminwidth\relax \scratchdimen\captionminwidth % float smaller than min width \edef\captionhsize{\the\scratchdimen}% \fi \setbox\scratchbox\vbox % test with overshoot {\settrialtypesetting \scratchdimen\dimexpr\captionhsize+\captionovershoot+3\emwidth\relax % 3em is an average word length \ifdim\scratchdimen<\hsize \hsize\scratchdimen \fi \notesenabledfalse \strc_floats_make_complete_caption}% \ifdim\ht\scratchbox>\lineheight % at least an average word longer than a line \setbox\b_strc_floats_caption\vbox {\strc_floats_caption_set_align \scratchdimen\dimexpr\captionhsize+\captionovershoot\relax \ifdim\scratchdimen<\hsize \hsize\scratchdimen \fi \strc_floats_make_complete_caption}% \else\ifx\p_strc_floats_caption_align\empty \setbox\b_strc_floats_caption\vbox {\strc_floats_caption_set_align \hsize\captionhsize \raggedcenter % overloads \strc_floats_make_complete_caption}% \else \setbox\b_strc_floats_caption\vbox {\strc_floats_caption_set_align \hsize\captionhsize \strc_floats_make_complete_caption}% \fi\fi \fi} \protect ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------