诊断新命令中的错误

诊断新命令中的错误

当我需要在文档中重复使用某些内容时,我会创建自己的命令。例如:

\newcommand{\notification}[2]{      % line 2
    Hello #1, your #2 pie is ready. % line 3
}                                   % line 4

然后我可以在文档中像这样使用它:

\notification{Mr. White}{pumpkin}   % line 6

但是,如果我在编码时犯了一些错误newcommand,它不会显示“l.3”;它会显示“l.6”。请参见下面的示例(我添加了一个额外的“&”):

\documentclass{article}
    \newcommand{\notification}[2]{
        Hello #1, your #2 & pie is ready.
    }
\begin{document}
    \notification{Mr. White}{pumpkin}
\end{document}

错误信息如下:

! Misplaced alignment tab character &.
\notification #1#2-> Hello #1, your #2 &
                                         pie is ready. 
l.6     \notification{Mr. White}{pumpkin}

在这种情况下,诊断很简单,因为我可以快速识别该行Hello #1, your #2 pie is ready.并通过搜索找到它;但是,在更复杂的文档中,Hello #1, your #2 pie is ready.可能会出现几十次,所以我不知道在哪里查找;或者报告的错误显示其他代码(我假设是底层 TeX 代码)实际上并不包含在我编写的任何代码中,所以这些消息似乎没什么帮助。

可以采取哪些常规步骤来帮助识别此类错误的来源?

答案1

我认为这不是 LaTeX 的问题,更多的是工作流程的问题:

  • 每当我定义一个 时newcommand,我都会在实际文档中使用它之前在几个样本上进行测试。如果您要编写大量文件,请保留一个临时文件,这样您就不会得到一个导致混乱的坏辅助文件。

  • 如果我编辑现有的newcommand,我每次只编辑一个。因此,如果出现错误,我知道它来自哪里。

  • 如果它们需要特定的软件包或 TikZ 库,请重复使用newcommands并在它们旁边添加注释。我几年前为我的论文创建了大约 30 个宏。我为特定文档制作了特殊的宏,但重复使用代码显然可以最大限度地减少出现错误的可能性。

  • 我知道这个答案没什么帮助,但是它确实避免了问题,而且我从未因编码错误的宏而出现错误。

相关内容