
Al archivo fuente doc.tex
a continuación, estoy aplicando el comando
make4ht doc.tex "3"
para producir una versión html que tenga una página separada para cada sección.
Cuando el archivo resultante doc.html
se abre en un navegador, muestra la página de título doc.html
.
Pregunta:¿Cómo puedo modificar la make4ht
llamada, usar un archivo de configuración o modificar la fuente para obtener un enlace de navegación en esa doc.html
página de título que apunte a la tabla de contenido, al igual que los enlaces de navegación en todas las demás páginas?
\documentclass[oneside]{book}
\usepackage[parfill]{parskip}
\usepackage{blindtext}
\usepackage{hyperref}
\title{A Book}
\author{A. Non}
\begin{document}
\maketitle
\tableofcontents
\chapter{In the Beginning}
\section{Introduction}
\blindtext
\section{What's coming next}
\blindtext
\chapter{We Continue}
\blindtext
\chapter{In the End}
\blindtext
\end{document}
Respuesta1
La solución más sencilla es no utilizar \tableofcontents
TeX4ht en absoluto. En ese caso, se producirá un TOC:
\documentclass[oneside]{book}
\usepackage[parfill]{parskip}
\usepackage{blindtext}
\usepackage{hyperref}
\title{A Book}
\author{A. Non}
\begin{document}
\maketitle
\ifdefined\HCode\else
\tableofcontents
\fi
\chapter{In the Beginning}
\section{Introduction}
\blindtext
\section{What's coming next}
\blindtext
\chapter{We Continue}
\blindtext
\chapter{In the End}
\blindtext
\end{document}
En este caso utilicé el siguiente código para prevenir \tableofcontents
con TeX4ht:
\ifdefined\HCode\else
\tableofcontents
\fi
Resultará en esta página principal:
Pero estoy de acuerdo en que el comportamiento original no es bueno, por lo que aquí hay una versión fija de book.4ht
, que debería producir TOC incluso en presencia de \tableofcontents
. Tenga en cuenta que de todos modos se producirá una página separada con TOC:
El código de book.4ht
lo siguiente:
% book.4ht (2022-12-16-13:29), generated from tex4ht-4ht.tex
% Copyright 1997-2009 Eitan M. Gurari
% Copyright 2009-2022 TeX Users Group
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any
% later version. The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions
% of LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status "maintained".
%
% The Current Maintainer of this work
% is the TeX4ht Project <http://tug.org/tex4ht>.
%
% If you modify this program, changing the
% version identification would be appreciated.
\immediate\write-1{version 2022-12-16-13:29}
\Configure{UndefinedSec}{likepart}
\Configure{UndefinedSec}{likechapter}
\Configure{UndefinedSec}{likesection}
\Configure{UndefinedSec}{likesubsection}
\def\tableofcontents{%
\ifx\contentsname\empty \else
%
\chapter*{\contentsname}%
%
%
\fi
\:tableofcontents}
\let\:tempb\chapter
\Def:Section\chapter{\thechapter}{#1}
\let\:chapter\chapter
\let\chapter\:tempb
\def\@makechapterhead#1{}
\let\no@chapter\@chapter
\def\@chapter[#1]#2{%
\gHAdvance\:mpNum by 1
\HAssign\minipageNum=\:mpNum \relax
%
{\SkipRefstepAnchor \let\addcontentsline\:gobbleIII\no@chapter[#1]{}}%
\HtmlEnv \Toc:Title{#1}\:chapter{#2}}
\Def:Section\likechapter{}{#1}
\let\:likechapter\likechapter
\let\likechapter\:UnDef
\let\no@schapter\@schapter
\def\@schapter#1{%
\gdef\sch:ttl{#1}%
%
{\let\addcontentsline\:gobbleIII\no@schapter{}}%
\HtmlEnv \:likechapter{#1}}
\let\no@appendix\appendix
\Def:Section\appendix{\thechapter}{#1}
\let\:appendix\appendix
\def\appendix{%
\def\@chapter[##1]##2{%
\gHAdvance\:mpNum by 1
\HAssign\minipageNum=\:mpNum \relax
%
{\def\addcontentsline####1####2####3{}\no@chapter[##1]{}}%
\HtmlEnv \Toc:Title{##1}\:appendix{##2}}%
\no@appendix}
\edef\:TOC{%
\noexpand\ifx [\noexpand\:temp
\noexpand\expandafter\noexpand\:TableOfContents
\noexpand\else
\noexpand\Auto:ent{\ifnum \c@tocdepth >-2 part,\fi
\expandafter\ifx \csname @chapter\endcsname\relax
\ifnum \c@tocdepth >\z@ section,\fi
\else
\ifnum \c@tocdepth >\m@ne chapter,appendix,\fi
\ifnum \c@tocdepth>0 section,\fi
\fi
\ifnum \c@tocdepth>1 subsection,\fi
\ifnum \c@tocdepth>2 subsubsection,\fi
\ifnum \c@tocdepth>3 paragraph,\fi
\ifnum \c@tocdepth>4 subparagraph,\fi
UnDFexyz}%
\noexpand\fi}
\def\:tableofcontents{\futurelet\:temp\:TOC}
\def\Auto:ent#1{%
\edef\auto:toc{\noexpand\:TableOfContents[\ifx \auto:toc\:UnDef
#1\else \auto:toc \fi]} \auto:toc
\global\let\auto:toc\:UnDef }
\def\:tocs{\noexpand\:tableofcontents}
\pend:defIII\addcontentsline{%
\def\:temp{##1}\def\:tempa{toc}\ifx \:temp\:tempa
\gHAdvance\TitleCount 1 \fi }
\def\@dottedtocline#1#2#3#4#5{\hbox{\def\numberline##1{\e:listof
##1\f:listof}\c:listof#4\d:listof}\ignorespaces}
\def\@starttoc#1{%
\begingroup
\makeatletter \Configure{cite}{}{}{}{}%
\def\:temp{#1}\def\:tempa{toc}%
\a:listof\par
\@input{\jobname.\ifx \:temp\:tempa 4ct\else #1\fi}%
\b:listof
\if@filesw
\expandafter\expandafter\csname
newwrite\endcsname\csname tf@#1\endcsname
\immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
\fi
\global\@nobreakfalse
\endgroup}
\NewConfigure{tableofcontents*}[1]{%
\def\:tempa{#1}\ifx\empty\:tempa
\ifx \au:StartSec\:UnDef \else \gdef\:StartSec{\au:StartSec}\fi
\else
\edef\auto:toc{#1}%
\ifx \au:StartSec\:UnDef
\let\au:StartSec\:StartSec
\def\:StartSec{\:tableofcontents
%\global\let\auto:toc|=\:UnDef \:StartSec}%
\global\let\auto:toc\:UnDef \global\let\:StartSec\au:StartSec\:StartSec}%
%\pend:def\tableofcontents{\gdef\:StartSec{\au:StartSec}}%
\append:def\tableofcontents{\gdef\:StartSec{\au:StartSec}}%
\fi \fi
}
\ifx \@openbib@code\:UnDef \else
\pend:def\@openbib@code{\labelsep\z@}
\fi
\ifx \part\:UnDef\else
\def\@part[#1]#2{%
\ifnum \c@secnumdepth >-2\relax
\SkipRefstepAnchor \refstepcounter{part}%
\addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
\else
\addcontentsline{toc}{part}{#1}%
\fi
\csname @endpart\endcsname}
\let\:tempb\part
\Def:Section\part{\thepart}{#1}
\let\:part\part
\let\part\:tempb
\let\no@part\@part
\def\@part[#1]#2{%
{\let\addcontentsline\:gobbleIII\no@part[#1]{}}%
\HtmlEnv \Toc:Title{#1}\:part{#2}}
\Def:Section\likepart{}{#1}
\let\:likepart\likepart
\let\likepart\:UnDef
\let\no@spart\@spart
\def\@spart#1{%
{\let\addcontentsline\:gobbleIII\no@spart{}}%
\HtmlEnv \:likepart{#1}}
\fi
\ifx \section\:UnDef\else
\let\no@section\section
\Def:Section\section{\ifnum \c:secnumdepth>\c@secnumdepth \else
\thesection \fi}{#1}
\let\no:section\section
\def\section{\rdef:sec{section}}
\Def:Section\likesection{}{#1}
\let\:likesection\likesection
\let\likesection\:UnDef
\fi
\let\no@subsection\subsection
\Def:Section\subsection{\ifnum \c:secnumdepth>\c@secnumdepth \else
\thesubsection \fi}{#1}
\let\no:subsection\subsection
\def\subsection{\rdef:sec{subsection}}
\Def:Section\likesubsection{}{#1}
\let\:likesubsection\likesubsection
\let\likesubsection\:UnDef
\let\no@subsubsection\subsubsection
\Def:Section\subsubsection{\ifnum \c:secnumdepth>\c@secnumdepth \else
\thesubsubsection \fi}{#1}
\let\no:subsubsection\subsubsection
\def\subsubsection{\rdef:sec{subsubsection}}
\Def:Section\likesubsubsection{}{#1}
\let\:likesubsubsection\likesubsubsection
\let\likesubsubsection\:UnDef
\let\no@paragraph\paragraph
\Def:Section\paragraph{\ifnum \c:secnumdepth>\c@secnumdepth \else
\theparagraph \fi}{#1}
\let\no:paragraph\paragraph
\def\paragraph{\rdef:sec{paragraph}}
\Def:Section\likeparagraph{}{#1}
\let\:likeparagraph\likeparagraph
\let\likeparagraph\:UnDef
\let\no@subparagraph\subparagraph
\Def:Section\subparagraph{\ifnum \c:secnumdepth>\c@secnumdepth \else
\thesubparagraph \fi}{#1}
\let\no:subparagraph\subparagraph
\def\subparagraph{\rdef:sec{subparagraph}}
\Def:Section\likesubparagraph{}{#1}
\let\:likesubparagraph\likesubparagraph
\let\likesubparagraph\:UnDef
\let\:tempc\listoffigures
\pend:def\:tempc{\begingroup \a:listoffigures
\def\@starttoc{\:tableofcontents[lof]\:gobble}}
\append:def\:tempc{\b:listoffigures \endgroup}
\HLet\listoffigures\:tempc
\let\:tempc\listoftables
\pend:def\:tempc{\begingroup \a:listoftables
\def\@starttoc{\:tableofcontents[lot]\:gobble}}
\append:def\:tempc{\b:listoftables \endgroup}
\HLet\listoftables\:tempc
\NewConfigure{listoffigures}{2}
\NewConfigure{listoftables}{2}
\append:def\quote{\par\@totalleftmargin\z@}
\NewConfigure{caption}[4]{\c:def\cptA:{#1}\c:def\cptB:{#2}%
\c:def\cptC:{#3}\c:def\cptD:{#4}}
\long\def\@makecaption#1#2{%
{\cptA: \cap:ref{#1}%
\if :#1:\else\cptB:\fi}{\cptC:{#2}\cptD:}}
\pend:def\caption{\SkipRefstepAnchor}
\long\def\c:theindex:#1#2#3#4#5#6#7#8#9{%
\def\theindex{%
\def\idx:item{\SaveEverypar\ht:everypar{}#1}%
\def\endtheindex{\idx:item#2\RecallEverypar}%
\def\item{\idx:item\def\idx:item{#4}\let\index\@gobble #3}%
\def\subitem{\idx:item\def\idx:item{#6}\let\index\@gobble #5}%
\def\subsubitem{\idx:item\def\idx:item{#8}\let\index\@gobble #7}}%
\def\indexspace{\idx:item#9\let\idx:item\empty}}
\def\warn:idx#1{%
\expandafter\ifx \csname #1warn:idx\endcsname\relax
\expandafter\global
\expandafter\let \csname #1warn:idx\endcsname\def
\writesixteen
{---------------------------------------------------------}%
\:warning{If not done so, the index is to be processed by
^^J\space\space tex '\string\def\string\filename
{{#1}{idx}{4dx}{ind}} \noexpand\input\space idxmake.4ht'
^^J\space\space makeindex -o #1.ind #1.4dx
^^Jinstead of
^^J\space\space makeindex -o #1.ind #1.idx
^^JOn some platforms, the quotation marks ' should be
^^J replaced by double quotation marks " or eliminated.
^^J---------------------------------------------------------
}%
{\Configure{Needs}{File: #1.4idx}\Needs{}}%
\fi}
\ifOption{info}{\Log:Note{
A script of the form
^^Jtex '\def\string\filename{{\%\%1}{idx}{4dx}{ind}}
\string\input\space idxmake.4ht'
^^Jmakeindex -o \%\%1.ind \%\%1.4dx
^^Jin the env file, automatically calls to the revised makeindex
^^Jcommand. An extra compilation of the source LaTeX file is required,
^^Jto get the index correctly into the output.}}{}
\def\ind:defs{\let\LNKidx\empty
\def\LNK##1##2##3##4{\ifx\NewConfigure\:UnDef\else
\def\LNK:number{##4}%
\a:LNK[##1]{##2}{}\gHAdvance\:LNKno1
\def\:THIrd{##3}\ifx\:THIrd\empty
\LNKidx{\ifx\c:LNK\empty\:LNKno\else \c:LNK\fi}\else
\LNKidx{##3}\fi
\global\let\LNKidx\empty
\b:LNK
\fi}%
\def\:LNKno{0}}
\NewConfigure{LNK}{3}
\Configure{LNK}{\Link}{\EndLink}{}
\def\yhbLNK#1{\expandafter\let\expandafter\LNKidx\csname
#1\endcsname\LNK}
\Configure{@begin}{theindex}{\ind:defs}
\let\o:maketitle:\maketitle
\def\maketitle{\bgroup
\gHAdvance\:mpNum by 1
\HAssign\minipageNum=\:mpNum \relax
%
\ifx \EndPicture\:UnDef
\def\sec:typ{title}%
\Configure{HtmlPar}{}{}{}{}%
\Configure{newpage}{}%
\ConfigureEnv{center}{\empty}{}{\empty}{\empty}
\let\a:tabular:sv\a:tabular \let\b:tabular:sv\b:tabular
\let\c:tabular:sv\c:tabular \let\d:tabular:sv\d:tabular
\let\e:tabular:sv\e:tabular \let\f:tabular:sv\f:tabular
\let\before:begintabular:sv\before:begintabular
%
\Configure{HBorder}{}{}{}{}{}{}{}{}{}{}%
\Configure{tabular}{}{}{}{\e:mktl}
{\bgroup \let\a:tabular\a:tabular:sv \let\b:tabular\b:tabular:sv
\let\c:tabular\c:tabular:sv \let\d:tabular\d:tabular:sv
\let\e:tabular\e:tabular:sv \let\f:tabular\f:tabular:sv
\let\before:begintabular\before:begintabular:sv
}{\egroup}
\ConfigureEnv{tabular}{\empty}{}{}{}%
%
\pend:def\@title{\a:ttl}\append:def\@title{\b:ttl}%
\pend:def\@date{\a:date}\append:def\@date{\b:date}%
\pend:def\@author{\a:author}\append:def\@author{\b:author}%
\def\and{\a:and}
%
\fi
\pic:gobble\a:mktl \o:maketitle: \pic:gobble\b:mktl
\egroup \let\maketitle\empty}
\NewConfigure{maketitle}[4]{\c:def\a:mktl{#1}\c:def\b:mktl{#2}%
\c:def\a:ttl{#3}\c:def\b:ttl{#4}}
\NewConfigure{thanks author date and}[8]{%
\c:def\a:thanks{#1}\c:def\b:thanks{#2}\c:def\a:author{#3}\c:def\b:author{#4}%
\c:def\a:date{#5}\c:def\b:date{#6}\c:def\a:and{#7}\c:def\e:mktl{#8}}
\long\def\:tempc{\@roman \c@enumiii}
\ifx \theenumiii\:tempc
\def\:tempc{\a:enumiii\@roman\c@enumiii\b:enumiii}
\HLet\theenumiii\:tempc
\fi
\NewConfigure{enumiii}{2}
\append:def\quotation{\a:quotation\par\@totalleftmargin\z@}
\NewConfigure{quotation}{1}
\NewConfigure{listof}{6}
\ConfigureToc{likeparagraph} {}{\empty}{}{\newline}
\ConfigureToc{likepart} {}{\empty}{}{\newline}
\ConfigureToc{likesection} {}{\empty}{}{\newline}
\ConfigureToc{likesubparagraph} {}{\empty}{}{\newline}
\ConfigureToc{likesubsection} {}{\empty}{}{\newline}
\ConfigureToc{likesubsubsection} {}{\empty}{}{\newline}
\ConfigureToc{paragraph} {\empty}{\ }{}{\newline}
\ConfigureToc{part} {\empty}{\ }{}{\newline}
\ConfigureToc{section} {\empty}{\ }{}{\newline}
\ConfigureToc{subparagraph} {\empty}{\ }{}{\newline}
\ConfigureToc{subsection} {\empty}{\ }{}{\newline}
\ConfigureToc{subsubsection} {\empty}{\ }{}{\newline}
\ConfigureToc{appendix} {\empty}{\ }{}{\newline}
\ConfigureToc{chapter} {\empty}{\ }{}{\newline}
\ConfigureToc{likechapter} {}{\empty}{}{\newline}
\Hinput{book}
\endinput