如何在 latexmkrc 中集成有关 bbl 和 idx 文件的自定义脚本

如何在 latexmkrc 中集成有关 bbl 和 idx 文件的自定义脚本

makepdf.bat为了将我的 tex 文件编译成 pdf,使用了一个名为的 dos 批处理文件,如下所示:

set name=mybook

xelatex %name% -synctex=1
bibtex %name%


iconv -f utf-8 -t gbk %name%.bbl>%name%.bbl.bak
del %name%.bbl
ren %name%.bbl.bak %name%.bbl
replace_fs %name%.bbl ]//. ]//
fixbbl -cjk -sort=pinyin %name%
iconv -f gbk -t utf-8 %name%.bbl>%name%.bbl.bak
del %name%.bbl
ren %name%.bbl.bak %name%.bbl

iconv -f utf-8 -t gbk %name%.idx>%name%.idx.bak
del %name%.idx
ren %name%.idx.bak %name%.idx
cctmkind -s entropy.ist -C mixed %name%
iconv -f gbk -t utf-8 %name%.ind>%name%.ind.bak
del %name%.ind
ren %name%.ind.bak %name%.ind


xelatex %name% -synctex=1
xelatex %name% -synctex=1

del *.log *.aux *.bbl *.bbl.bak *.out *.thm *.toc *.log *.idx *.ind /s

start "D:\Tools\sumatrapdf\SumatraPDF" %name%.pdf -reuse-instance
exit

在上面的批处理文件中,

  1. 第一个 xelatex 命令生成了一些bbl和文件。idx
  2. 由于某些与文件编码有关的原因,必须使用将它们从 utf-8 编码转换为 gbk iconv
  3. 生成的gbk编码文件经过replace_fsfixbbl等特殊工具处理后cctmkind,再转换回utf-8编码。
  4. 再次运行xelatex并在 SumtraPDF 中打开 pdf 文件。

由于对latexmkperl 了解甚少,我不知道如何将这个 bat 文件转换为latexmkrc格式。有人能帮我解决这个问题吗?

答案1

一种方法是创建自己的批处理文件来代替bibtex和运行makeindex。我们将它们称为mybibtex.batmymakeindex.bat。然后配置latexmk使用这些文件代替标准程序,例如通过

$bibtex = 'mybibtex %R';
$makeindex = 'mymakeindex %R';

这些批处理文件的一个实现如下:首先,mybibtex.bat原始批处理文件中的所有内容,从行bibtex到生成最终文件的重命名命令bbl。同样,mymakeindex.bat包含下一个命令块,即处理索引的命令块。然后,在这些文件中,更改%name%%1对应于批处理文件的第一个参数。

有更高级的解决方案latexmk,使用已定义的 Perl 子程序:请参阅文档中的“命令规范格式”部分latexmk。但调用的批处理文件解决方案很好(您可以自己调用批处理文件或从其他批处理文件中调用)。

相关内容