PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Link ohne ziel



Sbata
27-03-2005, 11:15
hi *

ich habe in meinen Dokument mehr als 10000 Links(interne Links):

\hyperlink{..}{..}
\hypertarget{..}{..}

ich kann nicht manuell überprüfen ob jeder link funktioniert. ich benutze ganz normal der hyperref
package.

wenn ein Link kein Target hat dann wird der link dargestellt,und ist auch anklickbar , jedoch wenn
man ihm klickt dann zeigt er auf die erste seite der Dokument.

kann man das ändern , so das der Link nicht mehr anklikbar ist ???
nur der Text wird geschrieben.

danke sehr

Sbata

blubb
27-03-2005, 14:29
ich kann nicht manuell überprüfen ob jeder link funktioniert.
Das sollte eigentlich als Warnung im Log-File kommen.

Du kannst ja mal bewusst einen falschen Link setzen und schauen, ob die Warnung im log-File kommt.

Sbata
27-03-2005, 15:27
das geht , aber
ich will zuerst die links ohne ziel auschalten

sbata

blubb
28-03-2005, 15:59
Du kannst ja mal bewusst einen falschen Link setzen und schauen, ob die Warnung im log-File kommt.
Habe ich jetzt mal kurz gemacht, es kam aber keine Warnung von hyperref, dafür hat pdfTeX hat eine Warnung ausgeworfen:

! pdfTeX warning (dest): name{dd} has been referenced but does not exist, replaced by a fixed one

Aus http://www.mrunix.de/forums/showthread.php?p=173421#post173421

ist es machbar einen macro zu schreiben , der überprüft ob jeder \hyperlink ein target hat. \hyperlink{id}{text}
\hypertarget{id}{text}
Da \hyperlink keine Warnung wirft, sondern pdfTeX scheint es tief im System vergraben zu sein.

Oder anders formuliert: Wenn ich vor dem Problem stehen würde, würde ich eher den Weg über ein Skript gehen, das die falschen links aus dem log extrahiert und anschliessend meine Sourcen anpassen.

Sbata
28-03-2005, 17:13
na ja ich kann kein script schreiben.
die falschen links sind auch bei mir tief , im xml , und ich kann diesen xml nicht ändern.
aus diesen xml generiere ich der latex .
danke für deine hilfe.

sbata

moedule
29-03-2005, 02:50
hab mir da mal kurz ein kleines script überlegt ... (und bitte nicht den stil kritisieren, ist nicht unbedingt meine stärke mit sed ...) (verbesserungen (vereinfachungen) werden gerne angenommen)

es extrahiert aus der tex-datei (als parameter des scripts) alle hypertargets und alle hyperlinks, schreibt diese jeweils in ne datei (geht sicher auch ohne datei) und vergelicht dann die links mit den targets. schlußendlich kommt eine liste von links heraus, die kein passendes target haben



#!/bin/sh
cat $1 | grep "\hypertarget" | sed -e 's/.*\\hypertarget{\(.*\)}.*/\1/'| sed -e 's/\(.*\)}.*/\1/' > targets.txt
cat $1 | grep "\hyperlink" | sed -e 's/.*\\hyperlink{\(.*\)}.*/\1/'| sed -e 's/\(.*\)}.*/\1/' > links.txt
awk '{system("a=`grep -c -s "$1" targets.txt`; if test $a -eq 0; then echo "$1";fi")}' links.txt


sicher noch verbesserungswürdig (mehrfacheinträge, usw). und vorallem mein sed-awk-bash-mix :-)

moe

Sbata
29-03-2005, 07:48
danke dir
ich brauche aber eine latex lösung,
na ja ich werde einfach weiter suchen.

sbata