Update indexes
TDF LibreOffice Document Liberation Project Community Blogs Weblate Nextcloud Redmine Ask LibreOffice Donate
Description
There is often a problem that indexes, such as the table of contents (which is a type of index), aren't updated after changes have occured. Documents can be sent with incorrect links.
This macro updates automatically the links in an index. It can be useful to link the macro to the command Save document (
▸ ▸ ▸ ), so that the links will be updated when the document is saved.In the example of Table of Contents, imagine that you have created a document with various headers (which are assigned by right-click and
▸ , etc). And then now you insert a TOC by ▸ ▸ . Then if you add more headers, you can update the TOC by simply running this macro.
Code
Option Explicit
Sub UpdateIndexes
'''Update indexes, such as for the table of contents'''
Dim i As Integer
With ThisComponent ' Only process Writer documents
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
# -*- 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()