Archivo de la etiqueta: org-mode

Lo que he aprendido: el ratón y org mode

Como ya os he dicho más veces uso Emacs de una manera un tanto curiosa, con su GUI y hasta con el ratón porque al final me muevo en un entorno gráfico y me encaja mejor así con el resto de herramientas (sí, uso cosas que no son Emacs). Parece ser que yo no soy la única, ya que hay modos de Emacs que añaden funcionalidades molonas al ratón y entre ellos mi favorito es org-mouse.el, que como su nombre indica se usa en mi amado modo Org.

Sirve para lo siguiente:

  • Nos muestra un menú contextual al hacer click derecho en diferentes elementos
  • Permite abrir y cerrar árboles con un click izquierdo
  • Marca casillas de las listas de tareas al hacer click izquierdo sobre ellas

Parece poca cosa pero hacen de Emacs un lugar más amigable para los novatillos, los desmemoriados o los vagos, tres categorías a las que pertenezco.

Para activarlo solo hace falta añadir una línea al archivo de configuración:

;; Cargar org-mouse
(require 'org-mouse)

Podéis ver este modo en acción en este screencast1:

Referencias

How to setup org-mouse to intuitively toggle checkboxes on org-mode? en StackExchange

5.6 Checkboxes en el manual de Org


Os dejo con una canción que he localizado por casualidad:

Lo que he aprendido: diagramas de Gantt en PlantUML

¡He encontrado una frikimanera de hacer diagramas de Gantt! Está todavía en fase de desarrollo pero incluso así ya es bastante más práctico que pintar cuadraditos en una hoja de cálculo. El cacharro este se llama PlantUMl y es parecido a Ditaa, también es un jar que se usa desde la terminal.

Los diagramas se definen en un archivo de texto en un lenguaje natural, un ejemplo:

@startgantt
Project starts the 1th of februrary 2018
[Tarea 1] as [T1] lasts 8 days
[Tarea 2] as [T2] starts at [T1]'s end and lasts 7 days
[Tareas 3] as [T3] starts at [T2]'s end and lasts 23 days
[Tarea 4] as [T4] starts at [T3]'s end and lasts 7 days
@endgantt

Se pueden usar nombres abreviados para hacer referencia a las tareas, cambiar el color, … Si guardamos la definición en un archivo gantt.txt, por ejemplo, podemos crear nuestro diagrama con una línea de este tipo:

java -jar plantuml.jar -teps -charset UTF-8 gantt.txt

Aquí he usado las opciones teps para que me exporte en eps y charset para decirle que use la codificación UTF8 y me pinte bien las tildes. Hay otras opciones para guardar el gráfico, las tenéis en el manual.

Yo concretamente, uso PlantUML en Org (como todo) escribiendo la definición del gráfico dentro de un bloque de código para que me incluya el dibujete dentro del documento exportado:

#+BEGIN_SRC plantuml :file gantt.eps :cmdline -charset UTF-8 -teps
@startgantt
Project starts the 1th of februrary 2018
[Tarea 1] as [T1] lasts 8 days
[Tarea 2] as [T2] starts at [T1]'s end and lasts 7 days
[Tareas 3] as [T3] starts at [T2]'s end and lasts 23 days
[Tarea 4] as [T4] starts at [T3]'s end and lasts 7 days
@endgantt
#+END_SRC

Como veis, las opciones que antes dábamos en la terminal van ahora después de :cmdline. Al ejecutar este trocito de código1, se generará esta imagen como resultado:

Aparte de diagramas de Gantt, con PlantUML pueden pintarse todo tipo de chirimbolos, tiene una versión online para que vayáis probando 😀

Referencias

Diagramas de Gantt en PlantUML

Guía de PlantUML


Sonando:


  1. ¡Recordad darle permiso a Emacs para ejecutar código de PlantUMl añadiendo este lenguaje a la lista

Lo que he aprendido: ecuaciones rápidas con CDLaTeX

Ando últimamente bastante liadilla y agradezco cualquier herramienta que me facilite la vida. Una que me hace muy feliz es el modo menor de Emacs CDLaTeX, que acabo de descubrir y se ha convertido en imprescindible en mi día a día. En concreto lo uso en combinación con el modo Org, que trae su propia variante org-cdlatex. Paso a hablaros sobre ello.

El modo CDLaTeX

Tal y como dice en su README, CDLaTeX es un modo menor para la inserción rápida de entornos y movidas matemáticas en LaTeX:

CDLaTeX is a minor mode for Emacs supporting fast insertion of environment templates and math stuff in LaTeX

Lo escribió el mismo señor que el modo Org, Carsten Dominik, y se puede encontrar tanto en MELPA como en Github. Requiere texmathp.el que dicen que es parte de Emacs a partir de la versión 21.3, pero yo tuve que instalar AucTeX (que también lo contiene) para hacerlo funcionar.

Ecuaciones rápidas

La idea de este modo es evitarnos el tedio de escribir desde cero las ecuaciones de LaTeX y los símbolos matemáticos. Es muy listo y sabe cuándo estamos dentro de un bloque matemático (entre \begin{equation} y \end{equation}) y cuándo no, y así activa y desactiva funcionalidades según el contexto. Por ejemplo, al escribir un guión bajo nos añade automáticamente las llaves para que escribamos dentro el subíndice.

La tecla principal de este modo es el TAB, que hace de todo:

  • Predice comandos: si lo pulsamos después de haber escrito una parte de un comando nos lo completa. Me encanta porque equ + TAB inserta directamente un entorno de ecuaciones, ¡así de fácil! Podemos ver todas abreviaturas con M-x cdlatex-command-help.

  • Reduce subíndices y superíndices simples: nos escribe automáticamente las llaves para los subíndices y superíndices pero podemos eliminarlas para los casos de una sola letra pulsando el TAB delante de la llave de cierre.

  • Mueve el cursor a la siguiente unidad de interés: podemos avanzar por las ecuaciones con el TAB alegremente.

No solo del TAB se vive, también tenemos otras funcionalidades chulas:

  • Entornos rápidos C-c { nos mete entornos como align dentro del bloque de ecuaciones.

  • El apóstrofe modifica el carácter anterior, añadiendo un punto encima u otras movidas locas matemáticas. Si lo pulsamos y esperamos un poco nos aparece un cuadro con todas las opciones disponibles.

  • El acento grave introduce comandos, por ejemplo a</kbd> escribe\alphatanto dentro como fuera del entorno matemático, <kbd>b escribe \beta y así sucesivamente. Varios acentos cambian de nivel, tomando el caso de la letra l como ejemplo, precedida de un acento escribe \lambda, con dos acentos \ell, y con tres \log. Lo que es utilísimo para los que escribimos mucha mate. ¡Un truco! Para escribir letras griegas mayúsculas, tras introducir una con el acento grave y la letra, podemos usar M-b para movernos al inicio de la palabra y M-c para que Emacs nos la ponga en mayúsculas. Es fantástico. Al igual que el apóstrofe, si esperamos un poco después de pulsarlos nos aparece un cuadro con las opciones.

Lo único que me queda por contaros es que si este modo os conquista como a mí, podéis activarlo siempre con Org añadiendo esta línea al archivo de configuración:

;; Activar CDLaTeX con Org mode
(add-hook 'org-mode-hook 'turn-on-org-cdlatex)

¡Y hala! ¡Productividad a tope! 😀

¿Vosotras qué modos y herramientas usáis para simplificar vuestro trabajo? Ilustradme, porfis.

Referencias

org-cdlatex en el manual de Org

CDLaTeX en GitHub


Últimamente estoy dejando salir a mi celta interior:

Mi entorno de trabajo en Emacs

Estoy fusionando mi amor por Emacs con mi objetivo de ser más productiva (¡todavía más!) al trabajar. Esto pasa evidentemente por perder menos tiempo, que se traduce a su vez en tres cosas:

  • Usar lo menos posible el ratón, con la ventaja añadida de que mis pobres muñecas sufren mucho menos.

  • Salir lo menos posible de Emacs, si Emacs puede hacer todo ¿por qué abandonarlo? Esto conlleva afinar la configuración, algo que considero una inversión a largo plazo (y me divierte lo suyo, además).

  • Automatizar tareas repetitivas, reducir el tiempo gastado en repetir lo mismo una y otra vez es generar tiempo para otras cosas. También se reduce el número de veces que pulso una combinación de teclas determinada y, por lo tanto, mis manitas están más felices.

Un tema interesante que encaja en las tres categorías anteriores es tener preparado un entorno de trabajo al abrir Emacs la primera vez del día. ¿Cómo hago esto? Con una lista de tareas escrita en org que se abre automáticamente al iniciar Emacs. Como curro en diferentes historietas, en esta lista describo lo que tengo que hacer y enlazo los archivos en los que estoy trabajando. De esta manera, me sirve un poco como acta del trabajo que voy realizando y me permite tener localizados los documentos de los diferentes proyectos en los que ando.

Además, basta configurar con qué programa debe abrirse qué tipo de archivo para que tengamos ya la herramienta correcta dispuesta para que le demos caña, cuando no podemos usar directamente Emacs, claro.

Para que la lista de tareas nos aparezca al abrir Emacs solo hay que añadir una línea al final de nuestro archivo de configuración:

(find-file "RUTA_A_LA_LISTA")

He llegado a este sistema de pura casualidad, pero la verdad es que se adapta muy bien a mis necesidades. Otro día os hablaré más en detalle sobre cómo uso Org y compartiré con vosotros mi configuración completa para este modo.

Tengo curiosidad, ¿cómo os organizáis vosotros? ¡Contadme, contadme!

Referencias

A Baby Steps Guide to Managing Your Tasks with Org


Suena mientras escribo esto:

Lo que he aprendido: imágenes inline en Org

¡Hola, gentes! ¡He aprendido nuevas cosas de Org!

Resulta que si hemos instalado Emacs con soporte para imágenes, podemos decirle a Org mode que nos las muestre dentro de nuestro documento. Esto es maravilloso porque implica que no es necesario que exportemos a HTML o pdf para tener un documento legible sino que desde dentro del propio Org podemos editar y ver directamente todo. Veamos cómo.

Mostrar las imágenes

Como ya sabemos, se pueden insertar imágenes en Org con la siguiente línea:

[[file:RUTA_A_IMAGEN]]

Tenemos unas funciones, que invocamos con M-x seguido de su correspondiente nombre, que nos permiten decidir si Org nos muestra la imagen a la que hacemos referencia en lugar de la línea esa que tan bien conocemos:

  • org-display-inline-images: muestra las imágenes
  • org-redisplay-inline-images: vuelve a cargar las imágenes
  • org-toggle-inline-images (C-c C-x C-v): si las estaba mostrando las deja de mostrar y viceversa
  • org-remove-inline-images: deja de mostrar las imágenes

El lugar de usar estas funciones todo el rato, también se puede establecer el comportamiento para determinado documento mediante una variable de inicio:

#+STARTUP: inlineimages

Mostrará las imágenes que hemos enlazado. En cambio:

#+STARTUP:noinlineimages

No las mostrará. Para que nos recargue el documento y hagan efecto los cambios en estas variables es útil la combinación C-x C-v (buscar archivo alternativo), una de mis favoritas.

Seguir leyendo →

Lo que he aprendido: abrir archivos con un programa externo en Org

¡Ay el modo Org! ¡Cómo me encanta! Cada día le encuentro más funcionalidades, creo que llegará un momento en el que solo usaré este modo para todas mis actividades, me da un poco de miedito.

Acabo de descubrir que podemos decirle a Org que nos abra los archivos que enlazamos en un documento con la aplicación que nos parezca. Esto me ha parecido megaútil para referenciar en mi lista de tareas qué he hecho y dónde está. Así, puedo escribir las conclusiones que he sacado de determinado tema y enlazar el script de Matlab en el que lo investigo o el paper donde he leído el método.

Esta configuración de con qué programa se abre qué tipo de archivo está guardada en la variable org-file-apps, que podemos describir con:

C-h v org-file-apps

o bien:

M-x describe-variable org-file-apps

Nos dice lo siguiente:

org-file-apps is a variable defined in ‘org.el’.
Its value is ((auto-mode . emacs)
(“\.mm\'” . default)
(“\.x?html?\'” . default)
(“\.pdf\'” . default))

External applications for opening ‘file:path’ items in a document. Org-mode uses system defaults for different file types, but you can use this variable to set the application for a given file extension. The entries in this list are cons cells where the car identifies files and the cdr the corresponding command.

Sigue leyendo

Lo que he aprendido: diagramas en Org mode con Ditaa

¡He aprendido cosas nuevas de Org! ¡Ahora puedo pintar grafiquillos! Cómo me encanta. Me encontré con Ditaa leyendo el curso de Emacs de La pipa plena, un gran recurso para aprender, luego me puse yo a hurgar y ahora me toca escribir lo aprendido para que no se me olvide. Vamos a ello.

Ditaa

Ditaa es una pequeña utilidad para la terminal que permite convertir diagramas hechos en ASCII art en imágenes. Está escrita en Java y se distribuye como un archivo jar por lo que es totalmente portable1. Es además un programilla libre ya que lleva una licencia GPL.

Si tenemos el jar necesitamos Java para poder crear diagramas desde la terminal, pero no nos preocupemos, usarlo es tan fácil como llamar a Java con la opción -jar diciéndole dónde está Ditaa y qué queremos que haga:

java -jar RUTA/ditaaXXX.jar OPCIONES ARCHIVO

donde XXX es el número de versión y ARCHIVO el lugar donde está el dibujito ASCII, lo demás creo que se explica solo. Por poner un ejemplo, si le pasamos a Ditaa un archivo que contenga esto:

+----------------+       +----------------+
|                |       |                |
| Primer bloque  +------>| Segundo bloque |
|                |       |                |
+----------------+       +----------------+

Nos creará este gráfico:

figura

Unirlo a Emacs

Así visto Ditaa parece un poco absurdo, pero ¿y si lo unimos al modo artista de Emacs? Más aun, ¿y si le decimos a Org que nos ejecute el código de Ditaa? ¡Nos aparecerá un gráfico perfectamente integrado en nuestro documento!

Cuenta la leyenda que Ditaa viene en el propio Org, concretamente el jar debería estar en contrib/scripts, pero yo no lo tenía, no sé por qué, así que tuve que decirle a Emacs dónde estaba añadiendo lo siguiente al archivo de configuración:

;; Ruta hasta el jar de Ditaa
(setq org-ditaa-jar-path "RUTA/ditaaXXX.jar")

Seguir leyendo →

Lo que he aprendido: personalizando cosillas en org mode

¡Estoy a tope con el modo org! Me hace ser más eficiente y organizada y eso que todavía no le he sacado mucho jugo. Hoy quería poner por aquí algunas opciones de configuración para el modo org que he añadido a mi archivo de inicio de Emacs. ¡Así me contáis cómo hacéis vosotros!

Todos ellas las he activado con setq que en mi proceso de entender lo que copiopego de Internet en mi archivo de configuración he descubierto que asigna valores a variables y que el típico t significa True y el nil False. En fin, ¡veamos cosas!

Modo indentado

Lo primero que he activado es el modo limpio o indentado, es decir, el que en lugar de ponernos estrellitas para los encabezados nos los indenta según su nivel para que veamos todo más claramente. Con él activado nosotros escribimos como siempre y org nos organiza las listas, los títulos y demás. Bastante útil.

Se activa estableciendo org-startup-indented como True:

;; Modo indentado
(setq org-startup-indented t)

Fecha de cierre de las tareas

Otra opción que he activado es que me aparezca cuándo he cerrado una tarea al pasarla al estado DONE:

;; Marcar fecha de tarea realizada
(setq org-log-done 'time)

Ahora cuando voy hasta DONE con C-c C-t debajo me aparece una línea en la que pone CLOSED y la fecha de conclusión en morado.

Cambiar la secuencia de palabras clave

Como tener solo estados de TODO y DONE me parecía poco para organizarme, he añadido dos más: un CHECK para las tareas que están hechas pero requieren algún tipo de verificación o corrección externa, y CANCELLED para las tareas que por algún motivo no seguirán adelante pero que quiero tener localizadas.

Podría añadir estas palabras clave en los archivos en que las necesite pero como me parecen útiles he oreferido añadir la configuración directamente en el archivo de inicio:

(setq org-todo-keywords
'((sequence "TODO" "CHECK" "|" "DONE" "CANCELLED")))

Gracias a estas líneas al hacer C-c C-t se rula por esos estados.

Asignar colores a las palabras clave

Una vez generadas palabras claves nuevas pensé que estaría bien asignarles colores. Para ello se usa la variable org-todo-keyword-faces con algún color que Emacs entienda:

(setq org-todo-keyword-faces
'(
("TODO"   . (:foreground "firebrick2" :weight bold))
("CHECK"  . (:foreground "orange1" :weight bold))
("DONE"   . (:foreground "forestgreen" :weight bold))
("CANCELLED"  . shadow)
))

Bueno, hasta aquí hemos llegado hoy. ¿Qué más me recomendáis cambiar? 🙂

Referencias

FAQ de org

Colors Available to Emacs

Customizing Emacs en Emacs Beginner’s How to

Lo que he aprendido: lista de tareas en org mode

¡Llegó el momento en el que el modo org y Ondiz se ven las caras! Después de una temporada usando Emacs me ha picado el gusanillo y aprovechando que tenía que tener controladas mis tareas del curro, me he puesto a investigar org. Hoy os hablaré de mis primeros pasos en él, que consisten básicamente en escribir una lista de tareas. ¡Empecemos!

El modo org

El modo org es un modo para tomar notas, escribir, planear proyectos, manejar listas de tareas, gestionar el tiempo, publicar documentos y muchas otras cosas que se nos ocurran. Lo creó el profesor de astronomía Carsten Dominik cuando intentaba organizar mejor sus notas. Su idea era sacar directamente las tareas a realizar de las notas tomadas, por ejemplo, en una reunión, para que las tareas y las notas en lugar de ser dos cosas independientes se retroalimentasen.

Su primer paso fue mejorar el modo outline añadiendo indentación para que fuera más sencillo de leer y facilitando el manejo de los elementos de las listas. A partir de ahí fue ganando funcionalidad hasta convertirse en la herramienta multiusos que es ahora.

Una curiosidad de este modo es que su mascota es un unicornio, en su web dan varias explicaciones mi favorita es esta:

Org-mode is meant to show you the way, and an animal with two horns can not do this very well, can it?

Veamos ahora cómo hacer una lista de tareas sencilla.

Una lista de tareas

Antes de ponernos con la lista en sí debemos saber un par de cosas del modo org:

  • Cada documento comienza con los datos (autor, fecha …) y las opciones queremos establecer (indentación, idioma …)
  • Org tiene un lenguaje de marcado propio (similar a Markdown) donde los títulos se indican con asteriscos

Una vez entendido esto, solo nos queda saber que cualquier título se convierte en tarea si empieza por TODO, por ejemplo, convertimos un encabezado de segundo nivel en una tarea así:

** TODO Aplicar cambios

Debajo de esta tarea podemos seguir escribiendo al igual que si fuera un título normal y corriente. Incluso es posible añadir encabezados de nivel tres o superior que sean a su vez tareas. Luego para aclararnos mejor podemos colapsar los encabezados uno a uno con TAB (todos ellos con Shift+Tab) o moverlos de sitio con M-flechas.

Una vez acabada la tarea, con C-c C-t cambiamos su estado a DONE y se pintará en verde y nos hará sentir muy satisfechos. Si queremos que aparezca la fecha en la que cerramos la tareas podemos hacer uso de las opciones de las que os hablaba antes y añadir lo siguiente al inicio del documento:

#+STARTUP: logdone

Así, cuando marquemos la tarea como hecha, org nos añadirá una línea con la fecha de conclusión. Si nos gusta, podemos cambiar este comportamiento para siempre directamente en el archivo de configuración con:

(setq org-log-done 'time)

Otro tema que me mola es poder dividir las tareas grandes en listas con casillas para marcar, que tienen la sintaxis típica que nos solemos encontrar por ahí y cuyas casillas podemos marcar y desmarcar con C-c C-c (check):

- [X] Tarea 1
- [ ] Tarea 2

Estas listas de casillas pueden anidarse y si añadimos [%] o [/] a la principal org nos mostrará cómo de avanzada va la tarea, o bien en porcentaje o en fracción.

Esta es la funcionalidad más básica y con la que he estado jugando estos días pero tenemos además montones de opciones. Os cuento unas pocas:

  • Añadir más estados para las tareas usando las variables del documento, rulará por ellos cuando hagamos C-c C-t:
#+TODO: TODO FEEDBACK VERIFY | DONE CANCELED
  • Añadir prioridades A, B (por defecto) o C a nuestras tareas:
*** TODO [#A] Escribir entrada en el blog
  • Enlazar webs y archivos de nuestro ordenador:
[[RUTA][descripción]]

[[file: RUTA][descripción]]
  • Incluir tablas que se adaptan al contenido y en las que se puede usar la calculadora

  • Añadir tareas a la agenda con C-c C-s (schedule), que luego podremos ver en una vista diaria o semanal

Como veis podemos complicar esto hasta el infinito o mantenernos en la superficie. De hecho, una parte de su filosofía consiste en que cada cual adapte org a su estilo, pero que sea siempre posible usar solo lo simple. Yo de momento me siento muy feliz habiendo sido capaz de crear listas de este estilo:

tareas

Por cierto, una cosa curiosa es que las combinaciones de teclas de org dependen del contexto, es decir, la misma combinación tiene diferente significado según dónde la usemos, reduciendo el número de combinaciones que tenemos que memorizar.

En fin, me gusta como está pensado este modo, se adapta a mi forma de trabajar, supongo que porque proviene del mundo académico. ¡Parece que nunca más voy a tener que usar otro programa que no sea Emacs!

Os dejo con una charla que dio su creador en Google:

Referencias

Página de Org mode

Recursos de GNU Emacs y org-mode de Quijote Libre

Some tips for learning Org Mode for Emacs de Sacha Chuan

Get Organized with Emacs Org-mode en Linux Journal

Org-mode basics VI: A simple TODO list en Pragmatic Emacs

Org Mode – Organize Your Life In Plain Text!

Introduction to Literate Programming