¿Quién lanzó esta ventana?

Hautapena_081Problema: una aplicación ha lanzado una ventana en tu escritorio, pero no sabes exactamente qué aplicación es «la culpable».

Solución: desde una terminal, lanzamos el comando

$  xwininfo

Nos dará un ID de ventana. Por ejemplo, en mi caso, el 0x3e00004.

Pedimos ahora las propiedades de ese ID y, más en concreto, el identificador del proceso al que pertenece:

$ xprop -id 0x3e00004 _NET_WM_PID
_NET_WM_PID(CARDINAL) = 3189

Bien, sólo nos queda pedir una lista de procesos y filtrar por el PID que acabamos de obtener:

$ ps auxww| grep 3189
juanan 3189 0.0 0.4 494700 16396 ? Sl 12:52 0:00 update-notifier

Ajá! update-notifier es el culpable…

LibreOffice Writer: desactivar corrector ortográfico en referencias de Zotero

Como ya presentamos en su día, Zotero es un gestor open source de referencias bibliográficas. Se integra perfectamente en el procesador de textos LibreOffice Writer… Bueno, perfectamente no, tiene un fallo, que es el que quiero comentar (y arreglar). Al añadir las referencias bibliográficas las inserta en el documento Writer sin preocuparse de cambiar el idioma en el que estás escribiendo. Alguien dirá: ¿lógico, no? Si estás escribiendo en castellano, ¿por qué debería insertar la referencia en otro idioma?. La cuestión es que debería insertar las citas SIN especificar idioma. ¿Por qué? Porque si mantienes un idioma (cualquiera), al pasar el corrector ortográfico, cada vez que haya una referencia Zotero, el corrector se quejará, creyendo que es un error de ortografía. Para evitarlo, basta con que ejecutes esta macro una vez terminado tu documento. Cambiará el idioma de las referencias a «Sin idioma», lo que permitirá omitir su revisión en el corrector, ahorrándonos un precioso tiempo.

El bug original y la solución para MS Word en la que me he basado, así como esta misma macro que acabo de enviarles, puedes encontrarlos en los foros de Zotero.

Sub DeactivateProofingOfZoteroFields
Dim oReferenceMarks
Dim oReferenceMark
Dim oReferenceNames
Dim anchor
 
REM preparar locale vacío para evitar avisos del corrector ortográfico
REM Visto en "OpenOffice.org Macro Information" (Andrew Pitonyak)
Dim noLocale As New com.sun.star.lang.Locale
noLocale.Country = ""
noLocale.Language = "zxx"
 
REM recorrer las referencias bibliográficas
REM asegurándose de que han sido insertadas por Zotero
REM y asignarles el noLocale
 
oReferenceMarks = ThisComponent.getReferenceMarks()
oReferenceNames = oReferenceMarks.getElementNames()
For i = LBound(oReferenceNames) to UBound(oReferenceNames)
 
	sName = oReferenceNames(i)
 
	if (InStr(sName, "ZOTERO") = 1) then
		oReferenceMark = oReferenceMarks.getByName(sName)
		anchor = oReferenceMark.getAnchor()
		anchor.CharLocale = noLocale
	end if
 
Next i
 
End Sub

Macro para recorrer y editar entradas de la tabla de contenidos en Writer

Supongamos que quieres recorrer la tabla de contenidos de un documento Writer para modificar automáticamente algunas de las entradas. Por ejemplo, supongamos que quieres cambiar las entradas que empiezan por » PARTE» (como » PARTE  1″, » PARTE 2″…) por el mismo contenido pero en negrita, y añadirle un salto de línea a continuación. Es decir, quieres modificar el índice de contenido de la imagen de la izquierda para que quede como el de la derecha.

Selection_468

Selection_469

 

 

 

 

Puedes usar la siguiente macro StarBasic en LibreOffice Writer (Herramientas / Macros / Organizar macros / LibreOffice Basic …) :

' Dentro del Módulo1 de "Mis macros", en concreto en el método Main
Dim SearchDesc, oVC, Found, Cursor
Dim Fuera as Boolean 
 
   oDoc = ThisComponent ' oDoc es el documento actual
   SearchDesc = oDoc.createSearchDescriptor ' vamos a realizar una búsqueda
 
   With SearchDesc 
      .SearchString  = "^ PARTE.*$"   ' con esta expresión regular
      .SearchRegularExpression = True 
   end With
 
   oVC = oDoc.getCurrentController.getViewCursor  ' crear cursor para recorrer matches
   Fuera = false
   Found = oDoc.findFirst(SearchDesc) ' situarse en el primer match
 
   Do Until Fuera 
          Found.gotoStartOfSentence(false)  ' ir al comienzo de la línea (sin select)
	  Found.gotoEndOfSentence(true) ' seleccionar hasta final de línea
 
      Cursor = oVC.getText.createTextCursorByRange(Found) ' vamos a modificar la selec.
 
      if NOT IsNull(Cursor.DocumentIndex)  Then
        if NOT IsEmpty(Cursor.DocumentIndex)  Then
           Found.CharWeight = com.sun.star.awt.FontWeight.BOLD  ' por negrita
      	   Cursor.setString(CHR$(13) + Found.getString() + CHR$(13)) ' y salto de línea
           Found = oDoc.findNext(Found.End, SearchDesc) ' vamos a por siguiente match
        else
            Fuera = True
        end if
      end if   
   Loop

Instalar Ubuntu 13.04 en iMac 27″

Un apunte rápido, porque ha sido coser y cantar, a diferencia del martirio por el que tuvimos que pasar en 2010 y que dejamos documentado. Captura de pantalla 2013-09-06 a la(s) 16.13.39Realmente lo único que he necesitado ha sido la versión AMD64 de Ubuntu 13.04 (la vez anterior tuve que descargar explícitamente la versión «alternate», esta vez ha bastado con la versión desktop tradicional).

Sí ha sido necesario, al igual que la vez anterior, instalar el gestor de arranque rEFIt (no vale sólo con GRUB, o yo no he sido capaz). Parece que rEFIt está obsoleto y que ahora se recomienda rEFInd, aunque a mí no me ha dado ninguna guerra (al instalarlo, la primera vez no te saldrá el menú de rEFIt, tendrás que volver a arrancar para verlo).

El reparticionado del disco lo hice con el editor de disco de MacOSX. Sin problemas (reparticionando en caliente, sin desmontar la unidad… daba un poco de miedo, pero al no recibir ningún warning por intentarlo, supuse que era viable).

En la instalación, en modo gráfico, he seleccionado la opción de descarga de actualizaciones y la opción de activar drivers privativos. Nada más, Ubuntu 13.04 se ha instalado rápidamente en la partición que le corresponde y rEFIt me permite entrar sin problemas en MacOSX o Ubuntu (a través de GRUB).

Hay un fallo que queda por corregir: al apagar Ubuntu el iMac se queda colgado (no se llega a apagar). Para corregirlo:

sudo gedit /etc/default/grub

y sustituimos la línea GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash” por GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash reboot=pci”

(tal y como explicamos en el anterior post relacionado)

Nota: que a mí me haya funcionado no quiere decir que en tu iMac también lo haga. Así que, ya sabes, antes de tocar particiones, recuerda que las copias de seguridad son tus amigas 😉

Control de líneas huérfanas y viudas en LibreOffice Writer

Selection_427La Wikipedia define perfectamente las líneas viudas y huérfanas: son líneas que, por quedar en una página distinta que el resto del párrafo al que pertenecen, aparecen aisladas de su contexto.

En la imagen de la izquierda tenemos un ejemplo de línea viuda (aquella que, siendo la última de un párrafo, aparece al principio de la página siguiente). Una línea huérfana, por el contrario, sería aquella que aparece al final de una página, de forma aislada al resto de las líneas de ese párrafo (que continúa en la siguiente página).

Las líneas huérfanas y viudas quedan fatal en tus textos, ¿a que sí? Para controlarlas, LibreOffice Writer ofrece una sección «Flujo del Texto» en las propiedades del párrafo. Recomiendo que estas propiedades no se cambien párrafo a párrafo, sino que se apliquen al estilo por defecto. Pulsa F11 para ver los estilos que tienes aplicados en los párrafos. Si no has tocado nada, tendrás el «Estilo Predeterminado». Pulsa el botón derecho sobre ese estilo. Elige «Modificar» y sitúate en la pestaña «Flujo del Texto». En la parte inferior verás opciones para el control de huérfanas y viudas.  Por ejemplo, para «arreglar» automáticamente el problema de la figura anterior, le pediremos a LibreOffice que nunca deje viudas con menos de 3 líneas (ver imagen inferior). Lo que hará será reformatear automáticamente el texto para cumplir con nuestras órdenes. Lo mismo es aplicable para líneas huérfanas.

Selection_430Si a pesar de aplicar estas opciones algún párrafo en concreto se te resiste, siempre puedes forzar a LibreOffice a que no rompa ese párrafo entre páginas («No dividir párrafo») o a que un párrafo en concreto esté siempre junto al siguiente en la misma página («Mantener párrafos juntos»). Bueno, con estos trucos ya no hay excusa para que en tus documentos tengas líneas aisladas al comienzo o al final de página 😉