Vamos a describir como se puede trabajar en forma remota usando emacs TRAMP y org-mode
En el .ssh/config se define el servidor que se quiere utilizar con la posibilidad de realizar un puente
Host grial3
HostName 10.11.12.3
User pulido
Port 22
ProxyJump 200.45.54.94
Luego editamos el archivo con emacs /ssh:<hostname>:<nombre del archivo>
Se puede setear en el file:
De esta manera cada vez que se genere una figura me la va a transferir a algun cache (recordar de limpiarlo de vez en cuando
M-x tramp-cleanup-all-connections which clears the connections cache.
Para que me aparezca a la salida de cualquier codigo python la figura correspondiente linkeada automaticamente he agregado un pequen~o script que me lo hace en forma automatica. Esto se puede guardar como mypyplot.py y luego se carga en lugar del pyplot
# Aplico un parche para que me aparezca informacion de la figura guardada y que la pueda # mostrar con win + p from matplotlib.figure import Figure _figure_savefig_original = Figure.savefig def figure_savefig_nuevo(self, *args, **kwargs): resultado = _figure_savefig_original(self, *args, **kwargs) if is_tool('~/bin/checkifrunning'): os.system('~/bin/checkifrunning '+ fname) print(f"Figura guardada") print(f"[[file:{fname}]]") return resultado Figure.savefig = figure_savefig_nuevo import matplotlib.pyplot as plt from matplotlib.pyplot import *
Ejemplo de uso en un archivo de reporte donde se ejecutan codigos python (lease un cuaderno como jupyter)
Quiero generar una figura en el servidor y luego que me la transfiera automaticametne y me la muestre:
#+BEGINSRC lisp :session :results output
import my_pyplot as plt import numpy as np # Tu código de plot x = np.linspace(0, 10, 100) y = np.sin(x) plt.figure(figsize=(8, 4)) plt.plot(x, y, 'b-', linewidth=2) plt.title('Senoidal') plt.grid(True) # Guardar con link automático plt.savefig("seno") plt.close()
#+ENDSRC
esto se debe ejecutar con C-c C-c
Como he puesto raw y ademas esta seteado el savefig para que me genere un link de org-mode una vez que se genere el link en forma automatica me lo intentara abrir.
En el dot emacs he puesto unas lineas para que me refresque las imagenes:
;; Funcion robusta para refrescar imagenes (defun my/org-refresh-inline-images () (when (display-graphic-p) (clear-image-cache) (org-display-inline-images t t))) (add-hook 'org-babel-after-execute-hook 'my/org-refresh-inline-images)
Created: 2025-10-25 Sat 21:00