13

我正在使用适用于 Windows 的 MiKTeX 2.8 发行版。

我们主要开发软件,并使用 LaTeX 来制作我们的用户说明。我们使用 LaTeX 是因为:

  • 在源代码控制下跟踪更改等非常棒。
  • 与 Word 文档不同,源文件不会突然损坏。
  • 多个文档可以共享单个部分,因此我们可以将 DRY 原则应用于我们的文档,并避免某些文档与其他文档不同步。您可以在 Word 中拥有主文档,但我发现它们非常脆弱。

作为我们构建服务器上无人值守构建过程的一部分,我们使用 MiKTeX 的 texify 可执行文件构建文档。这工作得很好。

但是,当开发人员出错时会出现问题(例如,对不存在的 \label 的 \ref )。诸如此类的错误只会在 LaTeX 中生成警告。texify 没有注意到警告,我们在文档中留下了错误。

我目前有一个构建步骤,它扫描日志文件以查找以“LaTeX 警告”开头的行,如果有的话,构建会失败。这行得通,但显然很不稳定,并且可能会让警告溜走。它目前不用于开发机器上的本地构建,但如果这是唯一的方法,我可能必须将它与我们当前使用的编辑器集成(TeXworks 与 MiKTeX 一起提供)。

如果出现任何警告(例如未定义的引用),我希望构建失败,并且我不想对日志文件进行片状扫描。有什么东西提供这个功能吗?

如果我可以在开发机器和构建服务器上的本地构建中使用此功能,那将是一个巨大的好处。

4

2 回答 2

5

以下(未经测试的)代码应将任何警告转换为错误:

\renewcommand{\GenericWarning}[2]{\GenericError{#1}{#2}{}{This warning has been turned into a fatal error.}}

那么您可能对静音包感兴趣以过滤警告。

但是,您还需要安排仅在最后一次运行 LaTeX 时执行此操作,因为在第一次运行期间会出现一些警告,例如未定义的引用。

具有良好 LaTeX 支持的编辑器会告诉您是否需要重新运行 LaTeX(TeXworks 不这样做吗?)。他们通过解析控制台输出或日志文件来做到这一点。它实际上相当健壮(如果您真的担心可以重新定义\GenericWarning以向所有警告添加特征字符串)。我认为解析日志是正确的方法。

将此视为针对文档运行的测试。如果有未定义的引用,则文档构建成功。构建产品是 pdf(或其他)和 TeX 日志。检查日志中的警告是一项测试。

于 2010-07-18T22:13:28.213 回答
1

最好通过 Latex 作业管理来做到这一点,但我不知道有什么方法可以做到这一点。

这里有一些可能有用的未经测试的胶带:

\def\exitfromtex{\nonstopmode\read16to\dummy}
\let\writerrmessage\errmessage
\def\errmessage#1{\writerrmessage{#1}\exitfromtex}

它可以放入您需要文档编制者包含的包文件中,或者烘焙到您的本地 Latex .fmt 文件中。

于 2010-07-14T10:09:02.310 回答