Archiv verlassen und diese Seite im Standarddesign anzeigen : wert von \pageref in zählerregister speichern
Hallo,
ich muss mit Seitenzahlen rechnen. Die einzige Möglichkeikeit die aktuelle Seitennummer zu erhalten besteht ja laut FAQ in unschönen \pageref tricks. Jetzt brauche ich aber eben die aktuelle Seitennummer in einem Zählregister, aber folgendes geht leider nicht:
\newcounter{seitennummer}
\setcounter{seitennummer}{\pageref{label}}
Ist sowas möglich?
Ok, ich habe inzwischen was dazu gefunden:
\providecommand*{\ifrefundefined}[1]{%
\expandafter\ifx\csname r@#1\endcsname\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
}
\providecommand*{\@extract@ref}[2]{%
\expandafter\expandafter\expandafter#1\csname
r@#2\endcsname{}{}\@nil
}
\providecommand*{\@extractref}{%
\@extract@ref\@car
}
\providecommand*{\@extractpageref}{%
\@extract@ref\@secondcar
}
\long\def\@secondcar#1#2#3\@nil{#2}
\providecommand*{\setcounterfromref}[2]{%
\ifrefundefined{#2}{%
\protect\G@refundefinedtrue
\@latex@warning{Reference `#2' on page \thepage \space
undefined}%
\setcounter{#1}{0}%
}{%
\setcounter{#1}{\@extractref{#2}}%
}%
}
\providecommand*{\setcounterfrompageref}[2]{%
\ifrefundefined{#2}{%
\protect\G@refundefinedtrue
\@latex@warning{Reference `#2' on page \thepage \space
undefined}%
\setcounter{#1}{0}%
}{%
\setcounter{#1}{\@extractpageref{#2}}%
}%
}
Puh! Irgendwie kann man schon auf die Idee kommen, daß am Design einer Programmiersprache was nicht stimmt, wenn man so einen Dreck sieht!
Hallo Fritz, wie wendest du den von dir gefunden Code im TeX an?
Könnte das eventuell auch bei meinem kleinen Problemchen helfen, siehe: http://www.mrunix.de/forums/showthread.php?t=48102
Hallo Fritz, wie wendest du den von dir gefunden Code im TeX an?
Könnte das eventuell auch bei meinem kleinen Problemchen helfen, siehe: http://www.mrunix.de/forums/showthread.php?t=48102
Hallo ice88usw.,
da muss noch ein:
\catcode=`\@=11
%\newcommand bla bla
\catcode`\@=12
drüber bzw. drunter. Zwischen den \catcode dingern gehört dann der Klammeraffe auch zu den erlaubten Symbolen für Macro- bzw. Registernamen. Das ist wohl Konvention um sowas wie Namepsaces zu emulieren, damit es keine Kollisionen mit Symbolen aus anderen Paketen oder sowas gibt. Solche Hacks erinnern mich irgendwie an Perl ... :)
Fritz
Hmm, kann mir das immer noch nich so ganz vorstellen. Ich versuchs nochmal verständlicher auszudrücken.
Wo muß dieser Code eingefügt werden?
\providecommand*{\ifrefundefined}[1]{%
\expandafter\ifx\csname r@#1\endcsname\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
}
\providecommand*{\@extract@ref}[2]{%
\expandafter\expandafter\expandafter#1\csname
r@#2\endcsname{}{}\@nil
}
\providecommand*{\@extractref}{%
\@extract@ref\@car
}
\providecommand*{\@extractpageref}{%
\@extract@ref\@secondcar
}
\long\def\@secondcar#1#2#3\@nil{#2}
\providecommand*{\setcounterfromref}[2]{%
\ifrefundefined{#2}{%
\protect\G@refundefinedtrue
\@latex@warning{Reference `#2' on page \thepage \space
undefined}%
\setcounter{#1}{0}%
}{%
\setcounter{#1}{\@extractref{#2}}%
}%
}
\providecommand*{\setcounterfrompageref}[2]{%
\ifrefundefined{#2}{%
\protect\G@refundefinedtrue
\@latex@warning{Reference `#2' on page \thepage \space
undefined}%
\setcounter{#1}{0}%
}{%
\setcounter{#1}{\@extractpageref{#2}}%
}%
}
Was genau hat es damit auf sich?
\catcode=`\@=11
%\newcommand bla bla
\catcode`\@=12
Im Prinzip geht es mir darum eine Lösung zu haben die es mir möglich macht am Anfang meiner Arbeit, quasi im Autorenreferat die Seitenzahl (automatisiert) des Reintextes (ohne Titelseite und sämtlicher Verzeichnisse am Ende) ausgeben zu können.
Hmm, kann mir das immer noch nich so ganz vorstellen. Ich versuchs nochmal verständlicher auszudrücken.
Wo muß dieser Code eingefügt werden?
in Deiner Preambel
Was genau hat es damit auf sich?
\catcode=`\@=11
%\newcommand bla bla
\catcode`\@=12
da die neuen Befehle ein '@' beinhalten, sollte zuvor dieses '@' zu einem Buchstaben deklariert werden, genau das macht dieses "\catcode=`\@=11" -> dafuer kannst Du auch den etwas symbolischeren \makeatletter nehmen... also
\makeatletter %entspricht \catcode=`\@=11\relax
%der Code, von dem Du nicht wusstest, wo er hingehoert
\makeatother %entspricht \catcode=`\@=12\relax
aber mit TeX hink' ich noch etwas hinterher;-)
MfG,
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.