Mise à jour automatique des index

    From The Document Foundation Wiki
    < Macros‎ | Writer
    This page is a translated version of the page Macros/Writer/006 and the translation is 62% complete.
    Outdated translations are marked like this.


    Other languages:

    Description

    Les modifications apportées dans un document ne sont pas automatiquement répercutées dans les index, en particulier la table des matières. Il peut arriver que les documents soient transmis avec des liens incorrects.

    Cette macro met à jour automatiquement les index. Il est possible d'associer le lancement de cette macro à l'événement Enregistrer le document via (Outils ▸ Personnaliser ▸ Événements ▸ Enregistrer le document) afin que la mise à jour soit automatique lorsque le document est enregistré.

    Par exemple pour la table des matières, imaginez que vous avez créé un document avec différents en-têtes (qui sont assignés par clic droit et Paragraphe ▸ Titre 1, etc). Et maintenant vous insérez une TDM par Insérer ▸ Table des matières et Index ▸ Table des matières, Index ou Bibliographie.... Ensuite, si vous ajoutez d'autres en-têtes, vous pouvez mettre à jour la TDM en exécutant simplement cette macro.

    Code

    Option Explicit
    
    Sub MettreAJourLesIndex()
        '''Mettre à jour les index, par exemple pour la table des matières'''
    
        Dim i As Integer
    
        With ThisComponent <span lang="en" dir="ltr" class="mw-content-ltr">' Only process Writer documents</span>
            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 ' MettreAJourLesIndex

    In Python:

    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    
    import uno
    
    def <span lang="en" dir="ltr" class="mw-content-ltr">UpdateIndexes</span>():
        """<span lang="en" dir="ltr" class="mw-content-ltr">Update indexes, such as for the table of contents</span>"""
    
        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()