Usando LaTex en Atom

Quizás haya formas mucho mejores para editar código LaTeX en Linux, pero ya que podemos hacer un montón de cosas con Atom y existen las extensiones para ello, también podemos editar documentos LaTeX. No he encontrado un asistente que configure un documento desde el principio, pero no creo que sea demasiado problema coger la base que tengamos de un documento anterior.

Documento LaTeX en Atom
CV de billryan/resume@GitHub en Atom usando el resaltado de sintaxis.

Tenemos unas cuantas extensiones que nos facilitarán nuestra tarea:

  • language-latex: Habilita el coloreado de sintaxis para los documentos .tex
  • latex: Añade soporte para compilar documentos LaTeX en Atom.
  • latexer: Permite el autocompletado de sentencias LaTeX.
  • pdf-view: Esta extensión nos permite ver en una pestaña nueva un PDF, en nuestro caso, el que haya generado el compilador de LaTeX.

Por supuesto, no estamos limitados sólo al compilador de LaTeX, sino que con la extensión latex si entramos en la zona de configuración, podremos seleccionar qué motor de TeX queremos. Os recomiendo echarle un ojo a todas las configuraciones de los paquetes propuestos.

Una opción alternativa que a mí me gusta bastante, es generar un Makefile para nuestro proyecto, de esta forma podemos utilizar varias herramientas que tenemos en Atom para ejecutar make y compilar en un PDF nuestro archivo. Como extra, está configurado para tener una carpeta más o menos limpia, en el sentido de que los archivos que se generan en la compilación están siempre dentro de una carpeta que se llama build/

He copiado en un gist el fichero que necesitaríamos. Tenemos que copiarlo a la carpeta donde se encuentre nuestro .tex y cambiar la primera línea del Makefile, indicando el nombre correcto del archivo.

No, no me he olvidado de la extensión que he mencionado antes. Primero necesitamos instalar el paquete build y después build-make.

Hipervitaminando Atom con plugins

Hoy quiero enseñaros algunos plugins que no te solucionarán la vida especialmente, pero al menos sí que te hará más agradable el tiempo que estés programando.

El primero nos hará sentir como si usásemos Sublime Text. Una de las cosas más características que vemos en este último editor es que tenemos a la derecha un mapa en pequeño donde ver el código, y nos permite navegar mucho más fácilmente a la zona que queramos.

Archivo de código Python con el minimap activado en la derecha
Archivo de código Python con el minimap activado en la derecha

Esta extensión se titula minimap. Es bastante útil cuando estás trabajando con un fichero más o menos largo habitualmente, ya que con el tiempo te habitúas a ver la zona del código que más usas simplemente con ver la estructura. Para los que tenemos memoria visual, es muy útil.

El segundo plugin que podemos instalar es un paquete de iconos que nos pondrá una imagen más descriptiva que el aburrido icono por defecto en cada archivo. Se llama file-icons.

Árbol de archivos de un proyecto python
Árbol de archivos de un proyecto python

Todas las capturas de pantalla que he puesto por aquí son de este proyecto en Github, por si queréis echarle un ojo 🙂

[Tip] Disk Usage (du): comando alternativo a Baobab para ver el consumo de disco duro

Últimamente, sobre todo después de hacerme con un SSD de 256 GB, el espacio no es algo que se pueda derrochar, y siempre estoy pendiente de cada GB que estorbe para eliminarlo o moverlo a un disco externo. Aunque esto no es único del entorno “doméstico”: muchos servidores virtuales VPS suelen ofrecer capacidades de almacenamiento más bien comedidas y es necesario no exceder demasiado aquello que vayas a guardar en el servidor para no encontrarte con problemas serios de funcionamiento.

Baobab analizando la carpeta raíz del sistema
Baobab analizando la carpeta raíz del sistema

Bueno, el caso es que la aplicación Baobab, también conocida como Analizador de uso de disco duro, es tremendamente fácil de utilizar a la par de cómoda, pero dependes sí o sí de la interfaz gráfica. Pero, ¿qué pasa cuando no puedes disponer de una herramienta gráfica? Nada en absoluto, ponemos a funcionar la terminal y utilizamos Disk Usage (abreviado como du).

Esta utilidad es parte del proyecto coreutils de GNU, y como tal suele venir incluida. En caso contrario, busca el paquete coreutils o uno parecido en tu distribución. Su uso es bastante sencillo a la par de útil: sólo hay que indicar un par de opciones para entender mejor la salida y la carpeta a analizar.

du -h -d 1 /home/cambiadeso

Vayamos por partes:
* du: Es el comando abreviado, con el cual llamamos al programa
* -h: Como en ls, es una opción para hacer el tamaño de las carpetas “legible para humanos”, es decir, muestra los tamaños en bytes, kilobytes, megabytes, etc…
* -d 1: -d es la opción para indicar el nivel de profundidad del árbol a visualizar. Con esto, sólo veremos un subnivel de la carpeta que estemos mirando.
* /home/cambiadeso: Esta es la carpeta que queremos analizar.

La salida es como esta

12K ./Plantillas
6,5G ./Documentos
4,0K ./Público
58M ./Imágenes
48M ./Vídeos
3,9M ./Escritorio
3,1G ./Descargas
18G .

Y como truquillo: podemos ordenar de mayor a menor uso si le añadimos el comando sort de esta forma:

du -h -d 1 /home/cambiadeso | sort -h

Saludos 🙂

Expresiones regulares en Atom

Desde luego que esto daría para una entrada extensa, con pelos y señales de cómo funcionan, pero ni yo mismo todavía lo entiendo del todo. Pero al menos quiero enseñaros un poco cómo funcionan en un caso concreto donde yo las he usado, que nunca viene nada mal.

Donde son realmente útiles es en la función de buscar y reemplazar de Atom. Para abrirlo con un atajo de teclado deberemos pulsar Ctrl+F, y para activarlo debemos ir a la derecha de la ventana que nos aparece y pulsar el botón “.*”, que activará las expresiones regulares en ambos campos de buscar y reemplazar.

Detalle de la ventana de buscar y reemplazar de Atom
Detalle de la ventana de buscar y reemplazar de Atom

Con ellas podemos hacer cosas bastante complejas. Por ejemplo, un caso práctico: En un documento, buscar todas las palabras que estén entre comillas simples y cambiarlas por comillas dobles. Para casos normales, podríamos aplicar simplemente la sustitución del carácter ‘ por el de “, pero si tenemos comentarios donde utilizamos esa comilla simple, también nos lo comvertirá a comilla doble.

Es importante tener dos conceptos claros. En el cuadro de búsqueda, tendremos que poner una expresión regular que encaje con lo que queremos encontrar o seleccionar, y en el cuadro de reemplazar, tendremos que poner exactamente la cadena que lo reemplaza utilizando una variable.

Siguiendo con el ejemplo mencionado anteriormente, vamos a crear la expresión regular que cambie las comillas simples por otras dobles.

En el cuadro de búsqueda pondremos entre dos comillas simples nuestra expresión regular (\w.*), que quiere decir buscar cualquier número de palabras. En el cuadro de reemplazar, pondremos la variable que hemos encontrado ($1) entre comillas dobles, consiguiendo así reemplazar lo que queremos.

Ventana de RegExp en Atom
Ventana de RegExp en Atom

En general, la sintaxis que se sigue para estas expresiones regulares es la de Javascript, por lo que si necesitáis un uso más concreto, podéis consultar esta documentación.

Instalar impresora Brother MFC J480DW en ArchLinux

Hace no mucho tiempo me hice con una impresora Brother, un poco ya cansado del precio excesivo que tenían tienen los cartuchos de las impresoras HP. Sin embargo, si alguna vez habéis tenido una impresora de esta última marca os habréis fijado que prácticamente no hay que hacer nada, en Linux es todo bastante sencillo, e incluso existe la herramienta hplip, que provee de una interfaz gráfica para administrar (de mejor o peor manera) la impresora.

Brother por su parte no tiene un soporte tan bien trabajado, o al menos, no es todo tan sencillo como en HP. Pero siguiendo todo paso a paso veremos que conseguiremos tener nuestra impresora imprimiendo en un periquete. Continuar leyendo “Instalar impresora Brother MFC J480DW en ArchLinux”

Configurando temas y fuentes en Atom Editor

Lo prometido es deuda, (aunque sea más de un año tarde) así que aquí tenemos la continuación de la serie de Atom. De momento trataremos cosas como la personalización con temas y fuentes. Así dejo cosas que contar para más adelante…

Instalando temas

Hay que reconocerlo. Antes de llegar a la versión 1.0 la interfaz por defecto de Atom era francamente horrible. El tema por defecto Atom fue sustituido por uno más moderno y flat: One. Este es bastante más agradable a la vista. Tenemos una muestra del código antes y después.

Atom antes y después de la versión 1.0 y de la llegada del tema One
Atom antes y después de la versión 1.0 y de la llegada del tema One

Aún así, tenemos temas que son bastante más interesantes. Recordemos que Atom está construido con HTML, CSS y Javascript, que a priori puede parecer un impedimento en cuestiones de rendimiento (indiscutiblemente), pero ofrece ventajas bastante notables en el sentido de la personalización. A pesar de que los temas que nos propone la comunidad son excelentes, podemos mejorarlos aún más con una hoja CSS personalizada, cambiando y editando estilos a nuestro antojo.
Continuar leyendo “Configurando temas y fuentes en Atom Editor”

[Tip] Contando la magnitud de la Web semántica con SPARQL

SPARQL es un lenguaje de consulta de datos similar a SQL, pero pensado para consultas en bases de datos basadas en grafos. Estas bases de datos es común verlas en proyectos sobre los que se fundamenta la web semántica (o Web 3.0) como Wikidata o DBpedia, y almacenan información siguiendo siempre un patrón:

(sujeto, predicado, objeto)

El lenguaje SPARQL está pensado para que las secuencias que se pongan en la parte del where sea una especie de patrón que deba encajar con las tripletas que hay en el grafo. De esta forma, una de las consultas más sencillas que nos podemos plantear es precisamente la de contar cuántas tripletas hay en nuestra base de datos:

select (count(?suj) as ?tripletas)
where {
  ?suj ?pred ?obj
}

Por lo general, estos proyectos de libre conocimiento tienen disponible un endpoint al que mandar consultas para ejecutarlas. Aquí os dejo unos cuantos:

Desgraciadamente, tenemos que tener en cuenta que esta consulta es muy pesada, y algunos de estos endpoints pueden no responder nunca por timeout por no estar optimizados.

Pero en el caso de DBpedia, esta consulta parece que sí está optimizada y podemos extraer datos interesantes: En este momento, la DBpedia en español posee cerca de 170 millones de hechos. Por su parte, la DBpedia en inglés es mucho más grande y alberga casi 440 millones de tripletas.

Wikidata, o es mucho más grande (cosa que no descarto) o su sistema no está lo suficientemente optimizado como para ejecutar estas consultas tan pesadas.

 

[Tip] Crear una entrada en el GRUB manualmente

Hace poco compré un disco SSD para el portátil, con un puerto msata que es muy cómodo si la placa base del ordenador lo soporta, ya que añades capacidad de almacenamiento y no tienes que sacrificar el lector de CDs.

Bueno, el caso es que quería empezar de cero y alojar en ese disco las particiones del sistema EFI (ESP), la partición /boot para el grub, y demás. Esta vez opté por descargar Manjaro en vez de Antergos por cambiar un poco, que ya llevaba casi tres años con él instalado. El instalador Calamares está bastante guiado, y todo parecía ir bien, pero al iniciar… ¡sorpresa!, la partición EFI que había creado no era reconocida y la BIOS no encontraba con qué arrancar (salvo el USB con el que lo instalé).

Tras probar varias veces la misma rutina de instalación, empecé a buscar y finalmente opté por tocar a mano las entradas EFI del sistema y añadir una para iniciar el grub que instalaba Manjaro. El caso es que en la partición EFI sí que estaban los archivos necesarios para iniciar, pero no servía de mucho si el sistema no encontraba el fichero al que apuntar.

En estos casos, la mejor herramienta que te puedas encontrar es efibootmgr (algo así como gestor de arranque EFI). Tiene varias opciones, entre las cuales tenemos el crear una nueva entrada. El comando es el siguiente:

efibootmgr –create –disk /dev/sdb –part 1 –loader /EFI/Manjaro/grubx64.efi –label “Grub Manjaro”

NOTA: Es importante reemplazar en este comando los guiones por guiones dobles: -- y las comillas de la etiqueta, por comillas rectas: " debido a un problema de WordPress
En mi caso, el disco SSD está en la dirección /dev/sdb (importante, es el disco, no la partición EFI) y la partición EFI es la primera de ese disco. La otra parte importante es la ruta donde se encuentra el loader, que en el caso de Manjaro, se instala en /EFI/Manjaro/grubx64.efi.

El manual de efibootmgr, man efibootmgr arroja más riqueza de opciones, como por ejemplo, la de configurar el timeout, o el orden de arranque, sin necesidad de tener que entrar a configurarlo directamente en la BIOS.