diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/lang-url.mkii')
-rw-r--r-- | Master/texmf-dist/tex/context/base/lang-url.mkii | 232 |
1 files changed, 232 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/base/lang-url.mkii b/Master/texmf-dist/tex/context/base/lang-url.mkii new file mode 100644 index 00000000000..f3310ccebb7 --- /dev/null +++ b/Master/texmf-dist/tex/context/base/lang-url.mkii @@ -0,0 +1,232 @@ +%D \module +%D [ file=lang-url, +%D version=2008.01.22, % used to be lang-mis +%D title=\CONTEXT\ Language Macros, +%D subtitle=Language Options, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +\unprotect + +%D This is rather old code. The following solution was used +%D for a long time and is kind of built-up over the years. + +\ifx\\\undefined \let\\\crlf \fi + +\ifx\urlsplitmode\undefined \chardef\urlsplitmode\plusone \fi + +% 0 => don't split +% 1 => . : na, rest voor +% 2 => alles na +% 3 => alles voor + +% \bgroup \catcode`\~=\active \catcode`\/=\active +% +% \unexpanded\gdef\hyphenatedurl#1% {}{} handles accents +% {\bgroup +% \ifnum\hyphenpenalty<10000 \else +% \def\discretionary##1##2##3{##1\allowbreak##2}% +% \fi +% \obeyhyphens +% \def\splitbefore##1% +% {\setbox\scratchbox=\hbox{##1{}{}}% +% \ifcase\urlsplitmode +% \box\scratchbox +% \or +% \postwordbreak\box\scratchbox\prewordbreak +% \or +% \prewordbreak\discretionary{\box\scratchbox}{}{\box\scratchbox}\prewordbreak +% \else +% \postwordbreak\box\scratchbox\prewordbreak +% \fi}% +% \def\splitafter##1% +% {\ifcase\urlsplitmode +% ##1{}{}% +% \or +% \prewordbreak\discretionary{##1{}{}}{}{##1{}{}}\prewordbreak +% \or +% \prewordbreak\discretionary{##1{}{}}{}{##1{}{}}\prewordbreak +% \else +% \prewordbreak\discretionary{}{##1{}{}}{##1{}{}}\prewordbreak +% \fi}% +% \def\splitanyway##1% +% {\prewordbreak##1\prewordbreak}% +% \def\flushurl% +% {\savedurl\let\savedurl\empty}% +% \def\\% +% {\spliturl\#}% +% \let\~=\lettertilde\let~=\~% +% \let\/=\letterslash\let/=\/% +% \let\savedurl\empty +% \scratchcounter\zerocount % used for hyphenmethod +% \handletokens#1\with\scanurl\savedurl +% \egroup} +% +% \egroup + +% \chardef\urlhyphenmethod=0 + +% \def\scanurl#1% +% {\advance\scratchcounter\plusone +% \ifx#1\blankspace +% \flushurl\splitanyway\normalspace +% \else\ifx#1\ % +% \flushurl\splitanyway\normalspace +% \else\ifx#1\space +% \flushurl\splitanyway\normalspace +% \else\ifx#1\~% +% \flushurl\splitbefore\~% +% \else\ifx#1\#% +% \flushurl\splitbefore\#% +% \else\ifx#1\&% +% \flushurl\splitbefore\&% +% \else\ifx#1\%% +% \flushurl\splitbefore\%% +% \else\ifx#1\_% +% \flushurl\splitbefore\_% +% \else\if\noexpand#1\relax +% #1% +% \else\ifnum\catcode`#1=8 +% \flushurl\splitbefore\_% +% \else\ifnum\catcode`#1=6 +% \flushurl\splitbefore\#% +% \else\ifnum\catcode`#1=4 +% \flushurl\splitbefore\&% +% \else\expandafter\if\string#1\lettertilde +% \flushurl\splitbefore\~% +% \else\expandafter\if\string#1\letterpercent +% \flushurl\splitbefore\%% +% \else\expandafter\if\string#1\letterunderscore +% \flushurl\splitbefore\_% +% \else\expandafter\if\string#1\letterquestionmark +% \flushurl\splitafter\letterquestionmark +% \else\expandafter\if\string#1\letterat +% \flushurl\splitafter\letterat +% \else\expandafter\if\string#1\letterslash +% \edef\savedurl{\savedurl\letterslash}% +% \else\expandafter\if\string#1+% +% \flushurl\splitafter+% +% \else\expandafter\if\string#1:% +% \flushurl\splitafter:% +% \else\expandafter\if\string#1.% +% \flushurl\splitafter.% +% \else\expandafter\if\string#1(% +% \flushurl\splitbefore(% +% \else\expandafter\if\string#1)% +% \flushurl\splitafter)% +% \else +% \ifx\savedurl\empty\else +% \splitbefore\savedurl +% \let\savedurl\empty +% \fi +% \ifcase\urlhyphenmethod +% \string#1% +% \else +% \ifnum\scratchcounter>\plusthree % so, \http: will not break +% \edef\savedurl{\string#1}% +% \else +% \string#1% +% \fi +% \fi +% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} + +%D The following approach takes more resources but is cleaner (after all, we now +%D have huge \TEX's. It's is basically a \TEX\ version of the \MKIV\ variant. + +\newtoks\everyhyphenatedurl + +\appendtoks + \let\&\letterampersand + \let\#\letterhash + \let\~\lettertilde + \let\\\letterbackslash + \let\$\letterdollar + \let\^\letterhat + \let\_\letterunderscore + \let\{\letterleftbrace + \let\}\letterrightbrace + \let\|\letterbar + \let~=\lettertilde + \let|=\letterbar +\to \everyhyphenatedurl + +\def\hyphenatedurlseparator{} % \periodcentered + +\def\dohyphenatedurlnormal#1{\char#1\relax}% +\def\dohyphenatedurlafter #1{\char#1\discretionary{}{\hyphenatedurlseparator}{}}% +\def\dohyphenatedurlbefore#1{\discretionary{\hyphenatedurlseparator}{}{}\char#1\relax}% + +% 0=normal 1=before 2=after + +\def\sethyphenatedurlnormal#1{\expandafter\chardef\csname url @ #1\endcsname\zerocount} +\def\sethyphenatedurlbefore#1{\expandafter\chardef\csname url @ #1\endcsname\plusone } +\def\sethyphenatedurlafter #1{\expandafter\chardef\csname url @ #1\endcsname\plustwo } + +\sethyphenatedurlbefore ! +\sethyphenatedurlbefore " +\sethyphenatedurlbefore \letterhash +\sethyphenatedurlbefore \letterdollar +\sethyphenatedurlbefore \letterpercent +\sethyphenatedurlbefore \letterampersand +\sethyphenatedurlbefore ( +\sethyphenatedurlbefore * +\sethyphenatedurlbefore + +\sethyphenatedurlbefore , +\sethyphenatedurlbefore - +\sethyphenatedurlbefore . +\sethyphenatedurlbefore / +\sethyphenatedurlbefore : +\sethyphenatedurlbefore ; +\sethyphenatedurlbefore < +\sethyphenatedurlbefore = +\sethyphenatedurlbefore > +\sethyphenatedurlbefore ? +\sethyphenatedurlbefore @ +\sethyphenatedurlbefore [ +\sethyphenatedurlbefore \letterbackslash +\sethyphenatedurlbefore ^ +\sethyphenatedurlbefore _ +\sethyphenatedurlbefore ` +\sethyphenatedurlbefore \letteropenbrace +\sethyphenatedurlbefore \letterbar +\sethyphenatedurlbefore \lettertilde + +\sethyphenatedurlafter ' +\sethyphenatedurlafter ) +\sethyphenatedurlafter ] +\sethyphenatedurlafter \letterclosebrace + +\unexpanded \def\hyphenatedurl#1% + {\dontleavehmode + \begingroup + \the\everyhyphenatedurl + \edef\ascii{#1}% + \expanded{\handletokens{\detokenize\expandafter{\ascii}}}\with\dohyphenatedurl + \endgroup} + +\def\dohyphenatedurl#1% + {\ifcase\executeifdefined{url @ #1}\zerocount\relax + \expandafter\dohyphenatedurlnormal + \or + \expandafter\dohyphenatedurlbefore + \or + \expandafter\dohyphenatedurlafter + \fi{\number`#1}} + +% maybe ... to be finished +% +% \def\hyphenatedstring#1% +% {\bgroup +% \nohyphens +% \def\next##1{##1\doif{##1}{-}{\allowbreak}}% +% \handletokens#1\with\next +% \egroup} +% +% {\hsize1cm\hyphenatedstring{ABXXXXXXXXXXC-12345-12345}} + +\protect \endinput |