내장된 스크롤 텍스트 상자가 있는 전자 문서를 컴파일할 수 있는 HTML 관련 LaTeX 명령이 있습니까?

내장된 스크롤 텍스트 상자가 있는 전자 문서를 컴파일할 수 있는 HTML 관련 LaTeX 명령이 있습니까?

나는 임베디드를 사용하는 실험적인 전자책 레이아웃에 대해 생각하고 있었습니다.스크롤 텍스트 상자본질적으로 본문과 관련된 긴 여백 또는 각주 역할을 하는 것입니다.

예를 들어, 페이지가 두 개의 열로 분할되어 왼쪽에 기본 텍스트가 있고 오른쪽에 동일한 높이의 두 개의 텍스트 상자(각각에는 독자가 원하는 대로 스크롤하고 읽을 수 있는 텍스트 묶음이 있음)가 있다고 가정해 보겠습니다.

이런 방식으로 작동하는 LaTeX를 사용하여 일종의 전자 문서를 만드는 것이 가능합니까? 아마도 내보낼 수 있는 것 HTML(아마도 ?의 일부 HTML 관련 명령 포함 latex2html)을 사용하여 기능적인 전자책으로 번역할 수 있을까요? 없이 할 수 있는 방법이 있나요 HTML?

나는 이것이 평범한 질문일 수도 있다는 것을 알고 있지만 LaTeX를 와 함께 사용한 적이 없으며 어떤 상황에서도 전자책을 작성하는 데 HTML사용하는 것이 적절하다고 해도 마찬가지입니다 .HTML

어쨌든, 어떤 아이디어라도 있나요?

답변1

업데이트 보다 유연한 버전

OP는 다양한 수의 스크롤 상자를 갖춘 솔루션을 원합니다. 내 생각은 새로운 LaTeX상자를 선언한 다음 일부 자료를 추가할 수 있는 명령을 제공하는 것입니다 . 따라서 문서는 다음과 같습니다.

\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} 

두 개의 스크롤(정보) 상자가 사용 dialogues됩니다 second. 매크로를 사용하면 모든 자료를 추가할 수 있습니다 \addtoinfobox. 내 생각에는 이 인터페이스를 숨기고 실행 중일 \addtoinfobox때만 호출하는 매크로를 만드는 것이 좋은 아이디어라고 생각합니다. tex4ht그렇지 않으면 정보를 텍스트나 여백 메모에 직접 인쇄합니다.

패키지infoboxes.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

및 패키지 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;
}
}

흥미로운 부분은

\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정보 상자 수에서 계산된 위치 및 높이 정보가 포함된 선언을 추가합니다.

다음으로 컴파일

htlatex sample "xhtml, fn-in"

당신은 볼 수 있습니다결과

원래 답변

나는 이것이 좋은 생각이라고 생각하지 않습니다. 전자책은 주로 화면이 작은 기기에서 읽는데, 화면 전체가 메인 콘텐츠로 채워져 있다. 각주 또는 보조주는 일반적으로 이를 가리키는 텍스트의 링크가 있는 독립형 파일에 배치되거나 다음과 같이 표시된 단락 바로 뒤에 배치됩니다.epub3 샘플. 일부 전자책 장치에는 터치 인터페이스가 없어 해당 상자에 접근할 수 없다는 문제도 있습니다.

하지만 정말로 그런 상자를 만들고 싶다면 물론 그렇게 할 수도 있습니다. 를 사용하면 tex4ht모든 각주를 본문 아래에 있는 상자에 넣을 수 있는 옵션이 있습니다. 몇 줄만 사용하면 css이 상자를 페이지의 고정된 위치에 있는 스크롤 상자로 변환할 수 있습니다.

샘플 파일 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} 

CSS 지침이 포함된 구성 파일 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

다음으로 컴파일

htlatex sample "scroll, fn-in"

결과를 보실 수 있습니다여기

좋은 점은 각주 번호를 클릭하면 해당 각주 텍스트로 스크롤된다는 것입니다.

관련 정보