不确定这是否是一个严格合适的问题(我希望如此,因为它与 TeX 相关工具有关),但我需要知道我的 texliveonfly.py 脚本是否能在 OS X 上成功运行。不幸的是,我没有 Mac,否则我会自己测试它!虽然理论上似乎很可靠,但在将更新提交给 CTAN 之前,我需要实际的测试结果。
测试步骤:
0)请确保您有python 3(可以下载这里)。 默认情况下,Python 2 应该可用(尽管您也可以尝试使用 Python 3)。
1)右键单击并保存此链接作为 texliveonfly.py,并确保该文件是可执行的。(补充:如果你只是想阅读脚本,请参阅这里。
*更新:脚本现在是 1.10 版,应该以图形方式提示您输入管理员密码。此外,使用选项运行--speech_when=总是测试语音合成通知。*
2)创建以下形式的最小.tex 文件(当然,您可以随意使用任意.tex 文件进行测试):
\documentclass{memoir}
\usepackage{package(s) you have not yet downloaded}
\usepackage{package(s) you have not yet downloaded}
\begin{document}
placeholder
\end{document}
texliveonfly.py yourfilename.tex
3)在终端中运行命令(当然,首先要确保所有内容都在同一个文件夹中)。
预期输出:应弹出新终端,至少有一个终端会要求您输入 sudo 密码才能执行更新。完成后,新终端应退出。大多数终端将以类似以下内容的文本开头:
This is texliveonfly.py's 'install packages on the fly' feature.
-------------
Attempting to install LaTeX packages [packagenames].
终端可能需要 3-20 秒才能弹出,具体取决于互联网连接(tlmgr 存储库访问速度比您习惯的要慢)。总共可能会弹出几个,因为脚本所做的是不断重新编译并搜索缺失包错误,直到没有剩余错误为止。
如果脚本无法更新软件包或由于其他原因,请将其终端输出粘贴到某处(如果太长,也许可以粘贴在 pastebin 上!)
如果 applescript 命令出现问题(不太可能),也有可能出现无限循环。如果出现这种情况,只需按 Ctl + C 或关闭终端即可,但请等待一段时间以允许存储库滞后。
(从 1.00 版开始,默认编译器现在是更主流的“pdflatex”。例如,您可以通过 来更改它texliveonfly.py --compiler=lualatex yourfilename.tex
)。
如果您有兴趣,可以测试以下其他内容:
当您没有传递时,脚本应该允许您与编译器进行交互。您可以通过在 texliveonfly.py 命令中
-interaction=nonstopmode
设置来做到这一点。--arguments=""
该脚本应提供(添加几行)与编译器相同的终端输出。
最后,终极测试:
该脚本应该允许您从最小的 TeX Live 安装开始,精确下载您所需的附加软件包。
答案1
(我本来想留下评论,但我的信用不够,所以我需要发表一个答案。)
假设我安装了一个 Minimal 方案。那么您的脚本就无法帮助我:
> python texliveonfly.py --compiler=lualatex hello.tex
texliveonfly.py: Unable to start lualatex; are you sure it is installed?
如果我尝试,结果也是一样--compiler=context
。此外,输入以下内容:
\usemodule[vim]
\definevimtyping [RUBY] [syntax=ruby]
\starttext
hello world
\stoptext
两者都不
python texliveonfly.py --compiler=texexec test.tex
也不
python texliveonfly.py --compiler=context test.tex
按预期工作。当context
安装了 (但没有安装 ConTeXt 模块)时,我希望从命令中获取context-vim
和context-filter
。
MKTEXTEX
顺便说一句: kpathsea 中有一个选项:
--enable-mktextex-default: This parameter is used so that TeX will automatically invoke mktextex if TeX source is missing.
可用于在缺少软件包时自动触发下载。您应该与 Norbert Preining 讨论此事。