TeXstudio 无法识别有效的 LaTeX 语法:{eqnarray*} 环境中的语法突出显示错误

TeXstudio 无法识别有效的 LaTeX 语法:{eqnarray*} 环境中的语法突出显示错误

请帮我理解为什么 TeXstudio 不喜欢下面的语法,尽管它能够正确编译?


屏幕截图

\documentclass[letterpaper,12pt]{article}
\usepackage{latexsym,amsfonts,amssymb,amsmath,amsthm}

\usepackage[usenames]{xcolor}
\usepackage{graphicx}
\usepackage{multicol}
\usepackage{marvosym,bm,wasysym,mathrsfs,keystroke,manfnt,fancybox}

\begin{document}

\begin{eqnarray*}
\Rightarrow y_1 = y_0 + \frac{f(x_0, y_0) + f(x_1, y^*_1)}{ 2} h &=& 1 + \frac{f(0, 1) + f(0.1, \textcolor[rgb]{0.00,0.00,1.00}{1.1})}{ 2} \cdot 0.1\\
& =& 1 + \frac{1 + 1.2}{ 2} \cdot 0.1 = 1.11
\end{eqnarray*}

\end{document}

答案1

TeXstudio 会尝试帮助您查找语法错误。您已经注意到,有些命令可以识别,有些则不能。此外,如果您使用了明显错误的语法,TeXstudio 会向您发出警告。

首先:您的代码编译成功,输出结果不错,而且很可能文件中没有任何错误.log(警告和错误)。这应该是您最关心的问题。

现在让我们看一下代码:首先,我们尽可能地减少它,以便查看是什么导致了哪种行为。这总是可以帮助您和我们快速调试。

% arara: pdflatex

\documentclass{article}
\usepackage{amsmath}
\usepackage{xcolor}

\begin{document}
\begin{eqnarray*}
    \Rightarrow y_1 = y_0 + \frac{f(x_0, y_0) + f(x_1, y^*_1)}{ 2} h &=& 1 + \frac{f(0, 1) + f(0.1, \textcolor[rgb]{0.00,0.00,1.00}{1.1})}{ 2} \cdot 0.1\\
    & =& 1 + \frac{1 + 1.2}{ 2} \cdot 0.1 = 1.11
\end{eqnarray*}
\end{document}

我已删除了这里不需要的所有软件包。图片仍然和您的屏幕截图一样。正如 Bernard 所注意到的,我usenames还删除了多余的选项。

现在您可以进入编码区域并将鼠标悬停在突出显示的“错误”部分上。TeXstudio 做得很好,并会告诉您问题是什么(或看起来是什么)。

在我的版本(TeXstudio 2.10.8,已对突出显示进行了几项自定义调整)中,我看到了三种不同的情况:

  • “无法识别的命令\begin{eqnarray*}\end{eqnarray}
  • “表格环境之外的表格命令”用于符号
  • “数学环境之外的数学命令”表示\Rightarrow、下划线、脱字符和\cdot

好吧,由于最后四个命令显然都是数学命令,并且周围环境似乎无法识别,我们应该先看看这部分。第二个迹象是,& 符号在这个环境中也感觉不太舒服。

在这种情况下,有三个选项。1. 使用的环境是错误的、样式不好的或过时的,2. TeXstudio 不了解这个环境(在这种情况下,请在我关于.cwl-files 的帖子上搜索这个网站),或者 3. 你在“选项->配置 TeXstudio...->完成”(或“语法突出显示”)中的设置不正确。

就你的情况而言,快速谷歌一下,你就会发现 Bernards 的第二个担忧:eqnarray已经过时了。你不应该使用它。去掉星号后,所有高亮都会消失。所以 TeXstudio(真可惜)确实将其视为eqnarray*未知但eqnarray正确。我会在有时间的时候报告这一点。也许这会在未来的某个版本中消失。

当我们在 Google 上搜索时,eqnarray*我们发现应该用 替换它align*。这样做将解决您突出显示的所有问题。我已将其替换amsmath为稍微更完整的mathtools,您可以使用新的 MWE:

% arara: pdflatex

\documentclass{article}
\usepackage{mathtools}
\usepackage{xcolor}

\begin{document}
\begin{align*}
    \Rightarrow y_1 = y_0 + \frac{f(x_0, y_0) + f(x_1, y^*_1)}{ 2} h &= 1 + \frac{f(0, 1) + f(0.1, \textcolor[rgb]{0.00,0.00,1.00}{1.1})}{ 2} \cdot 0.1\\
    &= 1 + \frac{1 + 1.2}{ 2} \cdot 0.1 = 1.11
\end{align*}
\end{document}

希望对您有所帮助。如果您遇到错误突出显示的命令,请告诉我。

答案2

TeXstudio 无法识别\begin{eqnarray*} ... \end{eqnarray*}数学环境,因此所有数学命令都将被标记为“数学环境之外的数学命令”,这是已知的无法修复的 TeXstudio-Bug,但正如所述https://sourceforge.net/p/texstudio/bugs/1500/您可以使用“在选项/完成中激活 latex-l2tabu.cwl”来避免此错误:

在此处输入图片描述 (图片:版权声明:本文为转载,转载请保留本声明!经过约翰内斯·卡利奥

相关内容