我使用 TeXstudio 作为编辑器,因为我认为它提供了我尝试过的其他软件(即 Kile 和 TeXworks)中最好的功能,尤其是在突出显示、自动完成和拼写检查方面。它正确识别了我使用的所有命令和环境,甚至包括那些我自己在序言中声明的命令和环境\newcommand
。
然而我有一些像这样的台词
\DeclarePairedDelimiter{\abs}{\lvert}{\rvert}
\DeclarePairedDelimiter{\norma}{\lVert}{\rVert}
TeXstudio 无法将其识别为有效命令,因此在整个文本中以红色突出显示它们,以将它们标记为错误的 LaTeX 命令。
无论如何,如果我在 TeXstudio 高级突出显示选项页面中手动添加它们并重新启动程序,一切都会正常,并且糟糕的红色突出显示会消失。
但是,有没有办法让 TeXstudio 自动了解这些新命令,或者我必须在选项中手动指定所有命令?
编辑:此外,\norma
在选项中简单地添加一个新命令会使 TeXstudio 不知道这是一个可以自动完成的新命令:如果我输入\norma
然后输入{
,TeXstudio 会用替换我的输入\normalcolor{}
,这不是我想要的!
答案1
在@Torbjørn 的帮助之后我想到了这个解决方法。
- 创建一个
mydefinition.cwl
文件并将其放在%APPDATA%/texstudio
文件夹中(我使用的是 Windows,不知道在其他操作系统中它应该放在哪里)。 \DeclarePairedDelimiter{cmd}{left_delim}{right_delim}#md
在文件中添加该行.cwl
。mydefinition.cwl
在 TeXstudio 选项 -> 完成中,选中列表中出现的复选框。
这为我解决了这个问题:我获得了我的\abs
和\norma
命令的正确自动完成功能!
现在稍微解释一下:据我所知(但如果有人有更多信息,请告诉我!),问题来自 TeXstudio.cwl
文件,这些文件尚未完成。有些软件包中的一些命令尚未添加到 TeXstudio 的自动完成文件中。TeXstudio 团队正在努力改进这一点。
答案2
这是一种 hack 解决方法,但它不那么繁琐,而且对我来说很有效:创建一个具有相同名称的 \newcommand,但确保 LaTeX 不会读取它。为此,请放置一行,例如
\iffalse
\newcommand{\abs}{abcdef}
\fi
在序言中。突出显示应该可以正常工作而不会影响文档输出。(注意:但这并不能修复自动完成。)