make4ht: Kann es eine gerahmte HTML-Ausgabe generieren?

Sep 17 2020

Ich verwende make4ht, um eine HTML-Ausgabe für einen Artikel zu generieren, den ich schreibe und online veröffentliche. So weit, ist es gut. Ich würde gerne wissen, ob es möglich wäre, eine gerahmte HTML-Ausgabe zu generieren, sodass Sie immer das Menü im linken Bereich, den Inhalt im rechten Bereich usw. haben.

Ich dachte, ich könnte eine gerahmte index.html-Seite einrichten, die den Haupt-HTML-Code abruft make4ht(der im Grunde genommen das Menü ist), und dann eine erste Inhaltsseite im rechten Bereich haben. Kann die Hauptseite, die aus make4ht(nachträglich) generiert wurde, so ändern , dass "_target"sie auf allen Links auf den anderen Frame eingestellt ist (wenn ich mich richtig erinnere, wie man das in HTML macht) ... aber es wäre viel schöner, das zu make4httun es automatisch für mich.

Antworten

3 michal.h21 Sep 18 2020 at 01:03

Sie können die framesOption ausprobieren, wenn Sie wirklich Frames verwenden möchten. Wie in diesem Beispiel:

\documentclass{book}
\usepackage{kantlipsum}
\begin{document}
\chapter{Hello}
\kant[1-3]
\chapter{World}
\section{Section}
\kant[4-5]
\section{Another Section}
\kant[6-7]
\end{document}

Kompilieren Sie die Datei mit

make4ht filename.tex "3,frames"

Und es erzeugt die folgende HTML-Seite:

Eine andere Möglichkeit ist die Verwendung einer Methode, die ich für die Tex4ht-Dokumentation in Arbeit verwende . Konfigurationen, die ich verwendet habe, finden Sie im Github-Repo .

Im Gegensatz zu Frames wird auf jeder Seite ein Inhaltsverzeichnis eingefügt, das jedoch nur Links zu Schnittebenen der obersten Ebene enthält. Es werden nur die aktuellen Kapitelabschnitte angezeigt.

Insbesondere der HTML-Code, der das Inhaltsverzeichnis einfügt, wird in config.cfg konfiguriert :

% Mini TOC
\Configure{crosslinks+}{%
  \bgroup
  % container for the page toc
  \Configure{tableofcontents}{\IgnorePar\EndP\HCode{<nav class="TOC">}\IgnorePar}
  {\HCode{\Hnewline}}{\IgnorePar\HCode{</nav>\Hnewline}\ShowPar}{}{}%
  \TableOfContents[chapter,section,subsection]% Print table of contents before crosslinks
  \egroup
  \ifvmode\IgnorePar\fi\EndP%
  \HCode{<main class="main-content">\Hnewline<nav class="crosslinks-top">} }
  {\HCode{</nav>\Hnewline}}
{\ifvmode\IgnorePar\fi\EndP%
  \HCode{<nav class="crosslinks-bottom">}}{\HCode{</nav>}}{}{}

Schnittbefehle, die im Inhaltsverzeichnis enthalten sind, werden mit dem \TableOfContentsBefehl ausgewählt. Das Erscheinungsbild des Inhaltsverzeichnisses wird mit style.css gestaltet . Die letzte Komponente der TOC-Behandlung befindet sich in build.mk4 . Der collapsetocFilter bereinigt das Inhaltsverzeichnis und zeigt nur aktuelle Abschnitte an.

So sieht es aus: