帮助我调试有错误的长 LaTex 方程式

帮助我调试有错误的长 LaTex 方程式

我想学习调试如下所示的长 LaTeX 方程式:

$\tau=\int\frac{dt}{\gamma} = \int\sqrt{1-\frac{v(t)^2}{c^2}}dt = \int\sqrt{1-\frac{1}{c^2}\left(\left(\frac{dx}{dt}\right)^2+\left(\frac{dy}{dt}\right)^2+\left(\frac{dz}{dt}\right)^2 \right) dt$

我曾尝试在 iPad 的 MathBot 等地方找到 LaTeX 调试器,但正如你在下面看到的,MathJax 几乎是最好的工具,尤其是这个脚本这里但该工具仅用于就绪输出,我按下它,如果出现错误,它会显示为红色。如果我能找到某种工具,将我方程式中可能出现错误的点显示为红色,我会非常高兴,有这样的 TeX 调试工具吗?

在此处输入图片描述

也许对读者有用

  1. 帮助我快速用颜色和其他辅助工具写出长 LaTeX 方程式

  2. 如何最好地调试 LaTeX?

答案1

与我写的类似帮助我快速用颜色和其他辅助工具写出长 LaTeX 方程式,以及其他人在这里写的内容,调试这些问题的唯一方法实际上是将它们分解并以更清晰的方式重新编写。

我不认为会有通用方法适用于所有类型的问题。但对于这个特定情况,方程本身给出了以下信息:

缺少} 插入。

这个错误通常意味着花括号不匹配。所以我接下来要做的是使用一个我认为大多数LaTeX 编辑器/IDE(我知道它在 TeXShop 和 TeXworks 中),然后单击打开的花括号来找到匹配的关闭花括号。

在此处输入图片描述

因此,第一个匹配,接下来的几个也匹配:

在此处输入图片描述

在此处输入图片描述

当你到达\sqrt第三个等号之后时,你会发现没有匹配的右括号:

在此处输入图片描述

这样就可以知道问题出在哪里了。添加右括号可以修复语法,然后调试就完成了:

在此处输入图片描述

因此,现在剩下的只是外观方面。积分符号似乎相当小。因此,您可以bigints按照以下方式加载包大积分符号,但我发现使用 的效果更好 \mathlarger

在此处输入图片描述

笔记:

  • 我认为这个方程应该处于显示模式,但结果大平方根太垂直,这对我来说看起来不太好,所以把它留在内联模式
  • 另外,不确定为什么你在周围加上括号(t),但我保留了它们原样。

然后,添加一些新行并留出空间以使其更具可读性,我们有:

\documentclass{article}
\usepackage{amsmath}

\usepackage{relsize}
\newcommand{\intL}{\mathlarger{\mathlarger\int}}

\begin{document}
$\tau
  = \intL\frac{dt}{\gamma} 
  = \intL\sqrt{1-\frac{v(t)^2}{c^2}}dt 
  = \intL\sqrt{
                1 - \frac{1}{c^2} 
                \left(
                         \left(\frac{dx}{dt}\right)^2
                       + \left(\frac{dy}{dt}\right)^2
                       + \left(\frac{dz}{dt}\right)^2 
                \right)
              } dt$
\end{document}

如果您经常输入这些类型的方程式,您可能需要考虑定义如下所示的宏,\D{}以使您的代码更具可读性且更易于调试。此外,输入d应该dt是直立的。因此,通过这些更改,您将获得:

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}

\usepackage{relsize}
\newcommand{\intL}{\mathlarger{\mathlarger{\int}}}
\newcommand{\dd}[1]{\mathrm{d}#1}
\newcommand{\D}[1]{\left(\frac{\dd{#1}}{\dd{t}}\right)}

\begin{document}
$\tau
  = \intL\frac{\dd{t}}{\gamma} 
  = \intL\sqrt{1-\frac{v(t)^2}{c^2}}\dd{t} 
  = \intL\sqrt{
                1 - \frac{1}{c^2} 
                \left( \D{x}^2 + \D{y}^2 + \D{z}^2 \right)
              } \dd{t}$
\end{document}

答案2

您忘了关闭平方根命令\sqrt

你的意思是

$\tau=\int\frac{dt}{\gamma} = \int\sqrt{1-\frac{v(t)^2}{c^2}}dt = \int\sqrt{1-\frac{1}{c^2}}\left(\left(\frac{dx}{dt}\right)^2+\left(\frac{dy}{dt}\right)^2+\left(\frac{dz}{dt}\right)^2 \right) dt$

我猜。

答案3

我不知道是否有一个工具可以完全满足您的需求。也许在一般情况下(LaTeX 是一种宏语言等),甚至不可能有这样的工具。不过,拥有一个带有良好 LaTeX 插件的像样的编辑器是朝着这个方向迈出的一大步(颜色、突出显示右括号等)。

除此之外,使用多行代码而不是单行代码也很有帮助。还有缩进。这样,你总是可以一次注释掉一行。这总是有助于查明错误。看看你的代码可以有多易读。

\[
\tau = \int\frac{dt}{\gamma} 
     = \int\sqrt{1-\frac{v(t)^2}{c^2}}dt 
     = \int\sqrt{1-\frac{1}{c^2}}
           \left(\left(\frac{dx}{dt}\right)^2 + 
                 \left(\frac{dy}{dt}\right)^2 +
                 \left(\frac{dz}{dt}\right)^2 
           \right) dt
\]

我发现另一种有用的技巧是分块工作,或者更准确地说,先编写命令,然后再填充参数。例如

% first step
\dfrac{}
      {}

% second step
\dfrac{numerator}
      {denominator}

定义自定义命令也非常有用。例如

\newcommand{\abs}[1]{\ensuremath{\left|#1\right|}}
\newcommand{\paren}[1]{\ensuremath{\left(#1\right)}}
\newcommand{\brac}[1]{\ensuremath{\left[#1\right]}}
\newcommand{\Brac}[1]{\ensuremath{\left\{#1\right\}}}

另一种方法是检查是否有一个合适的转换器可以将 Word 或 LibreOffice 方程式转换为 LaTeX 并使用它,但从长远来看,这可能会有相当大的限制,因为您可能需要手动调整方程式(没有自定义命令等)

相关内容