Überlaufende URL

Layout von Seiten, Rändern, Fusszeilen, usw, modifizieren


Bebbi
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 65
Registriert: Do 4. Jan 2018, 02:32

Beitrag von Bebbi »

Anonymous hat geschrieben:Wie gesagt, mit [d]xurl[/d] kann überall umgebrochen werden, aber das wird bei URLs mit echten Wörtern wohl meist zu unschönen Trennungen führen.
Da bin ich gerade, aber es klappt nicht. Paket installiert sich nicht.
! LaTeX Error: File `xurl.sty' not found.Type X to quit or <RETURN> to proceed,or enter new name. (Default extension: sty)Enter file name:! Emergency stop.<read > \usepackage
Auch im MikTeX Paket Manager finde ich das Paket nicht. Da bin ich jetzt überfragt.
Anonymous hat geschrieben: Wenn man da manuell was basteln möchte, muss man es wohl mit \href{<URL>}{<Text>} probieren, denn wenn man im Argument von \url herumpfuscht ändert das meist das Linkziel.
Mit
\textsl{Gemäß der amtlichen Statistik des Landes Nordrhein-Westfalen (\href{https://www.landesdatenbank.nrw.de}{\texttt{https://www.landesdatenbank.nrw.de}}) war am 31.\,12.\,2016 Ort 1 XXX,XX und Ort II YYY,YY Quadratkilometer groß.}
wird die komplette URL in eine Zeile gesetzt.
\documentclass[ngerman]
              {scrbook}

\usepackage{babel}

\usepackage{scrlayer-scrpage}
\KOMAoptions{headsepline=0.8pt}

\usepackage{hyperref}

\begin{document}

\textsl{Gemäß der amtlichen Statistik des Landes Nordrhein-Westfalen (\href{https://www.landesdatenbank.nrw.de}{\texttt{https://www.landesdatenbank.nrw.de}}) war am 31.\,12.\,2016 Ort 1 XXX,XX und Ort II YYY,YY Quadratkilometer groß.}

\end{document}
Dann gibt es ja noch \UrlBreaks (Year, wiedergefunden). Aber wird sich wohl auf alle URL auswirken, funktioniert hier aber grundsätzlich. Meine Idee war, da eine länger Sequenz zu definieren wie"en" oder "daten", aber das geht nicht - auch nicht, wenn man's in geschweifte Klammern setzt.
\documentclass[ngerman]
              {scrbook}

\usepackage{babel}

\usepackage{scrlayer-scrpage}
\KOMAoptions{headsepline=0.8pt}

%\usepackage{xurl}
\usepackage{hyperref}
\def\UrlBreaks{\do\s\do\n}

\begin{document}

\textsl{Gemäß der amtlichen Statistik des Landes Nordrhein-Westfalen (\url{https://www.landesdatenbank.nrw.de}) war am 31.\,12.\,2016 Ort 1 XXX,XX und Ort II YYY,YY Quadratkilometer groß.}

\end{document}

Bebbi
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 65
Registriert: Do 4. Jan 2018, 02:32

Beitrag von Bebbi »

Anonymous hat geschrieben: Prinzipiell wäre es möglich, die URL auch mitten im "Wort" umzubrechen, also irgendwo in "landesdatenbank", da in URLs aber die Trennmuster der Sprachen nicht gelten, kannst Du nicht damit rechnen, dass die Trennung nach sprachlich korrekten Trennungsregeln erfolgt. Das Paket [d]xurl[/d] zum Beispiel erlaubt Trennungen überall und würde in dem Beispiel hier
https://www.la
ndesdatenbank.nrw.de
trennen.
Aber das wirkt doch dann auf alle URL?
Anonymous hat geschrieben: Wenn Du im Text nur einen Kurzverweis gibst und die URL in ein Quellenverzeichnis aufnimmst, dann könnte man dort eventuell durch Umstellung von Blocksatz auf linksbündigen Textsatz Probleme mit Umbrüchen in der URL verhindern. In solchen Verzeichnissen ist es auch akzeptabler notfalls größere Lücken im Blocksatz zuzulassen, daher gibt es dort ein paar Möglichkeiten, die ich im Fließtext nicht unbedingt probieren wollte. https://tex.stackexchange.com/q/442308/35864
Mir noch zu hoch. :-(

Auch was es mit \burl auf sich hat, checke ich gerade nicht
s. https://tex.stackexchange.com/questions ... in-an-item
Anonymous hat geschrieben: Gibt es einen Grund, warum Du \textsl benutzt? Was ist mit \emph oder \textit?
Es sind ganze Absätze, die als Kommentar halt schräg gesetzt werden zur Unterscheidung von den "normalen" Absätzen und keine Hervorhebungen im Text.

Gast

Beitrag von Gast »

Das Paket xurl ist sowohl in MikTeX (https://miktex.org/packages/xurl) als auch TeX live vorhanden. Das sollte etwa seit Ende Dezember letzten Jahres so sein (https://ctan.org/ctan-ann/id/mailman.3930.1513891856.5216.ctan-ann@ctan.org).

Wenn Du das Paket also in Deinem MikTeX Package Manager nicht finden kannst, deutet das darauf hin, dass Du zumindest seit Ende Dezember kein Update mehr gemacht hast und auch die Pakedatenbank nicht mehr aktualisiert hast. Ein Update wäre also notwendig, um xurl vernünftig zu installieren. Wie immer gilt natürlich, dass ein Update kurz vor einer Deadline gut überlegt werden sollte, kleinere oder größere Problem sind gerade bei großen Aktualisierungswellen nicht ganz ausgeschlossen.

Nun ist xurl kein sehr komplexes Paket, sodass man in diese Fall durchaus auch die .sty von https://ctan.org/tex-archive/macros/lat ... xurl/latex herunterladen und die Datei dann im Dokumentenverzeichnis oder in einem anderen Ordner, in dem LaTeX die Datei finden kann https://texfaq.org/FAQ-inst-wlcf, platzieren könnte. Im schlimmsten Fall kann man den Code auch einfach in die Präambel kopieren (der Code macht auch nicht viel Anderes als beispielsweise https://tex.stackexchange.com/q/102673/35864). Ich empfehle das ausgesprochen nicht und möchte dringend appellieren, die von der TeX-Distribution bereitgestellten Programme zur Installation und Aktualisierung von Paketen zu nutzen.

Ja xurl würde sich auf alle URLs auswirken. Wenn Du die \UrlBreaks selbst manipulierst, kannst Du das natürlich versuchen, lokal zu halten.

Bei dem \href-Vorschlag müsste man schon etwas mehr tun und auch manuell eingreifen.
Beispielsweise
\documentclass[ngerman]
              {scrbook}

\usepackage{babel}

\usepackage{scrlayer-scrpage}
\KOMAoptions{headsepline=0.8pt}

\usepackage{hyperref}

\newcommand*{\manualurlbreak}[2]{%
  \href{#1}{%
    \def\.{\penalty200}%
    \def\:{\penalty100}%
    \UrlFont
    \language\csname l@nohyphenation\endcsname
    #2}}

\begin{document}
\textsl{Gemäß der amtlichen Statistik des Landes Nordrhein-Westfahlen (\manualurlbreak{https://www.landesdatenbank.nrw.de}{https://www.lan\.des\:daten\.bank.nrw.de}) war am 31.\,12.\,2016 Ort I XXX,XX und Ort II YYY,YY Quadratkilometer groß.}
\end{document}
\: markiert bevorzugte, \. akzeptable Trennstellen. Da keine anderen Trennungen betrachtet werden, müssten hier auch sinnvolle Trennungen an Zeichensetzung selbst angegeben werden, das habe ich jetzt unterlassen. Das kann man natürlich beliebig komplizierter machen und erweitern.

Bei \UrlBreaks (darauf basiert xurl) kann man nur einzelne Zeichen angeben, hinter denen eine Trennung erlaubt ist. Digramme oder Cluster gehen nicht.

Bebbi
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 65
Registriert: Do 4. Jan 2018, 02:32

Beitrag von Bebbi »

Hallo,

ich habe in den letzten 2 Wochen alles mögliche geupdatet. Offensichtlich war ich dabei wohl nicht erfolgreich. Nun klappt es mit xurl.

Ich fasse für mich zusammen.

Wenn die URL in den Text soll, gibt es drei Möglichkeiten, wenn es Probleme gibt. Sie sind nicht kombinierbar.

a)
\usepackage{hyperref}
\def\UrlBreaks{\do\/\do\-\do\.\do\s}
Wirkt sich auf alle URL aus, daher macht dass nur Sinn, wenn man nur eine oder wenige URL hat, ansonsten verschlimmbessert man das Dokument.

b)
\usepackage{xurl}
basiert auf \UrlBreaks

Trennt halt einfach überall. Macht vielleicht Sinn, wenn man lauter nicht sprechende URL hat, z. B. bei landen Datenbank-URL. Wirkt sich auf alle URL im Dokument aus.

c)
\usepackage{hyperref}

\newcommand*{\manualurlbreak}[2]{%
\href{#1}{%
\def\.{\penalty200}%
\def\:{\penalty100}%
\UrlFont
\language\csname l@nohyphenation\endcsname
#2}}

im Text dann
{\texttt\manualurlbreak{https://www.landesdatenbank.nrw.de}{https://www.lan\.des\:daten\.bank.nrw.de}}

\: markiert bevorzugte, \. akzeptable Trennstellen - alle möglichen Trennstellen angeben

Das kann man gezielt für einzelne URL anwenden, bei denen die Standarttrennung nicht funktioniert.

Hier:
\documentclass[ngerman]
              {scrbook}

\usepackage{babel}

\usepackage{scrlayer-scrpage}
\KOMAoptions{headsepline=0.8pt}

\usepackage{hyperref}

\newcommand*{\manualurlbreak}[2]{% 
  \href{#1}{% 
    \def\.{\penalty200}% 
    \def\:{\penalty100}% 
    \UrlFont 
    \language\csname l@nohyphenation\endcsname 
    #2}} 

\begin{document}

\textsl{Gemäß der amtlichen Statistik des Landes Nordrhein-Westfalen (\manualurlbreak{https://www.landesdatenbank.nrw.de}{\texttt{https://\:www.\:lan\.des\:daten\.bank.\:nrw.\.de}}) war am 31.\,12.\,2016 Ort 1 XXX,XX und Ort II YYY,YY Quadratkilometer groß.}

\end{document}
Danke für eure/deine Geduld (Warum antwortet ihr eigentlich lieber anonym? So kann man ja nie mitbekommen, wer einem so hilft.)

Grüße

Bebbi

Gast

Beitrag von Gast »

Bebbi hat geschrieben:Wenn die URL in den Text soll, gibt es drei Möglichkeiten, wenn es Probleme gibt. Sie sind nicht kombinierbar.
Die letzte Methode ist mit den ersten beiden im selben Dokument nutzbar, aber sie profitiert nicht von den ersten beiden Anpassungen der Trennstellen in der URL, da sie nur manuelle Trennungen zulässt (das ist meiner Meinung nach auch sinnvoll, wenn Du manuell umbrechen willst, ist es am besten, wenn Dir dabei nicht auch noch dutzende automatische Trennstellen zuvorkommen möchten).
Die vorgeschlagene Nutzung
{\texttt\manualurlbreak{https://www.landesdatenbank.nrw.de}{https://www.lan\.des\:daten\.bank.nrw.de}}
sollte unnötig sein, da der Befehl mit \UrlFont bereits die global eingestellte Schriftart der URLs übernimmt.

Du kannst \UrlBreaks auch lokal für nur eine bestimmte URL umdefinieren. Diese Methode ist aber nicht so akkurat wie vollständige manuelle Angabe der möglichen Trennstellen. Denn in \UrlBreaks gibst Du an, nach welchen Zeichen umgebrochen werden darf. Wenn Du mehrere es in Deiner URL hast, dann darf man nach allen umbrechen, obwohl der Umbruch möglicherweise nur nach einem bestimmten e wünschenswert ist.
\documentclass[ngerman]
              {scrbook}

\usepackage{babel}

\usepackage{scrlayer-scrpage}
\KOMAoptions{headsepline=0.8pt}

\usepackage{hyperref}

\newcommand*{\manualurlbreak}[2]{%
  \href{#1}{%
    \def\.{\penalty200 }%
    \def\:{\penalty100 }%
    \UrlFont
    \language\csname l@nohyphenation\endcsname
    #2}}


\begin{document}
\textsl{Gemäß der amtlichen Statistik des Landes Nordrhein-Westfahlen (\manualurlbreak{https://www.landesdatenbank.nrw.de}{https://\:www.\:lan\.des\:daten\.bank.\:nrw.\:de}) war am 31.\,12.\,2016 Ort I XXX,XX und Ort II YYY,YY Quadratkilometer groß.}

\begingroup
\def\UrlBreaks{\do\/\do\-\do\.\do\e}
\textsl{Gemäß der amtlichen Statistik des Landes Nordrhein-Westfalen (\url{https://www.landesdatenbank.nrw.de}) war am 31.\,12.\,2016 Ort 1 XXX,XX und Ort II YYY,YY Quadratkilometer groß.}
\endgroup

\textsl{Gemäß der amtlichen Statistik des Landes Nordrhein-Westfalen (\url{https://www.landesdatenbank.nrw.de}) war am 31.\,12.\,2016 Ort 1 XXX,XX und Ort II YYY,YY Quadratkilometer groß.}

\end{document}
xurl fügt einfach alle Buchstaben und Zahlen zu \UrlBreaks hinzu, das passiert beim Laden des Pakets ist also in der Tat global.

Bebbi
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 65
Registriert: Do 4. Jan 2018, 02:32

Beitrag von Bebbi »

Hallo,

danke für die Erläuterungen. Ich habe damit nun ein wenig gearbeitet.

Im Literaturverzeichnis wählte ich dann, dass ich alle Quelle in eine Umgebung (hoffe, dass ist der Richtige Ausdruck) packte:

{
{\sloppy

…
}
Wenn dann URL manuell getrennt wurden, habe ich entsprechende Stellen in
 \mbox
gepackt, und damit die unerwünschte Trennung unterdrückt. Alles andere war zu aufwendig und problembehaftet. Im Fließtext habe ich das nicht so gemacht.

Da macht [d]LaTeX[/d] doch deutlich mehr Arbeit als Textverarbeitung ...

Grüße

Bebbi

Antworten