Archivo de la categoría: Lo que he aprendido

Lo que he aprendido: el tamaño de papel con XeLaTeX

Aquí ando probando diferentes formatos para el libro de LaTeX cuando me he dado cuenta de algo: XeLaTeX ignora el tamaño del papel que definimos en la clase del documento.

Por ejemplo, si creamos un documento con:

\documentclass[a5paper]{book}

y compilamos con XeLaTeX nos queda algo así:

a5mal

La letra ocupa lo de un A5 pero el papel sigue siendo más grande. Si vamos a las propiedades del documento, veremos que es de tamaño US letter:

usletter

Curiosamente al compilar con pdfLaTeX el tamaño del papel se asigna correctamente.

Resulta que el problema es que a LaTeX le importa un pimiento el papel en el que vamos a imprimir y lo ignora. Hay paquetes como geometry y hyperref y compiladores como pdfLaTeX que lo tienen en cuenta, pero xeLaTeX no (¡el muy vago!). De esta manera, solo con cargar geometry o hyperref el tamaño del papel cambia, lo que me parece una genialidad. Este es el motivo por el que no me había dado cuenta antes, ¡casi siempre uso estos paquetes!

En cualquier caso, la mejor opción para hacer que se active el tamaño del papel si no queremos tocar nada más es decirle a geometry que debe mirar el tamaño de papel establecido. Para ello tenemos pass que según el manual hace lo siguiente:

Disables all of the geometry options and
calculations except verbose and showframe.
It is order-independent and can be used
for checking out the page layout of the
documentclass, other packages and manual
settings without geometry.

Sigue leyendo

Lo que he aprendido: acentos en elementaryOS

Os contaba el otro día que me había pasado a elementaryOS Loki sin mayores incidencias. Me vine arriba y pensé que todo funcionaba… ¿Todo? ¡No! Una pequeña parte resistía todavía al invasor…¡los acentos! Veamos lo que ocurría y la solución que encontré.

El diagnóstico

Los acentos funcionaban en todas los programas excepto Kile y Octave. En estos dos programas, en lugar de á me aparecía ‘a. En principio pensé que era algún lío con qt pero no, ya que sí podía escribir acentos en qTox, también basado en qt. Curiosamente en Freya tanto Kile como Octave iban perfectos y qTox no, todo muy misterioso.

Investigando por la red vi que no era la única con problemas con Kile y que más gente había tenido problemas en Ubuntu 16.04, parecía ser un bug de ibus. Luego encontré un problema similar en elementaryOS Loki, aunque afectaba a Skype únicamente.

La solución

Tal y como decían en la pregunta específica para elementaryOS, instalé el soporte de idioma de Gnome con:

sudo apt install language-selector-gnome

Al abrirlo, me decía que me faltaba de configurar el idioma así que le dejé que me configurase todos los programas y sus respectivas ayudas en varios idiomas, descargando una pila de paquetes por el camino.

Luego cambié el método de entrada a XIM, cerré la sesión y volví a entrar:

xim

Y hala, ¡problema arreglado!

Lo que no tengo nada claro es por qué funciona, he leído que ibus se lía cuando se mete un carácter complejo, pero no sé si es verdad, yo no entiendo de estas cosas. Si hay algún sabio por ahí que por favor nos ilumine 🙂

Referencias

Dead keys (accents) stopped working after upgrading to Ubuntu 16.04

Kile bug: cannot insert spanish accented letters

Dead-keys not working in Skype

How to add iBus to start up applications?

ibus bug: accented letters (dead keys) do not work (i.e. stop being ‘dead’) if you install a complex writing language


Va un clásico:

Lo que he aprendido: configurar el QuickBuild de Kile

Una de las cosas malas de actualizar el sistema operativo es que pierdes las antiguas configuraciones y luego como ya estás acostumbrada a que todo vaya bien te vuelves loca cuando el ordenador no hace lo que tú quieres. Esto es lo que me ha pasado con Kile, acostumbrada a darle al QuickBuild para que me generase el documento sin más me he quedado jarta al ver que no llamaba de por sí a BibTeX (¡el muy!) y que no me salían las referencias (¡maldita sea su estampa!). Lo que no recuerdo es si antes tenía una opción que hacía las referencias bibliográficas o si lo configuré yo, voy para vieja.

En fin, si queremos que Kile nos haga todo el proceso en un solo click tenemos que ir a Settings > Configure Kile…, elegir Tools > Build en el árbol de la izquierda y crear una secuencia nueva para QuickBuild que haga PDFLaTeX, BibTeX, PDFLaTeX, PDFLaTeX. En la imagen se ve más claro:

quickbuild.png

Seguir leyendo →

Lo que he aprendido: .octaverc

Hoy voy a hablar un poco del archivo de configuración de GNU Octave, .octaverc, el equivalente octaviano del startup.m de Matlab que descubrí hace algún tiempo. Ahí metemos las órdenes que queremos que GNU Octave ejecute al iniciarse, nos vale para establecer opciones, guardar variables que usamos a menudo, añadir rutas al path o demás historias.

Lo primero que tenemos que tener en cuenta es que podemos crear este archivo .octaverc en diferentes lugares dependiendo de lo que queramos conseguir. Veamos:

  • OCTAVE_HOME/share/octave/site/m/startup/.octaverc es el archivo de configuración para todos los usuarios, donde OCTAVE_HOME es la carpeta donde está instalado GNU Octave, por defecto /usr/local/
  • ~/.octaverc es el archivo de configuración específico para cada usuario
  • .octaverc es el archivo de configuración para un proyecto particular

Yo he modificado el archivo que está en mi carpeta personal, es decir, el segundo. Ahora mismo tiene pocas cosas porque acabo de instalarlo, espero que se vaya agradando con el tiempo y el uso. Concretamente contiene estas dos líneas:

cd ("~/Documentos/Octave") % cambiar carpeta
history_control ("ignoredups"); % ignorar duplicados en historia

Este .octaverc es compatible con el startup.m de Matlab, podemos hacer que lo busque y utilice su contenido añadiendo lo siguiente:

if exist('~/Documents/MATLAB/startup.m', 'file')
  source('~/Documents/MATLAB/startup.m')
endif

Al igual que el resto de mis dotfiles, gestiono este archivo con Stow. Tengo una carpeta llamada con gran originalidad dotfiles en la que organizo los archivos de configuración según programas:

.
├── emacs
│   └── .emacs.d
|
└── octave
    └── .octaverc

Luego genero un enlace simbólico a la carpeta personal con:

ondiz@slimbook:~/Documentos/dotfiles$ stow octave -t ~

Y poco más. Me queda investigar si se pueden controlar las opciones de gnuplot desde el archivo de configuración, ya os contaré a ver. Acabo con unas preguntas: ¿vosotros qué tenéis en vuestro archivo de configuración?, ¿Cómo manejáis los dotfiles? ¿Será GNU Octave el nuevo tema recurrente en el blog?

Referencias

GNU Octave: Startup files

.octaverc en la wiki de GNU Octave

Change default workspace in Octave en AskUbuntu

Suggested .octaverc for GNU Octave

Manual de gnuplot 4.6


Me he reencontrado con esta canción que es muy apropiada para mi situación actual


Lo que he aprendido: instalar la ayuda de GNU Octave

¡He vuelto a instalar GNU Octave en mi recién estrenado elementaryOS Loki! Estoy contenta porque la versión de los repos de Ubuntu 16.10 LTS abre directamente una GUI, pero no trae la ayuda, maldita sea, si vamos a la pestaña de la documentación nos dirá que /usr/share/info/octave.info no existe. Vamos a solucionarlo ahora mismo.

Con las pistas que nos da el error podemos hacer una búsqueda rápida para identificar el paquete donde vive la ayuda:

$ apt-cache search octave info
octave-doc - PDF documentation on the GNU Octave language
octave-htmldoc - HTML documentation on the GNU Octave language
octave-info - GNU Info documentation on the GNU Octave language
...

El principal sospechoso es el tercero (info), vamos a ver su descripción a ver si nos encaja (la resumo porque es demasiado larga):

$ apt-cache show octave-info

Package: octave-info

This package provides the following documentation 
in info format: a document on the C++ classes used 
by Octave, as well as the main octave documentation 
which is needed for the 'help -i foo' command within 
Octave.

Parece que es ese, así que lo instalamos:

sudo apt-get install octave-info

Si vamos a /usr/share/info/ veremos que ahora hay cosas de GNU Octave por ahí, lo que es buena señal. Vamos a abrir GNU Octave a ver:

octave

¡Tachán! ¡Ya hay documentación! Lo que sí que he de decir que este tipo de cosas no ayuda en nada a que los usuarios principiantes usen software libre, no cuesta tanto ponérselo ponérnoslo más fácil, creo yo.

Más

GNU/Octave en Ubuntu 14.04 y 14.10: Trucos para una buena experiencia inicial


Lo que he aprendido: trucos para borrar desde la terminal

Aquí en mi gesta para parecer que sé usar el ordenador he aprendido nuevos truquillos, en este caso para borrar cosas. Os cuento.

Borrar el contenido de un fichero

Me acabo de encontrar un truco todo loco para dejar un archivo vacío pero que se le mantengan los permisos. Simplemente redirigimos nuestro querido periférico nulo al archivo en cuestión:

cat /dev/null > ARCHIVO

Así nos ahorramos el tener que borrarlo, crear uno nuevo y asignarle los permisos correspondientes.

Para ver que efectivamente se mantienen los permisos he hecho esta prueba:

$ echo "Letra aleatoria" > archivo
$ chmod +x archivo
$ ls -l archivo
-rwxr-xr-x 1 usuario grupo 16 jul  2 12:09 archivo
$ cat /dev/null/ > archivo
$ ls -l archivo
-rwxr-xr-x 1 usuario grupo 0 jul 2 12:12 archivo

También se ve que el archivo se vacía, ya que el último ls nos dice que su tamaño es de cero.

Borrar el contenido de una carpeta

Todos conocemos el mítico rm -r para borrar una carpeta y su contenido, pero a mí al menos me da miedillo. Ahora he aprendido sobre dos opciones que me ayudan a saber lo que estoy haciendo:

  • --verbose, -v: explica lo que va borrando.
  • --interactive, -i: nos va preguntando si queremos borrar o no cada uno de los archivos. También hay una versión -I que solo pregunta al borrar más de tres cosas, lo que es menos molesto.

Por ejemplo, si usamos la opción -v vemos lo siguiente:

$ rm -rv carpeta
«carpeta/archivo» borrado
directorio borrado: «carpeta/»

La versión interactiva hace algo así:

$ rm -ir carpeta
rm: ¿descender al directorio «carpeta/»? (s/n) s
rm: ¿borrar el fichero regular «carpeta/archivo»? (s/n) s
rm: ¿borrar el directorio «carpeta/»? (s/n) s

Hasta aquí el briconsejo de hoy. ¿Qué trucos usáis vosotros para borrar? Comentadme debajo para que aprendamos todos 🙂

Referencias

Man de rm

Lo que he aprendido: limpiar un repo

Leyendo por ahí como es mi costumbre me he encontrado con un par de trucos de git para hacer limpieza en nuestro repo. La limpieza en cuestión tiene dos partes: eliminar los archivos que hemos creado nosotros pero que no queremos tener bajo control y que el propio git adecente sus historias.

Quitar nuestras mierdas

Para eliminar de un plumazo todos los archivos a los que no estemos haciendo un seguimiento simplemente hacemos:

git clean -f

La -f viene de force, nos obliga a escribirlo si queremos que borre, es precavido él.

Este comando tiene varias opciones interesantes:

  • -d elimina también las carpetas
  • -i inicia el modo interactivo
  • -n no elimina de verdad pero vemos una lista de archivos que eliminará.

Podemos usarlo en combinación con git reset --hard para devolver el repo al estado en el que estaba justo tras el último commit. Otra aplicación interesante es cargarnos los archivos auxiliares que aparecen al compilar algo, es especialmente útil si los tenemos en el .gitignore, así no nos saldrán al commitear y tendremos el repo bien limpio.

Yo lo uso concretamente para matar los archivos auxiliares de LaTeX, que llega un momento en que me agobian y no sé qué demonios es lo que tengo que modificar. Mi .gitignore en un proyecto latexiano suele tener esta pinta:

# Ignorar archivos auxiliares de Latex

! *.tex
! Contenido/
! Figuras/

De esta manera, si me organizo en condiciones solo tengo bajo control los archivos necesarios y puedo destruir el resto con git clean.

Adecentar las cosas de git

Aparte de borrar nuestras basuras, git también es capaz de hacer limpieza sobre sus archivos. Para ello tenemos este simpático comando:

git gc

Sirve para que git gestione mejor el espacio y quite las referencias que ya no sirven, por ejemplo. Podemos ejecutarlo con la opción --auto para que actúe solo si es necesario. No os puedo decir en detalle qué hace ya que git es una cosa muy loca, pero me parece un comando a tener en la recámara, sobre todo en los proyectos grandes o con archivos binarios (como los pdfs).

Nada más por hoy, ¿qué trucos de git usáis vosotros, gentes del Internet? Contadme para que aprenda 🙂

Referencias

Man de git clean

Man de git gc

Undoing Changes en el tuto de Atlassian

Is there a way to clean up git? en StackOverflow

git gc: cleaning up after yourself git-fu

Git Tip of the Week: GC and Pruning


Bailando en la cocina: