Notxor tiene un blog

Defenestrando la vida


Ajuste del calendario y la visualización de documentos en emacs.

Estos días me han preguntado cómo hacía para abrir los documentos que genero desde emacs y por qué a mí en el calendario me aparecen los meses y los días es español y a mi interlocutor no. Aunque son dos temas distintos los meto en el mismo artículo y añado otra respuesta que fue juzgada como menos urgente o importante, porque no dan una extensión que necesite el espacio de dos posts.

Visualizador de documentos

Básicamente exporto desde emacs a dos tipos de documentos pdf y html. Para hacerlo tengo el siguiente código en mi init.el dentro del apartado custom-set-variables:

'(TeX-view-program-selection
   (quote
    (((output-dvi has-no-display-manager)
      "dvi2tty")
     ((output-dvi style-pstricks)
      "dvips and gv")
     (output-dvi "xdvi")
     (output-pdf "Zathura")
     (output-html "xdg-open"))))

Quiero destacar únicamente el uso de Zathura como visualizador de los documentos pdf. Ese software es muy liviano y aporta además el matiz de que detecta cuándo hemos modificado el documento para visualizar los cambios automáticamente. Por ejemplo, encuentro un error en el documento y me doy cuenta al visualizarlo en pdf. Sin cerrar la visualización voy al fichero LaTeX, guardo el cambio corregido C-x C-s y genero el nuevo pdf C-c C-c. Al modificarse el fichero, Zathura lo recargará y visualizará la última versión ya corregida.

Ajustes del calendario

Los ajustes en el calendario también tienen que ver con el apartado de custom-set-variables, concretamente las siguientes:

'(calendar-date-style (quote iso))
'(calendar-day-header-array ["Do" "Lu" "Ma" "Mi" "Ju" "Vi" "Sa"])
'(calendar-day-name-array
   ["domingo" "lunes" "martes" "miércoles" "jueves" "viernes" "sábado"])
'(calendar-month-abbrev-array
   ["Ene" "Feb" "Mar"
    "Abr" "May" "Jun"
    "Jul" "Ago" "Sep"
    "Oct" "Nov" "Dic"])
'(calendar-month-name-array
   ["enero" "febrero" "marzo"
    "abril" "mayo" "junio"
    "julio" "agosto" "septiembre"
    "octubre" "noviembre" "diciembre"])
'(calendar-week-start-day 1)

La variable calendar-date-style está ajustada para mostrar las fechas según el modo ISO, es decir, en el formato año/mes/día, tal que por ejemplo, el día de hoy será 2018/10/29. Eso permite un ordenamiento de las fechas automático en formato texto y una vez te acostumbras es tan sencillo como ordenarlas al inverso.

La variable calendar-day-header-array muestra los nombres del día de la semana que se muestran en las cabeceras del buffer calendario, donde sólo caben dos caracteres. Sin embargo, cuando emacs necesite el nombre completo del día utilizará los nombres guardados en calendar-day-name-array. De igual modo, el nombre abreviado de los meses se guardan en la variable calendar-month-abbrev-array y los nombres largos en calendar-month-name-array.

La última variable es para que las semanas comiencen en lunes (día 1) en lugar de en domingo (día 0).

Avisos de la agenda para que recuerde cumpleaños y efemérides

Otro de los aspectos que me han preguntado es cómo hacer para que la agenda recuerde las fechas de cumpleaños o las efemérides que desees recordar. En el fichero init.el debes configurar un fichero diario también en el apartado custom-set-variables:

'(org-agenda-diary-file "ruta/al/fichero/diario.org")

Como se ve, puedes configurar el nombre y la ruta que se quiera (siempre que emacs lo encuentre). ¿Qué hay que meter dentro de ese archivo para que haga los recordatorios? Muy fácil:

%%(org-anniversary 2018 10 29) Este post cumple %d años de su publicación.

Se observa el comando org-anniversary con tres parámetros el año, el mes y el día y una cadena a continuación con el texto que queramos y en el que se puede incluir %d para que org-mode lo sustituya por el número de años. El próximo año, en la agenda me aparecerá una reseña diciéndome que este artículo se publicó hace un año, por ejemplo.

Conclusión

Son detalles que muchos usuarios ya conocen y que pongo aquí porque quien me preguntó es un nuevo usuario de emacs. De todas formas, al resto de usuarios, también les puede servir de repaso.


Comentarios