Report

Clase para generar documentos PDF profesionales usando LaTeX. Soporta secciones, tablas, imagenes, codigo, graficos TikZ/PGFPlots y cajas destacadas.

Descripcion general

Report utiliza PyLaTeX para generar documentos PDF de alta calidad. El flujo de trabajo es simple:

  1. Crear una instancia de Report con titulo y autor
  2. Agregar contenido usando los metodos add_*()
  3. Llamar a build() para generar el PDF

Requisitos

⚠ Requisito importante

Report requiere una instalacion de LaTeX (pdflatex) en tu sistema. En Ubuntu/Debian: sudo apt install texlive-full. En macOS: brew install mactex.

Inicio rapido

Python
from viewx import Report

# Crear reporte
report = Report(
    title="Informe Trimestral",
    author="Emmanuel Ascendra",
    outdir="output"
)

# Agregar contenido
report.add_text("Este es el informe del Q4 2024.", bold=True)
report.add_section("Resultados")
report.add_table(
    headers=["Producto", "Ventas", "Crecimiento"],
    rows=[
        ["Producto A", "1,200", "+15%"],
        ["Producto B", "890", "+8%"]
    ],
    caption="Ventas por producto"
)

# Generar PDF
report.build("informe_q4")

Constructor

Report(title, author, outdir, twoColumn, images_dir)
Inicializa un nuevo documento LaTeX con los paquetes necesarios preconfigurados (geometry, float, graphicx, tikz, pgfplots, tcolorbox, listings).
title str, default="Reporte" - Titulo del documento
author str, default="Autor" - Autor del documento
outdir str, default="output" - Directorio de salida
twoColumn bool, default=False - Si True, usa formato de dos columnas
images_dir str, default="images" - Subdirectorio para imagenes

add_text()

add_text(text, bold=False)
Agrega texto plano al documento. Opcionalmente en negrita.
text str - Texto a agregar
bold bool - Si True, aplica negrita

add_section() / add_subsection()

add_section(title) → Section
Crea una nueva seccion en el documento. Retorna un objeto Section de PyLaTeX.
add_subsection(title) → Subsection
Crea una nueva subseccion.

add_image()

add_image(filename, caption, width, placement)
Inserta una imagen en el documento. Si la imagen no esta en el directorio de imagenes, se copia automaticamente.
filename str - Nombre del archivo de imagen
caption str, optional - Leyenda de la figura
width str, default="0.6\\textwidth" - Ancho de la imagen
placement str, default="H" - Posicionamiento LaTeX (H, h, t, b)

add_table()

add_table(headers, rows, caption)
Crea una tabla con encabezados y filas de datos.
headers list[str] - Lista de encabezados de columna
rows list[list] - Lista de filas (cada fila es una lista)
caption str - Titulo de la tabla

add_code()

add_code(code, language="python")
Inserta un bloque de codigo con syntax highlighting usando el paquete listings.
code str - Codigo fuente
language str - Lenguaje para syntax highlighting

add_itemize() / add_enumerate()

add_itemize(items)
Crea una lista con vinetas.
add_enumerate(items)
Crea una lista numerada.

add_box()

add_box(title, content, color="blue!15")
Crea una caja destacada usando tcolorbox. Ideal para notas, advertencias o contenido importante.
title str - Titulo de la caja
content str - Contenido de la caja
color str - Color de fondo (formato LaTeX)

add_plot()

add_plot(x, y, caption)
Genera un grafico 2D usando PGFPlots directamente en LaTeX. Ideal para graficos simples sin dependencias externas.
x list - Valores del eje X
y list - Valores del eje Y
caption str - Leyenda del grafico
Python
x = [1, 2, 3, 4, 5]
y = [2.3, 4.1, 3.8, 5.2, 4.9]
report.add_plot(x, y, caption="Tendencia mensual")

add_multiplot()

add_multiplot(plots, caption)
Genera un grafico con multiples series de datos superpuestas.
plots list[tuple] - Lista de tuplas (x, y) para cada serie
caption str - Leyenda del grafico

build()

build(filename="reporte_final")
Compila el documento LaTeX y genera el PDF. El archivo se guarda en el directorio outdir especificado en el constructor.
filename str - Nombre del archivo (sin extension)
Python
# Genera output/mi_reporte.pdf
report.build("mi_reporte")

auto_generate()

Report.auto_generate(df, title, author, filename, outdir, include_plots=True) → str
Genera un PDF automatico con resumen ejecutivo, advertencias, fortalezas, perfiles de columnas, correlaciones, graficos y muestra de datos. Requiere pdflatex.
Python
from viewx import Report
from viewx.datasets import load_iris

Report.auto_generate(load_iris(), filename="iris_quality", outdir="output")

begin_multicols() / new_page()

begin_multicols(n=2) / end_multicols()
Layout en multiples columnas dentro del documento.
new_page()
Inserta un salto de pagina.