Archivo de la categoría: Software libre

Lo que he aprendido: fuente de Emacs

¡He aprendido a cambiar la fuente de Emacs! Y no solo eso, sino que he conseguido que sea diferente según el sistema operativo en el que nos encontremos.

Todo esto ha venido porque la fuente por defecto de Emacs en Windows no me diferenciaba los ceros y la letra O y los unos y la L minúscula y me estaba volviendo loca. Aprovechando que en Matlab me había pasado a Consolas, decidí que de ahora en adelante usaría Consolas al estar en Windows (es una fuente propietaria pero que viene incluida en Microsoft Office). En GNU/Linux he seguido con la que se establecía por defecto1, Roboto Mono, que aunque la creó Google, lleva licencia Apache.

Como yo quería que Emacs eligiera la fuente según el sistema operativo, necesitaba averiguar primero cómo le llamaba Emacs a mi sistema operativo. Esto puede conseguirse evaluando la variable system-type, o bien con M-x eval-expression o con M-:. Así supe que esta variable toma el valor de windows-nt en Windows y gnu/linux en GNU/Linux. Algo totalmente inesperado dicho sea de paso.

Bien, ahora me faltaba averiguar cómo cambiar la fuente y crear un if. Lo primero es simple, solo hay que añadir cualquiera de estas líneas al archivo de configuración:

;; Establecer fuente
(set-face-attribute 'default t :font FUENTE :height TAMAÑO)
;; Establecer familia de fuentes
(set-face-attribute 'default t :family FAMILIA :height TAMAÑO)

El if tampoco es mucho más complejo, solo hay que tener en cuenta que tiene miles de paréntesis:

(if (condición)
(Expresiones si se cumple la condición)
(Expresiones si no se cumple la condición))

Fusionando ambas cosas me quedó esto:

;; Fuente
(if (eq system-type 'windows-nt)
    (set-face-attribute 'default nil :family "Consolas" :height 110)
    (set-face-attribute 'default nil :family "Roboto Mono" :height 110)
)

Evidentemente se puede mejorar añadiendo una condición de que use la fuente correspondiente solo si está disponible o de otras manera diversas que ahora no se me ocurren pero a vosotros sí porque sois muy listos. La cuestión es que hurgando un poco se puede conseguir casi cualquier cosa en Emacs y por eso me encanta.

Ale pues, os dejo, ¡contadme cosas en los comentarios!

Referencias

How to determine the operating system in elips? en StackOverflow

Emacs: Font Setup en Ergo Emacs

38.3 Operating System Environment en el manual de Emacs

37.12.1 Face Attributes en el manual de Emacs


Sonando:


  1. Para ver qué fuente está usando Emacs podemos hacer M-x describe-font 
Anuncios

Lo que he aprendido: estructuras con TikZ

Estaba yo fabricando mis transpas para dar clase cuando se me ocurrió que tal vez hubiera un paquete de LaTeX para dibujar diagramas de estructuras. Sí, ya sabéis, las míticas celosías que se unen al suelo con triangulitos o triangulitos sobre ruedecitas. Evidentemente, lo hay, se llama stanli, es un paquete basado en TikZ y está tanto en GitHub como en CTAN.

La idea del paquete es definir una librería de objetos que luego nosotros podremos utilizar para crear nuestras estructuras sin tener ni idea de TikZ, como es mi caso. Solo tendremos que recurrir a los comandos \point, \beam, \support y demás para montar piecita a piecita nuestro diagrama.

A la hora de usarlo hay que tener en cuenta dos cosas:

  • El manual en pdf que aparece en GitHub no está actualizado, os recomiendo compilar el archivo stanli.tex para que se corresponda con el paquete en sí.

  • La versión de GitHub y la de CTAN son distintas, yo estoy utilizando la de GitHub porque me permite poner apoyos con ruedecitas (los tipos Xoo y Xooo, con dos y tres ruedecitas respectivamente).

Por lo demás no hay ningún problemas, es facilísimo de usar y trae hasta un tutorial en el manual. Yo simplemente os dejo aquí un ejemplo, lo uso en conjunto con units para que me ajuste las distancias con las unidades correctamente:

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{stanli}
\usepackage[ugly]{units}
\begin{document}
\begin{tikzpicture}

  \scaling{0.5};

  % Nodos 
  \point{a}{0}{1};
  \point{b}{5}{1};
  \point{c}{10}{1};

  % Barras
  \beam{2}{a}{b};
  \beam{2}{b}{c};

  % Apoyos
  \support{1}{a};
  \support{2oo}{c}; 

  % Uniones
  \hinge{1}{b};

  % Fuerzas
  \lineload{1}{a}{b}
  \load{1}{c}[90];

  % Nombres de nodos
  \notation{1}{a}{A}[left];
  \notation{1}{b}{B};
  \notation{1}{c}{C};

  \notation{1}{c}{\unit[500]{N}}[above=10mm, left];   

  % Cotas
  \dimensioning{1}{a}{b}{-1}[{\unit[1]{m}}];
  \dimensioning{1}{b}{c}{-1}[{\unit[1]{m}}];

\end{tikzpicture}
\end{document}

Compilándolo tendríamos este simpático diagrama:

estructura

Hay cosas que se pueden mejorar, pero la verdad es que el resultado es muy bueno y es con diferencia la manera de crear diagramas más fácil que he visto.

Si tengo un rato a ver si les hago un pull request con los problemillas que he visto en el repo.

¡Espero que os resulte tan útil como a mí!

Referencias

TikZ Library for Structural Analysis

Structural analysis best package en TeX Exchange


¡Música!

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 escribe \alpha tanto dentro como fuera del entorno matemático, `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 escribirmos 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:

La universidad pública, la banca, el software libre y los gatetes

Hoy vengo a hacer un poco de activismo. Últimamente he estado viendo en las redes sociales la batalla que tienen en la Universidad de Granada para defender la autonomía de la universidad pública respecto a la influencia de la banca y luchar por la privacidad de los miembros de la comunidad universitaria. Ahí es nada. Os cuento los detalles.

Resulta que a los que toman las decisiones en la Universidad de Granada no se les ha ocurrido nada mejor que encargarle a una filial del Santander que les fabrique una aplicación para que los alumnos y trabajadores de la universidad hagan sus típicas gestiones. Una aplicación mediante la cual el Santander puede acceder a los datos de todo aquel que la use y que le permite además enviar publicidad a los usuarios y ofertarles servicios.

Es importante recordar aquí, que la Universidad de Granada, aparte de ser una de las más prestigiosas de España (y una de las poquísimas universidades españolas que aparecen en el Ranking Shanghai) es una universidad pública, por lo que en mi opinión es muy difícil justificar que su aplicación oficial la controle un banco. Este hecho, ya lamentable de por sí, es especialmente flagrante cuando la rectora apoyó el software libre explícitamente en su programa electoral, que parece que para ganar votos está muy bien apoyar estas cosas pero a la hora de la verdad ya no tanto.

Para protestar contra esta situación un grupo de miembros de la universidad granadina ha analizado en profundidad la aplicación y ha escrito un documento en el que se exponen los problemas que genera y se presentan una serie de preguntas sobre el sentido de que haya publicidad y servicios de una entidad privada en una aplicación de una universidad pública, las condiciones del acuerdo con el banco, por qué no son públicos los datos como los calendarios y demás… Cuestiones todas ellas que son de lógica pura y que deberían estar respondidas en los documentos relacionados con la aplicación, pero que no lo están. Este documento fue presentado ante los responsables pero (hasta donde yo sé) no ha habido respuesta pública por su parte.

Por si todo el tema de que se regalen los datos a un banco no fuera suficientemente malo, resulta que la funcionalidad de la aplicación privativa se puede replicar en cuestión de minutos, adaptándolo a nuestras necesidades y con herramientas existentes y gratuitas. Nos lo cuentan en este hilo de Twitter:

Sigue leyendo

Lo que he aprendido: manejando paquetes de Octave

Aquí ando dibujando gráficas locas en Octave. La idea original era hacerlas en Matlab (recordad el regreso al capitalismo), pero no sé cómo demonios activar la licencia de la uni, así que he recurrido a mi fiel Octave, libre y disponible para todos sin necesidad de romperse la cabeza con licencias y mierdas varias. En fin, a lo que íbamos: los paquetes de Octave.

El gestor de paquetes de Octave

Aparte de la funcionalidad que ya trae consigo mismo, Octave puede llegar mucho más lejos gracias a Octave Forge, su centralita de paquetes de expansión. La manera recomendada para instalar estos paquetes es desde los repositorios de nuestra distro, solo hace falta buscarlo como tantas veces hemos hecho:

ondiz@slimbook:~$ apt-cache search octave PAQUETE

Muy fácil. Pero, ¿qué pasa si el paquete en cuestión es antiguo? ¿y si estamos en Windows? Pues igual que ocurría con TeXLive, podemos buscar el paquete correspondiente en los repositorios o usar una especie de gestor que tiene Octave. La orden para manejar paquetes no se nos puede olvidar porque es pkgpackage!) y tiene la misma pinta que nuestros conocidos y amados cabal, pip o gem. Os hago un microresumen para que no tengáis que leer el manual:

  • pkg install -forge PAQUETE instala PAQUETE desde Forge
  • pkg install PAQUETE.tar.gz instala PAQUETE desde archivo descargado
  • pkg uninstall PAQUETE desinstala PAQUETE
  • pkg list lista los paquetes instalados
  • pkg load PAQUETE carga PAQUETE para que podamos usar sus funciones
  • pkg update actualiza los paquetes instalados desde Forge

Seguir leyendo →

Software Freedom Day

Como cada año, el tercer sábado de septiembre es el Software Freedom Day, un día en el que se realizan eventos para difundir el software libre. Yo me sumo a la celebración con la cancioncilla de software libre cantada por el señor Stallman y sin enlaces a plataformas privativas esta vez.

Aquí os dejo también la partitura para que los que sepáis de música la toquéis por ahí (yo soplé una txirula cuando era pequeña y desistí).