我正在尝试构建一个文档来htlatex
输出.odt
文件,但我的文档的文件名中有空格。而且,ashtlatex
在引号之间接受三组参数,我似乎找不到让它接收带空格的文件名的语法。
我试过了:
htlatex my\ document.tex "xhtml,ooffice" " -cmozhtf" " -coo"
htlatex 'my document.tex' "xhtml,ooffice" " -cmozhtf" " -coo"
htlatex "my document.tex" "xhtml,ooffice" " -cmozhtf" " -coo"
一切都无济于事。
这里的空格真的不太好用吗?还是我忽略了某些显而易见的东西?
my document.tex
我正在运行 Linux Mint 机器,并在具有权限的同一目录中发出命令。
考虑到如果我运行pdflatex "my document.tex"
一切都按预期正常进行,我假设这是特定于htlatex
命令语法的东西,因此(除非我的假设被证明是错误的),关于主题。
错误的关键部分是:
! I can't find file `my'.
答案1
编辑:我已经在开发版本中修复了这个问题制作4小时
htlatex
默认情况下不支持空格。它只是一个 shell 或批处理脚本,具体取决于操作系统,它会调用许多其他程序,每个程序对文件名中的空格及其转义的处理可能不同。正如 Coby 所建议的,您可以尝试运行
htlatex "\"my document.tex\"" "xhtml,ooffice" " -cmozhtf" " -coo"
这将失败
tex4ht -f/"my
document.tex"
-i~/tex4ht.dir/texmf/tex4ht/ht-fonts/
-cmozhtf
--- warning --- Can't find/open file `document.dvi'
--- error --- Can't find/open file `document.dvi'
您可以尝试直接运行tex4ht
命令:
tex4ht -cmozhtf "my document.dvi"
这似乎有效。下一步是运行命令t4ht
,它将中间文件打包到生成的 ODT 文件中:
t4ht -coo "my document.dvi"
此命令运行许多外部命令并且失败:
System call: mkdir sxw-my document.dir
mkdir: adresář „sxw-my“ nelze vytvořit: File exists
--- Warning --- System return: 256
...
system call: mv "my document"-styles.4oy sxw-my document.dir/styles.xml
mv: cíl 'document.dir/styles.xml' není adresářem
--- Warning --- System return: 256
...
mv: nelze získat informace o 'document.odt': No such file or directory
--- Warning --- System return: 256
这意味着无论如何转义,空格都不能用于 ODT 输出,最好避免使用它们。
顺便说一句,最好使用制作4小时对于tex4ht
调用,它有许多附加功能,例如直接支持 ODT 输出,使用
make4ht -f odt filename.tex
它还可以使用小技巧来支持带空格的文件名。将以下文件另存为my_build.mk4
:
local escaped = settings.input:gsub(" ", "_")
set_settings {latex_par = '-jobname=' ..escaped, tex_file = '"' ..settings.tex_file ..'"', input = escaped }
它会将生成的文件名中的空格替换为下划线,因此它适用于所有调用的命令。使用以下命令调用它
make4ht -f odt -e my_build.mk4 "my document.tex"
答案2
这似乎是由于htlatex
当文件名包含空格时无法正确标记文件名。
添加一对转义引号(即"\"<file>\""
)应该可以解决这个问题:
htlatex "\"my document.tex\"" "xhtml,ooffice" " -cmozhtf" " -coo"