当我创建文件的 PDF 时main.tex
,我会这样做:
pdflatex -output-directory=build main.tex
这样,PDF 文件和在此过程中生成的所有其他文件(suff)都会进入该build
文件夹。
我刚刚学习了如何从 创建 HTML main.tex
,方法是:
htlatex main.tex
它会生成一个main.html
文件和许多其他文件。
有没有办法让它更干净一点?也许建一个专用文件夹?
答案1
您也可以传递-output-directory
给:htlatex
htlatex filename xhtml "" "" " -output-directory=build"
这种方法的问题在于它在当前目录中tex4ht
搜索生成的文件,因此失败:dvi
Output written on build/filename.dvi (1 page, 9632 bytes).
Transcript written on build/filename.log.
----------------------------
tex4ht.c (2012-07-25-19:36 kpathsea)
tex4ht -f/filename
-i~/tex4ht.dir/texmf/tex4ht/ht-fonts/
--- warning --- Can't find/open file `filename.dvi'
--- error --- Can't find/open file `filename.dvi'
解决方案是使用,它比make4ht
调用方式更强大。tex4ht
htlatex
使用make4ht
,您可以使用构建文件来修改编译参数并将文件移动到正确的目标。将以下代码保存为mybuild.mk4
:
local outdir = "build"
local newinput = outdir .."/" ..settings.input
settings.latex_par= "-output-directory=".. outdir
settings.input = newinput
Make:match(".css$", "mv ${filename} ".. outdir .."/${filename}")
Make:match(".tmp$", "rm ${filename}")
构建文件是Lua脚本,输出目录名保存在outdir
变量中,然后我们修改默认设置以使用outdir
,settings.latex_par
包含LaTeX的参数,settings.input
是文件的位置dvi
。Make:match
用于修复由生成的某些文件的位置tex4ht
,这些文件不遵循-output-directory
选项。第一个将css
文件移动到输出目录,因为它被写入tex4ht
当前目录。如果您使用Windows,请将其替换mv
为move
。第二个删除filename.tmp
文件。同样,如果您使用Windows,请将其替换rm
为del
。
您可以使用以下方式编译该文档
make4ht -e mybuild.mk4 filename
输出结构如下:
$ ls -R1
.:
build
filename.tex
mybuild.mk4
./build:
filename.aux
filename.css
filename.dvi
filename.html
filename.idv
filename.lg
filename.log
filename.tmp
filename.xref
filename.4ct
filename.4tc