Gibt es HTML-spezifische LaTeX-Befehle, mit denen ein elektronisches Dokument mit eingebetteten Lauftextfeldern erstellt werden könnte?

Gibt es HTML-spezifische LaTeX-Befehle, mit denen ein elektronisches Dokument mit eingebetteten Lauftextfeldern erstellt werden könnte?

Ich dachte an ein experimentelles E-Book-Layout, das eingebetteteScrollende Textfelderfür das, was im Wesentlichen als wirklich lange Rand- oder Fußnoten in Bezug auf einen Haupttext fungieren würde.

Nehmen wir beispielsweise eine Seite an, die in zwei Spalten unterteilt ist, mit dem Haupttext auf der linken Seite und zwei gleich hohen Textfeldern auf der rechten Seite (jedes mit einer Menge Text, den der Leser nach Belieben scrollen und lesen kann).

Wäre es möglich, mit LaTeX ein elektronisches Dokument zu erstellen, das auf diese Weise funktioniert? Vielleicht etwas, in das man exportieren könnte HTML(vielleicht mit einigen HTML-spezifischen Befehlen in latex2html?), und das dann in ein funktionsfähiges E-Book übersetzt werden könnte? Gibt es eine Möglichkeit, dies ohne zu tun HTML?

Mir ist bewusst, dass das eine banale Frage ist, aber ich habe LaTeX noch nie in Verbindung mit verwendet HTMLund weiß auch nicht, ob es jemals und unter welchen Umständen sinnvoll wäre, HTMLdamit ein E-Book zu schreiben.

Wie auch immer, irgendwelche Ideen?

Antwort1

Aktualisieren Flexiblere Version

OP möchte eine Lösung mit unterschiedlich vielen Scrollboxen. Meine Idee ist, einen Befehl bereitzustellen, der eine neue LaTeXBox deklariert, in die dann Material eingefügt werden kann. Das Dokument könnte also folgendermaßen aussehen:

\documentclass{article}
\usepackage{lipsum}
\usepackage{infoboxes}
\newinfobox{dialogues}
\newinfobox{second}
\begin{document}

    Some text, blah blah\footnote{hello} bla bla\footnote{\lipsum[2]}

    \lipsum[2-8]

    \addtoinfobox{dialogues}{Hello \emph{world}}
    \addtoinfobox{dialogues}{Another line}
    \addtoinfobox{second}{\lipsum[3-9]}
    Another text\footnote{world}. %And now some\marginpar{Margin note. \lipsum[3-4]}

\end{document} 

Es werden zwei Scroll-(Info-)Felder verwendet dialoguesund second. Jedes Material kann mit \addtoinfoboxeinem Makro hinzugefügt werden. Ich denke, es ist eine gute Idee, einige Makros zu erstellen, die diese Schnittstelle verbergen und \addtoinfoboxnur aufgerufen werden, wenn tex4htsie ausgeführt wird. Andernfalls werden die Informationen direkt in den Text oder in die Randnotizen gedruckt.

Paketinfoboxes.sty

\ProvidesPackage{infoboxes}

\RequirePackage{etoolbox}
\newcounter{infoboxescnt}
\newcounter{tempinfbx}
\newcommand\newinfobox[1]{%
    \stepcounter{infoboxescnt}
    \expandafter\newbox\csname #1infobx\endcsname
    \listcsgadd{@usedinfboxes}{#1}
}

\newcommand\addtoinfobox[2]{%
    \global\expandafter\setbox\csname #1infobx\endcsname=\vtop\bgroup
    \expandafter\ifvoid\csname #1infobx\endcsname%
    \else\expandafter\unvbox\csname #1infobx\endcsname\fi#2\egroup
}

\newcommand\a@prntfbx[1]{}
\newcommand\b@prntfbx[1]{}
\newcommand\printinfobox[1]{\a@prntfbx{#1}\expandafter\copy\csname #1infobx\endcsname\b@prntfbx{#1}}

\newcommand\printinfoboxes{%
    \setcounter{tempinfbx}{0}
    \renewcommand\do[1]{%
        \typeout{Print info box: ##1}
        \stepcounter{tempinfbx}
        \printinfobox{##1}
    }
  \dolistcsloop{@usedinfboxes}
    %\forcsvlist{\if\relax\detokenize{##1}\relax Prazdny\else##1\fi}{\@usedinfboxes}
}

\endinput

und Paket für tex4ht,infoboxes.4ht

\def\LeavePar{\ifvmode\IgnorePar\fi \EndP}

\NewConfigure{printinfobox}{2}
\renewcommand\a@prntfbx[1]{\def\:bxname{#1}\a:printinfobox}
\renewcommand\b@prntfbx[1]{\b:printinfobox}

\Configure{printinfobox}{\IgnorePar\HCode{
<div class="infobox \:bxname">\Hnewline}\ShowPar}{\EndP\HCode{</div>}}

\let\tmp:prtfbxs\printinfoboxes

\renewcommand\printinfoboxes{}

\NewConfigure{printinfoboxes}{2}

\newcommand\mathexpression[1]{
    \strip@pt\dimexpr #1\relax
}

\newcommand\my:prntnfbxs{%
 \setcounter{tempinfbx}{0} 
 \renewcommand\do[1]{%
   \printinfobox{##1}\relax
   \Css{%
     .##1{margin-left:66\%;
     height:\mathexpression{1pt / \value{infoboxescnt} * 100}\%;
     top:\mathexpression{\value{tempinfbx}pt * 1 / \value{infoboxescnt} * 100}\%;
     }
   }
   \stepcounter{tempinfbx}
 }
 \dolistcsloop{@usedinfboxes} 
}
\Configure{@BODY}
  {\LeavePar
   \HCode{<article>\Hnewline}\par\ShowPar%
  }
\Configure{@/BODY}
  {\LeavePar
  \HCode{</article>\Hnewline}
  \par\ShowPar
\my:prntnfbxs
  }

\Css{article,.infobox{margin:0;padding:0;}}  
\Css{
article,.footnotes{width:66\%;}
}
\Css{
.infobox{
    width:33\%;
    float:right;
    margin-left:66\%;
    position:fixed;
    overflow:scroll;
}
}

Interessanter Teil ist

\renewcommand\do[1]{%
   \printinfobox{##1}\relax
   \Css{%
     .##1{margin-left:66\%;
     height:\mathexpression{1pt / \value{infoboxescnt} * 100}\%;
     top:\mathexpression{\value{tempinfbx}pt * 1 / \value{infoboxescnt} * 100}\%;
     }
   }
   \stepcounter{tempinfbx}
 }

cssDadurch werden alle Infoboxen in einer Schleife gedruckt und für jede eine Deklaration mit Positions- und Höheninformationen hinzugefügt, die aus der Anzahl der Infoboxen berechnet werden.

Kompilieren mit

htlatex sample "xhtml, fn-in"

du kannst das ... sehenErgebnis

Ursprüngliche Antwort

Ich halte das nicht für eine gute Idee. E-Books werden normalerweise auf Geräten mit kleinem Bildschirm gelesen, wo der gesamte Bereich mit Hauptinhalt gefüllt ist. Fußnoten oder Randnotizen werden normalerweise entweder in einer eigenständigen Datei mit einem Link vom Text platziert, der auf sie verweist, oder direkt nach dem Absatz, in dem sie erschienen sind, wie in diesemepub3-Beispiel. Es besteht auch das Problem, dass einige E-Book-Geräte keine Touch-Oberfläche haben und auf ein solches Feld nicht zugegriffen werden kann.

Aber wenn Sie wirklich eine solche Box erstellen möchten, können Sie das natürlich tun. Mit tex4hthaben Sie die Möglichkeit, alle Fußnoten in eine Box unter dem Haupttext zu setzen. Mit ein paar Zeilen csskönnen Sie diese Box in eine Scrollbox verwandeln, die an einer festen Stelle auf der Seite sitzt.

Beispieldatei sample.tex:

\documentclass{article}
\usepackage{lipsum}
\begin{document}

Some text, blah blah\footnote{hello} bla bla\footnote{\lipsum[2]}

\lipsum[2-8]

Another text\footnote{world}
\end{document} 

Konfigurationsdatei mit CSS-Anweisungen scroll.cfg:

\Preamble{xhtml}
\begin{document}
\Css{
body{
width:35em;
margin-left:auto;
margin-right:auto;
}
}
\Css{
.footnotes{
   float:right;
   width:10em; 
   height:10em; 
   overflow:scroll;
   margin-left:42em;
   position:fixed;
   top:0;
}
}
\EndPreamble

kompilieren mit

htlatex sample "scroll, fn-in"

Das Ergebnis können Sie sehenHier

Das Gute ist, dass Sie durch Klicken auf die Fußnotennummer zum entsprechenden Fußnotentext scrollen können.

verwandte Informationen