From OOME on my web site, well, part of that section:
Finding and inserting a table of contents (TOC) is easy unless you want
to change the defaults. The following macro checks ThisComponent to see
if the document contains a content index.
REM Find TOC if it exists.
oIndexes = ThisComponent.getDocumentIndexes()
bIndexFound = False
For i = 0 To oIndexes.getCount() - 1
oIndex = oIndexes.getByIndex(i)
If oIndex.supportsService("com.sun.star.text.ContentIndex") Then
bIndexFound = True
Exit For
End If
Next
Use dispose to remove an existing index from the document.
When I create a TOC, I usually set CreateFromOutline to true to create
the index based on the document outline styles (see Listing 399).
/*Listing 399.* Insert a standard TOC into a document./
Sub InsertATOC
REM Author: Andrew Pitonyak
Dim oCurs 'Used to insert the text content.
Dim oIndexes 'All of the existing indexes
Dim oIndex 'TOC if it exists and a new one if not
Dim i% 'Find an existing TOC
Dim bIndexFound As Boolean 'Flag to track if the TOC was found
REM Find TOC if it exists.
oIndexes = ThisComponent.getDocumentIndexes()
bIndexFound = False
For i = 0 To oIndexes.getCount() - 1
oIndex = oIndexes.getByIndex(i)
If oIndex.supportsService("com.sun.star.text.ContentIndex") Then
bIndexFound = True
Exit For
End If
Next
If Not bIndexFound Then
Print "I did not find an existing content index"
REM Create and insert a new TOC.
REM The new TOC must be created by the document that will contain the TOC.
oIndex = ThisComponent.createInstance("com.sun.star.text.ContentIndex")
oIndex.CreateFromOutline = True
oCurs = ThisComponent.getText().createTextCursor()
oCurs.gotoStart(False)
ThisComponent.getText().insertTextContent(oCurs, oIndex, False)
End If
REM Even the newly inserted index is not updated until right HERE!
oIndex.update()
End Sub
The same code can be used to create a DocumentIndex, ContentIndex,
UserDefinedIndex, IllustrationIndex, TableIndex, or ObjectIndex.
Properties common to all index types are shown in Table 157.
This is the latest version on my web site as an ODT file. The document
contains most of the macros in the book, so, you will be asked if you
want to enable macros when you load it. If you do not enable them, you
cannot run the contained macros from buttons embedded in the text, which
you probably do not care about so no worries if you do not enable that.
Hope this helps.
On 2/8/19 8:42 AM, LORENZO Vincent wrote:
Hello,
I’m looking for a code example to create a table of contents and fill
it programmatically. I thought find something like an object called
XTableOfContents in the unoil library, but nothing and Google didn’t
really help me.
So, please if you some pointers, code examples, or advices they will
be welcome.
Best Regards,
--
Vincent LORENZO
01-69-08-17-24
CEA Saclay Nano-INNOV
Institut CARNOT CEA LIST
Point Courrier n° 174
91 191 Gif sur Yvette CEDEX
_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice
--
Andrew Pitonyak
My Macro Document: http://www.pitonyak.org/AndrewMacro.odt
Info: http://www.pitonyak.org/oo.php
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.