Haciendo investigaciones en artículos en PDF

Por razones que no vienen al caso me veo obligado a trabajar mucho con archivos en PDF. Legislación, libros, apuntes, artículos de investigación,…

Toda esta documentación, y en PDF, puede ser algo horrible de tratar. Vamos a investigar algunas herramientas y trucos para resolver estos problemas.

Tomando anotaciones en un PDF

En Linux existe una herramienta maravillosa llamada Okular. Okular es el lector de PDF por defecto en KDE. Permite subrayar, escribir notas, hacer pequeños dibujos. Para hacer aparecer las herramientas de revisión pulsamos F6, o bien, vamos al menú Herramientas/Revisión:

okular

En esta captura de Okular se puede ver a la izquierda los iconos de las herramientas que permiten tomar notas, dibujar, marcar,…

Así se puede tratar en PDF como si de una hoja de apuntes se tratara. Es importante guardar los cambios para no perder las anotaciones que hagamos. Estas anotaciones se pueden ver sin problemas en cualquier visor de PDF “decente”. Porque digo lo de “decente”: Muchos visores de PDF no incorporan implementan todas las capacidades del PDF y puede que en algunos casos no veámos todo. Por ejemplo, tanto Evince, como Okular, como Acrobat Reader permiten introducir/leer notas desplegables. Las notas desplegables se ven como una nota de color amarillo que al hacer clic sobre ellas muestran un comentario. Algunos visores como PDF.js sólo va a mostrar una nota amarilla pero no el mensaje. Afortunadamente visores como PDF.js van avanzando y van incorporando poco a poco estas funciones.

Otra herramienta que se puede usar es Xournal. Xournal permite abrir un PDF y dibujar encima de él. La ventaja es que el PDF almacenado se podrá leer con todos los visores:

xournal

En esta captura se puede ver a Xournal con una serie de subrayados y una anotación al margen. La desventaja es que la forma de tomar las anotaciones no es tan potente y cómoda como la que posee Okular.

Enlazando una investigación entre varios documentos

Un problema que podemos encontrarnos es que tengamos que hacer una investigación entre varios documentos. Lo más práctico sería poder tomar anotaciones en los diversos documentos y tener algún documento maestro que nos permita ir recopilando las ideas de cada documento. Sería muy cómodo poder poner un enlace en el documento maestro y saltar a la parte del PDF que nos interesa. ¡Firefox al rescate!

Más que Firefox la solución la tiene PDF.js. Tiene varias opciones que permiten saltar a una página y después posicionarnos en ella. Por ejemplo, voy a tomar como referencia el siguiente documento:

http://www.damtp.cam.ac.uk/user/tong/statphys/sp.pdf

Para saltar, por ejemplo, a la página 40 del documento, se escribe en el navegador (Firefox):

http://www.damtp.cam.ac.uk/user/tong/statphys/sp.pdf#page=40

Esto nos llevará al principio de la página 40.

Si ahora se desea ir a alguna parte en concreto, tenemos la opción zoom, en la que se ponen separados por comas:

  • El zoom, puede ser un número o auto
  • El desplazamiento horizontal, que es un número
  • El desplazamiento vertical, que es un número

Las unidades en las que se miden los desplazamientos son desconocidas para mí. Sólo decir que, por ejemplo, para hacer un desplazamiento vertical hasta aproximadamente la mitad de la página, se debería escribir:

http://www.damtp.cam.ac.uk/user/tong/statphys/sp.pdf#page=40&zoom=auto,0,400

El desplazamiento vertical se cuenta desde la parte inferior de la página, por lo que un desplazamiento de 800, nos va a llevar al comienzo de la página:

http://www.damtp.cam.ac.uk/user/tong/statphys/sp.pdf#page=40&zoom=auto,0,800

Lo del desplazamiento 400 ó desplazamiento 800 no sé en qué unidades lo mide, por lo que lo mejor es ir probando.

Ahora sólo queda escribir el documento maestro en el que recopilamos nuestros hallazgos e insertamos los enlaces. Si sabemos HTML, al ataque. Que no sabemos HTML y no nos queremos complicar la vida, podemos usar LibreOffice e insertar enlaces a las URL de los documentos con las modificaciones que necesitamos.

Correo electrónico hasta el extremo con Thunderbird

default48Con Thunderbird se puede gestionar el correo electrónico, crear carpetas y hacer que los mensajes que cumplan unos criterios se muevan directamente a estas carpetas.

En un mundo dominado por el “Whatsapp” el correo electrónico sigue siendo una de las pocas plataformas de comunicación universales. Es tan universal que al final acabas teniendo varias cuentas de varios servicios o recibiendo multitud de mensajes. El webmail (leer el correo electrónico a través de la web) se ha impuesto y los clientes de correo son casi olvidados por la mayoría de los usuarios.

Thunderbird es un cliente de correo que permite:

  • Crear filtros. Así se hacer que los correos de tus conocidos se guarden en una carpeta aparte, los del jefe en otra, haciendo más cómoda la lectura de los mensajes importantes.
  • Se pueden gestionar varias cuentas. Con lo que uno se ahorra tener que ir visitando varias páginas web.
  • Se pueden crear carpetas. Se pueden crear carpetas en las que alojar los correos teniendo todo más organizado.
  • Se pueden descargar los correos y guardarlos en tu pendrive. A veces hay correos importantes que conviene conservar o simplemente queremos borrar mensajes del servidor por higiene mental. Es posible conservar estos mensajes, por si acaso.
  • Avisa de los mensajes nuevos. Pero esta opción puede llegar a ser molesta a no ser que se esté esperando un mensaje importante.

Thunderbird permite hacer todo esto y mucho más. Veamos cómo:

Para instalarlo, en distribuciones Ubuntu o similares se debe escribir:

sudo apt-get install thunderbird

Después hay que configurar la cuenta de correo. Esto es fácil pues la aplicación tiene una base de datos de configuraciones. Sólo hay que pulsar en añadir una nueva cuenta:

thunderbird-crea-correo

En la siguiente ventana pulsamos en el botón de “usar mi cuenta de correo existente”:

thunderbird-crear-cuenta

En la siguiente ventana se escribe nuestra dirección de correo:

thunderbird-configuracion-cuenta

Si todo va bien, nos dirá que podemos continuar y la cuenta aparecerá configurada.

Automáticamente comenzará a descargar los correos y podremos comenzar a leer o enviar correos.

Puede que al configurar haya aparecido algo similar a lo siguiente:

thunderbird-tipos-correo

Nos pregunta si se desea usar el correo IMAP o el correo POP. ¿Cuál es la diferencia?

El correo IMAP permite crear carpetas y que los cambios se propaguen entre los clientes de correo. Por ejemplo si hacemos un cambio en Thunderbird, el cambio se reflejará también en la interfaz webmail de la cuenta. Si se lee un correo con Thunderbird, aparecerá como leído en la interfaz webmail.

Si por el contrario, cuando leemos un correo en Thunderbird, no cambia su estado a leído en la interfaz web, sería un correo POP. El correo POP se diseñó pensando en que los clientes sólo se dedicaran a descargar correos del servidor sin más interacción.

Como ya habréis notado el correo IMAP es mucho más potente que el POP. El IMAP se diseñó pensando en la sincronización del correo entre varios dispositivos.

Que el correo IMAP sea más potente, no significa que nuestro proveedor de correo nos permita usar todas sus características o que estén correctamente implementadas. En este sentido se notará mucha diferencia entre proveedores como OpenMailBox que dan un acceso IMAP completo. Con otros proveedores uno se puede encontrar que ciertas características de IMAP no funcionan como se esperaría.

Creación de carpetas:

Supongamos que estamos usando una cuenta que soporta IMAP. Podemos crear dos tipos de carpetas:

  • Las carpetas locales. Se crean en nuestro ordenador. Por lo que las operaciones que hagamos en ellas no se sincronizarán con el servidor. Son útiles cuando el servidor está lleno, se necesita liberar espacio y no se desean perder los correos.
  • Carpetas en el servidor de correo. Si el IMAP que nos da el proveedor lo soporta, se crean en el servidor y se puede sincronizar la información entre diferentes equipos. Si tu servidor lo soporta y tienes espacio son totalmente recomendables.

En la parte izquierda de Thunderbird aparecerá algo similar a lo siguiente:

thunderbird-carpetas_locales

En la imagen se pueden apreciar las carpetas locales y las del servidor. También se pude ver que se crean una serie de carpetas por defecto.

Para crear una carpeta, sólo hay que ir a la parte derecha, donde se nos muestran las cuentas, hacer clic con el botón derecho sobre la cuenta de correo o en “Carpetas locales” y finalmente pulsar la opción de “Nueva carpeta”.

Si la carpeta se crea en una cuenta de correo, hay que verificar que el servidor lo soporta. Sólo hay que visitar la interfaz web de dicha cuenta y ver si la carpeta ha sido creada.

Una vez que se tiene la carpeta preparada, sólo hay que usar el clásico sistema de arrastrar un mensaje a la carpeta para ponerlo allí. Si se hace clic con el botón derecho sobre un mensaje, también se pueden copiar.

Creación de filtros:

Una vez que se ha creado la carpeta, se le puede decir a Thunderbird que copie determinados mensajes de forma automática a ellas. Es decir, si nos llega un mensaje de un amigo, se puede conseguir que se copie de forma automática a la carpeta ‘Amigos’. Esta operación se realiza usando filtros.

Para crear un filtro, se debe hacer clic sobre un mensaje y en el menú “Mensaje” pulsar sobre “Crear filtro a partir de mensaje”. Aparecerá una ventana similar a la siguiente:
thunderbird-filtro

Como se puede ver en la imagen, en la parte superior de la ventana se ponen las condiciones que debe cumplir los mensajes para aplicarles el filtro. En la parte inferior los mensajes se pueden mover o copiar a la carpeta que se elija.

El mecanismo de mover puede resultar confuso, por ello os recomiendo copiarlos. Vais a notar que, aunque los copiéis, cosas como el estado de leído se propagan entre los mensajes copiados. Si se copia un mensaje sin leer a una carpeta y posteriormente se lee, aparecerá como leído en ambas carpetas.

En la imagen también se puede ver que los mensajes deben tener un criterio del tipo contiene el texto, no contiene el texto,…

Se pueden poner varias condiciones y el mensaje se copie cuando cumpla una de las condiciones o poner varias condiciones y el mensaje será copiado cuando cumpla todas las condiciones.

Una vez creado el filtro Thunderbird lo aplicará. Puede llevar mucho tiempo. Todo depende del número correos que tengas.

Guardando el correo en un Pendrive u otro dispositivo:

Hay situaciones en las que puede interesar almacenar un correo electrónico en tu pendrive o hacer una copia en el disco duro para poder conservarlo. Si tu cuenta en el servidor de correo no tiene mucha capacidad, se puede llenar rápidamente y será necesario hacer una copia de seguridad de los mensajes importantes antes de liberar espacio en el servidor.

Para ello simplemente se seleccionan los mensajes que se quieren conservar, después se hace clic con el botón derecho del ratón sobre los mensajes y se hace uso de la opción “Guardar como…”.

 

Espero que os sea útil.

Simular el clic del ratón con el teclado

Un pequeño inconveniente que me encuentro al manejar el touchpad de mi portátil es que el clic es incómodo para hacer grandes selecciones o mantener un objeto pulsado (para por ejemplo desplazarlo a otro sitio). La solución más simple que he encontrado, a parte de usar un ratón, es simular con el teclado el clic del ratón.

Para ello primero se instala el programa xkbset:

sudo apt-get install xkbset

Una vez instalado se ejecuta el programa xev para buscar el código de la tecla que nos interesa. Para ello en un terminal se ejecuta xev y se pulsa la tecla de la que queremos saber el código. Nos mostrará algo similar a lo siguiente:

KeyPress event, serial 37, synthetic NO, window 0x4400001,
root 0x9b, subw 0x0, time 5298897, (370,424), root:(370,476),
state 0x0, keycode 76 (keysym 0xfee9, Pointer_Button1), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False

En el texto keycode nos muestra el código de la tecla, en este caso el 76.

Para terminar, en el terminal se ejecuta lo siguiente:

xkbset m
xmodmap -e "keycode 76 = Pointer_Button1"

Cambiando el 76 por el código de la tecla que nos interesa.

A partir de ahora se podrá usar el teclado para simular el clic del ratón.

(Actualización) Homenaje a las revistas de GNU/Linux en español

Hubo un tiempo en el que el kiosco estaba poblado de revistas que hablaban sobre GNU/Linux. Actualmente no queda ninguna. He hecho un pequeño homenaje a estas revistas… en forma de revista:

homenajerevistaslinux-2015-03-14-2

Artículos incluidos:

1 Chromebook el Linux con Chrome
2 Android y el cable OTG
3 Controlando un equipo de forma remota con SSH
4 Usar Google Drive como servidor web
5 ¡Viva el png animado!
6 Animate.css aplicando animaciones con javascript y CSS
7 Compartir archivos con Google Drive
8 LyX el procesador de textos
9 El formato de imagen vectorial SVG
10 Matemáticas con Mathics

(Actualización) Instalar Ubuntu 14.04 en un Chromebook Toshiba cb30-102

Lo que he hecho es desinstalar completamente ChromeOS y sustituirlo por Ubuntu. Buscando, buscando, me encontré la siguiente página:

https://wiki.archlinux.org/index.php/Chromebook

Hay que reconocer que la comunidad de Arch es muy activa y su wiki da una información muy valiosa.

Lo primero hay que ver si tu Chromebook tiene Seabios, en la siguiente tabla te lo indica:

https://wiki.archlinux.org/index.php/Chromebook#Hardware_Comparisons

Seabios permite arrancar otros sistemas operativos de forma convencional. Si veis la tabla, desgraciadamente son pocos los equipos que lo soportan.

Sigue leyendo

Un servidor web capaz de leer los ZIP

Tengo una tablet con Android que uso en los desplazamientos en transporte público. También la uso para leer documentación y hacer cosillas en Python. El espacio en disco está muy limitado, por lo que comprimir la información es de gran ayuda. Por ejemplo, la documentación de Python descomprimida ocupa 35 Mb. Si se comprime, el espacio se reduce a 6 Mb. Como la documentación está en HTML, sería ideal que el propio servidor web pudiese mandar arcivos del fichero ZIP al navegador web.

He escrito un pequeño servidor web en Python3, capaz de leer los contenidos de los archivos ZIP. Funciona como un servidor web normal, pero cuando se pide abrir el contenido de un archivo ZIP, lo sirve como si estuviese descomprimido.

Se puede descargar desde este enlace.

El funcionamiento es sencillo, se pone a funcionar tecleando:

python3 servidor3.py

Para poder acceder, en un navegador web se debe teclear:

http://localhost:8000

Se podrá navegar por el disco. Si se tiene un archivo comprimido, por ejemplo pydoc.zip, y dentro un archivo, por ejemplo index.html, se debería escribir en la barra de direcciones del navegador:

http://localhost:8000/ruta al zip/pydoc.zip/index.html

Con esto ya se puede ver el archivo index.html. En el caso de hacer clic sobre algún enlace, se descomprimiría el archivo correspondiente.

Evidentemente no es un servidor Apache, tiene unos agujeros de seguridad tremendos, pero cumple perfectamente con la misión para la que fue creada.

Existen intérpretes de Python para GNU Linux, Android, Windows, MacOS, ChromeOS, FreeBSD,… (¿Se está convirtiendo Python en un lenguaje universal?), por lo que no tendréis problema en probarlo en vuestros equipos.

Espero que os sea de ayuda.

Gestionar el correo electrónico desde la línea de comandos

He escrito un par de scripts para gestionar el correo electrónico desde la línea de comandos. Se pueden descargar desde aquí.

Básicamente al ejecutarlos se descargan los mensajes en la carpeta entrada. Cada mensaje está en una carpeta aparte con sus correspondientes adjuntos. Es útil para obtener todos los adjuntos de los correos de una forma rápida.

Para usarlo, lo primero es configurarlo. Hay que abrir el archivo “configuracion.py” e introducir los datos de tu cuenta de correo. Nota, opción de borrar mensajes al descargalos del servidor, puede ser peligrosa, mejor dejarla desactivada. Si usáis GMail, hay que activar los datos de la configuración POP3.

Una vez configurado se ejecuta en comando “descargar.py”. El correo se descargará.

Lo que he encontrado realmente útil es la opción de enviar el correo, pues es muy fácil crear plantillas y usarlas. Para enviar un correo electrónico lo primero es ejecutar el comando:

enviar.py -n nombre_del_mensaje

Se nos indicará que en la carpeta salida se puede empezar a editar el mensaje. Si se quieren incluir adjuntos, sólo hay que copiar los ficheros correspondientes en la carpeta del mensaje. Finalmente, se ejecuta:

enviar.py

Los mensajes de la carpeta salida se enviarán.

La mayoría de servicios de correo electrónicos que se usan popularmente, dan la forma de gestionarlos a través de clientes de correo electrónico. Por ejemplo:

Es muy recomendable que probéis a usar el correo electrónico a través de un cliente de correo como Thunderbird. Aquí tenéis un ejemplo de cómo configurar Gmail, es más simple de lo que parece.

Agenda 2015 y el formato fodt

En Google, en Yahoo u otros lugares es posible encontrar agendas en las que apuntar nuestros eventos, citas,…

Usando LibreOffice es posible hacer agendas tan sugerentes como esta que he preparado para el año 2015: agenda2015

Evidentemente no la he escrito a mano. Lo he hecho con un script en python que os podéis descargar desde aquí.

Hago uso del formato fodt. Realmente los archivos odt (los de LibreOffice) son archivos XML comprimidos en un fichero zip. Probad a renombrar un archivo odt a zip y veréis los contenidos al descomprimirlo.

El formato fodt, es lo mismo pero sin comprimir. Es decir un texto plano con un código XML que se puede editar. No es un formato muy complejo, por lo que se puede usar en scripts para crear documentos odt fácilmente.

De hecho si se retoca la salida del script un poco (usando LibreOffice por supuesto), la agenda luce así (esta es la del 2014):

agenda-libreoffice

Para que la agenda sea útil, hay que jugar con el zoom. La ventana de LibreOffice, en la esquina inferior derecha, tiene un par de herramientas que permiten cambiar el zoom y la forma en la que se muestran las páginas:

zoom-libreoffice

Con estas dos herramientas se podrán ordenar la páginas por semanas, o ampliar un día para ver los eventos.

Otra forma de hacer más atractiva nuestra agenda es usando iconos que podemos copiar y pegar:

3paginas

Estos los he obtenido de Openclipart y los podéis descargar desde: iconos

También se puede cambiar la imagen de fondo, el tipo de letra,…

Espero que os sea útil. Feliz año 2015.