当我需要在文档中重复使用某些内容时,我会创建自己的命令。例如:
\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 个宏。我为特定文档制作了特殊的宏,但重复使用代码显然可以最大限度地减少出现错误的可能性。我知道这个答案没什么帮助,但是它确实避免了问题,而且我从未因编码错误的宏而出现错误。