Macro per l'aggiornamento degli indici (come ad es. l'Indice generale)

From The Document Foundation Wiki
< Macros‎ | Writer
Jump to: navigation, search
This page is a translated version of the page Macros/Writer/006 and the translation is 92% complete.

Other languages:
English • ‎français • ‎italiano

Descrizione

Con gli indici, ad esempio con quello generale, si presenta spesso il problema che questi non vengono aggiornati dopo che sono state effettuate delle modifiche. Si rischia di trasmettere documenti contenenti collegamenti sbagliati.

Questa macro aggiorna automaticamente i collegamenti presenti in un indice. Può essere utile collegare la macro al comando Salva documento in (Strumenti ▸ Personalizza ▸ Eventi ▸ Salva documento), in modo che i collegamenti siano aggiornati al momento del salvataggio del documento.

Nell'esempio dell'Indice generale, immaginate di aver creato un documento con diversi Titoli (impostati con un clic del pulsante destro del mouse e Paragrago ▸ Titolo 1, ecc). Dopodiché avete inserito un indice generale con Inserisci ▸ Indice generale e indice analitico ▸ Indice generale, Indice analitico o Bibliografia.... In seguito, se inserirete altri titoli, potrete aggiornare l'indice generale semplicemente eseguendo questa macro.

Codice

In LibreOffice Basic:

Option Explicit

Sub UpdateIndexes()
    '''Aggiorna gli indici, ad esempi quello generale'''

    Dim i As Integer

    With ThisComponent 'Elabora esclusivamente documenti di Writer
        If .supportsService("com.sun.star.text.GenericTextDocument") Then
            For i = 0 To .getDocumentIndexes().count - 1
                .getDocumentIndexes().getByIndex(i).update()     
            Next i
        End If
    End With ' ThisComponent

End Sub ' UpdateIndexes

In Python:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

import uno

def UpdateIndexes():
    """Update indexes, such as for the table of contents"""

    thisComponent = XSCRIPTCONTEXT.getDocument()
    if thisComponent.supportsService("com.sun.star.text.GenericTextDocument"):
        count = thisComponent.getDocumentIndexes().getCount()
        for i in range(0,count):
            thisComponent.getDocumentIndexes().getByIndex(i).update()