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

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.