Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Paket url bricht nicht immer korrekt um

  1. #1
    Registrierter Benutzer
    Registriert seit
    03.03.2008
    Beiträge
    82

    Paket url bricht nicht immer korrekt um

    Hallo,

    ich fall mal mit der Tür ins Haus:

    Minimalbeispiel: http://www.deesaster.org/sonst/url-umbruch.tex
    PDF-Dokument: http://www.deesaster.org/sonst/url-umbruch.pdf

    Das Problem ist, dass die URLs nicht immer korrekt umgebrochen werden am Rand. Bei Link 2 verstehe ich es, da es kein Zeichen in der Kette gibt, welches als Umbruch definiert ist. Wieso trennt er die anderen aber nicht eher?

    Kann man \url zwingen, dass es niemals über den Rand schreibt? Was wären ansonsten die Lösungen? Eigene Definition der \UrlBreaks? (Ist die aktuelle Lösung, aber bei 100 Links Dokument, wovon 30 falsch sind, doch recht aufwändig.)

    Gruß Dee

  2. #2
    Registrierter Benutzer Avatar von Stefan_K
    Registriert seit
    05.04.2007
    Ort
    Hamburg
    Beiträge
    3.534

    \UrlBreaks

    Hallo Dee,

    \UrlBreaks zu redefinieren hat ja zunächst nicht viel direkt mit der Link-Anzahl zu tun. Man definiert nur weitere Stellen, an denen umgebrochen werden darf. Hier findest Du dafür ein umfassendes Beispiel (Beitrag 29), zu dortigem \expandafter siehe vllt. Using \expandafter for macro redefinitions sowie dortige Links.

    Viele Grüße,

    Stefan

  3. #3
    Registrierter Benutzer
    Registriert seit
    03.03.2008
    Beiträge
    82
    Hallo Stefan,

    Danke für die Antwort.

    \UrlBreaks zu redefinieren hat ja zunächst nicht viel direkt mit der Link-Anzahl zu tun.
    Doch schon. Zum Beispiel habe ich für den zweiten Link im Minimalbeispiel erlaubt, dass er an jeder Zahl umbrechen darf. Danach gab es aber Links, die dann "falsch" bzw. optisch schlecht umgebrochen wurden, sodass ich die Redefinition rückgängig machen musste (wobei ich nicht mal weiß, ob ich alle Umbrüche getroffen habe).

    Das ist im übrigen auch die aktuelle Lösung. Also ein:

    Code:
    \newcommand{\breakurlX}{\renewcommand*\UrlBreaks{\do\;\do=\do.\do\,\do\-\do\_\do\:\do\/\do\/\do\?\do\+\do\&\do\0\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9}}
    
    \newcommand{\breakurl}{\renewcommand*\UrlBreaks{\do\;\do=\do.\do\,\do\-\do\_\do\:\do\/\do\/\do\?\do\+\do\&}}
    
    \item normaler Link \breakurlX
    \item zu langer Link \breakurl
    \item Normaler Link
    Man definiert nur weitere Stellen, an denen umgebrochen werden darf.
    Hm, eigentlich definiert man doch einen Ersatz und nicht zusätzliche Stellen, oder? Also
    Code:
    \renewcommand*\UrlBreaks{\do\A}
    bricht NUR nach A um und nicht mehr nach / oder -.

    Mein obiger Code ist aber nicht optimal, da könnte expandafter vielleicht etwas helfen, um es kürzer zu halten. Mal schauen, ob ich den alten Zustand damit auch herstellen kann.

    Eine andere Möglichkeit gibt es nicht außer UrlBreaks umzudefinieren?

    Drei Ideen, die ich gut fände:
    1. Man sagt eben, dass \url nicht über den Rand schreiben darf und umbricht, egal wo. (Aber eben nur als Notfalllösung, wenn die normale Trennung nicht will.)
    2. Man kann in der \url selbst einen manuellen Umbruch angeben, also sowas wie
    Code:
    \url{http://www.diesisteinlanger\\Link}
    und bei \\ wird umgebrochen.
    3. Man kann \UrlBreaks leicht ergänzen. (Aktuell überschreibe ich es ja und muss eben die bereits funktionierenden Umbrüche auch mit definieren. Ggf. klappt das aber mit expandafter.)

    Edit: Aktuelle Lösung sieht nun so aus. Ist aber eben noch sehr manuell, wovon ich gerne weg würde und vor allem immer noch nicht richtig:

    Code:
    \newcommand{\expandurl}[1]{\expandafter\def\expandafter\UrlBreaks\expandafter{\UrlBreaks#1}}
    
    \begin{small}
    \begin{enumerate}
    \item \url{http://www.linuxdevices.com/news/articles/NS6684279122.html}
    \expandurl{\do\9}
    \item \url{http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=cf7ee554f3a324e98181b0ea249d9d5be3a0acb8}
    \expandurl{\do\h}
    \item \url{http://itmanagement.earthweb.com/features/article.php/3785236/Netbook+Smackdown:+Compare+the+Six+Top+Netbooks.htm}
    \expandurl{\do\s}
    \item \url{http://www.gin-online.de/archive/downloads/nachwuchspreis_2007/Diplomarbeit_Neis.pdf}
    \end{enumerate}
    \end{small}
    Das führt beim dritten Link leider dazu, dass das so umgebrochen wird:
    Code:
    3. http://itmanagement.earth
       web.com/features/article.ph
       p/3785236/Netbook+Smackdown:
       +Compare+the+Six+Top+Netbooks.
       htm
    Der Umbruch nach "ph" in "php" ist natürlich blöd, besser wäre der Umbruch nach dem Punkt in "article.". Manuelles Definieren ist also noch nicht das Wahre (außer man testet, denn mit \do\b) klappt es besser).

    Viele Grüße Dee

    PS: Nur als Hinweis: Die Matroids-Links gehen ohne Cookies leider nicht.
    Geändert von Dee (12-12-2008 um 05:53 Uhr)

  4. #4
    Registrierter Benutzer
    Registriert seit
    03.03.2008
    Beiträge
    82
    Hat noch jemand Ideen?

    Gruß Dee

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •