如何檢查未定義的控制序列?

如何檢查未定義的控制序列?

所以我開始學習 LaTeX,經常發現自己輸錯控制序列,例如\idotsint.我使用編輯器外掛程式來呼叫文件上的lacheck和,這有助於捕獲一些錯誤,但是每當我錯誤輸入控制序列時,這兩個工具都不會報告任何問題。chktex相反,人們pdflatex會意識到類似的工具\idotqint並不存在。

如果我在文件中使用未定義的控制序列,有什麼方法可以讓語法檢查器/linter 進行報告,最好是讓我的編輯器等可以知道要指出哪個行號?

編輯:我正在使用 vim 和 vimtex 插件。

答案1

看起來vimtex插件實際上支援在文件編譯失敗時打開quickfix窗口,但是使用Neovim使vimtex無法完全工作。

這裡了解如何讓它與 Neovim 一起工作。

答案2

很長的評論,不是答案:問題是:「合法」命令的清單是什麼?

\def一個命令(又稱控制序列)可以用幾種方法( 、等)定義(並且存在),\newcommand在前導碼中,或在文檔類(.cls文件)中,或在包(.sty文件)中,或在包中加載另一個包或文檔類,或子文檔包含在\input.此外,定義可以適用於整個文檔,或僅適用於某些部分。這有效:

\documentclass{article}
\begin{document}
{\def\Me{I exist} \Me  }
\end{document}

但這會產生未定義的控制序列錯誤:

\documentclass{article}
\begin{document}
{\def\Me{I exist} \Me } \Me
\end{document}

總而言之,對於編輯器(即使是vim)來說,知道命令何時定義或未定義是一項艱鉅的任務,因此問題不應該集中在語法檢查器插件中,而應該集中在處理錯誤訊息的最佳插件中(但是那麼將是重複的LaTeX 輸出中的錯誤/警告)。

相關內容