![如何在 TeX4ebook 中包含图形和其他文件](https://linux22.com/image/301834/%E5%A6%82%E4%BD%95%E5%9C%A8%20TeX4ebook%20%E4%B8%AD%E5%8C%85%E5%90%AB%E5%9B%BE%E5%BD%A2%E5%92%8C%E5%85%B6%E4%BB%96%E6%96%87%E4%BB%B6.png)
我的电子书有几个插图,我还想嵌入字体文件。我以一种临时的方式处理了这些插图:第一次编译后,我转到 book-epub 文件夹并将文件放入 figs 文件夹(其中已经包含封面)。当我重建电子书时,它们被包含在内。这有效,但文件未包含在清单中,因此 epub 格式不正确。如果我使用电子书编辑器(我认为是 Sigil,但可能是 Calibre),它在重新保存时不会保留 figs 文件。
编辑1:我正在使用\Picture
,例如:
\Picture{figs/toc.svg align=center height=600}
答案1
您不应直接在文档中使用tex4ht
命令\Picture
,这些命令应在配置文件中使用。问题是,这样您就无法再使用普通 LaTeX 来处理文档以生成pdf
。
针对您的情况,我将使用以下模式:
如果您有 svg 格式的图形,请将它们也转换为 pdf,这样您就可以将它们用于 pdf 制作。在您的 TeX 文件中,使用以下命令包含这些文件:
\includegraphics[width=600pt]{figs/toc}
因此忽略文件扩展名,根据所使用的编译工具将包含正确的文件。
关于字体,我将使用我的较早的答案。这是完整的.cfg
文件:
\Preamble{xhtml}
\makeatletter
% Various helper functions
% default font size
\newcommand\emwidth{16}
\let\emwidth\f@size
% convert pt to rem
\newcommand\CalcRem[1]{\strip@pt\dimexpr(#1)/\emwidth}
\Configure{graphics*}
{svg}
{\Picture[pict]{\csname Gin@base\endcsname.svg
\space style="width:\CalcRem{\Gin@req@width}em;"
}%
\special{t4ht+@File: \csname Gin@base\endcsname.svg}
}
\DeclareGraphicsExtensions{.svg,.png,.jpg}
\begin{document}
\newcommand\AddFontFace[4]{%
\Css{@font-face {
font-family: #1;
src: local("#2"),
url('#3');
#4
}}
\special{t4ht+@File: #3}
}
\edef\CurrentFontFamily{rmfamily}
\newcommand\SetFontFamily[1]{
\edef\CurrentFontFamily{#1}
}
\newcommand\NormalFont[2]{\AddFontFace{\CurrentFontFamily}{#1}{#2}{font-weight: normal;font-style: normal;}}
\newcommand\BoldFont[2]{\AddFontFace{\CurrentFontFamily}{#1}{#2}{font-weight: bold;font-style: normal;}}
\newcommand\ItalicFont[2]{\AddFontFace{\CurrentFontFamily}{#1}{#2}{font-weight: normal;font-style: italic;}}
\newcommand\BoldItalicFont[2]{\AddFontFace{\CurrentFontFamily}{#1}{#2}{font-weight: bold;font-style: italic;}}
\NormalFont{STIXDefault}{STIXGeneral-Regular.woff}
\BoldFont{STIXDefault}{STIXGeneral-Bold.woff}
\ItalicFont{STIXDefault}{STIXGeneral-Italic.woff}
\BoldItalicFont{STIXDefault}{STIXGeneral-BoldItalic.woff}
\Css{body{font-family:rmfamily, "STIXDefault", sans-serif;}}
\EndPreamble
重要的配置如下:
\Configure{graphics*}
{svg}
{\Picture[pict]{\csname Gin@base\endcsname.svg
\space style="width:\CalcRem{\Gin@req@width}em;"
}%
\special{t4ht+@File: \csname Gin@base\endcsname.svg}
}
这将配置 svg 包含,\CalcRem
命令计算给定尺寸的相对大小,最好使用相对单位,例如em
,而不是固定大小,例如pt
或px
。\special{t4ht+@File:
命令寄存器文件作为tex4ht
输出,因此我们可以将其包含在opf manifest
现在字体的基本命令是:
\newcommand\AddFontFace[4]{%
\Css{@font-face {
font-family: #1;
src: local("#2"),
url('#3');
#4
}}
\special{t4ht+@File: #3}
}
它注册字体文件以供包含并声明必要的 CSS 属性。