我是 Latex 的新手,目前正在使用 Overleaf 來管理我的 Latex 檔案。這是我的問題:我在 Overleaf 中有多個項目,每個項目都關於一個特定主題。我想創建另一個項目,它以某種方式讀取所有其他項目並獲取每個項目中的頁數(關聯 PDF 文件的頁數)。這個新項目充當頁面計數器,追蹤所有其他項目的長度。有沒有一種簡單的方法可以做到這一點?
另外,如果這在 Overleaf 中不可行,但在 Texstudio 或任何本地 tex 編輯器中很簡單,請現在告訴我
答案1
在任何現代 TeX 系統上,假設您使用 pdfTeX 引擎(這是 Overleaf 上的預設引擎),您可以使用以下巨集列印外部 PDF 檔案的頁數:
\def\numberofpages#1{\pdfximage{#1}\the\pdflastximagepages}
其中參數是相關 PDF 檔案的相對路徑。有其他引擎的版本取得外部PDF的頁數。這部分並不是特定於 Overleaf,如果需要,您可以在您自己的本地 TeX 發行版上使用它。
文件分佈在多個 Overleaf 項目中
Overleaf 上的技巧(全面披露:我是 Overleaf 的支援人員。)然後將從您的摘要項目中的其他項目存取 PDF 文件,該項目正在計算頁面(讓我們稱之為摘要項目)。這可以透過將其他項目的輸出檔案作為新檔案包含在摘要項目中來完成。
我不建議這樣做,因為它依賴於記住保持所有外部文件的更新。但如果你絕對需要這樣做,它是可以做到的。
開啟摘要項目,然後選擇「新檔案」->「來自另一個項目」。然後選擇要計算頁數的項目。在“選擇檔案”下拉清單下,按一下“從輸出檔案中選擇”,然後選擇output.pdf
。
然後為摘要項目中的輸出 PDF 檔案選擇合適的名稱。 (如果您想計算多個外部頁面的頁面數,則該值必須是唯一的。)
然後\numberofpages
在摘要項目的序言中的某個位置定義上面列出的巨集。假設我引入帶有文件名的外部 PDF PaperA.pdf
,那麼我可以使用以下命令在摘要項目中的任何位置列印其頁數
\numberofpages{PaperA.pdf}
The caveat is that as you edit your other project(s) and return to the summary project, you need to remember to "Refresh" each of your external PDF files with the button that will appear on each external PDF file you add to the summary專案:
由於 Overleaf 的架構,這些外部檔案不可能隨著其他專案的變更而自動更新。這必須使用“刷新”按鈕手動完成。
在單一 Overleaf 專案中包含多個文檔
如果您在一個 Overleaf 專案中有多個文檔,則可以使用xr
類似程式碼和此\numberofpages
巨集的某種組合來更自動地完成此操作,或者lastpage
如 John 在評論中提到的那樣。但在 Overleaf 上使用此方法也有其他權衡,具體取決於您在其他每個文件中的具體內容。參考我可以選擇哪個檔案是 Overleaf 專案中的主 tex 檔案嗎有關在單一 Overleaf 專案中編譯多個文件的詳細資訊。
如果您最終將多個文件合併到一個 Overleaf 專案中,這篇說明文章將介紹如何使用latexmkrc
Overleaf 上的文件觸發在單一 Overleaf 專案中編譯其他文件:與 Overleaf 中的 xr 套件交叉引用。該文章討論如何使用該xr
套件,但可以使用相同類型的方法在專案的輸出檔案區域中取得更新的 PDF,以便與\numberofpages
上述巨集一起使用。