Cara mendapatkan margin pada jeda halaman yang disisipkan secara dinamis dalam gambar ebook tex4ht
Ringkasan
Saya membuat ebook menggunakan LaTeX dan tex4ht. Saya memiliki teks tertentu yang ingin saya perlakukan sebagai gambar. Terkadang, teks ini mencakup beberapa halaman. Ketika itu terjadi, jeda halaman yang disisipkan secara dinamis dari penampil ebook memecah teks tanpa memperhatikan margin apa pun (setidaknya, saya tidak tahu cara mengontrolnya). Dengan kata lain, hentian halaman dapat terjadi tepat di tengah vertikal baris teks.
Berikut adalah contoh baris seperti itu dari MWE saya di bawah ini.

Saya sudah mencoba menambahkan margin dan padding yang berbeda di CSS, tetapi tidak ada yang berhasil. Bagaimana cara mencegah hal ini terjadi?
Saya menggunakan konversi ebook Calibre untuk membuat ebook, tetapi saya telah bereksperimen dengan beberapa program pembuatan, berbagai format, dan beberapa penampil ebook - semua yang saya coba berlaku serupa sehubungan dengan masalah ini.
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
custom.css
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;
}
Perintah
% 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
Jawaban
Sayangnya, Calibre rusak di sistem saya karena beberapa perpustakaan Python bentrok. Tapi saya bisa mengkonfirmasi masalah ini di Foliate, yaitu Ebook viewer untuk Gnome.
Satu masalah yang dapat saya lihat adalah bahwa seluruh konten float teks Anda diapit dalam <p>
elemen, yang merupakan HTML yang tidak valid. Secara umum, Anda perlu menutup paragraf sebelum menyisipkan elemen level blok seperti <div>
. Itu dapat dilakukan dengan menggunakan perintah berikut:
\ifvmode\IgnorePar\fi\EndP
Ini perlu dilakukan sebelum masing-masing \HCode{<div ...>}
. Anda kemudian dapat meminta paragraf baru menggunakan \par
. File konfigurasi yang diperbarui dapat terlihat seperti ini:
\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
Ini tidak memperbaiki masalah sebenarnya. Tampaknya hal itu disebabkan oleh deklarasi ini di CSS Anda:
div.wrap-html-inner {
display: inline-block;
text-align: left;
}
Saat Anda menghapus display: inline-block;
, garis ditampilkan dengan benar. Apa tujuan dari deklarasi ini?