PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeilenumbruch und \autoref



slowfox
28-06-2011, 19:40
Ich verwende für Querverweise unterschiedlicher Art den Befehl \autoref aus dem Hyperref-Paket. Steht \autoref am Zeilenende, so wird über das Zeilenende hinaus geschrieben, da \autoref keine Trennung zwischen Bezeichner und Nummer erlaubt. Ist es möglich, eine solche Trennung freizugeben? Oder ist es typografisch nicht gut, zwischen Bezeichner und Nummer einen Zeilenumbruch zu erlauben? (Dann müsste ich an entsprechenden Stellen den Text umformulieren.)


\documentclass[ngerman]{scrreprt}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{babel}

\usepackage{hyperref}

\usepackage{blindtext}

\begin{document}

\subsection{Test}\label{test}

\blindtext

Ein Minimalbeispiel um mein Problem mit den Referenzen wie dieser \autoref{test} zu illustrieren.
\blindtext

\end{document}

ctansearch
28-06-2011, 20:57
Anscheinend ist das nicht möglich.

Das einzige wäre, die Namen der Referenzen zu verkürzen, um einen besseren Umbruch möglich zu machen.
Zum Beispiel:


\let\subsectionautorefname\sectionautorefname

Das ist zwar "logisch" nicht korrekt, aber ich finde es macht einen besseren Eindruck, wenn man nicht "Unterabschnitt" oder "Unterunterabschnitt" liest, sondern schlicht "Abschnitt", da die Gliederungsinformation ja in der Ordnungszahl zu erkennen ist und daher redundante Informationen vermieden werden.

Die Definitionen findest Du in der hyperref.sty, wenn Du nach "\def\HyLang@german{%" suchst. Alle diese Defintionen kannst Du beeinflussen, wenn Du in Deinem aktuellen Dokument das entsprechende "\let..." einfügst.

slowfox
30-06-2011, 15:52
@ctansearch: Die Umbenennung mittels \***autorefname löst mein Problem nicht. Tatsächlich schreibe ich auf Englisch und habe \***autorefname für alle Gliederungsebenen (außer Chapter) auf "Section" gesetzt. (Natürlich kann ich das durch die Abkürzung "Sec." ersetzen, aber all dies verschiebt das Problem nur und löst es nicht.) Das "Unterabschnitt" im Beispiel dient nur der Illustration.

Die Frage bleibt also, kann ich zwischen Bezeichner und Gliederungsnummer bei \autoref{} einen Zeilenumbruch zulassen oder sollte ich besser den Text an den kritischen Stellen umformulieren, um eine solche Trennung zu vermeiden.

psyman
30-06-2011, 16:51
Das Problem kannst du mit einem neuen Befehl lösen:



\newcommand{\mysecref}[1]{Section \ref{#1}}

Allerdings wird hier nicht mehr automatisch der Typ ermittelt

slowfox
30-06-2011, 19:10
@psyman: ... bleibt noch ein Befehl für Abbildungen, und einer für Tabellen, und einer für Items, usw. Ich verwende \autoref, um mit einem Befehl sämtliche Querverweise zu erstellen. Diese Erleichterung möchte ich nicht aufgeben, seperate Befehle sind für mich keine Lösung.

ctansearch
30-06-2011, 20:10
Soweit ich den Code und die Dokumentation nachvollziehen konnte, ist dies nicht möglich, anscheinend sind auch Oberdiek und die anderen Autoren nicht weitergekommen.

Vermutlich ist es das einfachste, den Text an den entsprechenden Stellen anzupassen, da der Fehler ohnehin auf eine "overfull hbox" hinweist. Wenn Du vor dem Einsatz der Referenz auf Absätze verzichtest, dürfte das Problem recht selten auftreten.

Aber mal sehen, vielleicht fällt mir ja noch was ein.

tral
30-06-2011, 22:52
Hallo,

damit gehts:



\makeatletter
\addto\extrasngerman{%
\def\subsectionautorefname{Unterabschnitt\hskip\z@ skip}%
}
\makeatother


Damit wird eine unsichtbare Trennstelle an den Ende von "Unterabschnitt" gesetzt. Komischerweise funktioniert "" hier nicht...

Das muss man dann leider für alle autorefnames machen. Ich denke das ist ein Bug von hyperref. Lustigerweise geht ja die Trennung überall innerhalb von "Unterabschnitt". Nur nicht zwischen dem Wort und der Nummer...

Christian.

slowfox
01-07-2011, 20:03
Moin Christian,

danke für Deine Lösung, die funktioniert! Nur schade, dass sich das nicht allgemein definieren lässt...

sommerfee
02-07-2011, 12:16
Hallo slowfox,

Hast du Heiko Oberdiek deswegen schon angeschrieben? Wenn er vernünftige Fehlerbeschreibungen samt Minimalbeispiel bekommt (und beides ist ja hier gegeben), hilft er nach meiner Erfahrung nach gerne.