anchor.diff:  HELP_VIEWER_INFO.jupyter_online :=
       rec(
            type := "url",
  -         show := function(url)
  +         show := function( data )
  +             # data[1] is the text preceding the hyperlink (name of the help book),
  +             # data[2] is the text to be linked, and data[3] is the URL
                local p,r;
   
  -             p := url;
  +             p := data[3];
   
                for r in GAPInfo.RootPaths do
  -                 p := ReplacedString(url, r, "https://cloud.gap-system.org/");
  +                 p := ReplacedString(data[3], r, "https://cloud.gap-system.org/");
                od;
                return rec( json := true
                          , source := "gap"
  -                       , data := rec( ("text/html") := Concatenation("<a target=\"_blank\" href=\"", p, "\">click here</a>") ) );
  +                       , data := rec( ("text/html") := Concatenation( data[1], ": <a target=\"_blank\" href=\"", p, "\">", data[2], "</a>") ) );
            end
           );
   
   HELP_VIEWER_INFO.jupyter_local :=
       rec(
            type := "url",
  -         show := function(url)
  +         show := function( data )
  +             # data[1] is the text preceding the hyperlink (name of the help book),
  +             # data[2] is the text to be linked, and data[3] is the URL
                local p,r;
   
  -             p := url;
  +             p := data[3];
  +
                for r in GAPInfo.RootPaths do
  -                 p := ReplacedString(url, r, "/");
  +                 p := ReplacedString(data[3], r, "/");
                od;
  -             Print("<a target=\"_blank\" href=\"/files", p, "\">click here</a><br/>\n");
  +             return rec( json := true
  +                       , source := "gap"
  +                       , data := rec( ("text/html") := Concatenation( data[1], ": <a target=\"_blank\" href=\"", p, "\">", data[2], "</a>") ) );
            end
           );
   
  -DeclareGlobalFunction("HELP_PRINT_URL");
  +DeclareGlobalFunction("GET_HELP_URL");
   
   #############################################################################
   ##
  -#F  HELP_PRINT_URL( <match> ) . . . . . .  print the url for the help section
  +#F  GET_HELP_URL( <match> ) . . . . . .  print the url for the help section
   ##
   ##  Based on HELP_PRINT_MATCH
   ##
   ##  <match> is [book, entrynr]
   ##
  -InstallGlobalFunction(HELP_PRINT_URL, function(match)
  +InstallGlobalFunction(GET_HELP_URL, function(match)
   local book, entrynr, viewer, hv, pos, type, data;
     book := HELP_BOOK_INFO(match[1]);
     entrynr := match[2];
  
positive.code:     cnt := 0;
      # show exact matches first
      match := Concatenation(exact, match);
      for i  in match  do
        cnt := cnt+1;
        topic := Concatenation(i[1].bookname,": ",i[1].entries[i[2]][1]);
        Add(HELP_LAST.TOPICS, i);
        Add(lines,Concatenation("[",String(cnt),"] ",topic));
  
        str := Concatenation( i[1].bookname,": ",
                                                 StripEscapeSequences(i[1].entries[i[2]][1]), "\n");
        # to avoid line breaking when str contains escape sequences:
        n := 0;
        while n < Length(str) do
          Print(str{[n+1..Minimum(Length(str),
                                        n + QuoInt(SizeScreen()[1] ,2))]}, "\c");
          n := n + QuoInt(SizeScreen()[1] ,2);
        od;
        HELP_PRINT_URL(i);
      od;
      #Pager(rec(lines := lines, formatted := true, start := 2 ));
      return true;
    fi;
  end);
  
  
negative.code:     data := HELP_BOOK_HANDLER.(book.handler).HelpData(book, entrynr, type);
      if data <> fail then
        # show the data
        return HELP_VIEWER_INFO.(viewer).show(
          [ book.bookname, StripEscapeSequences(book.entries[entrynr][1]), data]);
            # name of the help book, the text to be linked, and the URL
      else
        return rec( json := true
                    , source := "gap"
                    , data := rec( ("text/html") := Concatenation(
                        book.bookname, ": ", StripEscapeSequences(book.entries[entrynr][1]),
                       " - no html help available. Please check other formats!" ) ) );
      fi;
      HELP_LAST.VIEWER := viewer;
    od;
  