Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将LaTeX警告视为错误_Latex_Warnings_Miktex - Fatal编程技术网

如何将LaTeX警告视为错误

如何将LaTeX警告视为错误,latex,warnings,miktex,Latex,Warnings,Miktex,我在Windows上使用MiKTeX 2.8分发版 我们主要开发软件,并使用LaTeX制作用户说明。我们使用乳胶是因为: 在源代码控制下,它非常适合跟踪更改等 与Word文档不同,源文件不会突然损坏 多个文档可以共享单个部分,因此我们可以将DRY原则应用到文档中,避免某些文档与其他文档不同步。你可以在Word中使用主文档,但我发现它们非常脆弱 作为构建服务器上无人参与构建过程的一部分,我们使用MiKTeX的texify可执行文件构建文档。这相当有效 但是,当开发人员出错时(例如,对不存在的\

我在Windows上使用MiKTeX 2.8分发版

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

  • 在源代码控制下,它非常适合跟踪更改等
  • 与Word文档不同,源文件不会突然损坏
  • 多个文档可以共享单个部分,因此我们可以将DRY原则应用到文档中,避免某些文档与其他文档不同步。你可以在Word中使用主文档,但我发现它们非常脆弱
作为构建服务器上无人参与构建过程的一部分,我们使用MiKTeX的texify可执行文件构建文档。这相当有效

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

我目前有一个构建步骤,它扫描日志文件中以“LaTeX Warning”开头的行,如果有任何行,则构建失败。这是可行的,但显然相当脆弱,可能会让警告溜走。它目前没有在dev机器上的本地版本上使用,但如果这是唯一的方法,我可能必须将它与我们当前使用的编辑器(TeXworks随MiKTeX一起提供)集成

如果出现任何警告(如未定义的引用),我希望构建失败,并且我不希望对日志文件进行不稳定的扫描。有没有提供这种功能


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

最好通过Latex作业管理来实现这一点,但我不知道如何做到这一点

以下是一些可能有用的未经测试的管道胶带:

\def\exitfromtex{\nonstopmode\read16to\dummy} \let\writerrmessage\errmessage \def\errmessage#1{\writerrmessage{#1}\exitfromtex} \def\exitfromtex{\nonstopmode\read16to\dummy} \let\writerMessage\errmessage \def\errmessage#1{\writerrmessage{#1}\exitfromtex} 可以将其放入要求文档编制人员包含的程序包文件中,或烘焙到本地Latex.fmt文件中。

以下(未测试)代码应将任何警告变为错误:

\renewcommand{\GenericWarning}[2]{\GenericError{#1}{#2}{}{This warning has been turned into a fatal error.}}
然后您可能会对过滤警告的包感兴趣

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

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


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

谢谢Charles,我将在接下来的几天内尝试。您也应该尝试在