TeXLive 是一个很好的 TeX 发行版,但是其宏包管理工具做得不太好 —— tlmgr 的 GUI 比较卡顿,而且不能够定期升级。
本文提供一个每月自动升级的脚本,可供大家参考。
脚本下载
点击下载
脚本源码
| 12
 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 offif 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 中已经被取缔了。
| 12
 3
 4
 
 | if exist "C:\Windows\Tasks\autoTeXLivePackageUpdaterMonthly.bat" goto runmove /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宏包。
| 12
 3
 4
 
 | tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnettlmgr update --self
 tlmgr update --list
 tlmgr update --all --no-auto-install
 
 | 
以上四条命令分别实现的是选取宏包源、更新 tlmgr 自身、列出可更新的宏包名、更新所有宏包。
–no-auto-install 实现的是不自动安装。众所周知 TeXLive 是发行几乎所有投稿的宏包,所有每次更新里面都有太多自动安装的宏包。如果你想要这个功能,删掉这个参数即可。
更多关于 tlmgr 的操作,请参考官方文档。
批处理编写
代码里面其余部分均是 bat 编程的基本语句,可参考百度百科。