Seite 1 von 1

Hyperref auf Kapitel mit römischer Zahl

Verfasst: Fr 26. Feb 2010, 08:11
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}

Verfasst: Fr 26. Feb 2010, 12:26
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.

Verfasst: Fr 26. Feb 2010, 15:15
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