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.

Code, hier editierbar zum Übersetzen:
\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}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  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, 16:03

esdd's gravatar image

esdd
17.8k304257
Akzeptiert-Rate: 62%

bearbeitet 28 Jul '13, 16: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:

Code, hier editierbar zum Übersetzen:
\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}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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:

Code, hier editierbar zum Übersetzen:
\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}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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:

Code, hier editierbar zum Übersetzen:
\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}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

alt text

Permanenter link

beantwortet 28 Jul '13, 16:27

cgnieder's gravatar image

cgnieder
22.1k253463
Akzeptiert-Rate: 60%

bearbeitet 27 Dez '13, 12: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, 07:33) saputello

@saputello besser so?

(30 Jul '13, 09:32) cgnieder
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:

Code, hier editierbar zum Übersetzen:
\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}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

geht.

(30 Jul '13, 12:55) saputello

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

(30 Jul '13, 12:58) cgnieder
Deine Antwort
[Vorschau ausblenden]

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Frage-Themen:

×62
×47
×8

gestellte Frage: 28 Jul '13, 16:03

Frage wurde gesehen: 57,153 Mal

zuletzt geändert: 27 Dez '13, 12:48