PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : autoref mit subfloat Bildern



TeXBjoern
07-04-2009, 09:39
Hallo und guten Tag liebe Forenleser!

Ich habe eine kleine Frage, dessen Lösung bestimmt sehr klar ist. Jedoch bin ich durch Internetsuche und Forensuche bisher noch zu keiner Lösung gekommen. Es geht um folgendes unten stehendes Beispiel.

Ich habe in einer figure Umgebung 2 oder mehr subfloats mit entsprechenden labels. Auf diese möchte ich gezielt im Text verweisen. Das klappt mit \ref wunderbar. Nun wollte ich jedoch mit dem hyperref package \autoref nutzen. Es scheint jedoch, dass dies für subfloat label nicht geht. Oder doch? Wisst ihr vielleicht wie?

Herzlichen Gruß,
TexBjoern



\documentclass[a4paper]{scrreprt}

\usepackage{graphicx}
\usepackage{subfig}
\usepackage{hyperref}

\begin{document}
I'd like to have some reference to \autoref{img:1} and to \autoref{img:2} here.
How can I do this?
The reference \autoref{img:allpictures} works.
However, not with subfloats it seems.

\begin{figure}
\centering
\subfloat[\label{img:1}]{\includegraphics[width=0.5\textwidth]{my1test}}
\subfloat[\label{img:2}]{\includegraphics[width=0.5\textwidth]{mytest2}}
\caption{(a) my first picture, (b) my second picture}
\label{img:allpictures}%
\end{figure}

\end{document}

Xenara
07-04-2009, 09:46
Hier (http://www-i6.informatik.rwth-aachen.de/~dreuw/reftex-hyperref-autoref.php) und hier (http://newsgroups.derkeiler.com/Archive/Comp/comp.text.tex/2006-05/msg01131.html) gibt es eine Lösung dazu.

Die sieht dann mit deinem MB so aus:


\documentclass[a4paper]{scrreprt}

\usepackage{graphicx}
\usepackage{subfig}
\usepackage{hyperref}

% define autorefnames
\usepackage[english]{babel}
\addto\extrasenglish{%
% ...
\renewcommand*{\figureautorefname}{Fig.}
% ...
}
\newcommand{\subfigureautorefname}{Subfig.}
% or try \newcommand{\subfigureautorefname}{\figureautorefn ame}

% extend autoref for subfloats
\usepackage{xspace}
\usepackage{ifthen}
\makeatletter
\let\@autoref=\autoref
\renewcommand*{\autoref}[2][]{\ifthenelse{\equal{#1}{}}{\@autoref{#2}}{\hyperre f[#1]{\begin{NoHyper}\@autoref{#2}~\subref{#1}\end{NoHy per}}}\xspace}
\makeatother


\begin{document}
I'd like to have some reference to \autoref{img:1} and to \autoref{img:2} here.
How can I do this?
The reference \autoref{img:allpictures} works.
And now also the subfloats work!

\begin{figure}
\centering
\subfloat[\label{img:1}]{\rule{5cm}{5cm}}
\subfloat[\label{img:2}]{\rule{5cm}{5cm}}
\caption{(a) my first picture, (b) my second picture}
\label{img:allpictures}%
\end{figure}

\end{document}

TeXBjoern
07-04-2009, 12:35
Das ist ja super! Vielen herzlichen Dank!

sommerfee
08-04-2009, 07:10
Es scheint jedoch, dass dies für subfloat label nicht geht. Oder doch? Wisst ihr vielleicht wie?

(Stinkendes Eigenlob an)

Mit dem richtigen Paket geht es auch einfach so: :D



\documentclass[a4paper]{scrreprt}

\usepackage[demo]{graphicx}
\usepackage{caption,subcaption}
\usepackage{hyperref}

\begin{document}
I'd like to have some reference to \autoref{img:1} and to \autoref{img:2} here.
How can I do this?
The reference \autoref{img:allpictures} works.
However, not with subfloats it seems.

\begin{figure}
\centering
\subfloat[\label{img:1}]{\includegraphics[width=0.5\textwidth]{my1test}}
\subfloat[\label{img:2}]{\includegraphics[width=0.5\textwidth]{mytest2}}
\caption{(a) my first picture, (b) my second picture}
\label{img:allpictures}%
\end{figure}

\end{document}


(Stinkendes Eigenlos aus)

Liebe Grüße,
Axel

TeXBjoern
12-04-2009, 15:21
Manchmal kann es auch so einfach sein :eek:
Vielen Dank!