網(wǎng)站建設(shè)效果評估企業(yè)網(wǎng)站seo點(diǎn)擊軟件
筆者在overleaf上編譯文章一切正常,但上傳文章到arxiv時(shí)出現(xiàn)類似于如下報(bào)錯(cuò):
一般情況下觀察arxiv的編譯log,不通過的原因,很多時(shí)候都是由于某一行導(dǎo)入了啥package,引起的報(bào)錯(cuò);但是如果沒有任何一個(gè)具體的報(bào)錯(cuò),只是告訴你XXX.sty not found
,那么很可能是編譯器版本的問題。
如上述這個(gè)報(bào)錯(cuò),主要是由于arxiv 的latex編譯器版本過低,導(dǎo)致tabularray根本無法在內(nèi)置環(huán)境中找到導(dǎo)致的。
截止到目前,arxiv使用的latex編譯器版本為2020版,但是像overleaf默認(rèn)使用的都是最2022新版的tex,這就會(huì)導(dǎo)致很多在overleaf上自己能夠?qū)刖幾g成功的package,在arxiv上卻not found
。
具體參考o(jì)verleaf 官方給出的checklist.
解決方案
這里給出兩種解決方案:
1. 改用老版本的package
最直接的解決方案,自然就是把一些太新的package注釋掉,重新上傳。
如果當(dāng)前的pdf排版依賴于這些package,那么就得考慮用一些老版本的包代替了。
例如,如果你用了
tabularray
排版的表格,那么可以將其替換為tabular
,可以實(shí)現(xiàn)接近的排版效果。
按照筆者的經(jīng)驗(yàn),一些新的package,肯定能夠找到能夠用作替代的老版本packages。
只不過這個(gè)操作往往非常耗費(fèi)時(shí)間;而且由于向下兼容,那些新package一兩行命令能夠?qū)崿F(xiàn)的功能,用一些老packages就會(huì)繞很大的圈子,非常麻煩!
優(yōu)點(diǎn):
- 從源頭解決問題
缺點(diǎn):
- 極度花費(fèi)時(shí)間
- 不能做到完全地平替很多新pakcages的功能
2. 下載源碼
第二種方法更為省力:將那些太新的package的源碼(.sty
)下載。然后在項(xiàng)目里倒入本地的.sty
文件。
例如,去從CTAN下載
tabularray.sty
,將文件放到項(xiàng)目目錄下,然后再\usepackage{tabularray}
。
但是這種方法也是治標(biāo)不治本,也并不是所有情況都能奏效。
而且很容易出現(xiàn),你下載了A包,它依賴于B包;你下載了B包,它又依賴于C、D包。。。然后你可能還得理清楚這些package之間的版本關(guān)系。。。
但在某些情況下,比方說依賴的package很少,這還是一個(gè)非常有用的方法。
優(yōu)點(diǎn):
- 快速、省力
缺點(diǎn):
- 治標(biāo)不治本
- 容易出現(xiàn)“連環(huán)依賴”,和版本沖突
一些建議
如果你有計(jì)劃把項(xiàng)目上傳arxiv的話,這里給出一些建議:
-
先去官網(wǎng)檢查一下arxiv最新的tex編譯器的版本是啥(可以去arxiv先嘗試隨便上傳一個(gè)文件,看看編譯的log)。
-
將自己的本地環(huán)境,或者overleaf編譯器設(shè)置為和arxiv一致,以防后續(xù)發(fā)生不兼容的問題。
-
在上傳arxiv之前,把項(xiàng)目里導(dǎo)入過的一些沒用的package全部注釋掉,以最大程度降低上傳出錯(cuò)的可能性。
-
保持自己tex源碼整潔。。至少能夠分得清哪些packages是自己后面加的,哪些是conference template本來就自帶的(不然就得像筆者一樣,一個(gè)個(gè)試)。。。
參考
- https://github.com/tectonic-typesetting/tectonic/issues/871
- Adding .sty files into tex