![如何在 latexmkrc 中集成有关 bbl 和 idx 文件的自定义脚本](https://linux22.com/image/359284/%E5%A6%82%E4%BD%95%E5%9C%A8%20latexmkrc%20%E4%B8%AD%E9%9B%86%E6%88%90%E6%9C%89%E5%85%B3%20bbl%20%E5%92%8C%20idx%20%E6%96%87%E4%BB%B6%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E8%84%9A%E6%9C%AC.png)
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
在上面的批处理文件中,
- 第一个 xelatex 命令生成了一些
bbl
和文件。idx
- 由于某些与文件编码有关的原因,必须使用将它们从 utf-8 编码转换为 gbk
iconv
。 - 生成的gbk编码文件经过
replace_fs
、fixbbl
等特殊工具处理后cctmkind
,再转换回utf-8编码。 - 再次运行
xelatex
并在 SumtraPDF 中打开 pdf 文件。
由于对latexmk
perl 了解甚少,我不知道如何将这个 bat 文件转换为latexmkrc
格式。有人能帮我解决这个问题吗?
答案1
一种方法是创建自己的批处理文件来代替bibtex
和运行makeindex
。我们将它们称为mybibtex.bat
和mymakeindex.bat
。然后配置latexmk
使用这些文件代替标准程序,例如通过
$bibtex = 'mybibtex %R';
$makeindex = 'mymakeindex %R';
这些批处理文件的一个实现如下:首先,mybibtex.bat
原始批处理文件中的所有内容,从行bibtex
到生成最终文件的重命名命令bbl
。同样,mymakeindex.bat
包含下一个命令块,即处理索引的命令块。然后,在这些文件中,更改%name%
为%1
对应于批处理文件的第一个参数。
有更高级的解决方案latexmk
,使用已定义的 Perl 子程序:请参阅文档中的“命令规范格式”部分latexmk
。但调用的批处理文件解决方案很好(您可以自己调用批处理文件或从其他批处理文件中调用)。