]> git.llucax.com Git - z.facultad/75.00/informe.git/commitdiff
Unificar extensiones fig y ftable
authorLeandro Lucarella <llucax@gmail.com>
Thu, 14 Oct 2010 03:16:31 +0000 (00:16 -0300)
committerLeandro Lucarella <llucax@gmail.com>
Thu, 14 Oct 2010 03:16:31 +0000 (00:16 -0300)
Ambas extensiones era prácticamente iguales, por lo que se unifican para
que sea más simple de mantener el código.

ext/flt.py [moved from ext/fig.py with 65% similarity]
ext/ftable.py [deleted file]
source/conclusion.rst
source/conf.py
source/dgc.rst
source/gc.rst
source/solucion.rst

similarity index 65%
rename from ext/fig.py
rename to ext/flt.py
index 043f628d08aedf33911f06c0490a3d2a3f28806c..d7b35b9dc6ceb0aa33c1159e3539ca6fd37643fd 100644 (file)
@@ -8,7 +8,7 @@ DEFAULT_PLACES  = 'btp'
 DEFAULT_PADDING = '0.1'
 
 
-# subfig
+# subflt
 ############################################################################
 
 class subcap(nodes.Part, nodes.TextElement):
@@ -21,19 +21,19 @@ def latex_depart_subcap(self, node):
     self.body.append(']{')
 
 
-class subfig(nodes.General, nodes.Element):
+class subflt(nodes.General, nodes.Element):
     pass
 
-def latex_visit_subfig(self, node):
+def latex_visit_subflt(self, node):
     space = '\\hspace{%sin}\n' % node['space'] if node['space'] else ''
     self.body.append(space)
     self.body.append('\\subfloat')
 
-def latex_depart_subfig(self, node):
+def latex_depart_subflt(self, node):
     self.body.append('}\n')
 
 
-class SubfigDirective(Directive):
+class SubfltDirective(Directive):
 
     has_content = True
     required_arguments = 0
@@ -46,25 +46,25 @@ class SubfigDirective(Directive):
 
     def run(self):
         self.assert_has_content()
-        subfig_node = subfig('\n'.join(self.content))
-        subfig_node['label'] = self.options.get('label', None)
-        subfig_node['space'] = self.options.get('space', None)
+        subflt_node = subflt('\n'.join(self.content))
+        subflt_node['label'] = self.options.get('label', None)
+        subflt_node['space'] = self.options.get('space', None)
         if self.arguments and self.arguments[0]:
-            subfig_node['label'] = self.arguments[0]
+            subflt_node['label'] = self.arguments[0]
         node = nodes.Element() # anonymous container for parsing
         self.state.nested_parse(self.content, self.content_offset, node)
         first_node = node[0]
         if isinstance(first_node, nodes.paragraph):
             cap = subcap(first_node.rawsource, '', *first_node.children)
-            subfig_node += cap
-            subfig_node += node[1:]
+            subflt_node += cap
+            subflt_node += node[1:]
         else:
-            subfig_node += subcap('', '', nodes.Text(''))
-            subfig_node += node[:]
-        return [subfig_node]
+            subflt_node += subcap('', '', nodes.Text(''))
+            subflt_node += node[:]
+        return [subflt_node]
 
 
-# fig
+# captions / padding
 ############################################################################
 
 class captitle(nodes.Part, nodes.TextElement):
@@ -96,25 +96,37 @@ def latex_depart_pad(self, node):
     #self.body.append('\\hspace{%sin}\n' % DEFAULT_PADDING) #node['inches'])
 
 
-class fig(nodes.General, nodes.Element):
+
+# flt
+############################################################################
+
+class flt(nodes.General, nodes.Element):
     pass
 
-def latex_visit_fig(self, node):
-    self.body.append('\\begin{figure}[%s]\n' % node['placement'])
+def latex_visit_flt(self, node):
+    self.body.append('\\begin{%s}[%s]\n' % (node['type'], node['placement']))
     self.body.append('' if node['nocenter'] else '\\centering\n')
 
-def latex_depart_fig(self, node):
+def latex_depart_flt(self, node):
     label = '\\label{%s}\n' % node['label'] if node['label'] else ''
     self.body.append(label)
-    self.body.append('\\end{figure}\n\n')
+    self.body.append('\\end{%s}\n\n' % node['type'])
+
+class FltDirective(Directive):
 
-class FigDirective(Directive):
+    flt_types = ('figure', 'table')
+    def flt_type(argument):
+        # This is not callable as self.align.  We cannot make it a
+        # staticmethod because we're saving an unbound method in
+        # option_spec below.
+        return directives.choice(argument, FltDirective.flt_types)
 
     has_content = True
     required_arguments = 0
     optional_arguments = 1
     final_argument_whitespace = True
     option_spec = dict(
+        type      = flt_type,
         label     = directives.unchanged,
         placement = directives.unchanged,
         padding   = float,
@@ -123,13 +135,14 @@ class FigDirective(Directive):
 
     def run(self):
         self.assert_has_content()
-        fig_node = fig('\n'.join(self.content))
-        fig_node['label'] = self.options.get('label', None)
-        fig_node['placement'] = self.options.get('placement', DEFAULT_PLACES)
-        fig_node['padding'] = self.options.get('padding', DEFAULT_PADDING)
-        fig_node['nocenter'] = 'nocenter' in self.options
+        flt_node = flt('\n'.join(self.content))
+        flt_node['type'] = self.options.get('type', 'figure')
+        flt_node['label'] = self.options.get('label', None)
+        flt_node['placement'] = self.options.get('placement', DEFAULT_PLACES)
+        flt_node['padding'] = self.options.get('padding', DEFAULT_PADDING)
+        flt_node['nocenter'] = 'nocenter' in self.options
         if self.arguments and self.arguments[0]:
-            fig_node['label'] = self.arguments[0]
+            flt_node['label'] = self.arguments[0]
         node = nodes.Element() # anonymous container for parsing
         self.state.nested_parse(self.content, self.content_offset, node)
         first_node = None
@@ -149,7 +162,7 @@ class FigDirective(Directive):
             node = node[2:]
         elif is_first_para:
             capt = captitle(first_node.rawsource, '', *first_node.children)
-            capd = capdesc(first_node.rawsource, '', *first_node.children)
+            capt = capdesc(first_node.rawsource, '', *first_node.children)
             node = node[1:]
         elif is_second_para:
             capt = captitle(second_node.rawsource, '', *second_node.children)
@@ -158,30 +171,30 @@ class FigDirective(Directive):
         first = True
         children = []
         for n in node:
-            if isinstance(n, subfig):
+            if isinstance(n, subflt):
                 if first:
                     first = False
                 else:
                     children.append(pad('', '', nodes.Text(''),
-                            inches=fig_node['padding']))
+                            inches=flt_node['padding']))
             children.append(n)
-        fig_node += children
+        flt_node += children
         if capt and capd:
-            fig_node += capt
-            fig_node += capd
-        return [fig_node]
+            flt_node += capt
+            flt_node += capd
+        return [flt_node]
 
 
 
 def setup(app):
     app.add_node(subcap, latex=(latex_visit_subcap, latex_depart_subcap))
-    app.add_node(subfig, latex=(latex_visit_subfig, latex_depart_subfig))
+    app.add_node(subflt, latex=(latex_visit_subflt, latex_depart_subflt))
     app.add_node(captitle, latex=(latex_visit_captitle, latex_depart_captitle))
     app.add_node(capdesc, latex=(latex_visit_capdesc, latex_depart_capdesc))
     app.add_node(pad, latex=(latex_visit_pad, latex_depart_pad))
-    app.add_node(fig, latex=(latex_visit_fig, latex_depart_fig))
-    app.add_directive('fig', FigDirective)
-    app.add_directive('subfig', SubfigDirective)
+    app.add_node(flt, latex=(latex_visit_flt, latex_depart_flt))
+    app.add_directive('flt', FltDirective)
+    app.add_directive('subflt', SubfltDirective)
 
 
 # vim: set et sw=4 sts=4 :
diff --git a/ext/ftable.py b/ext/ftable.py
deleted file mode 100644 (file)
index fdc51c6..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-
-from docutils import nodes, utils
-from docutils.parsers.rst import directives
-from sphinx.util.compat import Directive
-
-
-DEFAULT_PLACES  = 'btp'
-DEFAULT_PADDING = '0.1'
-
-
-# subtable
-############################################################################
-
-class subtcap(nodes.Part, nodes.TextElement):
-    pass
-
-def latex_visit_subtcap(self, node):
-    self.body.append('[')
-
-def latex_depart_subtcap(self, node):
-    self.body.append(']{')
-
-
-class subtable(nodes.General, nodes.Element):
-    pass
-
-def latex_visit_subtable(self, node):
-    space = '\\hspace{%sin}\n' % node['space'] if node['space'] else ''
-    self.body.append(space)
-    self.body.append('\\subfloat')
-
-def latex_depart_subtable(self, node):
-    self.body.append('}\n')
-
-
-class SubtableDirective(Directive):
-
-    has_content = True
-    required_arguments = 0
-    optional_arguments = 1
-    final_argument_whitespace = True
-    option_spec = dict(
-        label   = directives.unchanged,
-        space   = float,
-    )
-
-    def run(self):
-        self.assert_has_content()
-        subtable_node = subtable('\n'.join(self.content))
-        subtable_node['label'] = self.options.get('label', None)
-        subtable_node['space'] = self.options.get('space', None)
-        if self.arguments and self.arguments[0]:
-            subtable_node['label'] = self.arguments[0]
-        node = nodes.Element() # anonymous container for parsing
-        self.state.nested_parse(self.content, self.content_offset, node)
-        first_node = node[0]
-        if isinstance(first_node, nodes.paragraph):
-            cap = subtcap(first_node.rawsource, '', *first_node.children)
-            subtable_node += cap
-            subtable_node += node[1:]
-        else:
-            subtable_node += subtcap('', '', nodes.Text(''))
-            subtable_node += node[:]
-        return [subtable_node]
-
-
-# ftable
-############################################################################
-
-class captitle(nodes.Part, nodes.TextElement):
-    pass
-
-def latex_visit_captitle(self, node):
-    self.body.append('\\caption[')
-
-def latex_depart_captitle(self, node):
-    self.body.append(']')
-
-class capdesc(nodes.Part, nodes.TextElement):
-    pass
-
-def latex_visit_capdesc(self, node):
-    self.body.append('{')
-
-def latex_depart_capdesc(self, node):
-    self.body.append('}\n')
-
-class tpad(nodes.Part, nodes.TextElement):
-    pass
-
-def latex_visit_tpad(self, node):
-    self.body.append('\\hspace{%sin}\n' % node['inches'])
-
-def latex_depart_tpad(self, node):
-    pass
-    #self.body.append('\\hspace{%sin}\n' % DEFAULT_PADDING) #node['inches'])
-
-
-class ftable(nodes.General, nodes.Element):
-    pass
-
-def latex_visit_ftable(self, node):
-    self.body.append('\\begin{table}[%s]\n' % node['placement'])
-    self.body.append('' if node['nocenter'] else '\\centering\n')
-
-def latex_depart_ftable(self, node):
-    label = '\\label{%s}\n' % node['label'] if node['label'] else ''
-    self.body.append(label)
-    self.body.append('\\end{table}\n\n')
-
-class FTableDirective(Directive):
-
-    has_content = True
-    required_arguments = 0
-    optional_arguments = 1
-    final_argument_whitespace = True
-    option_spec = dict(
-        label     = directives.unchanged,
-        placement = directives.unchanged,
-        padding   = float,
-        nocenter  = directives.flag,
-    )
-
-    def run(self):
-        self.assert_has_content()
-        ftable_node = ftable('\n'.join(self.content))
-        ftable_node['label'] = self.options.get('label', None)
-        ftable_node['placement'] = self.options.get('placement', DEFAULT_PLACES)
-        ftable_node['padding'] = self.options.get('padding', DEFAULT_PADDING)
-        ftable_node['nocenter'] = 'nocenter' in self.options
-        if self.arguments and self.arguments[0]:
-            ftable_node['label'] = self.arguments[0]
-        node = nodes.Element() # anonymous container for parsing
-        self.state.nested_parse(self.content, self.content_offset, node)
-        first_node = None
-        second_node = None
-        try:
-            first_node = node[0]
-            second_node = node[1]
-        except IndexError:
-            pass
-        is_first_para = isinstance(first_node, nodes.paragraph)
-        is_second_para = isinstance(second_node, nodes.paragraph)
-        capt = None
-        capd = None
-        if is_first_para and is_second_para:
-            capt = captitle(first_node.rawsource, '', *first_node.children)
-            capd = capdesc(second_node.rawsource, '', *second_node.children)
-            node = node[2:]
-        elif is_first_para:
-            capt = captitle(first_node.rawsource, '', *first_node.children)
-            capd = capdesc(first_node.rawsource, '', *first_node.children)
-            node = node[1:]
-        elif is_second_para:
-            capt = captitle(second_node.rawsource, '', *second_node.children)
-            capd = capdesc(second_node.rawsource, '', *second_node.children)
-            node = node[1:]
-        first = True
-        children = []
-        for n in node:
-            if isinstance(n, subtable):
-                if first:
-                    first = False
-                else:
-                    children.append(tpad('', '', nodes.Text(''),
-                            inches=ftable_node['padding']))
-            children.append(n)
-        ftable_node += children
-        if capt and capd:
-            ftable_node += capt
-            ftable_node += capd
-        return [ftable_node]
-
-
-
-def setup(app):
-    app.add_node(subtcap, latex=(latex_visit_subtcap, latex_depart_subtcap))
-    app.add_node(subtable, latex=(latex_visit_subtable, latex_depart_subtable))
-    app.add_node(captitle, latex=(latex_visit_captitle, latex_depart_captitle))
-    app.add_node(capdesc, latex=(latex_visit_capdesc, latex_depart_capdesc))
-    app.add_node(tpad, latex=(latex_visit_tpad, latex_depart_tpad))
-    app.add_node(ftable, latex=(latex_visit_ftable, latex_depart_ftable))
-    app.add_directive('ftable', FTableDirective)
-    app.add_directive('subtable', SubtableDirective)
-
-
-# vim: set et sw=4 sts=4 :
index 7df0af3cd4b5328e1b57118bfd1d17c422d4bb81..7fc9e6b43419a37146f3c119ecbcc9fc7839168d 100644 (file)
@@ -230,7 +230,8 @@ y limitaciones conocidas. A continuación se describe cada una de ellos.
   precio sin obtener los beneficios. Queda pendiente analizar en más detalle
   las causas de esto y posibles optimizaciones para subsanarlo.
 
-  .. ftable:: t:con-staticsize
+  .. flt:: t:con-staticsize
+     :type: table
 
      Aumento del tamaño de la memoria estática (bytes).
 
@@ -273,7 +274,8 @@ y limitaciones conocidas. A continuación se describe cada una de ellos.
   pérdida de rendimiento, dado que puede afectar a la localidad de referencia
   del caché, por ejemplo.
 
-  .. ftable:: t:con-binsize
+  .. flt:: t:con-binsize
+     :type: table
 
      Aumento del tamaño del binario (bytes).
 
index 30dec2573f6c919e7d9d897075583353dd73e7b9..26636a3376e37ffda617071a10b43269bf10b7ec 100644 (file)
@@ -16,7 +16,7 @@ import sys, os
 # If extensions (or modules to document with autodoc) are in another directory,
 # add these directories to sys.path here. If the directory is relative to the
 # documentation root, use os.path.abspath to make it absolute, like shown here.
-sys.path.append(os.path.abspath('../ext'))
+sys.path.insert(0, os.path.abspath('../ext'))
 
 # -- General configuration -----------------------------------------------------
 
@@ -24,8 +24,7 @@ sys.path.append(os.path.abspath('../ext'))
 # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
 extensions = [
        'aafig',
-       'fig',
-       'ftable',
+       'flt',
        'vref',
        'pcodehl',
        'sphinx.ext.graphviz',
index ac69228a35b3dc6743beb47ff17dd04e95cf1abf..621d7fc8985e2821a50db5b4b4edc2cff18b5c18 100644 (file)
@@ -238,7 +238,7 @@ dicho objeto.
    para indicar la continuación de un objeto grande (que ocupan más de una
    página).
 
-.. fig:: fig:dgc-org
+.. flt:: fig:dgc-org
 
    Organización del *heap* del recolector de basura actual de D.
 
@@ -304,7 +304,7 @@ parte de una :ref:`lista de libres <gc_free_list>` (ver figura
 :vref:`fig:dgc-free-list`). Esto permite asignar objetos relativamente
 pequeños de forma bastante eficiente.
 
-.. fig:: fig:dgc-free-list
+.. flt:: fig:dgc-free-list
 
    Ejemplo de listas de libres.
 
@@ -1058,7 +1058,7 @@ C ``malloc()``, ``realloc()`` y ``free()`` directamente.
 La estructura ``Pool`` está compuesta por los siguientes atributos (ver figura
 :vref:`fig:dgc-pool`):
 
-.. fig:: fig:dgc-pool
+.. flt:: fig:dgc-pool
 
    Vista gráfica de la estructura de un *pool* de memoria.
 
@@ -1480,7 +1480,7 @@ Las opciones más importantes son:
    bits estén intactas. Esto permite detectar de forma temprana errores tanto
    en el recolector como en el programa del usuario.
 
-   .. fig:: fig:sentinel
+   .. flt:: fig:sentinel
 
       Esquema de un bloque cuando está activada la opción ``SENTINEL``.
 
index 8f042ad791a39b00bb7b0d6ff107b55291c86189..0661b93dac4a24c747529fde748868546019541e 100644 (file)
@@ -244,7 +244,7 @@ Esto es, efectivamente, una partición del *heap* (ver figura
 :vref:`fig:gc-heap-parts`).
 
 
-.. fig:: fig:gc-heap-parts
+.. flt:: fig:gc-heap-parts
 
    Distintas partes de la memoria *heap*.
 
@@ -349,11 +349,11 @@ con el marcado del grafo completo, dejando sin marcar solamente las celdas
 *basura* (en blanco).
 
 
-.. fig:: fig:gc-mark-1
+.. flt:: fig:gc-mark-1
 
    Ejemplo de marcado del grafo de conectividad (parte 1).
 
-   .. subfig::
+   .. subflt::
 
       Se comienza a marcar el grafo por la raíz r0.
 
@@ -386,7 +386,7 @@ con el marcado del grafo completo, dejando sin marcar solamente las celdas
 
          }
 
-   .. subfig::
+   .. subflt::
 
       Luego de marcar el nodo ``h1``, se procede al ``h2``.
 
@@ -420,7 +420,7 @@ con el marcado del grafo completo, dejando sin marcar solamente las celdas
 
          }
 
-   .. subfig::
+   .. subflt::
 
       Luego sigue el nodo h5.
 
@@ -456,11 +456,11 @@ con el marcado del grafo completo, dejando sin marcar solamente las celdas
          }
 
 
-.. fig:: fig:gc-mark-2
+.. flt:: fig:gc-mark-2
 
    Ejemplo de marcado del grafo de conectividad (parte 2).
 
-   .. subfig::
+   .. subflt::
 
       El nodo h5 tiene una arista al h1, pero el h1 ya fue visitado, por lo
       tanto no se visita nuevamente.
@@ -496,7 +496,7 @@ con el marcado del grafo completo, dejando sin marcar solamente las celdas
 
          }
 
-   .. subfig::
+   .. subflt::
 
       Se concluye el marcado del sub-grafo al que conecta r0, se procede
       a marcar el sub-grafo al que conecta r1, marcando al nodo h6.
@@ -533,7 +533,7 @@ con el marcado del grafo completo, dejando sin marcar solamente las celdas
 
          }
 
-   .. subfig::
+   .. subflt::
 
       El nodo h6 tiene una arista al h2, pero éste ya fue marcado por lo
       que no se vuelve a visitar. No hay más raíces, se finaliza el marcado
@@ -844,13 +844,13 @@ conduce al decremento del contador de ``h2`` y ``h3`` que permanecen en el
 *live set* ya que sus contadores siguen siendo mayores a 0 (ver figura
 :vref:`fig:gc-rc-rm-2`).
 
-.. fig:: fig:gc-rc-rm-1
+.. flt:: fig:gc-rc-rm-1
 
    Ejemplo de conteo de referencias: eliminación de una referencia (parte 1).
 
    Eliminación de la referencia ``r0`` :math:`\to` ``h1`` (parte 1).
 
-   .. subfig::
+   .. subflt::
 
       Estado inicial del grafo de conectividad.
 
@@ -897,7 +897,7 @@ conduce al decremento del contador de ``h2`` y ``h3`` que permanecen en el
 
          }
 
-   .. subfig::
+   .. subflt::
 
       Al ejecutarse ``update(r0, null)``, se comienza por visitar la celda
       ``h1``.
@@ -945,7 +945,7 @@ conduce al decremento del contador de ``h2`` y ``h3`` que permanecen en el
 
          }
 
-   .. subfig::
+   .. subflt::
 
       Se decrementa el contador de ``h1`` quedando en 0 (pasa a ser *basura*).
       Se elimina primero ``h1.l`` y luego ``h1.r``.
@@ -999,14 +999,14 @@ conduce al decremento del contador de ``h2`` y ``h3`` que permanecen en el
          }
 
 
-.. fig:: fig:gc-rc-rm-2
+.. flt:: fig:gc-rc-rm-2
    :padding: 0.5
 
    Ejemplo de conteo de referencias: eliminación de una referencia (parte 2).
 
    Eliminación de la referencia ``r0`` :math:`\to` ``h1`` (parte 2).
 
-   .. subfig::
+   .. subflt::
 
       Se decrementa el contador de ``h2`` pero no queda en 0 (permanece en el
       *live set*).
@@ -1059,7 +1059,7 @@ conduce al decremento del contador de ``h2`` y ``h3`` que permanecen en el
 
          }
 
-   .. subfig::
+   .. subflt::
 
       El contador de ``h3`` tampoco queda en 0, sigue en el *live set*.
 
@@ -1119,14 +1119,14 @@ se elimina alguna celda que apuntaba a ésta. Luego se procede a decrementar el
 contador de ``h2`` que queda en 0, transformándose en *basura* (ver figura
 :vref:`fig:gc-rc-up-1`).
 
-.. fig:: fig:gc-rc-up-1
+.. flt:: fig:gc-rc-up-1
 
    Ejemplo de conteo de referencias: actualización de una referencia (parte 1).
 
    Cambio en la referencia ``h3.l`` :math:`\to` ``h2`` a ``h3.l`` :math:`\to`
    ``h5`` (parte 1).
 
-   .. subfig::
+   .. subflt::
 
       Comienza ``update(h3.l, h5)``, se incrementa el contador de ``h5``.
 
@@ -1179,7 +1179,7 @@ contador de ``h2`` que queda en 0, transformándose en *basura* (ver figura
 
          }
 
-   .. subfig::
+   .. subflt::
 
       Luego se procede a visitar la antigua referencia de ``h3.l`` (``h2``).
 
@@ -1232,7 +1232,7 @@ contador de ``h2`` que queda en 0, transformándose en *basura* (ver figura
 
          }
 
-   .. subfig::
+   .. subflt::
 
       Se decrementa el contador de ``h2`` y queda en 0 (pasa a ser *basura*).
       Se eliminan las referencias a las hijas.
@@ -1293,14 +1293,14 @@ a apuntar a ``h5``) así que permanece en el *live set*. Finalmente se termina
 de actualizar la referencia ``h3.l`` para que apunte a ``h5`` (ver figura
 :vref:`fig:gc-rc-up-2`).
 
-.. fig:: fig:gc-rc-up-2
+.. flt:: fig:gc-rc-up-2
 
    Ejemplo de conteo de referencias: actualización de una referencia (parte 2).
 
    Cambio en la referencia ``h3.l`` :math:`\to` ``h2`` a ``h3.l`` :math:`\to`
    ``h5`` (parte 2).
 
-   .. subfig::
+   .. subflt::
 
       Se decrementa el contador de ``h4`` quedando en 0, pasa a ser *basura*.
       Se continúa con ``h5``.
@@ -1354,7 +1354,7 @@ de actualizar la referencia ``h3.l`` para que apunte a ``h5`` (ver figura
 
          }
 
-   .. subfig::
+   .. subflt::
 
       Se decrementa el contador de ``h5`` pero sigue siendo mayor que 0.
 
@@ -1407,7 +1407,7 @@ de actualizar la referencia ``h3.l`` para que apunte a ``h5`` (ver figura
 
          }
 
-   .. subfig::
+   .. subflt::
 
       Se termina por actualizar la referencia de ``h3.l`` para que apunte
       a ``h5``.
@@ -1473,7 +1473,7 @@ referencias externas y por lo tanto deberían ser *basura* también (``h5``), no
 pueden ser recicladas y su memoria es perdida (ver figura
 :vref:`fig:gc-rc-cycle`).
 
-.. fig:: fig:gc-rc-cycle
+.. flt:: fig:gc-rc-cycle
    :padding: 0.5
 
    Ejemplo de conteo de referencias: pérdida de memoria debido a un ciclo.
@@ -1481,7 +1481,7 @@ pueden ser recicladas y su memoria es perdida (ver figura
    Eliminación de la referencia ``r1`` :math:`\to` ``h3`` (pérdida de memoria
    debido a un ciclo).
 
-   .. subfig::
+   .. subflt::
 
       El ejecutarse ``update(r1, null)`` se visita la celda ``h3``.
 
@@ -1535,7 +1535,7 @@ pueden ser recicladas y su memoria es perdida (ver figura
 
          }
 
-   .. subfig::
+   .. subflt::
 
       Se decrementa el contador de ``h3`` pero sigue siendo mayor que 0 por el
       ciclo.
@@ -1684,7 +1684,7 @@ sus *low level allocators*).
    sucede y se acumulan muchos *huecos* se dice que la memoria está
    *fragmentada*.
 
-.. fig:: fig:gc-copy
+.. flt:: fig:gc-copy
 
    Estructura del *heap* de un recolector con copia de semi-espacios.
 
@@ -1818,11 +1818,11 @@ apunta a ``h3``, por lo tanto ésta es movida al *Tospace* primero, dejando una
 *forwarding address* a la nueva ubicación (ver figura
 :vref:`fig:gc-copy-ex-1`).
 
-.. fig:: fig:gc-copy-ex-1
+.. flt:: fig:gc-copy-ex-1
 
    Ejemplo de recolección con copia de semi-espacios (parte 1).
 
-   .. subfig::
+   .. subflt::
 
       Estructura inicial del *heap*. El *Fromspace* está complete y se inicial
       la recolección.
@@ -1853,7 +1853,7 @@ apunta a ``h3``, por lo tanto ésta es movida al *Tospace* primero, dejando una
          | "Tospace"                                        |
          +--------------------------------------------------+
 
-   .. subfig::
+   .. subflt::
 
       Se sigue la referencia del *root set*, copiando ``h3`` al *Tospace*
       y dejando una *forwarding address*.
@@ -1895,11 +1895,11 @@ sido visitada, solamente se actualiza la referencia apuntando a la nueva
 ubicación de ``h2`` pero no se vuelve a copiar la celda (ver figura
 :vref:`fig:gc-copy-ex-2`).
 
-.. fig:: fig:gc-copy-ex-2
+.. flt:: fig:gc-copy-ex-2
 
    Ejemplo de recolección con copia de semi-espacios (parte 2).
 
-   .. subfig::
+   .. subflt::
 
       Se sigue :math:`h3 \to h2`, copiando ``h2`` al *Tospace* y dejando una
       *forwarding address*.
@@ -1930,7 +1930,7 @@ ubicación de ``h2`` pero no se vuelve a copiar la celda (ver figura
          | "Tospace"                                        |
          +--------------------------------------------------+
 
-   .. subfig::
+   .. subflt::
 
       Se sigue :math:`h2 \to h1`, copiando ``h1``. Luego :math:`h1 \to h2`
       pero ``h2`` no se copia, sólo se actualiza la referencia con la
@@ -1969,11 +1969,11 @@ semi-espacios y se actualiza la referencia del *root set* para que apunte a la
 nueva ubicación de ``h3``, como se muestra en la figura
 :vref:`fig:gc-copy-ex-3`.
 
-.. fig:: fig:gc-copy-ex-3
+.. flt:: fig:gc-copy-ex-3
 
    Ejemplo de recolección con copia de semi-espacios (parte 3).
 
-   .. subfig::
+   .. subflt::
 
       Se sigue :math:`h1 \to h4` copiando `h4`` al *Tospace* y dejando una
       *forwarding address*.
@@ -2004,7 +2004,7 @@ nueva ubicación de ``h3``, como se muestra en la figura
          | "Tospace"   \------/                             |
          +--------------------------------------------------+
 
-   .. subfig::
+   .. subflt::
 
       Se finaliza la recolección, se intercambian los roles de los
       semi-espacios y se actualiza la referencia del *root set*.
@@ -2165,12 +2165,12 @@ clase de colectores que si bien son *stop-the-world*, utilizan todos los hilos
 disponibles para realizar la recolección (ver figura
 :vref:`fig:gc-concurrent`).
 
-.. fig:: fig:gc-concurrent
+.. flt:: fig:gc-concurrent
 
    Distintos tipos de recolectores según el comportamiento en ambientes
    multi-hilo.
 
-   .. subfig::
+   .. subflt::
 
       *Stop-the-world*.
 
@@ -2189,7 +2189,7 @@ disponibles para realizar la recolección (ver figura
          |         HH Mutator           ZZ Inactivo         XX Recolector    |
          |___________________________________________________________________|
 
-   .. subfig::
+   .. subflt::
 
       Paralelo.
 
@@ -2208,7 +2208,7 @@ disponibles para realizar la recolección (ver figura
          |         HH Mutator           ZZ Inactivo         XX Recolector    |
          |___________________________________________________________________|
 
-   .. subfig::
+   .. subflt::
 
       Concurrente.
 
@@ -2408,7 +2408,7 @@ Entonces, si el recolector tiene algún mecanismo para identificar zonas de
 alta concentración de *basura* puede hacer la recolección solo en ese área
 donde el trabajo va a ser mejor recompensado (ver figura :vref:`fig:gc-part`).
 
-.. fig:: fig:gc-part
+.. flt:: fig:gc-part
 
    Concentración de basura en distintas particiones del *heap*.
 
index 979d7fe19b25952b6659f316e59790a79743969e..53860cfe17bdcd66eefb26da2625065d3b807724 100644 (file)
@@ -935,7 +935,7 @@ puede ver, por ejemplo, el tiempo total de ejecución de Dil_ al generar la
 documentación completa del código de Tango_, según varía el valor de
 ``MAX_DEPTH``.
 
-.. fig:: fig:sol-mark-rec
+.. flt:: fig:sol-mark-rec
 
    Análisis de tiempo total de ejecución en función del valor de
    ``MAX_DEPTH``.
@@ -1105,7 +1105,8 @@ memoria. Esta información se pasa como un puntero a un arreglo de palabras con
 la estructura mostrada en la figura :vref:`fig:sol-ptrmap` y que se describe
 a continuación.
 
-.. fig:: fig:sol-ptrmap
+.. flt:: fig:sol-ptrmap
+   :type: table
 
    Estructura de la información de tipos provista por el compilador.
 
@@ -1169,7 +1170,7 @@ palabra sea realmente un puntero, pero indica que debe ser escaneado. El
 recolector debe debe ser conservativo en este caso, y escanear esa palabra
 como si fuera un puntero.
 
-.. fig:: fig:sol-ptrmap-example
+.. flt:: fig:sol-ptrmap-example
 
    Ejemplo de estructura de información de tipos generada para el tipo ``S``.
 
@@ -1229,7 +1230,7 @@ ese caso no hace falta directamente escanear ninguna palabra del bloque.
 En la figura :vref:`fig:sol-ptrmap-blk` se puede ver, como continuación del
 ejemplo anterior, como se almacenaría en memoria un objeto del tipo ``S``.
 
-.. fig:: fig:sol-ptrmap-blk
+.. flt:: fig:sol-ptrmap-blk
 
    Ejemplo de bloque que almacena un objeto de tipo ``S`` con información de
    tipo.
@@ -2082,7 +2083,8 @@ direcciones antiguo, que no tiene una componente aleatoria y asigna primero
 direcciones bajas. La opción ``-R`` solamente desactiva la componente azarosa
 al momento de asignar direcciones.
 
-.. ftable:: t:sol-setarch
+.. flt:: t:sol-setarch
+   :type: table
 
    Variación entre corridas para TBGC.
 
@@ -2092,7 +2094,7 @@ al momento de asignar direcciones.
    realizarse utilizando el desvío estándar en vez de la amplitud máxima, pero
    en este cuadro se quiere ilustrar la variación máxima, no la típica.
 
-   .. subtable::
+   .. subflt::
 
       Del tiempo total de ejecución.
 
@@ -2114,7 +2116,7 @@ al momento de asignar direcciones.
       voronoi  0.886    0.003    0.006
       ======== ======== ======== ========
 
-   .. subtable::
+   .. subflt::
 
       Del consumo máximo de memoria.
 
@@ -2165,7 +2167,7 @@ modificaciones propuestas, pero en general distan mucho de como se comporta un
 programa real, por lo que los resultados deben ser analizados teniendo esto
 presente.
 
-.. fig:: fig:sol-bigarr-1cpu
+.. flt:: fig:sol-bigarr-1cpu
 
    Resultados para ``bigarr`` (utilizando 1 procesador).
 
@@ -2174,37 +2176,37 @@ presente.
    y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de
    ejecución) o 20 corridas (para el resto).
 
-   .. subfig::
+   .. subflt::
 
       Tiempo de ejecución (seg)
 
       .. image:: plots/time-bigarr-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Cantidad de recolecciones
 
       .. image:: plots/ncol-bigarr-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Uso máximo de memoria (MiB)
 
       .. image:: plots/mem-bigarr-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       *Stop-the-world* máximo (seg)
 
       .. image:: plots/stw-bigarr-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Pausa real máxima (seg)
 
       .. image:: plots/pause-bigarr-1cpu.pdf
 
-.. fig:: fig:sol-bigarr-4cpu
+.. flt:: fig:sol-bigarr-4cpu
 
    Resultados para ``bigarr`` (utilizando 4 procesadores).
 
@@ -2213,37 +2215,37 @@ presente.
    y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de
    ejecución) o 20 corridas (para el resto).
 
-   .. subfig::
+   .. subflt::
 
       Tiempo de ejecución (seg)
 
       .. image:: plots/time-bigarr-4cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Cantidad de recolecciones
 
       .. image:: plots/ncol-bigarr-4cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Uso máximo de memoria (MiB)
 
       .. image:: plots/mem-bigarr-4cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       *Stop-the-world* máximo (seg)
 
       .. image:: plots/stw-bigarr-4cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Pausa real máxima (seg)
 
       .. image:: plots/pause-bigarr-4cpu.pdf
 
-.. fig:: fig:sol-concpu-1cpu
+.. flt:: fig:sol-concpu-1cpu
 
    Resultados para ``concpu`` (utilizando 1 procesador).
 
@@ -2252,37 +2254,37 @@ presente.
    y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de
    ejecución) o 20 corridas (para el resto).
 
-   .. subfig::
+   .. subflt::
 
       Tiempo de ejecución (seg)
 
       .. image:: plots/time-concpu-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Cantidad de recolecciones
 
       .. image:: plots/ncol-concpu-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Uso máximo de memoria (MiB)
 
       .. image:: plots/mem-concpu-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       *Stop-the-world* máximo (seg)
 
       .. image:: plots/stw-concpu-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Pausa real máxima (seg)
 
       .. image:: plots/pause-concpu-1cpu.pdf
 
-.. fig:: fig:sol-concpu-4cpu
+.. flt:: fig:sol-concpu-4cpu
 
    Resultados para ``concpu`` (utilizando 4 procesadores).
 
@@ -2291,37 +2293,37 @@ presente.
    y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de
    ejecución) o 20 corridas (para el resto).
 
-   .. subfig::
+   .. subflt::
 
       Tiempo de ejecución (seg)
 
       .. image:: plots/time-concpu-4cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Cantidad de recolecciones
 
       .. image:: plots/ncol-concpu-4cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Uso máximo de memoria (MiB)
 
       .. image:: plots/mem-concpu-4cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       *Stop-the-world* máximo (seg)
 
       .. image:: plots/stw-concpu-4cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Pausa real máxima (seg)
 
       .. image:: plots/pause-concpu-4cpu.pdf
 
-.. fig:: fig:sol-conalloc-1cpu
+.. flt:: fig:sol-conalloc-1cpu
 
    Resultados para ``conalloc`` (utilizando 1 procesador).
 
@@ -2330,37 +2332,37 @@ presente.
    y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de
    ejecución) o 20 corridas (para el resto).
 
-   .. subfig::
+   .. subflt::
 
       Tiempo de ejecución (seg)
 
       .. image:: plots/time-conalloc-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Cantidad de recolecciones
 
       .. image:: plots/ncol-conalloc-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Uso máximo de memoria (MiB)
 
       .. image:: plots/mem-conalloc-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       *Stop-the-world* máximo (seg)
 
       .. image:: plots/stw-conalloc-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Pausa real máxima (seg)
 
       .. image:: plots/pause-conalloc-1cpu.pdf
 
-.. fig:: fig:sol-conalloc-4cpu
+.. flt:: fig:sol-conalloc-4cpu
 
    Resultados para ``conalloc`` (utilizando 4 procesadores).
 
@@ -2369,37 +2371,37 @@ presente.
    y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de
    ejecución) o 20 corridas (para el resto).
 
-   .. subfig::
+   .. subflt::
 
       Tiempo de ejecución (seg)
 
       .. image:: plots/time-conalloc-4cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Cantidad de recolecciones
 
       .. image:: plots/ncol-conalloc-4cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Uso máximo de memoria (MiB)
 
       .. image:: plots/mem-conalloc-4cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       *Stop-the-world* máximo (seg)
 
       .. image:: plots/stw-conalloc-4cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Pausa real máxima (seg)
 
       .. image:: plots/pause-conalloc-4cpu.pdf
 
-.. fig:: fig:sol-split-1cpu
+.. flt:: fig:sol-split-1cpu
 
    Resultados para ``split`` (utilizando 1 procesador).
 
@@ -2408,37 +2410,37 @@ presente.
    máximo (en blanco) calculados sobre 50 corridas (para tiempo de ejecución)
    o 20 corridas (para el resto).
 
-   .. subfig::
+   .. subflt::
 
       Tiempo de ejecución (seg)
 
       .. image:: plots/time-split-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Cantidad de recolecciones
 
       .. image:: plots/ncol-split-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Uso máximo de memoria (MiB)
 
       .. image:: plots/mem-split-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       *Stop-the-world* máximo (seg)
 
       .. image:: plots/stw-split-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Pausa real máxima (seg)
 
       .. image:: plots/pause-split-1cpu.pdf
 
-.. fig:: fig:sol-mcore-1cpu
+.. flt:: fig:sol-mcore-1cpu
 
    Resultados para ``mcore`` (utilizando 1 procesador).
 
@@ -2447,37 +2449,37 @@ presente.
    y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de
    ejecución) o 20 corridas (para el resto).
 
-   .. subfig::
+   .. subflt::
 
       Tiempo de ejecución (seg)
 
       .. image:: plots/time-mcore-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Cantidad de recolecciones
 
       .. image:: plots/ncol-mcore-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Uso máximo de memoria (MiB)
 
       .. image:: plots/mem-mcore-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       *Stop-the-world* máximo (seg)
 
       .. image:: plots/stw-mcore-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Pausa real máxima (seg)
 
       .. image:: plots/pause-mcore-1cpu.pdf
 
-.. fig:: fig:sol-mcore-4cpu
+.. flt:: fig:sol-mcore-4cpu
 
    Resultados para ``mcore`` (utilizando 4 procesadores).
 
@@ -2486,37 +2488,37 @@ presente.
    y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de
    ejecución) o 20 corridas (para el resto).
 
-   .. subfig::
+   .. subflt::
 
       Tiempo de ejecución (seg)
 
       .. image:: plots/time-mcore-4cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Cantidad de recolecciones
 
       .. image:: plots/ncol-mcore-4cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Uso máximo de memoria (MiB)
 
       .. image:: plots/mem-mcore-4cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       *Stop-the-world* máximo (seg)
 
       .. image:: plots/stw-mcore-4cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Pausa real máxima (seg)
 
       .. image:: plots/pause-mcore-4cpu.pdf
 
-.. fig:: fig:sol-rnddata-1cpu
+.. flt:: fig:sol-rnddata-1cpu
 
    Resultados para ``rnddata`` (utilizando 1 procesador).
 
@@ -2525,31 +2527,31 @@ presente.
    y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de
    ejecución) o 20 corridas (para el resto).
 
-   .. subfig::
+   .. subflt::
 
       Tiempo de ejecución (seg)
 
       .. image:: plots/time-rnddata-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Cantidad de recolecciones
 
       .. image:: plots/ncol-rnddata-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Uso máximo de memoria (MiB)
 
       .. image:: plots/mem-rnddata-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       *Stop-the-world* máximo (seg)
 
       .. image:: plots/stw-rnddata-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Pausa real máxima (seg)
 
@@ -2749,7 +2751,7 @@ trabajo.
 Resultados para pruebas pequeñas
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-.. fig:: fig:sol-bh-1cpu
+.. flt:: fig:sol-bh-1cpu
 
    Resultados para ``bh`` (utilizando 1 procesador).
 
@@ -2758,31 +2760,31 @@ Resultados para pruebas pequeñas
    y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de
    ejecución) o 20 corridas (para el resto).
 
-   .. subfig::
+   .. subflt::
 
       Tiempo de ejecución (seg)
 
       .. image:: plots/time-bh-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Cantidad de recolecciones
 
       .. image:: plots/ncol-bh-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Uso máximo de memoria (MiB)
 
       .. image:: plots/mem-bh-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       *Stop-the-world* máximo (seg)
 
       .. image:: plots/stw-bh-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Pausa real máxima (seg)
 
@@ -2798,7 +2800,8 @@ suspicacia.
 
 ``bh``
 ^^^^^^
-.. ftable:: t:sol-prec-mem-bh
+.. flt:: t:sol-prec-mem-bh
+   :type: table
 
    Memoria pedida y asignada para ``bh`` según modo de marcado.
 
@@ -2818,7 +2821,7 @@ realista se puede observar el efecto positivo del marcado preciso, en especial
 en la cantidad de recolecciones efectuadas (aunque no se traduzca en un menor
 consumo de memoria).
 
-.. fig:: fig:sol-bisort-1cpu
+.. flt:: fig:sol-bisort-1cpu
 
    Resultados para ``bisort`` (utilizando 1 procesador).
 
@@ -2827,31 +2830,31 @@ consumo de memoria).
    y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de
    ejecución) o 20 corridas (para el resto).
 
-   .. subfig::
+   .. subflt::
 
       Tiempo de ejecución (seg)
 
       .. image:: plots/time-bisort-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Cantidad de recolecciones
 
       .. image:: plots/ncol-bisort-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Uso máximo de memoria (MiB)
 
       .. image:: plots/mem-bisort-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       *Stop-the-world* máximo (seg)
 
       .. image:: plots/stw-bisort-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Pausa real máxima (seg)
 
@@ -2868,7 +2871,7 @@ realmente asignada por el recolector (y la memoria desperdiciada) cuando se
 usa marcado conservativo y preciso. Estos valores fueron tomados usando la
 opción ``malloc_stats_file`` (ver :ref:`sol_stats`).
 
-.. fig:: fig:sol-em3d-1cpu
+.. flt:: fig:sol-em3d-1cpu
 
    Resultados para ``em3d`` (utilizando 1 procesador).
 
@@ -2877,31 +2880,31 @@ opción ``malloc_stats_file`` (ver :ref:`sol_stats`).
    y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de
    ejecución) o 20 corridas (para el resto).
 
-   .. subfig::
+   .. subflt::
 
       Tiempo de ejecución (seg)
 
       .. image:: plots/time-em3d-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Cantidad de recolecciones
 
       .. image:: plots/ncol-em3d-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Uso máximo de memoria (MiB)
 
       .. image:: plots/mem-em3d-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       *Stop-the-world* máximo (seg)
 
       .. image:: plots/stw-em3d-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Pausa real máxima (seg)
 
@@ -2924,7 +2927,7 @@ total prácticamente no varía entre TBGC y CDGC, ni entre las diferentes
 configuraciones del último (evidentemente en este caso no se aprovecha el
 caché de ``findSize()``).
 
-.. fig:: fig:sol-tsp-1cpu
+.. flt:: fig:sol-tsp-1cpu
 
    Resultados para ``tsp`` (utilizando 1 procesador).
 
@@ -2933,31 +2936,31 @@ caché de ``findSize()``).
    y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de
    ejecución) o 20 corridas (para el resto).
 
-   .. subfig::
+   .. subflt::
 
       Tiempo de ejecución (seg)
 
       .. image:: plots/time-tsp-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Cantidad de recolecciones
 
       .. image:: plots/ncol-tsp-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Uso máximo de memoria (MiB)
 
       .. image:: plots/mem-tsp-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       *Stop-the-world* máximo (seg)
 
       .. image:: plots/stw-tsp-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Pausa real máxima (seg)
 
@@ -2979,7 +2982,7 @@ sorprendentemente similares a los de ``bisort``. La única diferencia es que en
 este caso el marcado preciso y el uso de *early collection** no parecen
 ayudar; por el contrario, aumentan levemente el tiempo de pausa real.
 
-.. fig:: fig:sol-voronoi-1cpu
+.. flt:: fig:sol-voronoi-1cpu
 
    Resultados para ``voronoi`` (utilizando 1 procesador).
 
@@ -2988,37 +2991,37 @@ ayudar; por el contrario, aumentan levemente el tiempo de pausa real.
    y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de
    ejecución) o 20 corridas (para el resto).
 
-   .. subfig::
+   .. subflt::
 
       Tiempo de ejecución (seg)
 
       .. image:: plots/time-voronoi-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Cantidad de recolecciones
 
       .. image:: plots/ncol-voronoi-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Uso máximo de memoria (MiB)
 
       .. image:: plots/mem-voronoi-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       *Stop-the-world* máximo (seg)
 
       .. image:: plots/stw-voronoi-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Pausa real máxima (seg)
 
       .. image:: plots/pause-voronoi-1cpu.pdf
 
-.. fig:: fig:sol-voronoi-4cpu
+.. flt:: fig:sol-voronoi-4cpu
 
    Resultados para ``voronoi`` (utilizando 4 procesadores).
 
@@ -3027,31 +3030,31 @@ ayudar; por el contrario, aumentan levemente el tiempo de pausa real.
    y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de
    ejecución) o 20 corridas (para el resto).
 
-   .. subfig::
+   .. subflt::
 
       Tiempo de ejecución (seg)
 
       .. image:: plots/time-voronoi-4cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Cantidad de recolecciones
 
       .. image:: plots/ncol-voronoi-4cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Uso máximo de memoria (MiB)
 
       .. image:: plots/mem-voronoi-4cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       *Stop-the-world* máximo (seg)
 
       .. image:: plots/stw-voronoi-4cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Pausa real máxima (seg)
 
@@ -3112,7 +3115,7 @@ cambian).
 Resultados para pruebas reales
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-.. fig:: fig:sol-dil-1cpu
+.. flt:: fig:sol-dil-1cpu
 
    Resultados para ``dil`` (utilizando 1 procesador).
 
@@ -3121,31 +3124,31 @@ Resultados para pruebas reales
    y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de
    ejecución) o 20 corridas (para el resto).
 
-   .. subfig::
+   .. subflt::
 
       Tiempo de ejecución (seg)
 
       .. image:: plots/time-dil-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Cantidad de recolecciones
 
       .. image:: plots/ncol-dil-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Uso máximo de memoria (MiB)
 
       .. image:: plots/mem-dil-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       *Stop-the-world* máximo (seg)
 
       .. image:: plots/stw-dil-1cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Pausa real máxima (seg)
 
@@ -3167,7 +3170,7 @@ principalmente al mal factor de ocupación del *heap* de TBGC, dado que
 utilizando CDGC con la opción ``min_free=0`` se obtiene una media del orden de
 los 80 segundos, bastante más alta que el tiempo obtenido para TBGC.
 
-.. fig:: fig:sol-dil-4cpu
+.. flt:: fig:sol-dil-4cpu
 
    Resultados para ``dil`` (utilizando 4 procesadores).
 
@@ -3176,31 +3179,31 @@ los 80 segundos, bastante más alta que el tiempo obtenido para TBGC.
    y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de
    ejecución) o 20 corridas (para el resto).
 
-   .. subfig::
+   .. subflt::
 
       Tiempo de ejecución (seg)
 
       .. image:: plots/time-dil-4cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Cantidad de recolecciones
 
       .. image:: plots/ncol-dil-4cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Uso máximo de memoria (MiB)
 
       .. image:: plots/mem-dil-4cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       *Stop-the-world* máximo (seg)
 
       .. image:: plots/stw-dil-4cpu.pdf
 
-   .. subfig::
+   .. subflt::
 
       Pausa real máxima (seg)
 
@@ -3215,7 +3218,8 @@ información del tipo se guarda al final del bloque (ver :ref:`sol_precise`).
 En el cuadro :vref:`t:sol-prec-mem-dil` se puede observar la diferencia de
 memoria desperdiciada entre el modo conservativo y preciso.
 
-.. ftable:: t:sol-prec-mem-dil
+.. flt:: t:sol-prec-mem-dil
+   :type: table
 
    Memoria pedida y asignada para ``dil`` según modo de marcado.