Hyperref auf Kapitel mit römischer Zahl

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


RealZeratul
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Fr 26. Feb 2010, 07:58

Hyperref auf Kapitel mit römischer Zahl

Beitrag von RealZeratul »

Hallo Leute,

für meine Diplomarbeit verwende ich römische Kapitel-Zahlen in den Überschriften, möchte überall sonst aber arabische Zahlen benutzen (in meinem Hauptdokument sollen Gleichungen und Tabellen z.B. mit 3.5 statt III.5 bezeichnet werden).
Mein Problem ist, dass ich nun einen Link auf ein Kapitel anlegen möchte, in dessen Text die römische Zahl steht. Mein bisheriger Ansatz funktioniert leider nicht -- ich vermute, LaTeX wertet \ref* zu spät aus... Unten ist mein (fast Minimal-)beispiel, es wäre toll, wenn jemand von euch eine Idee hätte! :)

Vielen Dank schonmal und gute Nacht
RealZeratul
\documentclass[twoside, a4paper, 12pt]{article}

\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}

\makeatletter
	\newcommand{\Rmnum}[1]{\expandafter\@slowromancap\romannumeral #1@}
\makeatother

\usepackage{titlesec} 
\titleformat{\section}[display]
						{\bfseries\Large}
						{\filcenter \Huge {CHAPTER \Rmnum{\thesection}} }
						{2ex}
						{\titlerule \vspace{2ex} \filcenter}

\usepackage[pdftex, pdfpagelabels=true, bookmarks=true, pagebackref=false, plainpages=false, naturalnames=true]{hyperref}


\newcommand{\Cha}[1]{\hyperref[#1]{Chapter \Rmnum{\ref*{#1}}}}


\begin{document}

\section{bla}
\label{bla}

\section{blabla}
\subsection{blubbb}

Reference to \Cha{bla}

\end{document}

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Zunächst einmal verstehe ich nicht, warum Du \Roman bzw. \@Roman mit \Rmnum neu erfindest. Das ist absolut überflüssig. Außerdem hast Du offenbar nicht verstanden, was Du da machst. \romannumeral verlangt eine Zahl und nur eine Zahl. \ref* expandiert aber nicht nur zu einer Zahl. Genau genommen ist es nicht einmal voll expandierbar. Das kann also gar nicht gehen. Die korrekte Lösung besteht darin, direkt \thesection umzudefinieren. Sollen andere Zähler das Kapitel nicht römisch referenzieren (was den Leser übrigens eher verwirren dürfte), so muss man eben auch die entsprechenden \the... umdefinieren. Ich mache das hier mal beispielhaft für \thesubsection:
\documentclass[twoside, a4paper, 12pt]{article}

\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}

\usepackage{titlesec}
\renewcommand*{\thesection}{\Roman{section}}
\renewcommand*{\thesubsection}{\arabic{section}.\arabic{subsection}}
\titleformat{\section}[display]
                  {\bfseries\Large}
                  {\filcenter \Huge {CHAPTER \thesection} }
                  {2ex}
                  {\titlerule \vspace{2ex} \filcenter}

\usepackage[pdftex, pdfpagelabels=true, bookmarks=true, pagebackref=false, plainpages=false, naturalnames=true]{hyperref}


\newcommand{\Cha}[1]{\hyperref[#1]{Chapter \ref*{#1}}}


\begin{document}
\section{bla}
\label{bla}

\section{blabla}
\subsection{blubbb}

Reference to \Cha{bla}

\end{document}
BTW: \Cha kann man sich auch sparen. hyperref kennt nämlich \autoref. Die Namen, die hyperref dort ausgibt, hängen vom Zähler ab und kann man umdefinieren.

RealZeratul
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Fr 26. Feb 2010, 07:58

Beitrag von RealZeratul »

Hallo KOMA,

super, vielen Dank für deine Tips! \autoref ist genau das, was ich eigentlich gesucht hatte, und auf das Umdefinieren von \thesubsection hätte ich eigentlich auch mal selber kommen sollen, aber naja...

Ein wenig verwirrend ist der "Stil" schon, aber ich werde mal gucken, wie es schlimm es nachher aussieht.

Der Grund für \Rmnum ist, dass meines Wissens nach weder \Roman noch \@Roman (um ehrlich zu sein habe ich keine Ahnung, was das @ an dieser Stelle genau macht) dazu in der Lage sind, Nicht-Zähler-Zahlen umzuwandeln. Dass \ref* nicht früh genug (oder nicht ausschließlich) zu einer Zahl expandiert, hatte ich auch schon befürchtet, allerdings geht das nicht aus Heiko Oberdieks manual hervor und auch die einfache Zahl im fertigen Dokument lässt nicht darauf schließen.

Nochmal vielen Dank und viele Grüße
RealZeratul

Antworten