Individuelle Überschrift von Theorem in Verweis aufnehmen

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


nils2013
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Fr 15. Jul 2016, 11:47

Individuelle Überschrift von Theorem in Verweis aufnehmen

Beitrag von nils2013 »

Ich möchte gerne, dass bei Verweisen auch der Titel des Theorems (sofern vorhanden) angezeigt wird. Wie kann man das machen?

Im Minimalbeispiel, wie ich bisher mit Theoremen umgehe und Verweise erstelle.

Bei der Erstellung des Minimalbeispiels ist noch eine zweite Frage aufgetaucht: Wie kann ich das Hochrutschen des Textes in den Titel des Theorems verhindern (siehe Definition im Minimalbeispiel)?
\documentclass[a4paper]{scrreprt}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}

\usepackage[ngerman]{varioref}
\usepackage{hyperref}
\usepackage[ngerman]{cleveref}

\newtheorem{defi}{Definition}
\newtheorem{satz}{Satz}

\begin{document}

\begin{defi}[Name der Definition]
\label{def:definition}
Wie kann ich verhindern, dass der Text nach oben in den Definitions-Titel gezogen wird? 

Dies ist eine Definition mit einem individuellen Titel, nämlich \glqq Name der Definition.\grqq. 
\end{defi}

\begin{satz}
zu \Vref{def:definition}

Dies ist ein Satz zur obigen Definition. Im Verweise soll auch der individuelle Titel der Definition auftauchen, nämlihc \glqq Name der Definition\grqq.
\end{satz}

\end{document}

Noch so einer

Beitrag von Noch so einer »

Verweise auf den Titel sind beispielsweise mit nameref möglich, das bereits von hyperref geladen wird.

Unterschiedliche Stile für die Theoremumgebungen sind beispielsweise mit ntheorem oder amsthm möglich. Letzteres wird auch von nameref unterstützt.
\documentclass[a4paper]{scrreprt}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}

\usepackage{amsthm}% Unbedingt vor varioref, cleveref, hyperref
\usepackage[ngerman]{varioref}
\usepackage{hyperref}
\usepackage[ngerman]{cleveref}

\newtheoremstyle{break}% name
{3pt}% Space above1
{3pt}% Space below 1
{}% Body font
{}% Indent amount2
{\itshape}% Theorem head font
{:}% Punctuation after theorem head 
{\newline}% Space after theorem head 3
{}% Theorem head spec (can be left empty, meaning ‘normal’ )

\newtheorem{satz}{Satz}

\theoremstyle{break}% Unbedingt vor der Definition der Umgebung
\newtheorem{defi}{Definition}

\begin{document}

\begin{defi}[Name der Definition]
\label{def:definition}
Wie kann ich verhindern, dass der Text nach oben in den Definitions-Titel gezogen wird? 

Dies ist eine Definition mit einem individuellen Titel, nämlich \glqq Name der Definition.\grqq. 
\end{defi}

\begin{satz}
zu \Vref{def:definition}, \nameref{def:definition}

Dies ist ein Satz zur obigen Definition. Im Verweise soll auch der individuelle Titel der Definition auftauchen, nämlihc \glqq Name der Definition\grqq.
\end{satz}

\end{document}
Näheres zu \newtheoremstyle und \theoremstyle ist der Anleitung zu [d]amsthm[/d] zu entnehmen.

nils2013
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Fr 15. Jul 2016, 11:47

Beitrag von nils2013 »

Vielen Dank!

nils2013
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Fr 15. Jul 2016, 11:47

Beitrag von nils2013 »

Noch eine Ergänzung: Da es etwas umständlich ist jedesmal \vref und \nameref aufzurufen, habe ich nach einer Lösung gesucht, dies mit einem Befehl auszuführen.
Hier bin ich fündig geworden: http://tex.stackexchange.com/questions/ ... its-number

Ich habe die Lösung modifiziert, daher hier nochmal das Minimalbeispiel:
\documentclass[a4paper]{scrreprt}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}

\usepackage{amsthm}% Unbedingt vor varioref, cleveref, hyperref
\usepackage[ngerman]{varioref}
\usepackage{hyperref}
\usepackage[ngerman]{cleveref}

\newtheoremstyle{break}% name
{3pt}% Space above1
{3pt}% Space below 1
{}% Body font
{}% Indent amount2
{\itshape}% Theorem head font
{:}% Punctuation after theorem head
{\newline}% Space after theorem head 3
{}% Theorem head spec (can be left empty, meaning ‘normal’ )

\newtheorem{satz}{Satz}

\theoremstyle{break}% Unbedingt vor der Definition der Umgebung
\newtheorem{defi}{Definition}

%% Befehl \fullref verbindet vref mit nameref:
\renewcommand*{\fullref}[1]{\hyperref[{#1}]{\Vref*{#1} \nameref*{#1}}}

\begin{document}

\begin{defi}[Name der Definition]
\label{def:definition}
Wie kann ich verhindern, dass der Text nach oben in den Definitions-Titel gezogen wird?

Dies ist eine Definition mit einem individuellen Titel, nämlich \glqq Name der Definition.\grqq.
\end{defi}

\begin{satz}
zu \fullref{def:definition}

Dies ist ein Satz zur obigen Definition. Im Verweise soll auch der individuelle Titel der Definition auftauchen, nämlihc \glqq Name der Definition\grqq.
\end{satz}

\end{document}

Antworten