Tex4ht ebook के एक आंकड़े के भीतर गतिशील रूप से सम्मिलित पृष्ठ विराम पर मार्जिन कैसे प्राप्त करें

Aug 17 2020

सारांश

मैं LaTeX और tex4ht का उपयोग करके एक ebook बना रहा हूं। मेरे पास कुछ निश्चित पाठ हैं जिन्हें मैं एक आकृति के रूप में मानना ​​चाहता हूं। कभी-कभी, यह पाठ कई पृष्ठों तक फैला होता है। जब ऐसा होता है, तो डायनामिक रूप से डाला गया पृष्ठ ईबुक व्यूअर से टूट जाता है, बिना किसी मार्जिन के पाठ को तोड़ देता है (कम से कम, मैं यह पता नहीं लगा सकता कि इसे कैसे नियंत्रित किया जाए)। दूसरे शब्दों में, पृष्ठ विराम पाठ की एक पंक्ति के ऊर्ध्वाधर केंद्र में सही हो सकता है।

यहाँ नीचे मेरे MWE से इस तरह की एक लाइन का एक उदाहरण है।

मैंने CSS में अलग-अलग मार्जिन और पैडिंग जोड़ने की कोशिश की है, लेकिन कुछ भी काम नहीं किया है। मेरे द्वारा इसे होने से कैसे रोका जा सकता है?

मैं ebook बनाने के लिए कैलिब्रे के ईबुक-कन्वर्ट का उपयोग कर रहा हूं, लेकिन मैंने कई सृजन कार्यक्रमों, कई प्रारूपों और कई ईबुक दर्शकों के साथ प्रयोग किया है - मैंने जो भी कोशिश की है वह इस समस्या के संबंध में समान व्यवहार करता है।

MWE

mwe.tex

\documentclass[ebook]{book}

%% Do-nothing environments that provide CSS hooks
\newenvironment{wrap-html-outer}{}{}
\newenvironment{wrap-html-inner}{}{}

\newenvironment{textfigure}{%
  \begin{figure}%
  \begin{wrap-html-outer}%
  \begin{wrap-html-inner}%
}
{
  \end{wrap-html-inner}%
  \end{wrap-html-outer}%
  \end{figure}%
}

\usepackage{lipsum}

\begin{document}

Some text before the figure.

\begin{textfigure}%
\lipsum
\end{textfigure}

Some text after the figure.

\end{document}

tex4ht.cfg

\RequirePackage{include4ht}
\Preamble{xhtml}

\AddCss{custom.css}
\ConfigureEnv{wrap-html-outer}{\HCode{<div class="wrap-html-outer">}}{\HCode{</div>}}{}{}
\ConfigureEnv{wrap-html-inner}{\HCode{<div class="wrap-html-inner">}}{\HCode{</div>}}{}{}

\begin{document}
\EndPreamble

कस्टम सीएसएस

p.noindent {
    text-indent: 0;
}

div.figure {
  margin-top: 1em;
  margin-bottom: 1em;
}

div.wrap-html-outer {
    text-align: center;
    padding: 1em 2em;
}

div.wrap-html-inner {
    display: inline-block;
    text-align: left;
}

आज्ञा देता है

% htxelatex mwe "tex4ht.cfg,xhtml,charset=utf-8" " -cunihtf -utf8" ""
% /Applications/calibre.app/Contents/MacOS/ebook-convert mwe.html mwe.epub --extra-css custom.css

जवाब

1 michal.h21 Aug 17 2020 at 15:53

दुर्भाग्य से, कुछ अजगर पुस्तकालय झड़पों के कारण मेरे सिस्टम पर कैलिबर टूट गया है। लेकिन मैं इस मुद्दे को फोलेट में पुष्टि कर सकता हूं, जो गनोम के लिए ईबुक दर्शक है।

एक मुद्दा मैं देख सकता हूं कि आपके टेक्स्ट फ़्लोट की पूरी सामग्री <p>तत्व में संलग्न है , जो कि अमान्य HTML है। सामान्य तौर पर, आपको ब्लॉक स्तर के तत्वों को सम्मिलित करने से पहले पैराग्राफ को बंद करना होगा <div>। यह निम्नलिखित आदेशों का उपयोग करके किया जा सकता है:

\ifvmode\IgnorePar\fi\EndP

यह प्रत्येक से पहले किया जाना चाहिए \HCode{<div ...>}। तब आपको नए पैराग्राफ का उपयोग करने की आवश्यकता हो सकती है \par। अद्यतन की गई कॉन्फ़िगरेशन फ़ाइल इस तरह दिख सकती है:

\RequirePackage{include4ht}
\Preamble{xhtml}

\AddCss{custom.css}
\def\closecurrentpar{\ifvmode\IgnorePar\fi\EndP}
\ConfigureEnv{wrap-html-outer}{\closecurrentpar\HCode{<div class="wrap-html-outer">}\par}{\closecurrentpar\HCode{</div>}}{}{}
\ConfigureEnv{wrap-html-inner}{\closecurrentpar\HCode{<div class="wrap-html-inner">}\par}\closecurrentpar{\HCode{</div>}}{}{}

\begin{document}
\EndPreamble

हालांकि यह वास्तविक समस्या को ठीक नहीं करता है। ऐसा लगता है कि यह आपके सीएसएस में इस घोषणा के कारण है:

div.wrap-html-inner {
    display: inline-block;
    text-align: left;
}

जब आप निकालते हैं display: inline-block;, तो लाइनें सही ढंग से प्रदर्शित होती हैं। इस घोषणा का उद्देश्य क्या है?