请帮我理解为什么 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”来避免此错误:
(图片:版权声明:本文为转载,转载请保留本声明!经过约翰内斯·卡利奥)