如何将 htlatex 的输出发送到不同的文件夹而不修复所有图像链接

如何将 htlatex 的输出发送到不同的文件夹而不修复所有图像链接

设置很简单。我有一个文件 report.tex,其中包含来自某个文件夹的图像。我将 htlatex 的输出发送到一个单独的目录。htlatex 将所有图像和 HTML 复制到该目录。但问题是,现在 HTML 中的所有链接都坏了,因为链接是相对于 report.tex 的原始位置生成的,而不是相对于 HTML 现在所在的位置生成的。

在图片中,我有这个

 report.tex ...\includegraphics{e1/image.png}
   |
   +--------------------------+
   |                          |
   /e1/image.png             /report/
                               report.htm ....<img src="e1/image.png"
                               image.png

可以看出问题所在。HTML 认为src=它位于 .tex 文件的原始位置。因此,我最终编辑 HTML 文件修复链接,方法是在每个图像源链接中添加“../”或删除“e1/”(因为图像是复制的)!

我搜索了很久,没找到解决这个问题的办法。有人知道解决办法吗?

这是最小的工作示例:

\documentclass{article}%
\usepackage{graphicx}
\begin{document}
  \includegraphics{e1/image.png}
\end{document}

这是使用的命令

  mkdir report; htlatex report.tex "htm" "" -dreport

现在查看文件夹 report/report.htm 时发现了问题。如果不手动修复链接,图像就不会显示。

这样做是有效的:

  htlatex report.tex "htm"

现在 report.htm 可以按预期显示图像。但我希望所有输出都转到单独的文件夹。

我正在使用 TeXlive 2012 Debian 包。

答案1

这是因为 中的错误t4ht。这是一个转换图像、运行系统命令、生成 css 和复制文件的应用程序。对于文件复制,它使用系统复制命令,因此在您的示例中它类似于:

cp e1/image.png outdir/.

或者

copy e1/image.png outdir/.

在窗户上。

此命令不会在输出目录中创建子目录,因此所有生成的文件都直接保存在此目录中。

你可以尝试我的新项目,制作4小时,尝试生成正确的子目录:

make4ht -d outdir -u report.tex

你必须把脚本放到你的本地 texmf 树

texmfhome/scripts/lua/make4ht

并建立符号链接texmf/scripts/lua/make4ht/make4ht或创建运行此文件的 shell 脚本。

相关内容