Wie kann man lange URLs unter Verwendung der üblichen Silbentrennung und unter Hinzufügung eines Zeilenvorschubindikators aufteilen?

Wie kann man lange URLs unter Verwendung der üblichen Silbentrennung und unter Hinzufügung eines Zeilenvorschubindikators aufteilen?

Ich habe mehrere Fragen gesehen wieDieses hierdie eine Lösung fordern fürURLs aufteilen.

  1. Ich frage mich, ob es möglich ist, die Wörter in einer URL so zu trennen, wie es in normalem Text geschieht (d. h. Wörter mithilfe der Silbentrennungs-Engine zu trennen).ohne Bindestrichesondern ein Sonderzeichen), siehe Beispiel 1.

    • Zeilenvorschub anzeigen:Um eine missverständliche Interpretation der mit Bindestrich versehenen URL zu vermeiden, würde ich mir ein Sonderzeichen wünschen, wie z.B.WagenrücklaufSymbol an der Silbentrennungsposition.
    • Bindestriche vs. Gedankenstriche:Ich möchte nicht, dass die Silbentrennungs-Engine neue Bindestriche einfügt, die fälschlicherweise als Teil der URL interpretiert werden könnten.
  2. Wenn die Silbentrennungs-Engine die URL an der Position einesBindestrich(der Bindestrich ist Teil der URL), das Sonderzeichen muss trotzdem eingefügt werden, siehe Beispiel 2.

  3. Wenn die Silbentrennungs-Engine die URL an der Position einesSchrägstrich(der Schrägstrich ist Teil der URL), das Sonderzeichen muss trotzdem eingefügt werden, siehe Beispiel 3.

In Absätzen, Fußnoten und im Literaturverzeichnis soll die gewünschte Silbentrennung funktionieren.

Beispiele:

(1) http://www.w3.org/hypertext-transport-protocol/secure/test/appli↩
cationformular.html

(2) http://www.w3.org/hypertext-transport-↩
protocol/secure/test/applicationformular.html

(3) http://www.w3.org/hypertext-transport-protocol/secure/↩
test/applicationformular.html

Verwandte Arbeiten:

  • DerLösung gepostet von Peter Grillhat einen neuen Befehl eingeführt. Ich möchte den vorhandenen Befehl verwenden \url. Außerdem trennt seine Lösung Wörter bei jedem Buchstaben, während ich mich auf die Entscheidung der Silbentrennungs-Engine verlassen möchte, die die korrekte Silbentrennung verwendet.

Antwort1

Bildbeschreibung hier eingeben

Dies funktioniert für T1- und OT1-Kodierungen, müsste für andere Kodierungen jedoch modifiziert werden (benötigt im Grunde ein unsichtbares Zeichen, das als falsches Trennzeichen verwendet werden kann)

Wie man sehen kann, wird kein Pfeil eingefügt, wenn kein Umbruch hinzugefügt wird (erstes Beispiel), oder es werden Pfeile eingefügt, wenn der Umbruch nach der URL-Syntax /oder .(zweites Beispiel) oder an einer Silbentrennungsstelle wie beispielsweise (drittes Beispiel) erfolgt.

Wie angegeben ragen die Pfeile in den rechten Rand. Wenn Sie sie lieber innerhalb des Textblocks haben möchten, entfernen Sie sie \rlapaus dem \discretionary.

Wie auch gepostet, wird in \brkurlder Frage definiert, dass der Befehl \urleinfach „global löschen“ aufgerufen werden soll brk, wenn dies gewünscht wird.

\documentclass{article}

%\tracingonline1
%\showboxbreadth=200
%\showboxdepth=200

\begin{document}

\def\addurlspace#1{%
\ifx\relax#1%
\else
\ifx/#1\space\fi
\ifx.#1\space\fi
#1%
\ifx/#1\space\fi
\ifx.#1\space\fi
\expandafter\addurlspace
\fi}



\makeatletter

\@namedef{OT1-zwidthchar}{255}
\@namedef{T1-zwidthchar}{"17}

\def\brkurl#1{%
\edef\savedhchar{\the\hyphenchar\font}%
\global\setbox1\hbox{}%
\setbox0=\vbox{\hsize=2pt\rightskip=0pt plus 1fill
\hfuzz\maxdimen
\tracinglostchars0
\overfullrule0pt
\hyphenchar\font=\csname \f@encoding-zwidthchar\endcsname
\noindent \hskip0pt \addurlspace #1\relax
\par
\loop
\setbox4 \lastbox
\ifvoid4 \else
\global\setbox1\hbox{\unhbox4\unskip\unskip\discretionary{\hbox{\rlap{$\leftarrow$}}}{}{}\unhbox1}%
\unskip
\unskip
\unpenalty
\unskip
\repeat
}%
\unhbox1 
\hyphenchar\font\savedhchar
\relax}

\makeatother





 some text \brkurl{http://www.example.com/this/directory/here}
 some text \brkurl{http://www.example.com/this/directory/here} some text 
 some text \brkurl{http://www.example.com/this/directory/here} some text 

\end{document}

verwandte Informationen