[tex4ht] tex4ebook and imakeidx - no hyperlinked index

"Jürgen Hubert" jhubert at gmx.de
Sun Sep 16 05:35:53 CEST 2018


(Forgot to CC it to the list)

Thanks for the advice.

However, I am using MiKTeX on a Windows 10 machine (using cygwin for the occasional Linux commands), and the installation instructions don't seem to work using either the Windows command terminal or cygwin (neither finds a "TEXMFHOME" directory, and they cannot use the "git" command either). Attempting some kind of workaround has caused me to accidentally break my MiKTeX installation, which took me all of four days to fix again.

So... before I break it _again_, I thought I'd ask if anyone here as any experience with installing bundles like this to MiKTeX. ;)

Best regards,

- Jürgen

> Gesendet: Mittwoch, 12. September 2018 um 21:23 Uhr
> Von: "Michal Hoftich" <michal.h21 at gmail.com>
> An: "Jürgen Hubert" <jhubert at gmx.de>
> Cc: tex4ht <tex4ht at tug.org>
> Betreff: Re: [tex4ht] tex4ebook and imakeidx - no hyperlinked index
>
> Hello Jurgen,
> 
> 
> > I am new to this list and can at best be described as "casual LaTeX user" - I use it every year or two for some minor writing project, and then put it aside again (promptly forgetting many of the technical details in the process). For my current writing project, I need to create an epub version of the ebook I am writing. tex4ebook has generally served my needs very well, but now I also want to add an index - or rather, at least two. Some quick research indicated that the imakeidx package was the best tool for this, but now I have hit a snag:
> >
> > When I compile the LaTeX files with TeXworks (using the pdfLaTeX + MakeIndex + BibTeX option) I get proper hyperlinked indices like I want. However, if I compile them afterwards with tex4ebook (using cygwin) I do get an epub file... but the index is _not_ hyperlinked, unlike the other components of the epub file (such as the table of contents, footnotes, or other crossreferences using hyperref).
> >
> 
> tex4ht has a build in support for makeindex, but it is not really user
> friendly. I've create a support for imakeidx package with Xindy as an
> index processor. You can find it in the Helpers4ht bundle:
> 
> https://github.com/michal-h21/helpers4ht
> 
> It is not on CTAN, so you need to install it manually, I hope the
> instructions in the Install section will work for you. Detailed
> description of the usage can be found here:
> 
> https://tex.stackexchange.com/a/430819/2891
> 
> I've tried to adapt this process to your test file and here is my
> solution. I've modified your test file slightly:
> 
> -------------
> \documentclass[oneside]{book}
> 
> \ifdefined\HCode
>   \usepackage[xindy,noautomatic]{imakeidx}
> \else
>   \usepackage[]{imakeidx}
> \fi
> \usepackage{tex4ebook}
> \usepackage{xcolor}
> \usepackage[hyperindex=true]{hyperref}
> 
> \makeindex[intoc=true,name=index1,title=Index]
> \makeindex[intoc=true,name=index2,title=NochEinIndex]
> 
> \begin{document}
> 
> \tableofcontents
> 
> \chapter{Test}
> 
> This is a test.\index[index2]{Test 1}
> 
> This is another test.\index[index1]{Test 2}
> 
> \printindex[index1]
> \printindex[index2]
> 
> \end{document}
> ------------------
> 
> The change here is that no automatic index generation is done with tex4ht.
> 
> The indexing support must be enabled in the configuration file, like
> myconfig.cfg:
> 
> -----------
> \usepackage{indexing4ht}
> \Preamble{xhtml}
> \begin{document}
> \EndPreamble
> -------------
> 
> The Xindy then must be called manually. To ease this task, it is
> possible to use a build file. Like this, mybuild.mk4:
> 
> -----
> Make:add("xindy", function(par)
>   par.idxfile = par.idxfile or par.input .. ".idx"
>   local modules = par.modules or {par.input}
>   local t = {}
>   for k,v in ipairs(modules) do
>     t[#t+1] = "-M ".. v
>   end
>   par.moduleopt = table.concat(t, " ")
>   local xindy_call = "xindy -L ${language} -C ${encoding} ${moduleopt}
> ${idxfile}" % par
>   print(xindy_call)
>   return os.execute(xindy_call)
> end, { language = "english", encoding = "utf8"})
> 
> 
> if mode=="index" then
>   Make:htlatex {}
>   Make:xindy { idxfile="index1.idx"}
>   Make:xindy { idxfile="index2.idx"}
>   Make:htlatex {}
>   Make:htlatex {}
> elseif mode=="draft" then
>   Make:htlatex {}
> else
>   Make:htlatex {}
>   Make:htlatex {}
>   Make:htlatex {}
> end
> ------
> 
> 
> The index generation can be then requested using:
> 
>      tex4ebook -m index -c myconfig.cfg -e mybuild.mk4 Test.tex
> 
> This should generate the index. As epub file doesn't contain pages,
> section numbers are used as pointers instead.
> 
> Best regards,
> Michal
>



More information about the tex4ht mailing list