Seite 1 von 1

ab Seite statt auf Seite mit cleveref

Verfasst: Fr 9. Mär 2012, 19:02
von psd
Hallo!

Ich würd gerne die Idee der Seite
http://schlosser.info/in-latex-mit-vari ... te-setzen/

auf cleveref und varioref übertragen. Bei einem Verweis auf ein Kapitel soll also "ab Seite" anstatt "auf Seite" eingefügt werden. Leider lässt sich das Beispiel der Seite nicht übertragen (meines Wissen).

Bis jetzt habe ich nur einen neuen \vrefchap-Befehl erstellt, der das gewünschte "von Hand" erstellt. Eine Automatik wäre natürlich noch besser.

Hier das Minimalbeispiel:
\documentclass{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[ansinew]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[ngerman]{varioref}
\usepackage[ngerman]{cleveref}

	
\newcommand*{\vrefchap}[1]{%
 \begingroup
 \renewcommand*{\reftextfaraway}[1]{ab Seite~\pageref{##1}}%
 \vref{#1}%
 \endgroup
 }


\begin{document}

\chapter{Eins}
\label{eins}
\vref{zwei} und \vref{zweieins}\\
\vrefchap{zwei} und \vref{zweieins}

\newpage
bla bla
\newpage

\chapter{zwei}
\label{zwei}
so und so
\section{Zweieins}
\label{zweieins}
ach ja

\end{document}
Hat jemand eine Idee?

Gruß,
psd

[Solution:] In LaTeX mit Cleveref & Varioref »ab Seite«

Verfasst: Di 30. Okt 2012, 15:35
von jschlosser
Die Lösung ist seit heute im neuen Blogpost zu lesen:
http://schlosser.info/latex-cleveref-varioref-ab-seite/

Der relevante Codeschnipsel folgt:
\usepackage{varioref}
\usepackage{hyperref}
\usepackage{cleveref}
\makeatletter
\def\curtlabtype{}%                 << define temporary variable
\let\@old@cref@vref\cref@vref%      << save cleveref's definition
\def\cref@vref#1#2{%                << modify cleveref's definition
  \cref@gettype{#2}{\curtlabtype}%  << get type of label
  \@old@cref@vref{#1}{#2}}%         << call original macro
\vref@addto\extrasngerman{%         << modify varioref macros
  \def\reftextfaraway#1{%           << only change far away references
    \ifthenelse{\equal{\curtlabtype}{chapter}}{ab Seite}{auf
      Seite}~\pageref{#1}}}%
\makeatother
Viele Grüße
Joachim