PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SplitIndex und Indexeinträge mit fortlaufender Seitenangabe zb. 48f + Hyperlink



sharpType
03-08-2011, 19:12
Hi Profis,

mir ist gerade etwas in meinem Dokument aufgefallen und zwar erstelle ich mehrere getrennte Index-Verzeichnisse und das klappt mit Splitindex auch problemlos. Allerdings wenn ich dasselbe Stichwort auf zwei aufeinander folgenden Seiten habe taucht es im Index natürlich mit 48f auf, wobei die Zahl 48 die Seitenzahl des ersten Vorkommnisses des Begriffs ist.

Dummerweise bekomme ich bezüglich dieses Stichworts dann immer eine Warnung: "48f" has been referenced but does not exist, replaced by a fixed one

Das ist sehr unschön, da ich viele solcher Begriffe habe. Möchte mir jetzt ungern vorher überlegen, wo ein Stichwort mehrfach vorkommt. Das soll ja LaTeX für mich tun ;)

Weiteres ärgerliches Problem: Wenn ich auf die Zahl 48f klicke, dann lande ich auf der allerersten Seite des Dokuments, der Link funktioniert also nicht. Hätte er nicht auf Seite 48 landen sollen?

Ich kann gern ein MiniBsp machen (wenn ich das überhaupt reproduzieren kann, da mein Dokument sehr sehr groß ist), aber wenn mir jetzt zb. jmd direkt sagt, das kann LaTeX nicht und das ist normal, dann finde ich mich damit ab. Ist halt irgendwie ärgerlich.

Vielen Dank schon mal.

PS: Vielleicht kann man das in SpliIndex irgednwie per Option einstellen, dass er einfach jede Seite auflisten soll, anstatt das "f" dahinerklemmen? Konnte diesbezüglich aber leider nichts finden.:confused: (Ist prinzipiell ja auch ziemlich blöd das einzustellen)

Grüße

mechanicus
03-08-2011, 20:46
Hi,

dann musst du die Stildatei des makeindex-Aufrufes anpassen.

Marco

sharpType
04-08-2011, 09:06
Ah da kommen wir der Sache schon näher. Die sieht so aus:



\begin{filecontents}{Index_Stildatei.ist}
quote '+'
headings_flag 1
heading_prefix "{\\bfseries "
heading_suffix "}\\nopagebreak\n"
symhead_positive "Symbole"
numhead_positive "Zahlen"
delim_0 "\\dotfill "
delim_1 "\\dotfill "
delim_2 "\\dotfill "
delim_r "~--~"
suffix_2p "f"
suffix_3p "ff"
preamble "\\begin{theindex}\n\n"
postamble "\n\n\\end{theindex}\n"
\end{filecontents}


Bei "suffix_2p" und 3p sehe ich die Zeichen schon, aber kann man hier irgendwie die Links beeinflussen oder sehen, warum die nicht funktionieren? :confused:

sharpType
04-08-2011, 09:52
Ich habe es tatsächlich geschafft das Problem mit einem "kleinen" MiniBsp zu reproduzieren, hätte ich nicht gedacht, da mein Dokument so umfangreich ist. Bitte wundert euch daher nicht, um diverse "Hacks" oder Packages. Habe jedoch schon das gröbste entfernt. Aber man kann gut sehen, dass er immer auf die erste Seite springt bei dem Indexeintrag :(



%\listfiles%Listet eine *File List* in der .log-Datei auf

\documentclass[pdftex,
final,
10pt,
toc=indented,
listof=totoc,
numbers=noenddot,
a4paper,
pagesize,
open=right,
twoside,
titlepage,
ngerman,
svgnames,
parskip=full-]{scrreprt}


%+++++++++++++++++++++++++++++++++++++++ INDEX STILDATEI
\begin{filecontents}{Index_Stildatei.ist}
quote '+'
headings_flag 1
heading_prefix "{\\bfseries "
heading_suffix "}\\nopagebreak\n"
symhead_positive "Symbole"
numhead_positive "Zahlen"
delim_0 "\\dotfill "
delim_1 "\\dotfill "
delim_2 "\\dotfill "
delim_r "~--~"
suffix_2p "f"
suffix_3p "ff"
preamble "\\begin{theindex}\n\n"
postamble "\n\n\\end{theindex}\n"
\end{filecontents}
%+++++++++++++++++++++++++++++++++++++++ INDEX STILDATEI



%+++++++++++++++++++++++++++++++++++++++ Laden diverser Packages
\usepackage{xspace}%setzt ein Leerzeichen nach einem Befehl ohne Argumente
\usepackage{ifthen}
%+++++++++++++++++++++++++++++++++++++++ Laden diverser Packages


%+++++++++++++++++++++++++++++++++++++++ Laden diverser Packages
\usepackage{cmap}%PDF-Dateien durchsuchbar und kopierbar machen, vor Package: -fontenc- laden!
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english, ngerman]{babel}
\usepackage{microtype}
\usepackage{caption}
%+++++++++++++++++++++++++++++++++++++++ Laden diverser Packages


%+++++++++++++++++++++++++++++++++++++++ PATCH fuer Zaehlertiefen in den Caption-Packages
% Patch, muß NACH caption und VOR subcaption eingebunden werden
% Er bewirkt, daß zusätzlich der Zähler lofdepth bzw. lotdepth beachtet wird
\makeatletter
\def\@@DeclareCaptionSubType#1[#2]#3{%
\@ifundefined{c@#3}%
{\caption@Error{No float type '#3' defined}}%
{\@ifundefined{c@sub#3}%
{\caption@Debug{New subtype `sub#3'}%
\newcounter{sub#3}%
\@namedef{ext@sub#3}{\csname ext@#3\endcsname}%
\@@@DeclareCaptionSubType{#3}{@dotted\csname ext@#3\endcsname line}%
\@cons\caption@subtypelist{{#3}}}%
{\caption@Debug{Modify caption `sub#3'}}%
\@namedef{sub#3name}{}%
\@namedef{sub#3autorefname}{\csname #3name\endcsname}%
#1% is \@firstoftwo in star form, and \@secondoftwo otherwise
{\@namedef{p@sub#3}{}%
\@namedef{thesub#3}{\csname the#3\endcsname.\@nameuse{#2}{sub#3}}}%
{\@namedef{p@sub#3}{\csname the#3\endcsname}%
\@namedef{thesub#3}{\@nameuse{#2}{sub#3}}}%
\@namedef{theHsub#3}{\csname theH#3\endcsname.\arabic{sub#3}}%
}}
\def\@@@DeclareCaptionSubType#1#2{%
\@namedef{l@sub#1}{\@nameuse{#2}{2}{3.8em}{3.2em}} %
\@ifundefined{#2}%
{\@namedef{#2}##1{%
\ifnum ##1>\@nameuse{c@\csname ext@#1\endcsname depth}%
\let\caption@next\@gobblefour
\else
\def\caption@next{\@dottedtocline{##1}}%
\fi\caption@next}}%
{}}
\makeatother
%+++++++++++++++++++++++++++++++++++++++ PATCH fuer Zaehlertiefen in den Caption-Packages


%+++++++++++++++++++++++++++++++++++++++ Laden diverser Packages
\usepackage[list=on]{subcaption}
\usepackage{varioref}


\usepackage[svgnames]{xcolor}
\usepackage{fixfoot}%Spezielle Fussnoten
\usepackage{footmisc}%Spezielle Fussnoten
%\usepackage[pdftex]{pdfpages}
\usepackage{pdfpages}

%+++++++++++++++++++++++++++++++++++++++ Laden diverser Packages



%_______________________________ Nummerierung der Fussnoten durchgaengig

%\usepackage{chngcntr}%Fussnoten durchgaengig nummerieren
%\counterwithout{footnote}{chapter}%Fussnoten durchgaengig nummerieren

\usepackage{remreset}
\makeatletter
\@removefromreset{footnote}{chapter}
\makeatother
%_______________________________ Nummerierung der Fussnoten durchgaengig


\usepackage{scrhack}
\usepackage{listings}


%+++++++++++++++++++++++++++++++++++++++ Laden diverser Packages
\usepackage{tikz}
\usetikzlibrary{shapes,decorations,shadows,fadings }
\usepackage[explicit]{titlesec}
\usepackage{titletoc}
\usepackage{fancybox}
\usepackage{expdlist}
\usepackage{calc}%Rechnen mit Abstaenden zb. 12pt-0.5ex



\usepackage{setspace}
\usepackage{graphicx}
\usepackage{eso-pic}
\usepackage{textcomp}
\usepackage[style=swiss]{csquotes}


\PassOptionsToPackage{hyphens}{url}
\usepackage{hyperref}%muss vor minitoc geladen werden



\usepackage[numbers]{natbib}
\usepackage{multibib}
\newcites{On}{Online Quellen}


\usepackage[ngerman]{translator}
\usepackage[toc,acronym]{glossaries}
\usepackage{multicol}
\usepackage{multirow}
\usepackage{slashbox}


%_______________________________ Index-Package laden (splitidx)

\usepackage{splitidx}
%_______________________________ Index-Package laden (splitidx)



\usepackage[inner=2.3cm,outer=1.75cm,top=2.25cm,bottom=2.25cm]{geometry}%twoside



\usepackage{scrtime}
\usepackage{framed}
\usepackage{colortbl}
\usepackage{ragged2e,booktabs}
\usepackage{array, tabularx}
\usepackage{fancyhdr}
\usepackage{rotating}
\usepackage{wrapfig}
\usepackage{placeins}
\usepackage{picins}
\usepackage{dirtree}
\usepackage{mdwlist}
\usepackage{courier}
\usepackage{lastpage}
\usepackage{keystroke}
%+++++++++++++++++++++++++++++++++++++++ Laden diverser Packages



\clubpenalty=10000% Vermeidung von Hurenkindern und Schusterjungen
\widowpenalty=10000
\displaywidowpenalty=10000
\hbadness=10000
\vbadness=10000


\makeindex


\newindex[Sachregister]{idx}
\newindex[IT-Register]{itr}
\newindex[HnF-Interface-Tool-Register]{hnfit}
\newindex[FlexLM-Controller-Register]{fc}


\begin{document}

\chapter{Erste Seite}
fsldjfisdfjisdfsdf



\chapter{Testchaper}
\section{Testsection}
Hier ist ein Beispieltext.
\sindex[fc]{Stichwort}

\newpage
\section{Testsection}
Hier ist ein Beispieltext.
\sindex[fc]{Stichwort}



%+++++++++++++++++++++++++++++++++++++++ Indexverzeichnis (4-fach)

\renewcommand{\indexpagestyle}{fancy}
\phantomsection
%\printindex*%gibt alle definierten nacheinander aus

\printindex[idx]
\printindex[itr]
\printindex[hnfit]
\printindex[fc]

%+++++++++++++++++++++++++++++++++++++++ Indexverzeichnis (4-fach)


\end{document}



So und das ganze kompiliere ich mit folgender Batch-Datei:



Mode con cols=100 lines=40
TITLE ### Erzeugung des LateX-Dokuments (MAX CAPACITY) ###
@echo off
CLS
COLOR 17
ECHO PDF-Latex-RUN
ECHO =======================================
pdflatex --extra-mem-top=2000000 IndexLinkProb

CLS
COLOR 20
ECHO MAKEGLOSSARIES-RUN
ECHO =======================================
makeglossaries IndexLinkProb

CLS
COLOR 17
ECHO PDF-Latex-RUN
ECHO =======================================
pdflatex --extra-mem-top=2000000 IndexLinkProb

CLS
COLOR 20
ECHO MAKEGLOSSARIES-RUN
ECHO =======================================
makeglossaries IndexLinkProb

CLS
COLOR 47
ECHO BIBTEX-RUN (MAINDOC)
ECHO =======================================
bibtex IndexLinkProb

CLS
COLOR 47
ECHO BIBTEX-RUN (ON)
ECHO =======================================
bibtex On

CLS
COLOR 3
ECHO MAKEINDEX-RUN
ECHO =======================================
rem makeindex -s Index_Stildatei.ist -g IndexLinkProb.idx
splitindex IndexLinkProb.idx -- -s Index_Stildatei.ist -g

CLS
COLOR 17
ECHO PDF-Latex-RUN
ECHO =======================================
pdflatex --extra-mem-top=2000000 IndexLinkProb

CLS
COLOR 4
ECHO PDF-Latex-RUN
ECHO =======================================
pdflatex --extra-mem-top=2000000 IndexLinkProb

CLS
COLOR fc
ECHO PDF-Latex-RUN
ECHO =======================================
pdflatex --extra-mem-top=2000000 IndexLinkProb


wobei die Tex-datei "IndexLinkProb.tex" heißt. Oder man macht in der Batch-Datei schnell Suchen/Ersetzen ;)

Ich hoffe mir kann da jmd helfen bei dem blöden Problem :rolleyes:

Vielen Dank auf jeden Fall schon mal...

tral
04-08-2011, 12:18
Hallo,

das sieht nach einem hyperref-Problem aus. Lade das Paket mal *nach* splitidx...

Christian.

sharpType
04-08-2011, 12:50
Hallo,

leider Fehlanzeige :(

Schaut euch mal das folgende MiniBsp an. Habe es geschafft weiter zu minimieren und das Problem besteht immernoch. Habe nun kaum noch etwas drin.



\documentclass[pdftex,
final,
10pt,
toc=indented,
listof=totoc,
numbers=noenddot,
a4paper,
pagesize,
open=right,
twoside,
titlepage,
ngerman,
svgnames,
parskip=full-]{scrreprt}


%+++++++++++++++++++++++++++++++++++++++ INDEX STILDATEI
\begin{filecontents}{Index_Stildatei.ist}
quote '+'
headings_flag 1
heading_prefix "{\\bfseries "
heading_suffix "}\\nopagebreak\n"
symhead_positive "Symbole"
numhead_positive "Zahlen"
delim_0 "\\dotfill "
delim_1 "\\dotfill "
delim_2 "\\dotfill "
delim_r "~--~"
suffix_2p "f"
suffix_3p "ff"
preamble "\\begin{theindex}\n\n"
postamble "\n\n\\end{theindex}\n"
\end{filecontents}
%+++++++++++++++++++++++++++++++++++++++ INDEX STILDATEI


\usepackage{xspace}
\usepackage{ifthen}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english, ngerman]{babel}
\usepackage{hyperref}
\usepackage{splitidx}
\usepackage[inner=2.3cm,outer=1.75cm,top=2.25cm,bottom=2.25cm]{geometry}%twoside
\usepackage{fancyhdr}


\makeindex

\newindex[Sachregister]{idx}
\newindex[IT-Register]{itr}
\newindex[HnF-Interface-Tool-Register]{hnfit}
\newindex[FlexLM-Controller-Register]{fc}

\begin{document}
\chapter{Erste Seite}
fsldjfisdfjisdfsdf
\chapter{Testchaper}
\section{Testsection}
Hier ist ein Beispieltext.
\sindex[fc]{Stichwort}
\newpage
\section{Testsection}
Hier ist ein Beispieltext.
\sindex[fc]{Stichwort}


\renewcommand{\indexpagestyle}{fancy}
\phantomsection


\printindex[idx]
\printindex[itr]
\printindex[hnfit]
\printindex[fc]

\end{document}

sharpType
04-08-2011, 12:55
Also ganz ehrlich: Da stimmt etwas nicht.

Da ist nichts mehr drin im Beispiel. Kann es vielleicht sein, dass es einfach technisch nicht funktioniert?

Weiter minimiert:



\documentclass[pdftex]{scrreprt}


%+++++++++++++++++++++++++++++++++++++++ INDEX STILDATEI
\begin{filecontents}{Index_Stildatei.ist}
quote '+'
headings_flag 1
heading_prefix "{\\bfseries "
heading_suffix "}\\nopagebreak\n"
symhead_positive "Symbole"
numhead_positive "Zahlen"
delim_0 "\\dotfill "
delim_1 "\\dotfill "
delim_2 "\\dotfill "
delim_r "~--~"
suffix_2p "f"
suffix_3p "ff"
preamble "\\begin{theindex}\n\n"
postamble "\n\n\\end{theindex}\n"
\end{filecontents}
%+++++++++++++++++++++++++++++++++++++++ INDEX STILDATEI


\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english, ngerman]{babel}

\usepackage{splitidx}
\usepackage{hyperref}

\makeindex

\newindex[Sachregister]{idx}
\newindex[IT-Register]{itr}
\newindex[HnF-Interface-Tool-Register]{hnfit}
\newindex[FlexLM-Controller-Register]{fc}

\begin{document}
\chapter{Erste Seite}
fsldjfisdfjisdfsdf
\chapter{Testchaper}
\section{Testsection}
Hier ist ein Beispieltext.
\sindex[fc]{Stichwort}
\newpage
\section{Testsection}
Hier ist ein Beispieltext.
\sindex[fc]{Stichwort}



\printindex[idx]
\printindex[itr]
\printindex[hnfit]
\printindex[fc]

\end{document}

Schweinebacke
04-08-2011, 16:02
PS: Vielleicht kann man das in SpliIndex irgednwie per Option einstellen, dass er einfach jede Seite auflisten soll, anstatt das "f" dahinerklemmen? Konnte diesbezüglich aber leider nichts finden.:confused: (Ist prinzipiell ja auch ziemlich blöd das einzustellen)
Wenn Du suffix_2p und suffix_3p nicht definierst und Option -r nicht angibst, sollte MakeIndex genau das tun. Da die Verwendung von SplitIndex hier überhaupt keinen Einfluss auf das Ergebnis hat, hier einfach ein Beispiel mit MakeIndex:
\documentclass[pagesize]{scrreprt}


%+++++++++++++++++++++++++++++++++++++++ INDEX STILDATEI
\begin{filecontents}{Index_Stildatei.ist}
quote '+'
headings_flag 1
heading_prefix "{\\bfseries "
heading_suffix "}\\nopagebreak\n"
symhead_positive "Symbole"
numhead_positive "Zahlen"
delim_0 "\\dotfill "
delim_1 "\\dotfill "
delim_2 "\\dotfill "
delim_r "~--~"
preamble "\\begin{theindex}\n\n"
postamble "\n\n\\end{theindex}\n"
\end{filecontents}
%+++++++++++++++++++++++++++++++++++++++ INDEX STILDATEI


\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english, ngerman]{babel}

\usepackage{makeidx}
\usepackage{hyperref}

\makeindex

\begin{document}
\chapter{Erste Seite}
fsldjfisdfjisdfsdf
\chapter{Testchaper}
\section{Testsection}
Hier ist ein Beispieltext.
\index{Stichwort}
\newpage
\section{Testsection}
Hier ist ein Beispieltext.
\index{Stichwort}

\printindex

\end{document}Sobald man jedoch die beiden suffix_…-Zeilen in die ist-Datei wieder mit reinnimmt, geht es in die Hose. Das liegt dann schlicht daran, dass MakeIndex das f und das ff an die formatierte Seitenzahl anhängt, also ein \hyperpage{2f} produziert und auf der anderen Seite hyperref davon ausgeht, dass das Argument von \hyperpage eine Komma-separierte Liste von Seitenzahlen ist. Deshalb geht \hyperpage davon aus, dass die Seitenzahl 2f lautet. Tatsächlich treibt Heiko inzwischen eine ganze Menge Aufwand, um mit verschiedenen Seitenzahlenformaten zurecht zu kommen. Seitenzahlen mit f- und ff-Anhängsel (letztes ist ohnehin ziemlich unpraktisch) gehören aber nicht dazu.

sharpType
05-08-2011, 11:50
Hey,

:eek: vielen Dank für den wertvollen Hinweis. Dann nehme ich die einfach raus, fertig.

Aber es ist gut zu wissen, warum das eigentlich nicht geht. :D

Vielen Dank!