Überarbeitungsverlauf[Zurück]
Klicke auf Einblenden/Ausblenden von Überarbeitungen 6

27 Dez '13, 12:48

cgnieder's gravatar image

cgnieder
22.1k253463

[`hyperref`][1]s `\autoref` sieht nach `\<dingens>autorefname`, bevor es nach `\<dingens>name` sieht. Wenn man also `\figureautorefname` zu [`babel`][2]s `\extrasngerman` hinzufügt (oder es `\AtBeginDocument{}` definiert<sup>1</sup>), 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][3] **KOMA-Script:** Mit einer [KOMA-Sript][4]-Klasse funktioniert das obige auch, man könnte aber `\<dingens>autorefname` auch `\AtBeginDocument{}`<sup>1</sup> 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} ---------- <sup>1</sup> Caveat -- Zitat [@esdd][5]: > 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][6] [1]: http://www.ctan.org/pkg/hyperref [2]: http://www.ctan.org/pkg/babel [3]: http://i.imgur.com/tmn4pwb.png [4]: http://www.ctan.org/pkg/koma-script [5]: http://texwelt.de/wissen/benutzer/50http://texwelt.de/wissen/benutzer/50 [6]: http://texwelt.de/wissen/upfiles/captionname.png
Klicke auf Einblenden/Ausblenden von Überarbeitungen 5
Falsche Formatierung korrigiert

30 Jul '13, 10:25

cgnieder's gravatar image

cgnieder
22.1k253463

[`hyperref`][1]s `\autoref` sieht nach `\<dingens>autorefname`, bevor es nach `\<dingens>name` sieht. Wenn man also `\figureautorefname` zu [`babel`][2]s `\extrasngerman` hinzufügt (oder es `\AtBeginDocument{}` definiert<sup>1</sup>), 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][3] **KOMA-Script:** Mit einer [KOMA-Sript][4]-Klasse funktioniert das obige auch, man könnte aber `\<dingens>autorefname` auch `\AtBeginDocument{}`<sup>1</sup> 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} ---------- <sup>1</sup> Caveat -- Zitat [@esdd][5]: > 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` `\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. [1]: http://www.ctan.org/pkg/hyperref [2]: http://www.ctan.org/pkg/babel [3]: http://i.imgur.com/tmn4pwb.png [4]: http://www.ctan.org/pkg/koma-script [5]: http://texwelt.de/wissen/benutzer/50
Klicke auf Einblenden/Ausblenden von Überarbeitungen 4
Caveat weiter ausgeführt

30 Jul '13, 09:31

cgnieder's gravatar image

cgnieder
22.1k253463

Klicke auf Einblenden/Ausblenden von Überarbeitungen 3
Caveat hinzugefügt

28 Jul '13, 17:48

cgnieder's gravatar image

cgnieder
22.1k253463

Klicke auf Einblenden/Ausblenden von Überarbeitungen 2

28 Jul '13, 17:04

cgnieder's gravatar image

cgnieder
22.1k253463

Klicke auf Einblenden/Ausblenden von Überarbeitungen 1

28 Jul '13, 16:27

cgnieder's gravatar image

cgnieder
22.1k253463