org-mode – modificar los encabezados predeterminados de org babel predeterminados

Pregunta:

Me gustaría tener más control sobre la sesión de R en modo org, de modo que solo tenga que cambiar el nombre de la sesión en un lugar para que la modificación afecte a todo el búfer. La única forma en que pude pensar en esto fue modificar org-babel-default-header-args .

Quiero definir una función para poder modificar los argumentos predeterminados fácilmente. Pero no sé cómo pasar el nombre de la sesión como una cadena. vea el código a continuación.

(defun set-session-name (&optional r-session-name r-session-directory)
  (interactive (list
                (read-from-minibuffer "r-session-name: " "*R*" )
        (read-from-minibuffer "r-session-directory: " "/home/test/")))  
  (setq org-babel-default-header-args:R
    (cons '(:dir . "%s" r-session-directory))
    (cons '(:session . r-session-name) 
          (assq-delete-all :session org-babel-default-header-args:R))
          ))

(:dir . "%s" ression directory "/home/test/") es obviamente incorrecto. ¿Me puedes ayudar, por favor?

** Algunos detalles ** Digamos que estamos en un búfer .org y tengo un encabezado ancho de búfer como el siguiente. Con el nombre de la sesión siendo remote-R-remote* y la :output silent silenciada :output silent

 #+PROPERTY: header-args:R :session *remote-R-remote*  :exports results :colnames yes :results output silent :output-dir images/ :dir "/ssh:gnu:/home/livelygnu/Documents/R/" :eval yes :cache yes

* Some First steps

    #+Name: 
    #+BEGIN_SRC R 
    do some stuffs
    #+END_SRC

Ahora, si en un subárbol queremos producir una cierta cantidad de gráficos pero no queremos escribir :results output graphics todo el tiempo junto con la extensión del archivo, tenemos que redefinir todo el argumento del encabezado para este subárbol.

** output some graphs
:PROPERTIES:
:header-args:R: :session *remote-R-remote* :results output graphics :output-dir: images/ :eval yes :file-ext pdf
:END:

    #+Name: name_of_graphs
    #+BEGIN_SRC R 
    plot(a)
    #+END_SRC

    many more graphs possibly

Podemos hacer lo mismo con la salida de látex, por ejemplo.

** output some results
:PROPERTIES:
:header-args:R: :session *remote-R-remote* :results output latex :output-dir: 
:END:


#+Name: name_of_graphs
#+BEGIN_SRC R 
output latex block
#+END_SRC

Ahora digamos que mientras nuestra estimación está funcionando en la sesión remoto-R-remoto (posiblemente un cálculo largo), queremos continuar trabajando en algunos gráficos en otra sesión. para eso tendríamos que cambiar los: nombres de sesión para todo el bloque de código que necesitemos. Pero si en cambio modificamos los argumentos predeterminados en org-babel-default-header-args . Luego, cambiando la clave: la sesión allí cambiaría la sesión en todas partes. Por supuesto, esto significa que no tendríamos que escribir :session *remote-R-remote* todo el tiempo también, ya que podemos ponerlo por defecto.

Respuesta:

Aplicaría la sintaxis de propiedad de todo el búfer (org-mode 9), por ejemplo, para un búfer R (sesión) llamado *R* :

#+PROPERTY: header-args:R :session *R*

org-mode <9:

#+PROPERTY: session *R*

Y haga Cc Cc en esta línea para activar nuevas configuraciones.

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım