ab Seite statt auf Seite mit cleveref

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


Benutzeravatar
psd
Forum-Anfänger
Forum-Anfänger
Beiträge: 18
Registriert: Sa 12. Feb 2011, 12:18
Wohnort: Berlin

ab Seite statt auf Seite mit cleveref

Beitrag 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
Es ist unmöglich, die Schönheiten der Naturgesetze angemessen zu vermitteln, wenn jemand die Mathematik nicht versteht. Ich bedaure das, aber es ist wohl so.

Richard Feynman, Physiker

[1] Wie erstelle ich ein Minimalbeispiel
[2] Fehlersuche in LaTeX und [3] Wie man Fragen richtig stellt
[4] Wichtige Netzdokumente und [5] Mathematik mit LaTeX
[6] Knigge und [7] Regelwerk

jschlosser
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: So 13. Feb 2011, 20:55
Wohnort: Augsburg
Kontaktdaten:

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

Beitrag 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
---
Lernen Sie mit meinem Buch: Wissenschaftliche Arbeiten schreiben mit LaTeX
http://www.latexbuch.de

Antworten