tex4ebook 如何处理图像(png、jpg)?

tex4ebook 如何处理图像(png、jpg)?

在用 LaTeX 写完一本书后,我了解到许多在线书籍都是以 ePub 格式出版的。然后我决定学习一点如何将.tex(或.pdf)转换为.epub。这本书有方程式(包括align)、图形(.png.eps)、表格和TikZ。我使用特克斯工作室担任编辑和MikTeX视窗

首先我尝试潘多克。我很快意识到.pdf->.epub似乎不是一条可行的路线。然后我集中精力.tex-> (某条路线) -> .epub。我没有找到任何路线或标志组合来潘多克好好工作。

我已经看到并测试过(至少尝试过)一些选项:

  1. latexml使用 LaTeX 制作 Epub——对我来说这似乎仍然有点令人困惑;
  2. htlatex如何将 LaTeX 电子书转换为 ePUB (LaTeX 高级教程-22).html—— 它运行良好,(TeXstudio 中的“用户命令”有奖励),但是如果文件存在某些问题,通过 Calibre 的 ePub 将无法工作。
  3. tex4ebooktex4ebook 包——取得了最好的成绩。

基本命令:tex4ebook %.tex,其中%是文件名(适用于 TeXstudio 中的快速用户命令),效果很好。

tex4ebook适用于以下功能(比我尝试过的第一个选项好得多):

  1. 等式,包括其环境之外的数学运算符:“$...$”、“(...)”和“[...]”;

  2. 表格;

  3. Hyperref/url——所有链接均有效;

  4. TikZ 语法

    \ifdefined\HCode
      \def\pgfsysdriver{pgfsys-dvisvgm4ht.def}
    \fi
    

源自tex4ebook:TikZ 的节点消失了吗? tex4ht 的替代 TikZ 驱动程序.css来自的文件FriendsOfEpub/Blitz

  1. 到目前为止,一切都很好直到我尝试测试数字。

我可以插入.eps数字,但我不知道如何插入其他类型,例如.jpg.png

如何通过 tex4ebook 将图形插入 ePub?

其中还包括:

  1. graphicsgraphicx有区别吗?
  2. 我是否应该始终插入文件扩展名?因为pdflatex没有必要;
  3. 有没有比 ePub 更可取的图形文件类型?

我尝试按照

  1. 从 Latex tex 文件创建电子书
  2. 如何在 TeX4ebook 中包含图形和其他文件
  3. 电子书的 LaTeX 模板
  4. 使用 tex4ebook 编译时图像消失

使用某些选项进行编译.tex没有帮助:

tex4ebook -l -t -c config_file.cfg %.tex
  1. -lLuaTeX只是向我显示了更清晰的消息;
  2. -tTidy,我不明白它的用法,以及如何从任何文件夹调用它;
  3. -c:这一点令我非常感兴趣。

我找到了一些配置文件,但我无法确切地说出它们的作用。我不知道我是否缺少某些文件,例如某些示例中.css的命令中的文件\Configure;或者与 相关的某些内容make4ht;或者问题是否源于 的使用LuaTeX;或者 的使用Tidy

有时我会收到以下消息(每个图形在不同的坐标中各收到一条消息):

dvipng warning: at (31,156) unimplemented \special{em: graph any.jpg,72bp,72bp}

独立于是否使用.cfg。我注意到,.png创建了一个包含某些类型的对象(例如方程式、数学符号和.eps图形)的文件,但.jpg.png图形始终为空。我推测它可能与选项width或如何理解有关tex4ebook,但我搜索的示例没有给我任何提示。

下面是一个 MWE,其中包含我迄今为止尝试过的一些选项以及生成的 ePub。注意:“any”、“some”和“fine”是通用文件名。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{epstopdf}
% \usepackage{tex4ebook} % Doesn't seem to make any difference for png jpg
\begin{document}

1 -- includegraphics alone.

\includegraphics{any.jpg}

2 -- includegraphics alone, but with parameters, jpg.

\includegraphics[width=1\linewidth]{any.jpg}

3 -- includegraphics png must have the explicit extension to work ate the \texttt{tex4ht} and with width.

\includegraphics[width=1\linewidth]{some.png}   

\includegraphics[width=0.5\linewidth]{some.png} 

4 -- Inside figure environment

\begin{figure}[!htb]
    \centering
    \includegraphics[width=0.8\linewidth]{any.jpg}
    \caption{Figure inside figure environment.}
\end{figure}

4.1 -- Inside figure environment

\begin{figure}[!htb]
    \centering
    \includegraphics[width=600pt]{any.jpg}
    \caption{Figure inside figure environment width pt.}
\end{figure}


5 -- eps figure

\includegraphics[width=1\linewidth]{fine.eps}

5.1 -- eps figure

\begin{figure}[!htb]
    \centering
    \includegraphics[width=1\linewidth]{fine.eps}
    \caption{Figure eps inside figure environment width.}
\end{figure}

\end{document}

在此处输入图片描述

答案1

看来 MikTeX 版本的 TeX4ht 不是最新的。发生这种情况是因为 TeX4ht 直接安装到 TeX Live,更新未安装在 CTAN 上,因此 MikTeX 维护者不会收到更新通知。我已经在 MikTeX 问题跟踪器上请求更新,希望这些问题能很快得到解决。

与此同时,我们可以使用本地配置修复您的问题。您已经设法修复了位图图片的问题,因此我们只需修复 EPS 支持即可。

尝试以下配置文件:

\Preamble{xhtml}
\begin{document}
\makeatletter
\Configure{graphics*}
   {eps}
   {\openin15=\csname Gin@base\endcsname\PictExt\relax%
   \ifeof15%
   \Needs{\csname a:EpsConvert\endcsname}%
   \fi%
   \closein15%
   {\Configure{Needs}{File: \Gin@base\PictExt}\Needs{}}%
   \Picture[\a:GraphicsAlt]{{\Gin@base\PictExt} \csname a:Gin-dim\endcsname
}}
\NewConfigure{EpsConvert}{1}
\Configure{EpsConvert}{"rungs -dSAFER -dBATCH    -dNOPAUSE    -dEPSCrop    -r120  -sDEVICE=pngalpha -sOutputFile="\[email protected]" "\[email protected]" "}
\makeatother
\EndPreamble

它基本上是来自 TeX4ht 源的 EPS 支持代码。\Configure{graphics*}{eps}包含用于包含 EPS 文件的代码。它检查所包含文件的位图版本是否存在,以防止在已经存在时进行不必要的转换。该\Needs命令执行转换命令。在我们的例子中是 Ghostscript。它应该在 MikTeX 和 TeX Live 中都可用作rungs命令。

结果如下:

在此处输入图片描述

相关内容