有一种间接的方法,LaTeX文档在编译时能够调用shell。这样一来,就可以借助write18自动将在线内容下载到本地,然后通过文件名来调用includegraphics。由于LaTeX的某些命令执行可能会延迟,所以要使用immediate,以此保证图像下载在插入图像之前进行,防止编译器找不到图像文件。另外,示例里用到了curl工具,这个工具可能需要提前安装,也可以换成其他合适的下载工具。需要注意的是,必须向编译器传递--shell - escape选项才能运行这些命令,比如pdflatex --shell - escape test.tex,不然的话很可能会被跳过。从理论上讲,可以通过enewcommand把write18和原始的includegraphics整合成一个综合性的命令,在编译时控制自动缓存图像,让includegraphics能够接收一个链接作为参数。要是不想占用本地空间的话,在编译后自动销毁也是比较容易实现的。但问题在于,这样做是否值得?使用在线图片最大的弊端就是不可控。链接失效导致图片丢失还算是小问题,更严重的是存在安全风险,谁也无法保证同一个链接会不会被发布者或者攻击者修改成奇奇怪怪的内容。我认为这不是LaTeX应该去处理的问题。这和Markdown不一样,LaTeX不需要在网络上快速传播,而且生成的PDF文档会内嵌图片,图片链接化并不会带来太多好处。LaTeX所需要的是在任何环境下编译结果的长期稳定性,依赖在线资源是无法保证这一点的。确实存在一些TeX包含自动下载图像的组件,比如ConTeXt,它提供了externalfigure命令,可以在第一次编译时缓存在线图像以便后续重用。不排除LaTeX将来也会引入这个功能。不过,在大多数情况下,预先下载图片会更加稳定可靠。
Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号