\def\filename{figura}


\ProvidesPackage{figura}
\usepackage{array}

% Definimos una variable de longitud "anchura" para
% medir la anchura de nuestras figuras
\newdimen\anchura

% Definicion del nuevo contador asociado a las figuras 
\newcounter{figura}
\setcounter{figura}{0}

%%% Definimos el entorno "figura" dependiente de 3 argumentos:
% 1) El argumento optativo del comando \caption (como optativo)
% 2) El argumento de \caption (leyenda de la figura)
% 3) La etiqueta para referenciar la figura
\newenvironment{figura}[3][]{%
\newcommand{\@captype}{figura}%
%%% Los "\setlength" ajustan el contenido de la figura 
%%% a las lineas de la tabla, y la anchura de lineas de tabla 
\setlength{\arrayrulewidth}{1pt}%
\setlength{\tabcolsep}{0pt}%
%%% Definimos una caja que contendrá nuestra figura
\newbox\caja%
%%% Creamos comandos que contengan los argumentos 
%%% del entorno figura. Tambíen uno nulo para luego
%%% decidir si el argumento optativo está vacío o no
\def\nulo{}
\def\tocleyenda{#1}%
\def\leyenda{#2}%
\def\referencia{#3}%
\begin{tabular}[b]{|c|}%
\hline%
%%% Definimos la caja con el contenido del entorno. 
%%% Notar cómo usamos \bgroup en vez de "{" para 
%%% el delimitador de comienzo de la \hbox
\global\setbox\caja=\hbox\bgroup%
%%% Acabadas las definiciones de entrada del \newenvironment, 
%%% en las definiciones de salida comenzamos por cerrar con
%%% \egroup la \hbox anterior
}{\egroup%
%%% Escribimos el contenido de \caja y ajustamos espacios
\copy\caja\vspace*{-3.5mm}%
\tabularnewline\hline%
%%% Medimos la anchura de la caja con el gráfico
\settowidth{\anchura}{\copy\caja}%
%%% Colocamos el caption en una caja \parbox de 
%%% anchura 0.9 veces la anchura del gráfico
\parbox[b]{0.9\anchura}{%
%%% Dependiendo de que el argumento optativo esté vacío o no, 
%%% usamos el comando \caption{leyenda} ó \caption[leyendacorta]{leyenda}
\ifx \tocleyenda\nulo \caption{\leyenda}\label{\referencia}%
\else \caption[\tocleyenda]{\leyenda}\label{\referencia}\fi}%
\tabularnewline\hline%
\end{tabular}%
}

%%% Lo siguiente añade nuestras figuras 
%%% a la tabla de contenidos para figuras
\newcommand{\figuraname}{Figura}
\newcommand{\listfiguraname}{Índice de Figuras}

\newcommand{\ext@figura}{lof}
\newcommand{\fnum@figura}{\figuraname ~\thefigura }
\newcommand{\l@figura}{\@dottedtocline {1}{1.5em}{2.3em}}
\newcommand{\listadefiguras}{%
   \@figurasection*{\listfiguraname 
      \@mkboth{\uppercase{\listfiguraname}}%
         {\uppercase{\listfiguraname}}}%
   \@starttoc {lof}%
   }
\@ifundefined{chapter}{%
   \newcommand\@figurasection{\section}%
   }{%
   \newcommand\@figurasection{\chapter}%
   \renewcommand\thefigura{\thechapter.\arabic{listing}}%
   }
   


\ProcessOptions

 
\endinput
