URL hart brechen

Schriftbild, Absätze und Auflistungen einstellen


Deni
Forum-Newbie
Forum-Newbie
Beiträge: 8
Registriert: Mi 1. Apr 2009, 18:49

URL hart brechen

Beitrag von Deni »

Hi,

gibt es soetwas wie ein wrap="hard" für URL's?
Also, dass ich nicht Trennungstextstellen selbst definieren muss?
Wo er trennt ist mir egal. Hauptsache er berücksichtigt die Ränder und ist anklickbar.

Bisher benutze ich folgende Lösung, da sie bisher die einzig funktionierende Lösung zu sein scheint, die ich gefunden habe, die auch funktioniert:
Gruß
Deni

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

In der Doku zum Paket url, das auch von hyperref verwendet wird, ist auch angegeben, wie man die Trennung beeinflussen kann. Die Doku ist AFAIR in der Paketdatei url.sty selbst zu finden.

Ansonsten würde ich Dir empfehlen, bei Fragen keine Codeschnippsel, sondern vollständige Minimalbeispiele (siehe goLaTeX-Knigge) anzugeben. Was dabei der Vorteil ist, ist im Wiki und den dort angegebenen Links zu finden.

Deni
Forum-Newbie
Forum-Newbie
Beiträge: 8
Registriert: Mi 1. Apr 2009, 18:49

Beitrag von Deni »

Die Doku zum Paket url habe ich gelesen gehabt. Ich habe nur nichts in Richtung harten umbrechen gefunden.

Das Mini-Beispiel kann sich mit Verlaub hier sparen. Zumind. behaupte ich, dass man sich eine zu lange Url vorstellen kann.
Aber der Vollständigkeithalber siehe Anhang:
Dateianhänge
minibeispiel.tex
(342 Bytes) 1059-mal heruntergeladen

Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2525
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Umbrüche in urls

Beitrag von Stefan Kottwitz »

Hallo Deni,

zu diesem Zweck kannst Du das Makro \UrlBreaks erweitern. Hier mal recht umfassend:
\makeatletter
\g@addto@macro\UrlBreaks{\do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i%
\do\j\do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v\do\w%
\do\x\do\y\do\z\do\&\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9\do\0}
\def\do@url@hyp{\do\-}
\makeatother
Ein Minimalbeispiel ist fast immer sinnvoll. Auch wenn man es sich vorstellen kann, der konkrete Code ermöglicht, einen Vorschlag direkt testen zu können. Oder hätte Dir der Hinweis auf Redefinition von \UrlBreaks statt meinem konkreten Code hier genügt? Denn zusammen mit dem Code von url.sty könnte man sich auch den Rest vorstellen.

Viele Grüße,

Stefan

royalware
Forum-Anfänger
Forum-Anfänger
Beiträge: 32
Registriert: Di 5. Mai 2009, 13:09

Beitrag von royalware »

Ich hatte das selbe Problem wie Deni und die von Stefan angebotene Lösung hat mir schon zum Großteil geholfen. Die URL wird korrekt getrennt, aber leider erst hinter dem Seitenrand, so dass eine overfull box entsteht.

\documentclass[a4paper,11pt]{report}
\usepackage[dvips]{graphicx}
\usepackage{amsmath,amssymb,amsbsy}
\usepackage{color}
\usepackage[german]{babel}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{fancyhdr}
\usepackage[dvipdfm, colorlinks=true, bookmarksopen=true, bookmarksopenlevel=4, breaklinks=true, pdfstartview=Fit, linkcolor=blue]{hyperref} 

\makeatletter
\g@addto@macro\UrlBreaks{
  \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j
  \do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t
  \do\u\do\v\do\w\do\x\do\y\do\z\do\&\do\1\do\2\do\3
  \do\4\do\5\do\6\do\7\do\8\do\9\do\0}
% \def\do@url@hyp{\do\-}
\makeatother

\begin{document}

\chapter{Minimalbeispiel}

Diese URL soll umgebrochen werden. Das funktioniert auch recht gut, aber leider entsteht eine Overfull Box, die "`4.63574pt too wide"' ist: \url{http://www.heise.de/security/Neues-Rating-System-fuer-Sicherheitsfehler-vorgestellt--/news/meldung/64047}

\end{document}
Lässt sich das irgendwie geschickt ändern?


EDIT:
Wenn die Code-Zeile
\def\do@url@hyp{\do\-}
vor "\makeatother" verwendet wird, wird der Rand sogar um 10pt überschritten (erst beim zweiten Zeilenumbruch). Eigenartig...

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Das Problem ist, dass Du eine ganze Zeile mit einem Teil der URL füllst. Dadurch kann nirgendwo in der Zeile zusätzlicher Leerraum eingefügt werden, also muss die Zeile entweder über- oder unterfüllt werden. Das bedeutet, dass es keinen korrekten Umbruch gibt. Das macht TeX mit einer overfull \hbox deutlich. Eine Lösung könnte beispielsweise sein, zusätzlichen Abstand nach einem Slash zu erlauben:
 \g@addto@macro\UrlSpecials{\do\/{\mbox{\UrlFont/}\hskip 0pt plus 1pt}}

royalware
Forum-Anfänger
Forum-Anfänger
Beiträge: 32
Registriert: Di 5. Mai 2009, 13:09

Beitrag von royalware »

Hervorragend!Vielen Dank für die Hilfe. Jetzt sieht es so aus wie es sein soll. Ich finde es allerdings eigenartig, dass das im URL-Paket nicht von Haus aus so definiert ist...

Die Zeile
\def\do@url@hyp{\do\-}
verstehe ich allerdings noch nicht ganz. Wird damit einfach nur festgelegt, dass kein "-" am Zeilenende gesetzt wird? Notwendig scheint das bei mir nicht zu sein. Das Resultat ist mit und ohne identisch.

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Die Zeile solltest Du rauswerfen. Wenn Du Umbrüche nach »-« erlauben willst, dann geht das per url-Paket-Option »hyphens«. Da hyperref url selbst lädt und AFAIK keine Möglichkeit bietet, Optionen an url durchzureichen, muss man die Option per
\PassOptionsToPackage{hyphens}{url}
vor dem Laden von hyperref setzen. Vermutlich hat derjenige, von dem Du den Code hast, nicht gewusst, dass es so eine Möglichkeit gibt.

BTW: Option dvipdfm solltest Du natürlich nur verwenden, wenn Du wirklich mit dvipdfm arbeitest. In dem Fall sollte man aber eigentlich auch color und graphicx mit dieser Option laden und nicht mit Option dvips. Man könnte dann auch gleich dvipdfm als globale Option (also bei \documentclass) angeben. Dann muss man das ggf. nur an einer Stelle ändern.

BTW2: Option german bei babel ist für obsolete deutsche Rechtschreibung. Die aktuelle deutsche Rechtschreibung bekommt man mit ngerman.

Diese Anmerkungen nur so für den Fall, dass Du es noch nicht wusstest.

Ansonsten: Wenn Du der Meinung bist, dass das url-Paket etwas anders machen sollte, dann schick dem Maintainer/Autor einen Feature-Request. Nebenbei schätze ich mal dass min. die Hälfte der Features in KOMA-Script auf Feature-Requests zurück geht. Mich wundert dabei immer wieder, dass sich Anwender wundern, wenn ich eine Nachfrage beantworte.

royalware
Forum-Anfänger
Forum-Anfänger
Beiträge: 32
Registriert: Di 5. Mai 2009, 13:09

Beitrag von royalware »

Danke für Deine Tipps.

Die Option "dvips" beim Laden von "graphicx" ist natürlich Blödsinn und erklärt jetzt möglicherweise auch, warum ich mit manchen EPS-Bildern Konvertierungsprobleme hatte. Ich hab den Header "blind" einer Vorlage für die Diplomarbeit von einem Prof. entnommen. Nunja...

dvipdfm verwende ich in der Tat, da ich keine Notwendigkeit sehe, von der DVI-Ausgabe über PostScript zum PDF zu gelangen.

Und Du hast richtig gelegen. Dass "ngerman" die bessere Wahl ist, wusste ich tatsächlich nicht. Vielen Dank!

Das mit der globalen Option sieht dann jetzt so aus:
\documentclass[a4paper,dvipdfm,11pt]{report}

\usepackage{graphicx,color,amsmath,amssymb,amsbsy,fancyhdr}
\usepackage[german]{babel}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}

\PassOptionsToPackage{hyphens}{url} %Umbrüche nach '-' erlauben
\usepackage[dvipdfm, colorlinks=true, bookmarksopen=true, bookmarksopenlevel=4, breaklinks=true, pdfstartview=Fit, linkcolor=blue]{hyperref}
Das Zusammenfassen von Paketen, die ohne Optionen auskommen (Zeile 3) ist doch unbedenklich, oder?
Ich hoffe, dass es jetzt ein einheitlicheres Bild ergibt. Danke nochmals für die Tipps...

EDIT: Das "dvipdfm" aus der letzten Zeile kann ja nun auch entfernt werden, oder?

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Das dvipdfm in der letzten Zeile kann in der Tat weg. Übrigens sollte man besser dvipdfmx als dvipdfm verwenden. Das Programm arbeitet in einigen Punkten besser als sein Vorfahre. Natürlich wäre zu überlegen, ob man nicht gleich pdflatex nehmen kann, um das PDF zu erzeugen. Damit spart man sich den Zwischenschritt DVI gleich auch noch. PS-Tricks ist übrigens kein Argument, dass das nicht geht. Dafür gibt es Pakete (z. B. pst-pdf). Ebenso wenig sind EPS-Abbildungen ein Argument. Die kann man einfach mit epstopdf in PDFs umwandeln.

Pakete ohne oder mit identischen Optionen kann man durchaus zusammen laden. Allerdings empfiehlt es sich, das dann so zu schreiben:
\usepackage{%
graphicx
,color
,amsmath
,amssymb
,amsbsy
,fancyhdr
}
Das gibt ggf. die Möglichkeit, mal schnell einen Kommentar anzufügen oder eine Zeile auszukommentieren. BTW: Ich würde xcolor statt color empfehlen. Schon allein die dort gebotene Möglichkeit, Standardfarben über Namen anzusprechen ist ein gutes Argument dafür. Außerdem bietet das Paket die Möglichkeit, Farben in ein anderes Modell zu konvertieren, bzw. anzugeben, was das Standardmodell sein soll. Das ist beispielsweise nützlich, wenn man irgendwann erfährt, dass in der Druckstufe alle Farben in CMYK statt RGB anzugeben sind. Außerdem bietet das Paket direkt eine Unterstützung beispielsweise für colortbl.

Antworten