Um die Standardbezeichnungen bei der Beschriftung von Abbildungen zu ändern, verwende ich die Antwort von Thorsten auf die Frage Wie kann ich die Standardnamen für Abbildungen und Tabellen ändern sowie die Titel der Verzeichnisse? Ich lade aber zusätzlich das Paket hyperref und verweise im Dokument mit \autoref{...} auf Abbildungen. Bei den Verweisen steht dann aber weiterhin Abbildung statt Abb.

\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{hyperref}

\renewcaptionname{ngerman}{\figurename}{Abb.}

\begin{document}

Verweis auf \autoref{fig:1}.

\begin{figure}[!htb]
  \centering
  \rule{2cm}{2cm}
  \caption{Eine Zeichnung}
  \label{fig:1}
\end{figure}

\end{document}
  1. Wie kann ich dafür sorgen, dass \autoref{fig:1} ebenfalls Abb. 1 ausgibt?
  2. Kann ich auch nur die Ausgabe von \autoref ändern, so dass unter dem Bild weiter Abbildung steht und nur beim Verweis das kürzere Abb. ?

gefragt 28 Jul '13, 10:03

esdd's gravatar image

esdd
14.2k53251
Akzeptiert: 87%

bearbeitet 28 Jul '13, 10:18


hyperrefs \autoref sieht nach \<dingens>autorefname, bevor es nach \<dingens>name sieht. Wenn man also \figureautorefname zu babels \extrasngerman hinzufügt (oder es \AtBeginDocument{} definiert1), erreicht man das gewünschte.

Standard-Klasse:

\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{hyperref}

% \addto\captionsngerman{\def\figurename{Abb.}}% nach Bedarf
\addto\extrasngerman{\def\figureautorefname{Abb.}}

\begin{document}

Verweis auf \autoref{fig:1}.

\begin{figure}[!htb]
  \centering
  \rule{2cm}{2cm}
  \caption{Eine Zeichnung}
  \label{fig:1}
\end{figure}

\end{document}

KOMA-Ergebnis

KOMA-Script:

Mit einer KOMA-Sript-Klasse funktioniert das obige auch, man könnte aber \<dingens>autorefname auch \AtBeginDocument{}1 mit \newcaptionname definieren:

\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{hyperref}

% \renewcaptionname{ngerman}{\figurename}{Abb.}% nach Bedarf
\AtBeginDocument{%
  \newcaptionname{ngerman}{\figureautorefname}{Abb.}%
}
\begin{document}

Verweis auf \autoref{fig:1}.

\begin{figure}[!htb]
  \centering
  \rule{2cm}{2cm}
  \caption{Eine Zeichnung}
  \label{fig:1}
\end{figure}

\end{document}

1 Caveat -- Zitat @esdd:

Bei den Definitionen, für die \AtBeginDocument notwendig ist, muss das Dokument aber einsprachig sein: Jedes \selectlanguage{ngerman} im Dokument überschreibt diese sonst. \addto\extrasngerman{...} überlebt das dagegen.

Etwas Hintergrund: wenn man mit \selectlanguage{<sprache>} eine Sprache auswählt, dann werden u.A. zwei Makros ausgeführt. Der erste ist \captions<sprache> und legt die grundlegenden Beschriftungen (=captions) fest wie die Überschriften von Inhaltsverzeichnis, Abbildungsname usw. Der zweite ist \extras<sprache>, das weitere sprachspezifische Definitionen enthält.

KOMA's \providecaptionname, \newcaptionname etc fügen die entsprechenden Definitionen (wie es ihr Name vermuten lässt) zu \captions<sprache> hinzu. hyperref fügt \<dingens>autoname aber (nicht völlig ohne Logik) zu \extras<sprache> hinzu. Und da die \extras<sprache> nach \captions<sprache> aufgerufen werden, wird bei einem erneuten Aufruf von \selectlanguage{<sprache>} \<dingens>autoname wieder überschrieben.

Fazit: in einem mehrsprachigen Dokument, in dem man zwischen Sprachen hin- und herspringen muss, ist es besser, \addto\extrasngerman{\def\figureautorefname{Abb.}} zu verwenden.


Edit 26.12.2013 Mit dem Release von KOMA-Script v3.12 geht alles intuitiv wie gewünscht:

\documentclass{scrartcl}
\usepackage[ngerman,naustrian,german]{babel}
\usepackage{hyperref}
\renewcaptionname{ngerman,naustrian}\figureautorefname{Abb.}
\begin{document}
\section{Test A (german)}
Siehe dazu auch \autoref{fig:TestA}, \autoref{fig:TestB} und
\autoref{fig:TestC}.
\begin{figure}
  \centering
  \rule{1cm}{1cm}
  \caption{Testabbildung A}
  \label{fig:TestA}
\end{figure}

\selectlanguage{naustrian}
\section{Test B (naustrian)}
Siehe dazu auch \autoref{fig:TestA}, \autoref{fig:TestB} und
\autoref{fig:TestC}.
\begin{figure}
  \centering
  \rule{1cm}{1cm}
  \caption{Testabbildung B}
  \label{fig:TestB}
\end{figure}

\selectlanguage{ngerman}
\section{Test B (ngerman)}
Siehe dazu auch \autoref{fig:TestA}, \autoref{fig:TestB} und
\autoref{fig:TestC}.
\begin{figure}
  \centering
  \rule{1cm}{1cm}
  \caption{Testabbildung C}
  \label{fig:TestC}
\end{figure}
\end{document}

alt text

Permanenter link

beantwortet 28 Jul '13, 10:27

Clemens's gravatar image

Clemens
19.0k113060

bearbeitet 27 Dez '13, 06:48

@Clemens: Das Zitat vermittelt so einen etwas zu allgemeinen Eindruck. Das Problem ist, dass \newcaptionname, \renewcaptionname und \providecaptionname \captions<language> umdefinieren. hyperref definiert \<dingens>autoname aber in \extras<language>, das danach ausgeführt wird. Daher überschreibt die Definition von hyperref dann wieder die Definition von \newcaptionname. Das ist also ein spezielles Problem bei Ausdrücken, die in \extras<language> definiert sind, nicht aber ein generelles Problem. Das Zitat erweckt aber den Anschein eines allgemeinen Problems.

(29 Jul '13, 01:33) saputello

@saputello besser so?

(30 Jul '13, 03:32) Clemens
3

@Clemens: Wäre besser, wenn über den KOMA-Script-Newsticker nicht gerade hereingekommen wäre, dass die Befehle von KOMA-Script inzwischen eine Sternform haben, die \extras<Sprache> (um)definiert. Außerdem testen die Normalformen jetzt auch, ob ein Sprachmakro bereits in \extras<Sprache> oder \captions<Sprache> definiert sind:

\documentclass{scrartcl}% 3.12 BETA benötigt!
\usepackage[ngerman]{babel}
\usepackage{hyperref}
\renewcaptionname{ngerman}\sectionautorefname{Abs.}
\begin{document}
\section{Test}\label{t}
Siehe \autoref{t}
\end{document}

geht.

(30 Jul '13, 06:55) saputello

@saputello Very nice! :) Sobald das auf CTAN gelandet ist, werde ich die Anwort dann nochmal überarbeiten.

(30 Jul '13, 06:58) Clemens
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×41
×32
×3

Frage gestellt: 28 Jul '13, 10:03

Frage wurde angeschaut: 15,353 Mal

Zuletzt aktualisiert: 27 Dez '13, 06:48