% XREF.STY % Querverweis-Mechanismus fuer mehrbaendige Werke \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{xref} \RequirePackage{ifthen} % Kennung fuer eigene Bandnummer, Default: Band I \newcommand{\@volume}{I} % Userkommando zum Setzen der Bandzahl \newcommand{\volume}[1] {\renewcommand{\@volume}{#1}} % Vollstaendige Kennzeichnung nach einer % externen Referenz \newcommand{\volnotation}[1] { (Band~#1)} % Umdefinition einiger Interna fuer dreiteilige % Labelinformationen \long\def\@firstofthree#1#2#3{#1} \long\def\@secondofthree#1#2#3{#2} \long\def\@thirdofthree#1#2#3{#3} % Analog zu \@setref: % #1 ist dreiteilige Liste (Ref, Seite, Band), % #2 ist Befehl \@xofthree, #3 ist Labelname \def\@setbref#1#2#3{% \ifx#1\relax \else \def\tmp{\expandafter#2#1}% \ifthenelse{\equal{\tmp}{\@volume}} {} {\volnotation{\tmp}}% \fi } % Label, das neben Referenznummer und Seitenzahl % auch die Bandnummer wegschreibt \def\label#1{\@bsphack \protected@write\@auxout{}% {\string\newlabel{#1}% {{\@currentlabel}{\thepage}{\@volume}}}% \@esphack} %% Lies Hilfsfiles fuer die externen Baende ein und %% generiere Labelinfos daraus %% -- Einige Zeilen aus File `xr.sty'/tools ------- %% xr.dtx Copyright (C) 1993-1994 David Carlisle \def\externalaux#1{\makeatletter \XR@next#1.aux\relax\\} \def\XR@next#1\relax#2\\{% \edef\XR@list{#2}% \XR@loop{#1}} \def\XR@aux{% \ifx\XR@list\@empty\else\expandafter\XR@explist\fi} \def\XR@explist{\expandafter\XR@next\XR@list\\} \def\XR@loop#1{\openin\@inputcheck#1\relax \ifeof\@inputcheck \PackageWarning{xref}% {^^JNo file #1^^JLABELS NOT IMPORTED.^^J}% \expandafter\XR@aux \else \PackageInfo{xref}{IMPORTING LABELS FROM #1}% \expandafter\XR@read\fi} \def\XR@read{% \read\@inputcheck to\XR@line \expandafter\XR@test\XR@line...\XR@} \long\def\XR@test#1#2#3#4\XR@{% \ifx#1\newlabel \newlabel{#2}{#3}% \else\ifx#1\@input \edef\XR@list{\XR@list#2\relax}% \fi\fi \ifeof\@inputcheck\expandafter\XR@aux \else\expandafter\XR@read\fi} % ----- Ende des xr-Imports -------- % ---- Hauptbefehle ------ % Zunaechst die normalen Funktionalitaeten: Druck % der Referenz, Seitenzahl, Bandzahl % r@name enthaelt liste der drei Daten \newcommand{\rref}[1]{% \expandafter\@setref% \csname r@#1\endcsname\@firstofthree{#1}} \newcommand{\ppageref}[1]{% \expandafter\@setref% \csname r@#1\endcsname\@secondofthree{#1}} \newcommand{\bref}[1]{% \expandafter\@setref% \csname r@#1\endcsname\@thirdofthree{#1}} % Liefert Referenzzahl und ggf. Hinweis auf den % zugehoerigen Band, falls extern \renewcommand{\ref}[1]{% \expandafter\@setref% \csname r@#1\endcsname\@firstofthree{#1}% \expandafter\@setbref% \csname r@#1\endcsname\@thirdofthree{#1}% } % dto. fuer Seitenzahlen \renewcommand{\pageref}[1]{% \expandafter\@setref% \csname r@#1\endcsname\@secondofthree{#1}% \expandafter\@setbref% \csname r@#1\endcsname\@thirdofthree{#1}% }