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 HTML
und weiß auch nicht, ob es jemals und unter welchen Umständen sinnvoll wäre, HTML
damit 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 LaTeX
Box 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 dialogues
und second
. Jedes Material kann mit \addtoinfobox
einem Makro hinzugefügt werden. Ich denke, es ist eine gute Idee, einige Makros zu erstellen, die diese Schnittstelle verbergen und \addtoinfobox
nur aufgerufen werden, wenn tex4ht
sie 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}
}
css
Dadurch 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 tex4ht
haben Sie die Möglichkeit, alle Fußnoten in eine Box unter dem Haupttext zu setzen. Mit ein paar Zeilen css
kö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.