Hyperref und Phantomsection springen an falsche Stelle

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


Mk4
Forum-Anfänger
Forum-Anfänger
Beiträge: 10
Registriert: Di 5. Jun 2018, 09:55

Hyperref und Phantomsection springen an falsche Stelle

Beitrag von Mk4 »

Hallo zusammen!

Ich möchte in meiner PDF auf Stellen in anderen Kaptitel verlinken. Dies tue ich bisher folgendermaßen: Das Kapitel, in welches ich an einer bestimmten Stelle verlinken möchte ist so aufgebaut:
\subsection{angezeigterNameDesKapitels}
\label{sec:internerNameDesKapitels}

Viel Text.
Viel Text.
Viel Text.

\phantomsection
\label{sec:NameDerStelle}   % bzw. habe ich es mit und ohne "sec:" probiert

Text der Stelle, auf dich ich verlinken möchte.
Text der Stelle, auf dich ich verlinken möchte.
Text der Stelle, auf dich ich verlinken möchte.

...
...
...
Ich habe jetzt versucht in einem anderen Kapitel auf diese Stelle zu verlinken mit:
\hyperref[sec:NameDerStelle]{angezeigterTextDesLinks}   % auch hier wieder mit und ohne "sec:" probiert. Natürlich hier und oben immer die gleiche Variante
Wenn ich anschließend im Dokument die Link anklicke, komme ich zumeist nicht an die gewünschte Stelle, sondern an den Anfang des Kapitels. Nach ein paar mal klappt es jedoch und ich lande an der richtigen Stelle (auf der richtigen Seite des Kapitels). Probiere ich das noch mit einem zweiten Link, funktioniert es aber wiederum nicht mehr und ich lande abermals am Kapitelanfang. Ist jetzt nicht ganz so schlimm, aber offensichtlich geht´s ja besser. Nur wo liegt bei mir der Fehler?

Meine Hauptdatei lädt folgende Usepackages: (Vorlage von einem Bekannten übernommen - möglich, dass hier nicht alles plausibel ist)
\documentclass[
			   final,			 % Finale Version final oder Entwurf draft
               %BCOR10mm,         			% Bindekorrektur
               DIV12,            				% Satzspiegelgröße DIV12
               a4paper,		     					% A4 Papier
               twoside,          				% zweiseitiger Druck
             % oneside,
               %headinclude,      			% Kopfzeilen im Satzspiegel (tiefere Position)
             % openright,     	   			% Kapitel beginnen rechts
               cleardoubleplain, 				% Leere Seiten vom Typ plain (nur Seiten-Nr.)
               tablecaptionabove,				% Tabellen caption drüber
               pointlessnumbers, 				% Kein Punkt hinter Gliederungsnummern
               liststotoc,       				% Abbildungs- & Tabellen-Verzeichnisse ins TOC
               idxtotoc,	     					% Index ins TOC einfügen
               bibtotoc,         				% Bibliographie ins TOC
               halfparskip-      				% Halbe Zeile Absatzabstand, keine besonderen
			   			,headsepline]     				% Maßnahmen bei Seitenumbrüchen			   
               {scrbook}         				% KOMA-Skript Report-Klasse

   \usepackage[T1]{fontenc}      	 				% T1 Schriftarten
%\usepackage{cmbright}        	 				% Sans Serif Text- und Mathematikschriften: cmbright
%\usepackage[scaled]{beramono} 				 	% serifenlose Schreibmaschinenschrift: beramono
   \addtokomafont{sectioning}{\rmfamily}
																			 	% Auch Ueberschriften in Serifenschrift
   \usepackage{pifont}				 							% Symbole: Zahlen mit Kreis drum
   \usepackage{setspace}			 							% Korrekte Änderung des Zeilenabstandes
   \onehalfspacing     			 						% Für anderthalbfachen Zeilenabstand
   \pagestyle{headings}       	     				% Kopf- und Fußzeilen
   \typearea[10mm]{12}        		 					% Satzspiegel nach Änderung der Schrift neu 
								 												% berechnen: 10mm Bindekorrektur, DIV15
   \setcounter{tocdepth}{3}		 						% Inhaltsverzeichnis bis zur X. Ebene
   \setcounter{secnumdepth}{4}		 					% Nummerierung: bis zur X. Ebene
   \usepackage{geometry}
   \geometry{bindingoffset=0mm,top=30mm,textheight=230mm,textwidth=162mm,heightrounded,right=25mm,head=14.5pt}

% -----------------------------------------------------------------------------
% Zusätzliche Pakete
% -----------------------------------------------------------------------------
   \usepackage[latin1]{inputenc}    				% direkte Eingabe von Umlauten (ä statt "a)
   \usepackage[ngerman]{babel}   	 				% deutsches Dokument mit neuer Rechtschreibung
   \usepackage{latexsym}			 							% Zeichen/Symbolsammlung
   \usepackage{amsmath} 			 							% Zeichen/Symbolsammlung
   \usepackage{amssymb} 			 							% Zeichen/Symbolsammlung
   \usepackage{sistyle} 			 							% Für aufrechte SI-Einheiten in mathematischen Formeln
   \SIstyle{German}    			 						% deutscher Nummern-Stil
   \usepackage[numbers]{natbib} 	 					% Bilbiographie numbers
%\bibliographystyle{bibs/dinat} 	 		% deutscher DIN-Stil: dinat
   \bibliographystyle{bibs/abbrdinat}	 	% et al.
%\bibliographystyle{alphadin}
   \usepackage{cite}
   \usepackage{float}
   \usepackage{longtable} 			 						% Für Tabellen laenger als eine Seite
   \usepackage{tabularx}  			 						% Für Tabellen mit variablen Spalten [x]
   \usepackage{booktabs} 			 						% Für Publikationsreifes Tabellenlayout (z.B. \midrule)
   \usepackage{mathsets} 			 						% Für Zahlenmengen (natürliche (\N), reelle (\R) etc.)
   \usepackage{url}      			 						% Für vernünftig formatierte & getrennte URLs
								 												% Erzeugt Links in PDF-Dateien.
%\usepackage{footmisc}  			 					% für mehrfach verwendete Fußnoten
   \usepackage[pdftex]{graphicx} 	 				% Grafiken einfügen für pdfLaTeX
   \usepackage{ragged2e}			 							% Silbentrennung in Figure-Caption
   \usepackage{caption}			 							% Fußnote in Tabelle
   \usepackage[final]{pdfpages} 	 					% PDF-Dateien über \includepdf[-]{Datei} einfügen
   \usepackage{rotfloat} 			 						% Für automat. gedrehte Abbildungen und Tabellen
   \usepackage{pdfpages}		     						% PDF-Dokumente einbinden
%\usepackage[babel]{microtype}
%\usepackage{tabulary}			 						% Schicke Tabellen von Steffen
%\usepackage{fancyhdr}			 						% Strich unter Kopfzeile
%\usepackage{scrpage2}			 						% Für header
   \usepackage{textcomp} 			 						% für copyright
   \usepackage[clearempty]{titlesec}				% Leerseiten bei twoside ohne Seitenzahl
   \usepackage{color}				 							% Paket für Farben im PDF
   \usepackage{colortbl}			 							% Farbige Tabellen
% Define user colors using the RGB model
   \definecolor{dunkelrot}{rgb}{0.5,0,0}
   \definecolor{hellgrau}{rgb}{0.586,0.586,0.586}
   \definecolor{GRAY}{gray}{0.7}
% Paket für Links innerhalb des PDF Dokuments
   \definecolor{LinkColor}{rgb}{0,0,0} % 0 0 0.5
   \usepackage[%
	pdftitle={NAME},																			% Titel der Diplomarbeit
	pdfauthor={NAME},																				% Autor(en)
	pdfcreator={LaTeX, LaTeX with hyperref and KOMA-Script},						% Genutzte Programme
	pdfsubject={NAME}, 	% Betreff
	pdfkeywords={NAME},													% Keywords halt :-)
	colorlinks,
	pdfpagelabels,
	pdfstartview = FitH,
	bookmarksopen = true,
	bookmarksnumbered = true,
	linkcolor = black,
	plainpages = false,
	hypertexnames = false,
	citecolor = black]{hyperref} 								
   \hypersetup{colorlinks=true,		% Definition der Links im PDF File
	linkcolor=LinkColor,%
	citecolor=LinkColor,%
	filecolor=LinkColor,%
	menucolor=LinkColor,%
	%pagecolor=LinkColor,%
	urlcolor=LinkColor}

% \usepackage{textgreek}						% griechische Buchstaben im Fließtext mit /textalpha etc. [NEU!]
	
% -----------------------------------------------------------------------------
% Eigene Kommandos
% -----------------------------------------------------------------------------
\newcommand{\bm}[1]{{\mbox{{\boldmath$#1$}}}} 				% Fettdruck in Formeln
\newcommand{\bigdot}{\ensuremath{\bullet}}    				% dicker schwarzer Punkt
\newcommand{\cel}{\ensuremath{^{\circ}\SI{}{C}}}    	% Grad Celsius
\newcommand{\dca}{\ensuremath{^{\circ}\SI{}{\,KW}}} 	% Grad Kurbelwinkel
\newcommand{\grad}{\ensuremath{^\circ}} 							% Gradzeichen
% -----------------------------------------------------------------------------
% Hauptdokument
% -----------------------------------------------------------------------------
\begin{document} 
 	\pagestyle{empty}       % keine Seitenzahlen
 	
 	\include{texs/Titel}
 	
 				\cleardoublepage
	
	\include{texs/Sperrvermerk}
 	
 				\cleardoublepage
 	
 	\include{texs/Erklärung}
 	
 				\cleardoublepage
 				
 	\pagestyle{plain}
 	\pagenumbering{Roman}   % Römische Seitenzahlen und Zähler zurücksetzen. 	
 	\tableofcontents  
 	
 				\cleardoublepage
 	
 	\begingroup
			\renewcommand\cleardoublepage{\relax}      
			\listoffigures		  
 			\listoftables  
 	\endgroup    
 	 
 	\include{texs/Nomenklatur}  
 	
 				\cleardoublepage
 	
 	\pagestyle{headings}  	% headings, fancy Standard-Kopfzeilen mit Kapitel- und Unterkapiteln
 	\pagenumbering{arabic}   
  	\include{texs/Einleitung}
  	\include{texs/Grundlagen}
 	\include{texs/Vorbetrachtung} 
 	\include{texs/Versuchsdurchführung}
 	\include{texs/Auswertung}
 	\include{texs/Zusammenfassung}
 	\include{texs/Ausblick}
 	
 	\bibliography{bibs/Literaturverzeichnis}
  	\cleardoublepage
  	\pagenumbering{arabic}  
  	\renewcommand*{\thepage}{A-\arabic{page}} 
 	\appendix
  	\include{texs/anhang}  	
 \end{document}

Gast

Beitrag von Gast »

Normalerweise funktioniert das so. Allerdings braucht hyperref min. zwei (manchmal auch mehr) LaTeX-Läufe, bis die Sprungziele korrekt sind, so wie es auch min. zwei Durchläufe dauert, bis \ref oder \pageref das korrekte Ergebnis zu einem \label liefern. Mehr kann ich ohne echtes Minimalbeispiel, welches das Problem zeigt, zu diesem nicht sagen.

Ich kann aber noch darauf hinweisen, dass das gezeigte Rahmendokument suboptimal ist:
  • Diverse Optionen, die bei \documentclass angegeben sind, sind veraltet und sollten durch ihre aktuellen key=value-Pedanten ersetzt werden. Welche das sind, ist den entsprechenden Warnungen aus der log-Datei (kann man mit jeden Text-Editor anschauen) zu entnehmen. Tut man das nicht, schaltet KOMA-Script auf version=first zurück, was diverse Verbesserungen in KOMA-Script seit 2006 abschaltet. Die veraltete Option DIV12 kann man auch gleich ganz entfernen, da sie durch die Verwendung von geometry ohnehin nicht wirklich zum Zuge kommt.
  • \pagestyle{headings} ist bei scrbook voreingestellt.
  • \typerea[10mm]{12} wird durch das Laden von geometry kurze Zeit später wieder überschrieben und ist damit sinnlos.
  • Ist Dein Dokument wirklich Latin-1 codiert? Alle mir bekannten LaTeX-Editoren sind auf UTF8 voreingestellt (und in der Regel ist das auch durchaus empfehlenswert).
  • Natürlich kann man noch immer mit natbib arbeiten. Heutzutage wird aber (außer bei einigen Verlagen) fast nur noch mit biblatex und biber gearbeitet, weil diese deutlich leistungsfähiger und leichter konfiguriert sind. Natürlich deckt biblatex auch die Funktionalität von cite ab. Siehe dazu die [d]biblatex[/d]-Anleitung.
  • sistyle ist ein nettes Paket, wird aber nicht mehr weiterentwickelt, weil es mit siunitx einen leistungsfähigeren Nachfolger gibt, in den alle weitere Entwicklungsenergie einfließt.
  • Es sei darauf hingewiesen, dass es ggf. Pakete gibt, um tabularx und longtable zu vereinen, beispielsweise xltabular.
  • graphicx lädt man besser ohne Backendoption pdftex. Die Standard graphics.cfg erkennt das Backend selbst und reagiert ohne diese Option dann auch korrekt auf andere TeX-Engines. Die Option ist damit bestenfalls überflüssig, schlechtestenfalls sogar schädllich.
  • rotfloat lädt float, ein Paket, das den Autor von rotfloat nicht sonderlich begeistert. Man sollte es daher nur nutzen, wenn man es wirklich braucht. Eine Alternative wäre beispielsweise die direkte Verwendung von rotating.
  • titlesec zusammen mit einer KOMA-Script-Klasse wie scrbook ist eigentlich ein No-Go und Dank der vielen Konfigurationsmöglichkeiten in KOMA-Script eigentlich auch nicht notwendig.
  • Statt color und colortbl lädt man besser gleich xcolor mit Option table.
  • Bei Verwendung von hyperref ist es sehr selten erforderlich zuvor noch url zu laden. Die seltenen Fälle sind im README.pdf zu hyperref angegeben. Ob ein solcher hier vorliegt, wurde von mir nicht überprüft.
  • String-Optionen wie pdftitle sollte man bei hyperref nicht per \usepackage angeben, sondern besser per \hypersetup, weil nur dann die Codierung zuverlässig PDF-konform verändert werden kann. Dagegen kann man Optionen für die Farben durchaus bereits bei \usepackage angeben, wenn man das mag. Schwarze Links sind allerdings wenig sinnvoll, da der Leser sie nicht erkennen kann. Dann schon besser farbiges Unterstreichen verwenden. Das kann der Leser im PDF erkennen, wird aber nicht mit ausgedruckt.
  • Wenn man die Titelseite mit \maketitle oder alternativ mit einer titlepage-Umgebung macht, dann ist der Seitenstil dafür automatisch empty, so dass man dafür kein \pagestyle{empty} benötigt. Für Sperrvermerk und Erklärung braucht man es ggf. trotzdem, allerdings nicht, wenn diese nur eine Seite lang sind und als Kapitel, also \chapter, \chapter*, \addchap oder \addchap*, realisiert sind, weil Kapitelanfangsseiten ohnehin mit Seitenstil \chapterpagestyle gesetzt werden.
  • \cleardoublepage vor einem neuen Kapitel ist überflüssig.
  • Statt mir \pagenumbering{Roman} zu arbeiten, bietet sich bei Buchklassen wie scrbook die Verwendung von \frontmatter und \mainmatter an, wobei typografisch korrekt, \frontmatter bereits vor den Titelseiten einzusetzen ist. Siehe dazu »Welche Seitenzahl hat das Inhaltsverzeichnis?« und allgemein zu römischen Seitenzahlen auch »Römische Seitenzahlen im Vorderteil (und im Endteil)?«.
  • Will man Verzeichnisse wie das Tabellen- und das Abbildungsverzeichnis auf einer Seite zusammenfassen, dann sollte man das unter einer gemeinsamen Überschrift tun und dafür die Verzeichnisse in der Gliederungshierachie eine Ebene tiefer ansiedeln. Das geht bei KOMA-Script einfach mit Option listof=leveldown (siehe KOMA-Script-Anleitung oder KOMA-Script-Buch). Anderenfalls beschädigt man die Konsistenz. Das gilt umso mehr, wenn man die Verzeichnisse ins Inhaltsverzeichnis eintragen lässt, weil der Leser natürlich automatisch erwartet, dass ein gefundenes Kapitel die entsprechende Seite beginnt.
  • Die meisten \cleardoublepage, die Du verwendest, sollten, soweit sie nicht überflüssig sind, ganz korrekt \cleardoubleoddpage sein. Spielt aber im konkreten Fall keine Rolle, solange die Voreinstellung von Option open nicht geändert wird.
  • Achja: mathsets kenne ich nicht.Das Paket ist bei TeX-Live auf nicht dabei. Ich konnte es auch nicht auf CTAN finden. Ohne Quellenangabe ist es damit für ein Minimalbeispiel (was Du ja explizit nicht erstellt hast) unbrauchbar. Ich kenne nur amsfonts, das \mathbb für Mengen bereit stellt. Allerdings ist die Sache mit der Doppellinie eigentlich eine Notlösung für Handschriften (Tafel), weil dort fett schlecht möglich ist. Ich weiß aber natürlich, dass es in Lehrbüchern (insb. Schulbüchern) trotzdem recht beliebt ist, um weniger erfahrene Leser nicht zu überfordern.

Mk4
Forum-Anfänger
Forum-Anfänger
Beiträge: 10
Registriert: Di 5. Jun 2018, 09:55

Beitrag von Mk4 »

Also erstmal Danke für die Mühe der Analyse!



Ich lasse Latex immer mind. 2x (nicht selten auch mehr) durchlaufen, bevor ich mir das erstellte PDF anschaue. Dies können wir also ausschließen!

Das mit dem Rahmendokument habe ich mir schon gedacht. Derjenige hat das damals selbst erstellt und es schmeißt aktuell 15 Warnungen und so einige leere Boxen.. Vielleicht sollte ich mal eine andere Vorlage verwenden.. Folgendes hat irgendwie schon seine Richtigkeit:
https://de.wikibooks.org/wiki/LaTeX-Kompendium:_LaTeX_für_wissenschaftiche_Arbeiten hat geschrieben: Kann ich eine Online-Vorlage oder die Vorlage eines Freundes verwenden?
Wenn ein Freund seine Vorlage teilen möchte, ist das eine sehr nette Geste. Die Antwort sollte aber sein: Nein Danke. Man kann kaum glauben wie viel Seltsamkeiten manchmal in solchen Vorlagen sind. All diese Seltsamkeiten können kleine Stolperfallen bei der Erstellung des eigenen Dokumentes sein. Leider gilt das selbe für viele der Vorlagen, welche man im Internet oder an Universitäten findet.

Nun zu dem einen Punkt, zu dem ich noch was beisteuert kann
Anonymus hat geschrieben: [*]Bei Verwendung von hyperref ist es sehr selten erforderlich zuvor noch url zu laden. Die seltenen Fälle sind im README.pdf zu hyperref angegeben. Ob ein solcher hier vorliegt, wurde von mir nicht überprüft.
Das Usepackage URL wird vor hyperref geladen, dem ist so!



Ansonsten möchte ich noch angeben, dass ich die Version TeXnicCenter 1 Beta 7.01 - unstable ('Greengras') verwende.

Gast

Beitrag von Gast »

Mk4 hat geschrieben:Das Usepackage URL wird vor hyperref geladen, dem ist so!
Das ist nicht die Frage. Die Frage ist: Warum wird das gemacht? Normalerweise ist es nämlich überflüssig.

Ratgeber

Abseits vom Thema

Beitrag von Ratgeber »

Mk4 hat geschrieben:[…] Ansonsten möchte ich noch angeben, dass ich die Version TeXnicCenter 1 Beta 7.01 - unstable ('Greengras') verwende.
Vielleicht ist es angebracht, das etwa fünf Jahre alte aktuelle »TeXnicCenter 2.02 Stable« zu verwenden oder auf einen der anderen LaTeX-Editoren umzusteigen.

Antworten