summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/topfloat/topfloat.sty
blob: f1cfe90d8738198550433a200e5fde16ee73de9f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% TopFloat e` un pacchetto per LaTeX2e di Macchia Angelo che rappresenta
% una modifica del comando caption e crea un ambiente per impaginare fino a
% 2 elementi mobili in alto nella pagina.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\typeout{TopFloat, Version 1.0  Sep. 99, di Macchia Angelo}
%
%% Registri usati dal pacchetto:
%
\newdimen\@toplarghezza\newdimen\@topdefault\newcount\@topcount
\let\@topbox\@tempboxa
%
%% Definizione caratteri
%
\font\@toptipo=cmti7 at 10pt    % testo del tipo (esempio "Figura 1")
\font\@topdidascalia=cmti10     % testo della didascalia
%
%% definizione di @supercap: #1=tipo ; #2=testo della didascalia
%% #3=larghezza didascalia (se e` 0 => la larghezza e` quella della didascalia)
%
\long\def\@supercap#1#2#3{%
    \gdef\@captype{#1}\refstepcounter{#1}%
    \addcontentsline{\csname ext@#1\endcsname}{#1}%
    {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}%
    \@toplarghezza=#3 \normalsize
    \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces \it#2}%
}
%
%% Definizioni didascalie per ogni tipo di elemento mobile
%
%
% \tabcap[larghezza]{didascalia}
%
\newcommand{\tabcap}[2][\@topdefault]{%
        \@supercap{table}{#2}{#1}%
}
%
\newcommand{\figcap}[2][\@topdefault]{%
        \@supercap{figure}{#2}{#1}%
}
%
\long\def\@makecaption#1#2{%
  \sbox\@topbox{{\@toptipo#1}{\@topdidascalia: #2}}%
  \ifdim\@toplarghezza=0pt\@toplarghezza=\wd\@topbox\fi
  \ifdim \wd\@topbox >\@toplarghezza
  \hbox{\vbox{\kern0.5cm\parshape=1 0pt \@toplarghezza%
              {\@toptipo#1}{\@topdidascalia: #2}}}
  \else
  \hbox to\@toplarghezza{\hss\vbox to0.5cm{\vss}%
                         \hbox{{\@toptipo#1}{\@topdidascalia: #2}}\hss}
  \fi}
%
%
%% Ambiente per floats
%
\newenvironment{topfloat}[1]{%
   \begin{figure}[t]
   \@topcount=#1
   \ifnum#1>2\PackageError{TOPFLOAT}%
                               {posso impaginare fino a 2 elementi}{}%
         \else\@topdefault=\linewidth\divide\@topdefault by#1%
   \fi%
   \hbox to\linewidth\bgroup\hss\vbox\bgroup}%
{\egroup\hss\egroup\end{figure}}

\def\topI{\setbox\@topbox=\hbox\bgroup}
\def\endtopI{\egroup\@topdefault=\wd\@topbox\box\@topbox}

\def\topII{\ifnum\@topcount=1\PackageError{TOPFLOAT}%
                {Probabilmente stai cercando di impaginare 2 elementi
                 pero` a me hai detto che ne dovevo impaginare solo uno!}{}%
           \fi%
           \egroup\hss\vbox\bgroup%
           \setbox\@topbox=\hbox\bgroup}
\def\endtopII{\egroup\@topdefault=\wd\@topbox\box\@topbox}


\endinput