일반적인 하이픈 연결을 사용하면서 줄 바꿈 표시기를 추가하여 긴 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 구문 뒤(두 번째 예) 또는 .예(세 번째 예)와 같은 하이픈 지점에서 구분되는 경우 화살표가 추가됩니다.

게시된 대로 화살표는 오른쪽 여백에 붙어 있습니다. 텍스트 블록 내에 있도록 하려면 \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}

관련 정보