如何让 TeXstudio 识别 \DeclarePairedDelimiter 声明

如何让 TeXstudio 识别 \DeclarePairedDelimiter 声明

我使用 TeXstudio 作为编辑器,因为我认为它提供了我尝试过的其他软件(即 Kile 和 TeXworks)中最好的功能,尤其是在突出显示、自动完成和拼写检查方面。它正确识别了我使用的所有命令和环境,甚至包括那些我自己在序言中声明的命令和环境\newcommand

然而我有一些像这样的台词

\DeclarePairedDelimiter{\abs}{\lvert}{\rvert}
\DeclarePairedDelimiter{\norma}{\lVert}{\rVert}

TeXstudio 无法将其识别为有效命令,因此在整个文本中以红色突出显示它们,以将它们标记为错误的 LaTeX 命令。

无论如何,如果我在 TeXstudio 高级突出显示选项页面中手动添加它们并重新启动程序,一切都会正常,并且糟糕的红色突出显示会消失。

但是,有没有办法让 TeXstudio 自动了解这些新命令,或者我必须在选项中手动指定所有命令?

编辑:此外,\norma在选项中简单地添加一个新命令会使 TeXstudio 不知道这是一个可以自动完成的新命令:如果我输入\norma然后输入{,TeXstudio 会用替换我的输入\normalcolor{},这不是我想要的!

答案1

在@Torbjørn 的帮助之后我想到了这个解决方法。

  1. 创建一个mydefinition.cwl文件并将其放在%APPDATA%/texstudio文件夹中(我使用的是 Windows,不知道在其他操作系统中它应该放在哪里)。
  2. \DeclarePairedDelimiter{cmd}{left_delim}{right_delim}#md在文件中添加该行.cwl
  3. mydefinition.cwl在 TeXstudio 选项 -> 完成中,选中列表中出现的复选框。

这为我解决了这个问题:我获得了我的\abs\norma命令的正确自动完成功能!

现在稍微解释一下:据我所知(但如果有人有更多信息,请告诉我!),问题来自 TeXstudio.cwl文件,这些文件尚未完成。有些软件包中的一些命令尚未添加到 TeXstudio 的自动完成文件中。TeXstudio 团队正在努力改进这一点。

答案2

这是一种 hack 解决方法,但它不那么繁琐,而且对我来说很有效:创建一个具有相同名称的 \newcommand,但确保 LaTeX 不会读取它。为此,请放置一行,例如

\iffalse
\newcommand{\abs}{abcdef}
\fi

在序言中。突出显示应该可以正常工作而不会影响文档输出。(注意:但这并不能修复自动完成。)

相关内容