[l2h] hyperref.sty vs. html.sty: "\textunderscore undefined"

Julius Smith l2h@w3k.org
Fri, 13 Sep 2002 16:19:11 -0700


At 08:54 PM 9/13/2002 +1000, Ross Moore wrote:
>In which order did you load the packages ?
>
>If you do
>  \usepackage{hyperref}
>  \usepackage{html}
>
>Then it should work OK, since there is coding in  html.sty  to
>check whether hyperref has been loaded already, and act accordingly.

Aha! My ordering was in fact the opposite, as recommended in the hyperref 
documentation.  I have now interchanged the order, and the behavior is 
indeed different:

* The anchor text in \htmladdnormallinkfoot is no longer linked in the PDF 
(which I miss).  The cursor changes to a hand-index-finger-pointer when the 
mouse rolls over the footnote number itself, as if it were a link, but it 
doesn't seem to go anywhere.  Perhaps it just links to the page containing 
the footnote, which is usually the current page.

* The footnote from \htmladdnormallinkfoot is now linked in the PDF (an 
improvement, in my opinion).

* (The anchor text within \htmladdnormallink is PDF-linked as before.)

* The \url{} quoting solution I posted earlier no longer works.  Now, all 
footnote URLs (on one particular page in the PDF file, anyway) point to the 
same bogus URL:

http://www-ccrma.stanford.edu/~jos/intro320/protect%20%08egingroup%20catcode%20`%20active%20def%20%20{%20}catcode%20`%active%20let%20%%let%20%%catcode%20`.pdf

which was apparently derived from the first footnote URL 
(http://www-ccrma.stanford.edu/~jos/intro320/Online_Reference.html).  All 
URLs look fine in the footnotes, and they look right in the PostScript file 
as well.  All links work correctly in the HTML.  Thus, only the PDF seems 
to be thrown off by something.

* URLs in the second argument of htmladdnormallinkfoot which are NOT 
enclosed by \url{} have the problem (in the PDF file) of empty boxes 
remaining quoted in the URL, e.g.,

http://www-ccrma.stanford.edu/~{}serafin/320/lab1/Introduction_matlab.html

As we all know, '\~' must be entered as '\~{}' to avoid being interpreted 
as calling for a tilde over the next character when processed by 
TeX.  (Note that this problem persists with either ordering of hyperref.sty 
and
html.sty.)  I presently have no workaround for this problem using the new 
ordering of the packages.

In summary, my only workaround at present (which seems complete, as far as 
I have tested) is to use the package order

  \usepackage{html}
  \usepackage{hyperref}

as requested in the hyperref installation notes, and to quote all URLs 
using \url{} rather than trying to quote '~' "in the open", which fails 
because '\~{}' translates to '~{}' in the PDF URLs.

> > 
> \htmladdnormallinkfoot{description}{\url{http://www.somewhere.org/~name/file_name.html}}
>
>You don't need the  \url ; indeed it is just plain wrong,
>so I'm surprised to here you say that it works.

That's too bad, because presently it is the only thing that does work in 
all contexts that I've seen so far.  I will continue my testing and report 
any problems I discover.

It appears the "right" solution is for '{}' to be stripped out of URLs in 
the PDF.  I don't think it can work to simply define \~ (in hyperref) as 
having an argument (which would gobble up the '{}'), because then regular 
tildes would not work (unless the definition was somehow confined to URL 
processing).

By the way, the newest version of hyperref, does seem to fix the '\_' 
problem in all contexts that I've tested, so that's some real progress --- 
thanks to Heiko Oberdiek for that.  Perhaps he will have an idea about how 
to get rid of {} in URLs?

Julius