`make4ht`、`tex4ht`:从 python 调用时,如果输入文件带有正斜杠,则会出现写入权限错误

`make4ht`、`tex4ht`:从 python 调用时,如果输入文件带有正斜杠,则会出现写入权限错误

我有一个目录,其中有以下.tex文件:

\documentclass[fontsize=16pt, paper=letter]{scrartcl}
\usepackage{lmodern}
\usepackage[T1]{fontenc}

\usepackage{amsmath}

\begin{document}

\title{A test \LaTeX to HTML page}
\maketitle

\section{Section One}

Hello world. Here is some mathematics:
    \begin{equation}
        x + y = 3
    \end{equation}

\end{document}

然后,我使用以下命令运行python脚本:

import subprocess

subprocess.call(["make4ht", "A:/test_tex_sources/test_article.tex"])

当调用该命令时,出现以下错误:

) (a:/texlive/2015/texmf-dist/tex/generic/tex4ht/tex4ht.sty
--- needs --- tex4ht A:/test_tex_sources/test_article ---

A:/test_tex_sources/test_article.tmp: Forbidden to open for writing
! I can't write on file `A:/test_tex_sources/test_article.tmp'.
l.966           \immediate\openout15=\jobname.tmp

(Press Enter to retry, or Control-Z to exit; default file extension is `.tex')
Please type another output file name:

另一方面,如果我提供以下 python 脚本:

import subprocess

subprocess.call(["make4ht", "test_article.tex"])

一切正常!此外,如果我通过命令行而不是 Python 运行以下命令:

make4ht "A:/test_tex_sources/test_article.tex"

然后再说一遍,一切正常。

这是为什么?

答案1

这是 中的一个错误make4ht,当指定文档的完整路径时,它会为 LaTeX 构建错误-jobname。对 LaTeX 的命令调用如下:

latex -jobname=$input "tex4ht.sty loading,\input $tex_file"

在你的样本中,

latex -jobname=A:/test_tex_sources/test_article "tex4ht.sty loading,\input A:/test_tex_sources/test_article.tex"

正确的做法是

latex -jobname=test_article "tex4ht.sty loading,\input A:/test_tex_sources/test_article.tex"

所以jobname应该没有目录路径

我已经修复了制作4小时来源,因此您可以使用开发版本,直到我发布修复 CTAN 更新

相关内容