On Fri, Sep 13, 2024 at 06:56:22PM +0200, Rudolf Adamkovič wrote: > Hi, > > [I have been fighting the problem below for 3+ hours.] > > In my HTML export, I would like to have > > a navigation button that links the current node in TOC, > > the way > > texinfo_set_from_init_file('TOC_LINKS', 'true'); > > does. > > So far, I have the following: > > sub _my_experiment_button { > my ($self, $direction) = @_; > > # I SHOULD PROBABLY PASS IN SOME "COMMAND" ?! > my $href = $self->command_contents_href(1, 'contents'); > > return ("<a href=\"$href\">Contents</a>", 1); > } > > my $experiment_button = ['This', \&_my_experiment_button]; > my $section_buttons = [ ... <snip> ..., $experiment_button]; > > texinfo_set_from_init_file('SECTION_BUTTONS', $section_buttons); > texinfo_set_from_init_file('SECTION_FOOTER_BUTTONS', $section_buttons); > > The resulting [Contents] button > > links to the TOC file --- YAY! --- > > but the link > > is missing the '#toc-...' anchor. > > Any help would be *deeply* appreciated.
As you notice, you should pass a Texinfo tree command element. Conveniently, this is the next argument of the button formatting function. However, I tested it and it is not enough if the element passed to the button formatting function is a node element, in addition, the associated sectionning command has to be found, which requires knowing more about the Texinfo tree. The extra keys are documented in https://www.gnu.org/software/texinfo/manual/texi2any_internals/texi2any_internals.html#Texinfo_003a_003aParser-Extra-keys-specific-of-certain-_0040_002dcommands-or-containers Here is what worked for me: sub _my_experiment_button { my ($self, $direction, $element) = @_; if ($element->{'extra'}->{'associated_section'}) { $element = $element->{'extra'}->{'associated_section'}; } my $href = $self->command_contents_href($element, 'contents'); return ("<a href=\"$href\">Contents</a>", 1); } As a side note, what you do is a good idea. Maybe I'll add it to the book.pm example. -- Pat