[luatex] Kerning: when does it not work?

Paul Isambert zappathustra at free.fr
Fri May 6 11:50:57 CEST 2011


Le 06/05/2011 08:45, Heilmann, Till A. a écrit :
> On 05/05/2011 10:38 AM, Ulrike Fischer wrote:
>
>> I think you will get away with most problems with
>> \def\url{%
>>     \begingroup
>>     \catcode`\%=12
>>     \URL
>>     }
>> \def\URL#1{%
>>     \setbox\urlbox=\hbox{%
>>     \directlua{%
>>     tex.sprint(-2,"\luatexluaescapestring{\unexpanded{#1}}")}}%
>> .....
>> You will still not be able to use a % in a footnote-url!
>
> With Ulrike's modifications, Paul's code works just fine for me (see 
> below). No URLs in footnotes containing a % character so far in my 
> document... Pheww!

If this should happen, you could replace the % by \% and then 
postprocess the url (once typeset, before adding the penalties) to 
remove the backslash. Not an ideal solution, given that you have to 
modify the original urls (not to mention what happens with a real 
sequences backslash + percent), but it would work.

Also, adding breakpoints one by one with \urladdbreakpoint is a bit 
tedious, so here's a redefinition of it so you can say 
\urladdbreakpoint{<list of breakpoints>}{<position>} instead:

\def\endofbreakpoints{\endofbreakpoints}
\def\urladdbreakpoint#1#2{%
   \URLaddbreakpoint{#2}#1\endofbreakpoints
   }
\def\gobble#1{}%
\def\URLaddbreakpoint#1#2{%
   \ifx#2\endofbreakpoints
     \expandafter\gobble
   \else
     \directlua{url.breakpoints[\the\numexpr`#2] = "#1"}%
     \expandafter\URLaddbreakpoint
   \fi
   {#1}%
   }

So now the list of calls to \urladdbreakpoint at the end of your file 
can be replaced with (spaces are optional):

\urladdbreakpoint{ . @ \\ / ; > ] ) , ' }{after}
\urladdbreakpoint{ ! _ ? + = }{both}

Best,
Paul



More information about the luatex mailing list