PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Index mit Verweis auf etwas anderes als die Seitenzahl



Syralist
14-02-2008, 17:43
Hallo Forum!

Ich versuche grad mir eine Rezeptsammlung zu texen. Nach einigem Rumprobieren und Verzweifeln hab ichs jetzt auch geschafft, das Inhaltsverzeichnis und Kopf- und Fußzeilen ungefähr so zu gestalten, wie ich das gern hätte. siehe Code unten.

Jetzt die Sache, die ich noch nicht hinbekommen habe: ich möchte ein Zutatenverzeichnis haben. Also so was wie einen Index. Aber ich möchte nicht auf eine Seitenzahl verweisen, sondern möchte auf meine Rezeptnummer verweisen.
Mir kam grad ein Geistesblitz: reicht es \thepage umzudefinieren, und die normale Makeindex-Prozedur zu benutzen?

hier der Code:

\documentclass[a4paper,12pt,oneside]{scrbook}

\usepackage{ucs}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{fancyhdr}
\usepackage{enumitem}
\usepackage{tocloft}

\renewcommand{\cftdot}{}
\cftpagenumbersoff{section}
\cftpagenumbersoff{chapter}
\cftpagenumbersoff{part}

\newcounter{mypart}
\newcounter{mychapter}
\newcounter{mysection}

\newcommand{\teil}[1]{%
\pagenumbering{roman}
\setcounter{page}{-1}
\setcounter{chapter}{0}
\stepcounter{part}
\addpart[\Alph{part}\ #1]{#1}
\lhead{#1}
\thispagestyle{empty}
}

\newcommand{\kapitel}[1]{%
\clearpage
\pagenumbering{arabic}
%\setcounter{page}{1}
\stepcounter{chapter}
\addchap[\Roman{chapter}\ #1]{#1}
\rhead{#1}
\cfoot{}
\thispagestyle{empty}
%\newpage
%\setcounter{page}{1}
}

\newcommand{\rezept}[1]{%
\clearpage
\stepcounter{section}
\setcounter{mypart}{\arabic{part}}
\setcounter{mychapter}{\arabic{chapter}}
\setcounter{mysection}{\arabic{section}}
\addsec[\Alph{mypart}--\Roman{mychapter}:\ \arabic{mysection}\ #1]{#1}
\cfoot{\Alph{mypart}--\Roman{mychapter}:\ \arabic{mysection}}
}

\newenvironment{zutaten}[1]{%
\noindent
\textbf{Zutaten für #1 Portionen:}
\begin{itemize}[parsep=0ex,itemsep=0.5ex]
}{%
\end{itemize}
}

\newcommand{\zutat}[2]{\item[#1] #2}

\renewcommand{\footrulewidth}{0.5pt}
\renewcommand{\headrulewidth}{0.5pt}
\pagestyle{fancy}
\begin{document}

\tableofcontents

\teil{Vorspeisen}

\teil{Hauptspeisen}
\kapitel{Nudeln}
\rezept{Spaghetti Bolognese Gran Gusto}
\begin{zutaten}{4}
\zutat{500 g}{Hackfleisch}
\zutat{6}{Tomaten}
\end{zutaten}
\rezept{blupp}
ich bin blupp
\teil{Nachspeisen}

\teil{Süßes}
\kapitel{Kuchen}
\rezept{Marmorkuchen}
Ich bin ein Kuchen!
\rezept{bla}
ich bin bla
\end{document}

voss
14-02-2008, 22:34
Hallo Forum!

Ich versuche grad mir eine Rezeptsammlung zu texen. Nach einigem Rumprobieren und Verzweifeln hab ichs jetzt auch geschafft, das Inhaltsverzeichnis und Kopf- und Fußzeilen ungefähr so zu gestalten, wie ich das gern hätte. siehe Code unten.

Jetzt die Sache, die ich noch nicht hinbekommen habe: ich möchte ein Zutatenverzeichnis haben. Also so was wie einen Index. Aber ich möchte nicht auf eine Seitenzahl verweisen, sondern möchte auf meine Rezeptnummer verweisen.
Mir kam grad ein Geistesblitz: reicht es \thepage umzudefinieren, und die normale Makeindex-Prozedur zu benutzen?


du definierst dir \newcounter{Rezept} und eine Umgebung oder Makro Rezept,
welche am Anfang beispielsweise \refstepcounter{Rezept}\label{Rez01} macht,
dann kannst du jederzeit auf \ref{Rez01} bezug nehmen.

Herbert

Syralist
15-02-2008, 10:09
Das hilft mir aber nicht weiter ;)
Ich möchte im Index nicht stehen haben :
Hackfleisch, 2
sondern z.B.
Hackfleisch, B-I: 1
weil ich diese Bezeichnung B-I: 1 ja auch auf meine Seiten schreibe. ich habs schon hingekriegt, dass ich

\indexentry{Hackfleisch}{{B--I: 1}}
in eine Datei schreibe. Aber makeindex nimmt die Einträge so nicht an.

Syralist
15-02-2008, 10:47
Ich habs jetzt hinbekommen, mit xindy.

In meiner Präabmel hab ich folgendes eingetragen:

\makeatletter
%%% From File: ltidxglo.dtx
\message{zindex,}
\def\makezindex{%
\newwrite\@zindexfile
\immediate\openout\@zindexfile=\jobname.idz
\def\zindex{\@bsphack\begingroup
\@sanitize
\@wrzindex}\typeout
{Writing zindex file \jobname.idz}%
\let\makezindex\@empty
}
\@onlypreamble\makezindex
\def\@wrzindex#1{%
\protected@write\@zindexfile{}%
{\string\indexentry{#1}{\Alph{mypart}--\Roman{mychapter}: \arabic{mysection}}}%
\endgroup
\@esphack}
\def\zindex{\@bsphack\begingroup \@sanitize\@zindex}
\def\@zindex#1{\endgroup\@esphack}
\newcommand\printzindex{\@input@{\jobname.inz}}
\makeatother
also neue Befehle für zindex definiert.
Dann hab ich xindy beigebracht wie meine Seitenzahlen aussehen:

(define-location-class "zutaten" ("ALPHA" :sep "--"
"roman-numbers-uppercase" :sep ": "
"arabic-numbers"))
Nachdem ich dann auch noch Kile dazu überreden musste mit texindy zusammenzuarbeiten, klappt es jetzt endlich so, wie ich mir das vorstelle. :)