TeXLive 是一个很好的 TeX 发行版,但是其宏包管理工具做得不太好 —— tlmgr 的 GUI 比较卡顿,而且不能够定期升级。
本文提供一个每月自动升级的脚本,可供大家参考。
脚本下载
点击下载
脚本源码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| @echo off if exist "C:\Windows\Tasks\AutoTeXLivePackageUpdaterMonthly.bat" goto run move /y %0 "C:\Windows\Tasks" schtasks /delete /tn "TeXLivePackage Updater Task" /f schtasks /create /tn "TeXLivePackage Updater Task" /sc monthly /d /st 15:00:00 /tr "C:\Windows\Tasks\AutoTeXLivePackageUpdaterMonthly.bat" :run echo ============================开始============================ echo Writen By 有龙则灵_USTB echo 是否更新TeXLive Package? set Choice= set /p Choice=请输入:y/n? IF "%Choice%"=="y" (goto ya) else (goto n) :ya call tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet echo ============================更新tlmgr============================ echo Writen By 有龙则灵_USTB call tlmgr update --self echo ============================显示待更新的宏包以及可自动安装的项============================ call tlmgr update --list echo Writen By 有龙则灵_USTB echo 是否更新TeXLive Package? set Choice= set /p Choice=请输入:y/n? IF "%Choice%"=="y" (goto yb) else (goto n) :yb echo ============================更新所有宏包============================ call tlmgr update --all echo ============================结束============================ echo Writen By 有龙则灵_USTB pause :n
|
脚本阐释
利用 Windows 自带的 SchTasks 创建定时任务
第一部分用于将该脚本移动到定时任务的根目录,并创建一个计划任务项。
为什么不用 AT 呢?因为 AT 在 Win10 中已经被取缔了。
1 2 3 4
| if exist "C:\Windows\Tasks\autoTeXLivePackageUpdaterMonthly.bat" goto run move /y %0 "C:\Windows\Tasks" schtasks /delete /tn "TeXLivePackage Updater Task" /f schtasks /create /tn "TeXLivePackage Updater Task" /sc monthly /d /st 15:00:00 /tr "C:\Windows\Tasks\TeXLivePackageUpdater.bat"
|
更多关于计划任务的操作,可以去搜索,也可以参考这篇文章。
调用 tlmgr 进行更新
第二部分是调用 tlmgr 进行更新TeXLive宏包。
1 2 3 4
| tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet tlmgr update --self tlmgr update --list tlmgr update --all --no-auto-install
|
以上四条命令分别实现的是选取宏包源、更新 tlmgr 自身、列出可更新的宏包名、更新所有宏包。
–no-auto-install 实现的是不自动安装。众所周知 TeXLive 是发行几乎所有投稿的宏包,所有每次更新里面都有太多自动安装的宏包。如果你想要这个功能,删掉这个参数即可。
更多关于 tlmgr 的操作,请参考官方文档。
批处理编写
代码里面其余部分均是 bat 编程的基本语句,可参考百度百科。