于arXiv上传非支持LaTeX文档,及杂

renyuneyun 2021年10月03日(周日) 1 mins

几乎所有搞过(计算机)科研或考虑过论文和版权之类事项的人都知道,arXiv是一个用来分享论文预印本或其他学术类资料的非商业性网站。理所当然地,上传到arXiv上的文档也一般为PDF格式的文件。

arXiv上传

事实上arXiv支持直接通过TeX源代码编译文档,也支持提交PDF,但提交TeX源代码是优先的。

arXiv支持的文件类型

这么做大概主要是为了在TeX中自动插入一些指令,使得生成的PDF带上arXiv的提交信息。 然而直接上传PDF会使得这么不好做,于是arXiv做了一个「巧妙」的设计:它会去尝试检测上传的PDF文件,看它是不是由TeX生成的,如果是则提示你提交源代码且拒绝你上传。

一般而言,对于多数情况,如果你的文档使用LaTeX或者pdfLaTeX编译,那么在arXiv上传源代码也挺好,没什么别的问题。

非支持LaTeX文档

然而问题就在于二般情况:如果我的源文件不能用LaTeX或pdfLaTeX编译,而需要用比如XeLaTeX或LuaLaTeX编译呢?

这时候你会陷入一个两难的境地:arXiv不支持这些编译工具链,所以你上传的源代码没法编译通过,于是无法进行下一步;但假如你上传自己编译生成的PDF,arXiv又会检测到你的文件是TeX生成的,要求你上传源代码!

我就遇上了这个情况。我需要使用XeLaTeX或LuaLaTeX的UTF-8支持,因为我的文档中包含非ASCII字符——我甚至都没用到汉字,而只是带重音符号的拉丁字母。我在文档中直接包含了这些字符,因为这些字符是用在诸如lstlisting的环境中,所以简易的\'{o}方式不起作用。然而在使用pdfLaTeX编译的时候,遇到它们会报错。

于是结果就如上所述了。我知道一种解法是使用特殊的指令手动修正每一个字符,然而这会花费很多时间。于是我只得去搜寻解决方案。很显然,我搜到了arXiv关于所支持工具链的说明,知道他们不支持且没有仔细考虑去支持XeLaTeX或LuaLaTeX。

然后我找到了这篇文章,向LuaTeX用户给出了简明的指导,告诉读者如何去除生成的PDF文档内那些特征信息。然而,我照着它说的做了,发现并没有什么作用。我也打开了它所提及的另一个指导,通读了一遍,调整了自己的指令,仍然没有效果。此外我还读了几个其他的问题,发现要么方法类似但没有作用,要么用别的手段绕过问题。

后来我改变了思路,决定在源文件中进行调整之后,再手动清理一下PDF文件的元信息,看是否有效。支持我作出这个尝试的理由是我查看PDF元信息的时候,发现它包含一段「生成者」字段,内容包含各种TeX信息。这个字段应该就是前面诸多指导试图移除的内容,但在我这里不知道为什么没能删除。(一个猜测是因为我用的acmart样式。)

于是我尝试了几个工具,一个是mat2(在Archlinux的community仓库中有),一个是pdftag(在AUR有)。首先用了mat2,因为它有KDE Service Menu集成(即dolphin选中文件后上下文菜单/右键菜单中的动作),且号称支持许多文件类型,大概比较好用。然而mat2只能一次性移除所有元信息,且不知是什么原因,在我这里生成的PDF文件打开后会被okular报错(但还是能打开)。于是后来又转向了pdftag,发现也是有图形界面的,且可以自行决定调整哪些元信息。

然后我就将移除了TeX相关元信息的PDF上传给了arXiv,检查顺利通过。而且进一步尝试发现,我原本的PDF在移除了这些元信息后,直接就能顺利通过arXiv的检查……

文章的最后,说一个题外话。我在搜索相关话题的时候,发现了这个问题和回答。问问题的人确实很不客气,但回答的人也很傲慢。摘录一段最典型的部分:

Nobody cares about your lovely ligatures, special symbols, fancy fonts, or magical markup. And while it's true that arXiv accepts submissions in languages other than English, nobody realistically does that.

在这个回答中,一股浓浓的英语中心主义(不知道有没有这个词)气息扑面而来。确实现在的科研主流语言是英语,但这也只是「现在」——历史上,科研通用语换过几次,英语只是最近的通用语。

我不知道如果时移事迁,科研通用语再次改变,到时候这个回答者会是何种感受?我也不知道这个回答者的专业是什么,但有许多研究领域至少研究对象包含其他语言,需要在论文中包含它们对应内容,这个人对这些研究领域又是什么态度?

也许回答者并没有深入思考,但无心之言反而最能体现一个人内心深处的想法,甚至可以反映一个社会或群体的想法。


您可以在Hypothesis上的該群組內進行評論,或使用下面的Disqus評論。