Re: Ridefinire \@makecaption e \caption

#58998
Up
0
Down
::

Consigli?

Prima di tutto di non usare \edef\CAP{#3} né \edef\LAB{#4}, vai solo in cerca di problemi: \def è perfettamente adatto allo scopo.

Non vedo grandi problemi; la definizione di \@makecaption in article.cls è
`\long\def\@makecaption#1#2{%
\vskip\abovecaptionskip
\sbox\@tempboxa{#1: #2}%
\ifdim \wd\@tempboxa >\hsize
#1: #2\par
\else
\global \@minipagefalse
\hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%

\fi
\vskip\belowcaptionskip}`
A te serve la parte che ho messo in evidenza in blu (dove #1 è \fnum@figure); direi che puoi fare qualcosa del genere:
`\sbox\@captionbox{\fnum@figure: \CAP}%
\ifdim\wd\@captionbox>X
\sbox\@captionbox{\parbox{X}\fnumfigure: \CAP}}%
\fi`
A questo punto hai a disposizione \ht\@captionbox e \dp\@captionbox per decidere quanto alto fare il tuo rettangolo inferiore. Con X denoto una dimensione che devi decidere tu: la massima larghezza della didascalia. Poi userai qualche magia di TiKZ per inserire \box\@captionbox dove ti pare.

Il codice completo dovrà andare tra \makeatletter e \makeatother e dopo \makeatletter dovrai inserire anche \newbox\@captionbox.

Ciao
Enrico

PS: ho leggermente modificato il tuo messaggio, se vuoi sapere dove, cerca \ddt. 😉

Go to top