【报错】arXiv上传文章出现XXX.sty not found

笔者在overleaf上编译文章一切正常,但上传文章到arxiv时出现类似于如下报错:
在这里插入图片描述
一般情况下观察arxiv的编译log,不通过的原因,很多时候都是由于某一行导入了啥package,引起的报错;但是如果没有任何一个具体的报错,只是告诉你XXX.sty not found,那么很可能是编译器版本的问题。

如上述这个报错,主要是由于arxiv 的latex编译器版本过低,导致tabularray根本无法在内置环境中找到导致的。


截止到目前,arxiv使用的latex编译器版本为2020版,但是像overleaf默认使用的都是最2022新版的tex,这就会导致很多在overleaf上自己能够导入编译成功的package,在arxiv上却not found

具体参考overleaf 官方给出的checklist.

在这里插入图片描述在这里插入图片描述

解决方案

这里给出两种解决方案:

1. 改用老版本的package

最直接的解决方案,自然就是把一些太新的package注释掉,重新上传

如果当前的pdf排版依赖于这些package,那么就得考虑用一些老版本的包代替了。

例如,如果你用了tabularray排版的表格,那么可以将其替换为tabular,可以实现接近的排版效果。

按照笔者的经验,一些新的package,肯定能够找到能够用作替代的老版本packages。

只不过这个操作往往非常耗费时间;而且由于向下兼容,那些新package一两行命令能够实现的功能,用一些老packages就会绕很大的圈子,非常麻烦!

优点:

  • 从源头解决问题

缺点:

  • 极度花费时间
  • 不能做到完全地平替很多新pakcages的功能

2. 下载源码

第二种方法更为省力:将那些太新的package的源码(.sty)下载。然后在项目里倒入本地的.sty文件

例如,去从CTAN下载tabularray.sty ,将文件放到项目目录下,然后再\usepackage{tabularray}

在这里插入图片描述
在这里插入图片描述
但是这种方法也是治标不治本,也并不是所有情况都能奏效。

而且很容易出现,你下载了A包,它依赖于B包;你下载了B包,它又依赖于C、D包。。。然后你可能还得理清楚这些package之间的版本关系。。。

但在某些情况下,比方说依赖的package很少,这还是一个非常有用的方法。

优点:

  • 快速、省力

缺点:

  • 治标不治本
  • 容易出现“连环依赖”,和版本冲突

一些建议

如果你有计划把项目上传arxiv的话,这里给出一些建议:

  1. 先去官网检查一下arxiv最新的tex编译器的版本是啥(可以去arxiv先尝试随便上传一个文件,看看编译的log)。

  2. 将自己的本地环境,或者overleaf编译器设置为和arxiv一致,以防后续发生不兼容的问题。
    在这里插入图片描述

  3. 在上传arxiv之前,把项目里导入过的一些没用的package全部注释掉,以最大程度降低上传出错的可能性。

  4. 保持自己tex源码整洁。。至少能够分得清哪些packages是自己后面加的,哪些是conference template本来就自带的(不然就得像笔者一样,一个个试)。。。

参考

猜你喜欢

转载自blog.csdn.net/weixin_43301333/article/details/130455964