figureElementoDesde: siempre
Una figura con un epígrafe opcional.
Detecta automáticamente su tipo para seleccionar la pista de conteo correcta. Por ejemplo, las figuras que contienen imágenes se numerarán por separado de las que contienen tablas.
Ejemplos
El siguiente ejemplo muestra una figura básica con una imagen:
@glacier shows a glacier. Glaciers
are complex systems.
#figure(
image("glacier.jpg", width: 80%),
caption: [A curious figure.],
) <glacier>

También podés insertar tablas en figuras para darles un epígrafe. La figura lo detectará y usará automáticamente un contador separado.
#figure(
table(
columns: 4,
[t], [1], [2], [3],
[y], [0.3s], [0.4s], [0.8s],
),
caption: [Timing results],
)

Este comportamiento se puede reemplazar especificando explícitamente el kind de la figura. Todas las figuras del mismo tipo comparten un contador común.
Comportamiento de las figuras
Por defecto, las figuras se ubican dentro del flujo del contenido. Para hacer que floten hacia la parte superior o inferior de la página, podés usar el argumento placement.
Si tu figura es demasiado grande y su contenido se puede cortar entre páginas (por ejemplo, si contiene una tabla grande), podés hacer que la propia figura también se pueda cortar entre páginas con esta regla show:
#show figure: set block(breakable: true)Mirá la documentación de block para más información sobre los bloques que se pueden cortar y los que no.
Personalización del epígrafe
Podés modificar el aspecto del epígrafe de la figura con su función asociada caption. En el siguiente ejemplo, enfatizamos todos los epígrafes:
#show figure.caption: emph
#figure(
rect[Hello],
caption: [I am emphasized!],
)

Con un selector where, podemos limitar esas reglas a tipos específicos de figuras. Por ejemplo, para ubicar el epígrafe encima de las tablas, pero mantenerlo debajo en todos los demás tipos de figuras, podríamos escribir la siguiente regla show-set:
#show figure.where(
kind: table
): set figure.caption(position: top)
#figure(
table(columns: 2)[A][B][C][D],
caption: [I'm up here],
)

Accesibilidad
Podés usar el parámetro alt para proporcionar una descripción alternativa de la figura para lectores de pantalla y otras tecnologías de asistencia (TA). Consultá su documentación para aprender más.
Podés usar figuras para agregar descripciones alternativas a rutas, formas o visualizaciones que no tienen su propio parámetro alt. Si tu gráfico es puramente decorativo y no tiene un significado semántico, considerá envolverlo en cambio en pdf.artifact, lo que lo ocultará a las TA al exportar a PDF.
Las TA siempre leerán la figura en el punto donde aparece en el documento, sin importar su placement. Poné su marcado donde tenga más sentido en el orden de lectura.
Parámetros
body
El contenido de la figura. A menudo, una imagen.
altPor defecto: none
Una descripción alternativa de la figura.
Cuando agregás una descripción alternativa, las TA leerán tanto ella como el epígrafe (si lo hay). Sin embargo, se omitirá el contenido de la figura en sí.
Cuando el cuerpo de tu figura es una imagen con su propio texto alt establecido, este parámetro no debería usarse en el elemento figure. Del mismo modo, no uses este parámetro cuando la figura contiene una tabla, código u otro contenido que ya es accesible. En esos casos, las TA leerán el contenido de la figura y agregar una descripción alternativa llevaría a una pérdida de información.
Podés aprender a escribir buenas descripciones alternativas en la guía de accesibilidad.
placementPor defecto: none
La ubicación de la figura en la página.
none: La figura permanece en el flujo, exactamente donde se la especificó, como cualquier otro contenido.auto: La figura eligetopobottomsegún cuál esté más cerca.top: La figura flota hacia la parte superior de la página.bottom: La figura flota hacia la parte inferior de la página.
El espacio entre el contenido del flujo principal y la figura flotante se controla con el argumento clearance de la función place.
Ver ejemplo
#set page(height: 200pt)
#show figure: set place(
clearance: 1em,
)
= Introduction
#figure(
placement: bottom,
caption: [A glacier],
image("glacier.jpg", width: 60%),
)
#lorem(60)


scopePor defecto: "column"
En relación con qué ámbito contenedor se ubica la figura.
Establecelo en "parent" para crear una figura de ancho completo en un documento de dos columnas.
No tiene efecto si placement es none.
Ver ejemplo
#set page(height: 250pt, columns: 2)
= Introduction
#figure(
placement: bottom,
scope: "parent",
caption: [A glacier],
image("glacier.jpg", width: 60%),
)
#lorem(60)


| Variante | Detalles |
|---|---|
"column" | Se ubica en la columna actual. |
"parent" | Se ubica respecto del elemento padre, y el contenido abarca todas las columnas. |
captionPor defecto: none
El epígrafe de la figura.
kindPor defecto: auto
El tipo de figura que es.
Todas las figuras del mismo tipo comparten un contador común.
Si se establece en auto, la figura intentará determinar automáticamente su tipo según el tipo de su cuerpo. Los tipos detectados automáticamente son las tablas y el código. En los demás casos, el tipo inferido es el de una imagen.
Establecerlo en algo distinto de auto reemplazará la detección automática. Esto puede ser útil si
- querés crear un tipo de figura personalizado que no sea una imagen, una tabla ni código,
- querés forzar a la figura a usar un contador específico sin importar su contenido.
Podés establecer el tipo como una función de elemento o como una cadena de texto. Si lo establecés como una función de elemento distinta de table, raw o image, vas a tener que especificar manualmente el suplemento de la figura.
Ver ejemplo: Personalizar el tipo de figura
#figure(
circle(radius: 10pt),
caption: [A curious atom.],
kind: "atom",
supplement: [Atom],
)

Si querés modificar un contador para saltear un número o reiniciarlo, podés acceder al contador de cada tipo de figura con un selector where:
- Para tablas:
counter(figure.where(kind: table)) - Para imágenes:
counter(figure.where(kind: image)) - Para un tipo personalizado:
counter(figure.where(kind: kind))
Ver ejemplo: Modificar el contador de figuras para tipos específicos
#figure(
table(columns: 2, $n$, $1$),
caption: [The first table.],
)
#counter(
figure.where(kind: table)
).update(41)
#figure(
table(columns: 2, $n$, $42$),
caption: [The 42nd table],
)
#figure(
rect[Image],
caption: [Does not affect images],
)

Para usar cómodamente el contador correcto en una regla show, podés acceder al campo counter. Hay un ejemplo de esto en la documentación del campo body del elemento figure.caption.
supplementPor defecto: auto
El suplemento de la figura.
Si se establece en auto, la figura intentará determinar automáticamente el suplemento correcto según el kind y el idioma del texto activo. Si usás un tipo de figura personalizado, vas a tener que especificar manualmente el suplemento.
Si se especifica una función, se le pasa el primer descendiente del kind especificado (normalmente, el cuerpo de la figura) y debe devolver contenido.
Ver ejemplo
#figure(
[The contents of my figure!],
caption: [My custom figure],
supplement: [Bar],
kind: "foo",
)

numberingPor defecto: "1"
Cómo numerar la figura. Acepta un patrón o función de numeración que toma un único número.
gapPor defecto: 0.65em
El espacio vertical entre el cuerpo y el epígrafe.
outlinedPor defecto: true
Si la figura debe aparecer en un outline de figuras.
Funciones
captionElementoDesde: 0.8.0
El epígrafe de una figura. Este elemento se puede usar en reglas set y show para personalizar el aspecto de los epígrafes de todas las figuras o de las figuras de un tipo específico.
Además de su position y su body, el caption también proporciona como campos el kind, el supplement, el counter y la numbering de la figura. Estas partes se pueden usar en selectores where y en reglas show para construir un epígrafe completamente personalizado.
Ver ejemplo
#show figure.caption: emph
#figure(
rect[Hello],
caption: [A rectangle],
)

positionPor defecto: bottom
La posición del epígrafe en la figura. Puede ser top o bottom.
Ver ejemplo
#show figure.where(
kind: table
): set figure.caption(position: top)
#figure(
table(columns: 2)[A][B],
caption: [I'm up here],
)
#figure(
rect[Hi],
caption: [I'm down here],
)
#figure(
table(columns: 2)[A][B],
caption: figure.caption(
position: bottom,
[I'm down here too!]
)
)

separatorPor defecto: auto
El separador que aparecerá entre el número y el cuerpo.
Si se establece en auto, el separador se adaptará al idioma y a la región actuales.
Ver ejemplo
#set figure.caption(separator: [ --- ])
#figure(
rect[Hello],
caption: [A rectangle],
)

body
El cuerpo del epígrafe.
Se puede usar junto con kind, supplement, counter, numbering y location para personalizar por completo el epígrafe.
Ver ejemplo
#show figure.caption: it => [
#underline(it.body) |
#it.supplement
#context it.counter.display(it.numbering)
]
#figure(
rect[Hello],
caption: [A rectangle],
)
