一般的なハイフネーションを使用しながら、改行インジケーターを追加して長い URL を分割するにはどうすればよいですか?

一般的なハイフネーションを使用しながら、改行インジケーターを追加して長い URL を分割するにはどうすればよいですか?

次のような質問をいくつか見ましたこれです解決策を求めるURLを分割する

  1. 通常のテキストと同じように、URL内の単語をハイフネーションすることは可能でしょうか(つまり、ハイフネーションエンジンの助けを借りて単語を分割する)。ハイフンを付けずにただし、代わりに特殊文字を使用する場合は、例 1 を参照してください。

    • 改行を示す:ハイフンでつながれたURLの誤解を避けるために、次のような特殊文字を使います。キャリッジリターンハイフネーション位置の記号。
    • ハイフンとダッシュ:ハイフネーション エンジンによって、URL の一部であると誤解される可能性のある新しいハイフンが挿入されることは望ましくありません。
  2. ハイフネーションエンジンがURLをダッシュ(ダッシュは URL の一部です)、特殊文字を必ず挿入する必要があります。例 2 を参照してください。

  3. ハイフネーションエンジンがURLをスラッシュ(スラッシュは URL の一部です)、特殊文字を必ず挿入する必要があります。例 3 を参照してください。

望ましいハイフネーションは、段落、脚注、参考文献で機能する必要があります。

例:

(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

関連作業:

  • Peter Grill が投稿した解決策新しいコマンドが導入されました。私は既存の\urlコマンドを使用したいと思います。また、彼のソリューションでは文字ごとに単語が分割されますが、私は正しいハイフネーションを使用するハイフネーション エンジンの決定に頼りたいと考えています。

答え1

ここに画像の説明を入力してください

これは T1 および OT1 エンコーディングでは機能しますが、他のエンコーディングでは変更が必要になります (基本的に、偽のハイフネーション文字として使用するための目に見えない文字が必要です)

ご覧のとおり、改行が追加されていない場合(最初の例)、矢印は追加されません。URL構文の後で改行する場合(2番目の例)、または例のようなハイフネーションポイントで改行する場合は矢印が追加されます/.3番目の例)。

投稿されたとおり、矢印は右余白に突き出ています。矢印をテキスト ブロック内に配置したい場合は、\rlapから を削除します\discretionary

また、投稿されているように、この質問では、必要に応じてグローバルに削除する\brkurlコマンドを呼び出すように求めています。\urlbrk

\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}

関連情報