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:
- Crear una instancia de Report con titulo y autor
- Agregar contenido usando los metodos add_*()
- 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.