Suche nach fehlenden Querverweisen

Hallo zusammen,

folgendes Problem: In einem großen Dokument habe ich zahlreiche Querverweise auf Überschriften eingebaut. Wenn ich eine dieser Überschriften lösche, wird im zugehörigen Querverweis angezeigt: "Fehler: Referenz nicht gefunden". Dieser Hinweis wird aber wie die Querverweise nicht als Text interpretiert. Gibt es trotzdem eine Möglichkeit, gezielt nach diesem Ausdruck zu suchen (entweder mit "Suchen & Ersetzen" oder mit der Extension "Alt. Suchen & Ersetzen")?

Danke für Eure Hilfe

Dieter

Hallo Dieter,

folgendes Problem: In einem großen Dokument habe ich zahlreiche
Querverweise auf Überschriften eingebaut. Wenn ich eine dieser
Überschriften lösche, wird im zugehörigen Querverweis angezeigt:
"Fehler: Referenz nicht gefunden". Dieser Hinweis wird aber wie die
Querverweise nicht als Text interpretiert. Gibt es trotzdem eine
Möglichkeit, gezielt nach diesem Ausdruck zu suchen (entweder mit
"Suchen & Ersetzen" oder mit der Extension "Alt. Suchen & Ersetzen")?

Dazu habe ich auch schon vor einiger Zeit eine Bugmeldung aufgegeben.
Wenn die Referenz nicht mehr da ist, dann könnte doch ganz normal der
Text, der sonst da steht ohne den Verweis eingebaut werden. Ich habe das
beim Base-Handbuch immer wieder wenn ich die Einzelkapitel aus dem
Handbuch veröffentlichen will. Ich muss jedes Mal
- zuerst aus der Datei ein *.pdf-Dokument erstellen
- danach im pdf-Dokument nach "Fehler: Ref" suchen
- anschließend die Stelle im *.odt-Dokument ansteuern und
- den Referenztext statt der Referenz dort einfügen.

Wenn jemand hier eine bessere Variante hat, immer man her damit.

Gruß

Robert

Hallo,

klar weiich nicht ob sich das auch bei wirklich langen Texten lohnt.
Ich habe die Qiueerverweise auf eine eigene Seite gesetzt und diese dann nicht gedruckt.
Also habe ich wenn ntig die Queerverweise nicht gelscht sondern leer gemacht und danach auf eine sehr kleine hhe gesetzt.
Damit war dann dieberschrift weg und man konnte nur wenn man sehr pingelig war sehen das hier der Zeilenabstand etwas grer war.
GruChristian Palm
Hallo Dieter,folgendes Problem: In einem groen Dokument habe ich zahlreicheQuerverweise aufberschriften eingebaut. Wenn ich eine dieserberschriften lsche, wird im zugehrigen Querverweis angezeigt:Fehler: Referenz nicht gefunden. Dieser Hinweis wird aber wie dieQuerverweise nicht als Text interpretiert. Gibt es trotzdem eineMglichkeit, gezielt nach diesem Ausdruck zu suchen (entweder mitSuchenErsetzenoder mit der ExtensionAlt. SuchenErsetzen)?Dazu habe ich auch schon vor einiger Zeit eine Bugmeldung aufgegeben.Wenn die Referenz nicht mehr da ist, dann knnte doch ganz normal derText, der sonst da steht ohne den Verweis eingebaut werden. Ich habe dasbeim Base-Handbuch immer wieder wenn ich die Einzelkapitel aus demHandbuch verffentlichen will. Ich muss jedes Mal- zuerst aus der Datei ein *.pdf-Dokument erstellen- danach im pdf-Dokument nachFehler: Refsuchen- anschlieend die Stelle im *.odt-Dokument ansteuern und- den Referenztext statt der Referenz dort einfgen.Wenn jemand hier eine bessere Variante hat, immer man her damit.GruRobert–Homepage:http://robert.familiegrosskopf.deLibreOffice Community:http://robert.familiegrosskopf.de/map_3--Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.orgProbleme?http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/Tipps zu Listenmails:http://wiki.documentfoundation.org/Netiquette/deListenarchiv:http://listarchives.libreoffice.org/de/users/Alle E-Mails an diese Liste werden unlschbarffentlich archiviert

Hallo Robert,

der Umweg über PDF ist mir noch gar nicht in den Sinn gekommen. Ist zwar umständlich, aber immerhin stellt das sicher, dass keine fehlenden Querverweise übersehen werden. Vielleicht weiß aber doch noch jemand eine elegantere Variante.

Dazu habe ich auch schon vor einiger Zeit eine Bugmeldung aufgegeben.

Weißt du noch die Bug-Nummer? Ich hatte auch schonmal in Bugzilla nachgeschaut, aber auf die Schnelle nichts entdeckt.

Viele Grüße
Dieter

Hallo Dieter,

der Umweg über PDF ist mir noch gar nicht in den Sinn gekommen. Ist zwar
umständlich, aber immerhin stellt das sicher, dass keine fehlenden
Querverweise übersehen werden. Vielleicht weiß aber doch noch jemand
eine elegantere Variante.

Dazu habe ich auch schon vor einiger Zeit eine Bugmeldung aufgegeben.

Weißt du noch die Bug-Nummer? Ich hatte auch schonmal in Bugzilla
nachgeschaut, aber auf die Schnelle nichts entdeckt.

Ist dieser hier:
https://bugs.documentfoundation.org/show_bug.cgi?id=58920

Gruß

Robert

Hallo Christian,

schau Dir doch bitte einmal hier
https://listarchives.libreoffice.org/de/users/msg18266.html
Deine Antwort auf die Mail von mir an.

Das, was Du schreibst, ist frei von Umlauten, dafür dann aber an den
entsprechenden Stellen ohne Leerzeichen zusammengefügt. Vorhergehende
Inhalte werden als Block über die ganze Bildschirmweite wiedergegeben.
Ich habe keine Lust, solche Mails zu lesen. Ob Du etwas für mich
Sinnvolles mitzuteilen hast werde ich so nie erfahren.

Gruß

Robert

Hallo Dieter, Robert, *,

ich kann euch ein Makro anbieten, das in dieser einfachen Form die "erste" Referenz findet, zu der das referenzierte Objekt nicht mehr vorhanden ist. "Erste" dürfte nicht der von der Reihenfolge erste, sondern der am frühesten angelegte Verweis sein.

Sub Main

oDoc = ThisComponent
oCtrler = oDoc.CurrentController
oTextFields = oDoc.Textfields.createEnumeration
do while oTextFields.hasMoreElements
     oTextField = oTextFields.nextElement
     if oTextField.CurrentPresentation = "Fehler: Referenz nicht gefunden" then
         oCtrler.select(oTextField.Anchor)
     end if
loop

End Sub

Das Makro darf man nicht von der Makro-IDE aus starten, dann klappt zwar der Select, aber die Seite mit dem ausgewählten Verweis wird nicht angezeigt. Aber es geht, wenn man das Makro über eine Tastenkombination startet, ich habe z.B. Alt+R verwendet.
Das ist nur ein einfaches Modell, man kann damit arbeiten, wenn man jeweils eine fehlerhafte Referenz sucht, sie korrigiert oder beseitigt und dann nach der nächsten sucht. Vielleicht fällt jemand eine Verbesserung ein.

Gruß

Gerhard

Hallo Dieter, Robert. *,

als ich das Makro mal auf ein eigenes Dokument anwenden wollte, bekam ich Fehlermeldungen. Der Grund war, dass das Verfolgen von Änderungen angeschaltet war und damit auch bereits gelöschteTextfelder wegen des Vergleichs noch vorhanden waren, aber nicht selektiert werden konnten (das Dokument war ein Kapitel eines LibreOffice-Handbuchs). Ich habe das Makro entsprechend angepast und außerdem einen Dialog zur Anzeige des "Fortschritts" (einfach die fortlaufende Nummer des untersuchten Textfelds) hinzugefügt, weil das Programm doch eine Weile läuft und man sonst nicht weiß, dass es noch aktiv ist.
Das scheint ein nützliches Werkzeug zu sein, aber ich weiß nicht so recht, wie man das elegant der Allgemeinheit zur Verfügung stellt.

Hier der Code (Deklarationen fehlen meist noch):

Sub fehlendeReferenz

dim prop(), zaehl as long

oDoc = ThisComponent
oText = oDoc.Text

' create dialog
oDialog = CreateUnoService("com.sun.star.awt.UnoControlDialog")
oDialogModel = CreateUnoService("com.sun.star.awt.UnoControlDialogModel")
oDialogModel.setPropertyValues( _
    Array("Height", "PositionX", "PositionY", "Width","Title"), _
    Array(30, 50, 50, 100, "Nummer des Textfelds") )
oDialog.setModel(oDialogModel)
oFTextModel = oDialogModel.createInstance("com.sun.star.awt.UnoControlFixedTextModel")
oFTextModel.setPropertyValues(Array("Height", "Label", "PositionX", "PositionY", "Width"), _
     Array(13, "A", 35, 10, 10))
oDialogModel.insertByName("CountTextFields", oFTextModel)
oDialog = CreateUnoService("com.sun.star.awt.UnoControlDialog")
oDialog.setModel(oDialogModel)
oDialog.setVisible(TRUE)
oTextFields = oDoc.Textfields.createEnumeration
do while oTextFields.hasMoreElements
    oTextField = oTextFields.nextElement
    zaehl = zaehl + 1
    wait 1    'otherwise many numbers will not be displayed, resulting in a seemingly frozen state
    oDialog.getControl("CountTextFields").Text = zaehl
    if oTextField.isFieldDisplayed = TRUE then
        prop = oTextField.PropertySetInfo.getProperties
        for i = 0 to UBound(prop) - 1
            if prop(i).Name = "CurrentPresentation" then
                    if oTextField.CurrentPresentation = "Fehler: Referenz nicht gefunden" then
                    msgbox "fehlende Referenz gefunden, wird angezeigt"
                    oCtrler.select(oTextField.Anchor)
                    exit sub
                end if
            end if
        next
    end if
loop
msgbox "keine fehlende Referenz gefunden"
oDialog.setVisible(FALSE)

End Sub

Wie gesagt: So funktioniert es nur, wenn man es z.B. über eine Tastenkombination im Dokument selbst aufruft.

Gerhard