如何调试 pdfLaTeX 代码中的无限循环

如何调试 pdfLaTeX 代码中的无限循环

我有一些代码在加载 myriadpro 包和在文档中仅加载符号时崩溃\oiint

\documentclass[]{scrbook}
\usepackage[T1]{fontenc} 
\usepackage{amsmath} %
\usepackage[%
  onlytext,    % only change the text fonts
  sansmath,    % provide math version sans and sansbold 
]{MyriadPro}
\begin{document}
\begin{equation}
\oiint  
\end{equation}
\end{document}

请注意,MyriadPro 包和字体在 ctan 上不可用。

知道如何找出 pdflatex 崩溃的原因吗?(CPU 为 100%)

编辑:pdftex 版本是: This is pdfTeX, Version 3.1415926-2.3-1.40.12 (MiKTeX 2.9) (preloaded format=pdflatex 2011.12.12)

编辑2:MyriadPro 包的作者确认,当“Myriad 仅使用text 和 sansmath 加载,并且在文档中以数学版本 normal 调用数学命令,而该命令未由 MyriadPro (\oiint) 定义”时,会发生这种无限循环。

EDIT3:这里是无限循环的代码,它不断重复,最后一个数字不断增加。但是,我不知道错误来自哪里。无论如何,我现在对如何调试此类错误有了更多的了解,并且可以向包的作者提供更好的错误描述。

is@range #1-#2@nil ->if >#2expandafter check@single else expandafter check@rang
e fi 
#1<-5
#2<->
{if: (level 6) entered on line 10}
{true}
{expandafter}
{else: if (level 6) entered on line 10}
{fi: if (level 6) entered on line 10}

check@single #1>#2<#3@nnil ->def reserved@f {extract@rangefontinfo <#3@nnil }if
dim f@size p@ =#1p@ set@simple@size@args #2<#3@nnil execute@size@function sizef
n@info ifx external@font @empty else let reserved@f @empty fi fi reserved@f 
#1<-5
#2<-
#3<-6><7><8><9><10><12>gen*cmr<10.95>cmr10<14.4>cmr12<17.28><20.74><24.88>cmr17
<-*>@nil <
{def}
{changing reserved@f=relax}
{into reserved@f=macro:->extract@rangefontinfo <6><7><8ETC.}
{ifdim: (level 6) entered on line 10}

f@size ->8
{false}
{fi: ifdim (level 6) entered on line 10}

reserved@f ->extract@rangefontinfo <6><7><8><9><10><12>gen*cmr<10.95>cmr10<14.4
>cmr12<17.28><20.74><24.88>cmr17<-*>@nil <@nnil 

extract@rangefontinfo #1<#2>->is@range #2->@nil #2>
#1<-
#2<-6

答案1

它很可能不是崩溃,而是陷入无限循环。将 添加\tracingall到文档( 之后\begin{document})并研究输出/日志文件。

相关内容