崇高的数学范围与禁忌相混淆

崇高的数学范围与禁忌相混淆

我正在尝试使用 Sublime Text 3 编写 LaTeX 文档。不幸的是,编写带有数学列的禁忌X[$]会混淆范围机制,如屏幕截图所示。请注意,屏幕截图中的代码仅用于演示目的。

有什么办法可以避免这种混淆吗?

例子 作用域

编辑我正在使用 LaTeXTools

答案1

这实际上并没有回答您的问题,但可能会解决您的问题。如何通过定义新的列类型来避免整个问题?

\documentclass{article}

\usepackage{tabu}

\newcolumntype{M}{>{$}X<{$}}

\begin{document}

\begin{tabu}
  {X M}
  a & x^2
\end{tabu}

\end{document}

在此处输入图片描述

抱歉,我无法回答 Sublime Text 如何处理其范围。您可能需要定义一些例外,以免$ ... $定义数学范围(可能在yourTheme.tmTheme文件中)X[$]。我不具备所需的 xml 技能!

答案2

我做到了。

我希望这不会在将来引起任何其他范围混淆。这是我的解决方案(请注意,我正在使用 Windows 8.1 机器):

  1. 打开 Sublime Text 3 安装目录,找到 Packages 目录。在我的计算机上,它是C:\Program Files\Sublime Text 3\Packages
  2. 在此目录中打开(例如使用 7-Zip)包LaTeX.sublime-package(之前请备份此文件)
  3. 在此包中,您可以看到一个名为的文件TeX.tmLanguage。将此文件复制到您的桌面(或其他任何地方)。
  4. 使用 Sublime打开此复制的TeX.tmLanguage文件。在我的文件中,从第 165 行到第 205 行字典指定范围的条目string.other.math.tex(此信息位于第 186-187 行)。在此字典条目(第 166-167 行)我们有开始键,字符串只是\$告诉 Sublime Text 3“这里开始一个string.other.math.tex范围。这是 onigurama 语法中的正则表达式(请参阅这里这里)。
  5. 将 替换\$为以下正则表达式:(?&lt;!X\[)(?&lt;!X\[[\w\.-])(?&lt;!X\[[\w\.-]{2})(?&lt;!X\[[\w\.-]{3})(?&lt;!X\[[\w\.-]{4})(?&lt;!X\[[\w\.-]{5})(?&lt;!X\[[\w\.-]{6})(?&lt;!X\[[\w\.-]{7})\$ 此正则表达式是 xml 转义的,基本上是负向后视,可保证 之前的内容不是任何具有最多 7 个字符$的禁忌列类型的模式(例如)。如果有人知道更智能的正则表达式,我将不胜感激。X[coef,align,type]X[-1.25cb$]
  6. 保存并关闭文件。同时关闭 Sublime Text 3。现在将编辑后的TeX.tmLanguage文件复制到包中LaTeX.sublime-package(可以通过 7-Zip 实现)。这将覆盖旧TeX.tmLanguage文件。

现在 Sublime Text 应该能够应对数学范围。


编辑

在重新安装 Windows 后,我再次尝试了给定的步骤,并意识到我无法将编辑后的TeX.tmLanguage文件复制回LaTeX.sublime-package包中。因此,我不得不研究原因,并找到了以下说法:C:\Program Files\Sublime Text 3\Packages是只读的。但有可能覆盖这些包中的某些文件。以下是脚步

  1. 在 Sublime Text 3 的用户目录中创建一个名为LaTeX
  2. 将修改后的文件(参见上文)复制TeX.tmLanguage到此文件夹中。

现在文件夹中的此文件User\LaTeX优先于C:\Program Files\Sublime Text 3\Packages文件夹中的相同文件。

相关内容