Hyperref: falsche Links bei Listof, Bibliographie und Glossaren im Inhaltsverzeichnis

Hyperref: falsche Links bei Listof, Bibliographie und Glossaren im Inhaltsverzeichnis

Ich habe versucht, ein Inhaltsverzeichnis wie dieses zu erstellen:

I    Symbol Glossary
II   Acronyms
1.   Chapter 1
     1.1 Section 1
2.   Chapter 2...
...
III  List of Figures
IV   List of Tables
V    Bibliography

Also habe ich die listof's glossariesund bibliographyerfolgreich zum Inhaltsverzeichnis hinzugefügt. Aber jetzt sind die Inhaltsverzeichnis-Links nicht mehr synchron. Auch die Links in den listof's stimmen nicht mehr überein. Hier ist ein mwe (ohne Bibliographie)

\RequirePackage[l2tabu,orthodox]{nag}

\documentclass
[
    pdftex ,
    a4paper ,
    oneside ,
    12pt ,
    halfparskip ,
    headsepline ,
    footsepline ,
    listof=totocnumbered ,
    bibliography=totocnumbered ,
    numbers=noenddot ,
]{scrbook}

\usepackage[]{amsmath,amssymb}
\usepackage[]{graphicx}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[]{color}

\usepackage
[
    a4paper ,
    top=3.6cm ,
    bottom=3.6cm ,
    left=3.6cm ,
    right=3.6cm ,
]{geometry}

\usepackage[]{microtype}
\usepackage{setspace}
\usepackage[]{ftnxtra}
\usepackage{hyperref}

\usepackage
[
    nomain ,
    toc ,
    indexonlyfirst ,
    numberedsection ,
]{glossaries}

\usepackage
[
    block=par ,
    backend=biber ,
    safeinputenc ,
    backref ,
]{biblatex}

\onehalfspacing

\KOMAoptions{draft=on}

\setlength\parindent{0pt}

\definecolor{blue}{rgb}{ 0.0 , 0.0 , 1.0 }

\hypersetup
{
    colorlinks          = true ,
    linkcolor           = blue ,
    citecolor           = blue ,
    filecolor           = blue ,
    menucolor           = blue ,
    urlcolor            = blue ,
    bookmarksnumbered   = true ,
}

\newglossary[sym.glg]{sym}{sym.gls}{sym.glo}{Symbolverzeichnis}
\newglossary[acr.glg]{acr}{acr.gls}{acr.glo}{Abkürzungsverzeichnis}

\makeglossaries

\newglossaryentry{bla2}
{
    text        = {bla2} ,
    name        = {bla2} ,
    plural      = {bla2} ,
    description = {bla2bla2bla2bla2bla2} ,
    type        = {acr} ,
    sort        = {bla2} ,
}

\newglossaryentry{bla1}
{
    text        = {bla1} ,
    name        = {bla1} ,
    plural      = {bla1} ,
    description = {bla1bla1bla1bla1bla1} ,
    type        = {sym} ,
    sort        = {bla1} ,
}

% \addbibresource{eli_bib.bib}

\title{\textbf{Title}}

\begin{document}

\pagenumbering{arabic}

\maketitle

\thispagestyle{empty}

\renewcommand{\contentsname}{Inhaltsverzeichnis}
\renewcommand\thechapter{\Roman{chapter}}

\cleardoublepage\phantomsection
\tableofcontents

\cleardoublepage\phantomsection
\printglossary[type=acr,title=Abkürzungsverzeichnis]

\cleardoublepage\phantomsection
\printglossary[type=sym,title=Symbolverzeichnis]

\renewcommand\thechapter{\arabic{chapter}}
\setcounter{chapter}{0}


\chapter{test}\section{test}
\chapter{test}\section{test}
\chapter{test}\section{test}
\chapter{test}\section{test}
\chapter{test}\section{test}
\chapter{test}\section{test}
\chapter{test}\section{test}
\chapter{test}\section{test}

\gls{bla1} blablabla \gls{bla2}

\chapter{test}\section{test}
\chapter{test}\section{test}
\chapter{test}\section{test}
\chapter{test}\section{test}
\chapter{test}\section{test}
\chapter{test}\section{test}
\chapter{test}\section{test}
\chapter{test}\section{test}


\renewcommand\thechapter{\Roman{chapter}}
\setcounter{chapter}{3}
\cleardoublepage\phantomsection
\listoftables
\cleardoublepage\phantomsection
\listoffigures
\cleardoublepage\phantomsection
\printbibliography[title=Literaturverzeichnis]

\end{document}

Ich kompiliere das PDF folgendermaßen:

pdflatex -interaction=batchmode -draftmode %doc%.tex
makeindex -s %doc%.ist -t %doc%.sym.glg -o %doc%.sym.gls %doc%.sym.glo
makeindex -s %doc%.ist -t %doc%.acr.glg -o %doc%.acr.gls %doc%.acr.glo
biber %doc%
pdflatex -interaction=batchmode -draftmode %doc%.tex
pdflatex -interaction=batchmode -synctex=1 %doc%.tex

Was ist hier schiefgelaufen? (Ich habe \cleardoublepage\phantomsectionbisher sogar versucht, fast alles an eine andere Position zu bringen)


BEARBEITEN #1:

Ich habe das Wesentliche auf ein minimales MWE reduziert, wobei die Backlinks in den Glossaren immer noch falsch sind:

\documentclass[oneside]{scrbook}
\usepackage[ngerman]{babel}
\usepackage{color,hyperref}
\usepackage[nomain]{glossaries}

\newglossary[sym.glg]{sym}{sym.gls}{sym.glo}{Symbolverzeichnis}
\newglossary[acr.glg]{acr}{acr.gls}{acr.glo}{Abkürzungsverzeichnis}
\makeglossaries
\newglossaryentry{bla2}{name={bla2},description={bla2bla2bla2bla2bla2},type={acr}}
\newglossaryentry{bla1}{name={bla1},description={bla1bla1bla1bla1bla1},type={sym}}

\begin{document}

\printglossary[type=acr]\printglossary[type=sym]

\chapter{test}\section{test}\chapter{test}\section{test}
\gls{bla1} blablabla \gls{bla2}
\chapter{test}\section{test}\chapter{test}\section{test}

\end{document}

BEARBEITEN #2:

Ich möchte meine Kompilierungs-Batchdatei freigeben (ich konnte im WWW keine gute finden):

GitHub – Gist

:: sumatrapdf.exe is in miktex/miktex/bin
:: biber.exe in miktex/miktex/bin
:: sumatrapdf: einstellungen > optionen : 'pfad/zu/sublime_text.exe %f:%l:100000' eintragen
:: call this batch file like: 'tex.bat myTexFile' (myTexFile without any extension)

@echo off

setlocal

set document=%~n1
set miktexpath=C:/bin/programme/miktex/miktex/bin

set path=%path%;%miktexpath%;

call :deletetemporaries
call :compile

goto final

:compile
    echo ! Begin Compilation
    call :buildtex

    if errorlevel 1 (
        call :syntaxerror
    ) else (
        call :buildglossaries
        call :buildbib
        call :buildtex
        call :buildglossaries
        call :buildpdf
        call :showpdf
        call :deletetemporaries
    )

:deletetemporaries
    echo ! Delete temporaries
    del /s *glg >nul 2>&1
    del /s *gls >nul 2>&1
    del /s *glo >nul 2>&1
    del /s *blg >nul 2>&1
    del /s *bbl >nul 2>&1
    del /s *toc >nul 2>&1
    del /s *out >nul 2>&1
    del /s *log >nul 2>&1
    del /s *lot >nul 2>&1
    del /s *lof >nul 2>&1
    del /s *ist >nul 2>&1
    del /s *bcf >nul 2>&1
    del /s *aux >nul 2>&1
    del /s *run.xml >nul 2>&1
goto end


:buildglossaries
    makeindex -s %document%.ist -t %document%.sym.glg -o %document%.sym.gls %document%.sym.glo 2>nul
    makeindex -s %document%.ist -t %document%.acr.glg -o %document%.acr.gls %document%.acr.glo 2>nul
    makeindex -s %document%.ist -t %document%.idx.glg -o %document%.idx.gls %document%.idx.glo 2>nul
goto end

:buildpdf
    pdflatex -interaction=batchmode -synctex=1 %document%.tex 1>nul
    echo.
goto end

:buildtex
    pdflatex -interaction=batchmode -draftmode %document%.tex 1>nul
goto end

:buildbib
    biber %document% 2>nul
goto end

:syntaxerror
    pdflatex -draftmode %document%.tex
    echo ! Compilation failed
goto end

:showpdf
    SumatraPDF -reuse-instance %document%.pdf 1>nul
goto end

:final
    echo ! Compile done
    echo.
    exit

:end
    goto:eof

Antwort1

Durch das Einfügen der Glossare und anderer Listen ändern sich die Seitenzahlen. Daher müssen Sie Folgendes tun:

pdflatex
makeglossaries
pdflatex
makeglossaries
pdflatex

um sie auf den neuesten Stand zu bringen.

Der erste makeglossariesgeneriert die Glossare, verwendet jedoch die Seitenzahlen aus dem ersten LaTeX-Durchlauf. Sie benötigen daher einen weiteren LaTeX-Durchlauf, um die Seitenzahlen zu aktualisieren. Anschließend müssen Sie den Durchlauf erneut ausführen, makeglossariesum die Rückverweise zu aktualisieren, und LaTeX erneut ausführen, um das Dokument zu aktualisieren.

Antwort2

Sie erhalten Nachrichten mit etwa folgendem Inhalt:

pdfTeX warning (ext4): destination with the same identifier (name{chapter.4
}) has been already used, duplicate ignored

die nicht ignoriert werden sollten. Sie werden durch Kapitel mit der gleichen Nummer verursacht.

Sie können es lösen, indem Sie hinzufügen

\renewcommand\theHchapter{\thechapter}

nachdem Sie dies getan haben \renewcommand{\thechapter}{\Roman{chapter}}. Auf diese Weise hyperrefwird eine eindeutige interne Kennung für die Kapitel verwendet und die Rückkehr erfolgt synchron.

verwandte Informationen