我正在努力解决一个逻辑问题。我有一个程序列表,其中有一些突出显示的行。这些行用气球表示,该气球是在同一个宏中创建的,该宏也会创建程序列表。我想在突出显示气球中添加一个注释(另一个气球),也在同一宏中。做注释的行表示突出显示气球不存在;这在第一次传递中是正确的,但在第二次传递中不正确。在 IDE 中,这很好:我知道原因,并且第二次也开始编译,而且那次没有错误。
现在我正在使用 UseLATEX,即它创建一个 Makefile 并调用 pdflatex。pdflatex 正确准备文件,写入如下消息
Output written on MyFile.pdf (53 pages, 518340 bytes).
Transcript written on MyFile.log.
CMakeFiles/MyFile_pdf.dir/build.make:75: recipe for target 'MyFile.pdf' failed
输出文件是完美的,除了注释指向某个未定义的位置。这不是问题,UseLatex Makefile 无论如何都会编译多次,从第二次传递开始,错误消息消失,.pdf 是正确的。但是,“make”注意到了错误,中止了整个批处理,甚至删除了 .pdf 文件;也就是说,重复的“make”是没有希望的。最后,我得到了一个中止的编译、一个被删除的 .pdf 文件和一个显示没有错误的日志文件。
是否有可能在任何层面上说服任何参与者不要太认真地对待这个错误?
答案1
最后,主要从 John Kormylo 的评论开始,使用宏
我如何知道某个节点是否已定义?,我可以绕过我的问题。我只在(在第一次传递期间)引用节点被定义时定义依赖节点。除此之外,我坚持我的观点,即未定义的节点并不比缺少 ToC、bibentry 或引用更糟糕,因此不应将其标记为错误(警告更合适)。