我有一本大书,里面有很多章节、很多图表和 tikz 图片,其中一些文件非常大(超过 100MB)。我利用https://docs.google.com/viewer?url=
从 GitHub 获取章节并在浏览器上可视化 pdf。问题是文件大小限制为 20MB。
我目前使用ghostscript
来减小文件大小,我最近发现arara
并在文档中读到它支持gs
。我想知道是否可以创建一个条件使用,仅当文件大小超过 20MB 时才arara
运行。gs
答案1
绝对有可能利用底层File
类。为了测试目的,让我们创建一个正好 20MB 的文件:
[paulo@cambridge ~] $ truncate -s 20MB foo.dat
[paulo@cambridge ~] $ ls -l foo.dat
-rw-rw-r--. 1 paulo paulo 20000000 ago 8 10:46 foo.dat
现在,让我们创建一个非常简单的 TeX 文件:
Hello
\bye
并添加以下指令:
% arara: pdftex if toFile('foo.dat').length() <= 20000000
% arara: xetex if toFile('foo.dat').length() < 20000000
我们利用toFile(...)
,它返回一个File
对象,然后使用length()
方法来获取特定文件的总字节数。第一个指令将运行 PDFTeX,当且仅当 的大小foo.dat
小于或等于 20MB(20,000,000 字节)。同样,第二个指令将运行 XeTeX,当且仅当 的大小foo.dat
小于 20MB。
跑步arara test.tex
会给我们
[paulo@cambridge ~] $ arara test.tex
__ _ _ __ __ _ _ __ __ _
/ _` | '__/ _` | '__/ _` |
| (_| | | | (_| | | | (_| |
\__,_|_| \__,_|_| \__,_|
Processing "test.tex" (size: 129 B, last modified: 08/08/2021
11:00:38), please wait.
(PDFTeX) PDFTeX engine .................................. SUCCESS
Total: 0.45 seconds
这是意料之中的,因为的大小foo.dat
等于 20MB。这个技巧也可以在规则上下文中使用。希望这可以作为一个起点。;)