Breve introducción a Org Mode

Table of Contents

Son vacaciones, y es momento de leer y avanzar con los pendientes que comencé a mediados del semestre (para distraerme de las tareas de las materias). Conocer más de la función de agenda de Org Mode fue uno de estos, ya que anteriormente sólo lo había usado para crear textos básicos, por lo que decidí echarme un clavado en la guía compacta.

Esta entrada es una recopilación de notas que consideré útiles para comenzar después de leer el "inicio rápido" de Org, sólo hay que tener en cuenta que algunas de las combinaciones de teclas usadas pueden ser específicas de doomemacs. Dejo esta entrada en español porque hay relativamente poca información para comenzar con Org, aparte de esta agradable publicación.

Formato básico

Texto

Org nos permite dar formato a nuestros archivos para que se visualice de una manera más sencilla, o para que cuando se exporte a otro formato, este sea más rico y expresivo.

- /itálicas/ *negritas*
- ~código~
- _subrayado_ +tachado+
- =verbatim= (???)

Se convierte en la siguiente lista:

  • itálicas negritas
  • código
  • subrayado tachado
  • verbatim (???)

Algunos entornos especiales para párrafos son VERSE, QUOTE y CENTER. Se crear antecediendo #+BEGIN_ y #+END_ al entorno delimitado. Similarmente existen EXAMPLE y SRC que son adecuados para código fuente y similares.

#+BEGIN_QUOTE
Niños, el único consejo que les puedo dar es que la vida es una miseria, váyanse
a su casa, y acuéstense en sus camas hasta esperar el día de su muerte. -- Juan
Carlos Bodoque
#+END_QUOTE

Se ve como:

Niños, el único consejo que les puedo dar es que la vida es una miseria, váyanse a su casa, y acuéstense en sus camas hasta esperar el día de su muerte. – Juan Carlos Bodoque

Y finalmente, podemos crear notas al pie1 dentro de nuestros documentos.

Y finalmente, podemos crear notas al pie[fn:1] dentro de nuestros documentos.

[fn:1] Una nota al pie (fn) es: [[https://es.wikipedia.org/wiki/Notas_al_pie]]
Código fuente

Es una función de Org que nos permite escribir, evaluar y visualizar resultados de segmentos de código, pero para mantener compacta esta guía, recomiendo leer el manual. Quizá en un futuro actualice los contenidos de esta entrada.

Este es un pequeño ejemplo de un bloque de código:

#+NAME: hola mundo
#+BEGIN_SRC c :exports code
#include <stdio.h>
void main() {
        printf("¡Hola Mundo!\n");
}
#+END_SRC

Imágenes

Las imágenes son enlaces a un archivo local o remoto (pueden tener descripción):

#+CAPTION: ¡Oh! Que buena frase, anótala Mario Hugo
[[./bodoque.jpg]]
./bodoque.jpg
¡Oh! Que buena frase, anótala Mario Hugo

Tareas

Una característica clave de Org es la capacidad de poder colocar tareas en cualquier archivo .org que se encuentra en la variable org-agenda-files. Estas tareas tienen la siguiente estructura (sin el carácter \):

\* ESTADO PRIORIDAD NOMBRE_DE_TAREA AVANCE ETIQUETAS FECHAS CRONOMETRO

Tomemos como ejemplo la siguiente tarea, creada con M-S-RET o con la función org-insert-todo-heading, que para mayor legibilidad se divide en dos lineas:

**** TODO [#B] Hacer mandado [%] :personal:mandados:
SCHEDULED: <2024-07-31 Wed>

ESTADO (C-c C-t)

Se refiere al estado de la tarea a realizar, por ejemplo:

  • TODO: Por realizar
  • DONE: Finalizada
  • STRT: Iniciada
  • PROJ: La uso para denotar un proyecto que contiene múltiples tareas

Se puede insertar manualmente, con combinaciones como C-c C-t, Spc m t o con la función org-todo, incluso es posible definir palabras clave de forma personalizada.

PRIORIDAD (C-c ,)

Una priority-cookie se usa para categorizar las tareas de acuerdo a su prioridad, por defecto se usan letras A, B y C; siendo [#A] la de mayor prioridad y #[C] la de menos.

AVANCE

Nos permite saber cuántas [/] o el porcentaje [%] de subtareas finalizadas dentro de una tarea. Esto se puede colocar en cualquier parte del encabezado de la tarea.

ETIQUETAS

Son palabras clave que clasifican tareas, se agregan en cualquier parte del encabezado, por ejemplo, :escuela:, pueden agregarse múltiples a una tarea como :trabajo:diseño:.

FECHAS

Las fechas (timestamps) nos permiten llevar un registro de las tareas. Se colocan después de una tarea, es decir, en la siguiente línea. Existen estos tipos de fechas:

  • Inactivas: [2024-07-24 Wed] Una fecha que no aparecerá en la agenda.
  • Agenda (C-c C-s): SCHEDULED: <2024-07-26 Fri> Indica el tiempo a trabajar en una tarea.
  • Plazo (C-c C-d): DEADLINE: <2024-07-29 Mon> La fecha en la que debemos cumplir con una tarea.

Es posible repetir una tarea cada cierto número de horas (h), días (d), semanas (w), meses (m) o años. Por ejemplo, esta tarea tiene un rango de días para completarse, y un plazo que se repite cada mes.

**** TODO [#B] Pagar mensualidad del Coppel :personal:compras:
SCHEDULED: <2024-08-12 Mon +1m>--<2024-08-15 Thu +1m>
DEADLINE: <2024-08-16 Fri 13:00 +1m>

CRONOMETRO (C-c C-x C-i)

Para registrar el tiempo utilizado en una tarea podemos usar org-clock-in, el cual crea un timestamp del momento en el que se invocó el comando. Después de trabajar en tu tarea se puede detener el cronómetro con org-clock-out o C-c C-x C-o. Si olvidaste en qué tarea estabas trabajando después de iniciar el cronómetro, invoca org-clock-goto o usa C-c C-x C-j.

Agenda (SPC o A)

org-agenda es una función que nos permite acceder al búffer de la agenda, desde este podremos usar teclas como:

  • t Para mostrar todas las tareas.
  • m Para mostrar todas las tareas con una etiqueta específica.
  • s Para buscar tareas que contienen una cadena, o utilizar operadores lógicos + -

Es posible crear vistas predefinidas de la agenda, como indica la guía de Org

Exportar

En caso de que texto plano no sea suficiente, podemos exportar nuestro archivo a diferentes formatos, entre estos:

  • LaTeX C-c C-e l o: Es posible exportar y visualizar el contenido de nuestro archivo .org como si lo hubiésemos escrito TeX, aunque primero será necesario instalar paquetes como texlive-{core,bin,science,latexextra,plaingeneric}. De igual forma podemos insertar código TeX dentro de un archivo Org, como ecuaciones o cualquier otro entorno.
  • Calendario C-c C-e c f o C-c C-e c c: crea un archivo .ics por si queremos llevar nuestras tareas a otros dispositivos.

Conclusiones

Es muy poco tiempo para decir que ya domino el uso de Emacs y Org, aún sigo buscando y leyendo documentación cuando quiero hacer cosas menos frecuentes, por lo que acostumbrarse al uso de ambos es un poco complicado (si no hay suficiente constancia), sobre todo al intentar centralizar todo el flujo de trabajo dentro de estas dos herramientas.

A pesar de esto encuentro muy útil la agenda (que me permite tener un vista de todas las tareas que no he terminado, jeje), la función de exportar a LaTeX usando sintaxis de Org (honestamente escribir en TeX no es muy agradable después de conocer esta función) y la creación de presentaciones con reveal.js.

Ya sé que esto apenas es la superficie del mamotreto de funciones que existen en Org, y no se diga nada de Emacs porque nunca terminaríamos. En fin, especialistas de Emacs (Juan, jeje), no me discriminen por usar doom, algún día me animaré a crear mi propio archivo de configuración (quizá).