Seite 1 von 1

\number\counter in einem Label?

Verfasst: Di 27. Mär 2012, 14:45
von Keba
Hallo,

Ich habe eine Reihe kleinerer Grafiken und möchte in meinem Anhang größere Versionen ausgeben, dazu habe ich mir (mithilfe dieses Forums) einige entsprechende Funktionen definiert.

Ein Minimalbeispiel: (entsprechende Grafiken müssen natürlich fürs Kompilieren vorhanden sein, deren Größe und Format spielt hier keine Rolle):
\documentclass{scrartcl}

% packages
\usepackage[utf8]{inputenc}                           % Utf-8 encoding
\usepackage[T1]{fontenc}                              % Makes umlauts searchable
\usepackage{lmodern}                                  % Nice font
\usepackage[ngerman]{babel}                           % German typography
\usepackage{graphicx}                                 % Graphics support
\usepackage{etoolbox}                                 % Used for small/big image automatism
\usepackage{xifthen}                                  % See etoolbox
\usepackage{subfig}                                   % Multiple figures
\usepackage{hyperref}                                 % Links
\usepackage[german]{varioref}                         % 'clever' hyperref links

% Small/big image macros
% Counter (for included images and the while loop)
\newcount\imagecounter
\newcount\loopcounter
\imagecounter=1

% Include small images
% \smallimg{path_to_img}{caption}
\newcommand{\smallimg}[2]
{%
  % small..
  \subfloat[#2, g.V.s.S.:~\pageref{bigimg:\number\imagecounter}]{
    \label{smallimg:\number\imagecounter}
    \includegraphics[width=0.5\textwidth]{#1}
  }
  % .. and big
  \csgdef{img\number\imagecounter}{
    \begin{figure}
      \includegraphics[width=\textwidth]{#1}
      \caption*{#2, siehe Abb.~\vref{smallimg:\number\imagecounter}}
      \label{bigimg:\number\imagecounter}
    \end{figure}
  }
  \global\advance\imagecounter by 1
}

% Get all big images
\newcommand{\getbigimgs}
{%
  % loop
  \loopcounter=1
  \advance\imagecounter by 1
  \whiledo{\number\loopcounter<\number\imagecounter}
  {%
     \csuse{img\number\loopcounter}
     \advance\loopcounter by 1
  }
  \advance\imagecounter by -1
}

% document

\begin{document}
\section{Kleine Grafiken}
\begin{figure}[htbp] 
  \smallimg{../img/start_end_t1_c1_e0_nu0}{$c=1$}
  \smallimg{../img/start_end_t1_c-1_e0_nu0}{$c=-1$}
  \caption{Vergleich verschiedener $c$}
  \label{fig:c-aenderung}
\end{figure}


\section{Foo}
Lorum Ipsum\dots

\section{Große Grafiken}
\getbigimgs

\end{document}
Dazu habe ich zwei Fragen:

1.: Beim ersten Kompilieren bekomme ich eine Reihe Fehler ala
! Missing \endcsname inserted.
<to be read again> 
                   \imagecounter 
l.25 ...{a}{Subfigure 1a\relax }{subfigure.1.1}{}}
Ich verstehe diesen Fehler nicht und nach einer Enter-Orgie kompiliert das Ganze beim zweiten Versuch auch.

2.: (Die eigentliche Frage:) Ich möchte gerne in den Unterschriften der kleineren Bilder auf die größeren Versionen verweisen (und umgekehrt). Da bietet es sich an entsprechende Labels zu definieren, ala smallimg:$nummer. Die Nummer bekomme ich ja mittels \number\imagecounter. Allerdings werden Kommandos in einem label nicht ausgeführt, wenn ich das richtig sehe, heißt das Label dann "smallimg:\label\imagecounter", wovon es dann entsprechend viele Versionen gibt.

Wie kann ich automatisch auf meine großen Bilder (und zurück) verweisen?

Grüße und vielen dank, Keba.

Verfasst: Di 27. Mär 2012, 22:56
von Keba
Hallo,

Im IRC wurde mir geholfen und siracusa hat mir diese Lösung präsentiert. Auch an dieser Stelle herzlichen Dank dafür. :)

Grüße, Keba.