babel、beamer 和 nag 冲突

babel、beamer 和 nag 冲突

使用下面的 MWE,我遇到了一些问题。如图所示,MWE 编译正常。如果我从 book 更改为 beamer,我会收到“TeX 容量超出”错误。如果我注释掉 nag 或 babel,它会再次编译正常。这是怎么回事?

%\documentclass{beamer} 
\documentclass{book}    
\RequirePackage[l2tabu, orthodox]{nag}      % Require syntax analyzis

%\usepackage[T1]{fontenc}
%\usepackage[utf8]{inputenc}
\usepackage{xkeyval}    % Allow to use key-value pairs in arguments of macros
\usepackage{listingsutf8}   % Use program listings

    \usepackage[english,magyar]{babel}

\makeatletter
    \define@key{MEMacros}{language}{\def\ME@language{#1}}
    \define@key{MEMacros}{options}{\def\ME@options{#1}}
%%%Usage \MESourceFile[keys]{source file}{caption}{label}
    \newcommand\MESourceFileNew[4][]{
        \setkeys{MEMacros}{language={[ANSI]C},options={}, ,#1}% 
            \begingroup\edef\x{\endgroup\noexpand
                \lstinputlisting[language={\ME@language},\ME@options,label=#4, name=#4]{#2}}
            \x
}
\makeatother

\begin{document}

    \MESourceFileNew[language={[ANSI]C}, options={numbers=left}
    ]{HelloWorld.c}{caption}{lst:HelloWorld.c}

\end{document}

#include <stdio.h>

int main()
{
    printf("hello, world\n");
}

答案1

问题在于与选项的交互:如果我添加到示例文件中,magyar这就是我得到的结果\errorcontextlines=100

\nag@@warning@xliii  ->\nag@captioncheck 
                                         \nag@haslabeltrue 
\@@magyar@orig@label ->\nag@@warning@xliii 
                                           \nag@@label@xliii 
\@@magyar@labelb #1->\@@magyar@orig@label 
                                          {#1}\begingroup \c@page \@m \edef ...

\@@magyar@labelb #1->\@@magyar@orig@label {#1}
                                              \begingroup \c@page \@m \edef ...

\@@magyar@labelb #1->\@@magyar@orig@label {#1}
                                              \begingroup \c@page \@m \edef ...

因此,问题在于在 的情况下如何检查标签,以及在与和对 进行listings的重新定义的交互中如何检查标签。magyar.ldfbeamer\label

我认为没有合理的方法来解决这个冲突;遵循所执行的所有杂耍magyar.ldf非常复杂。

最好的办法是忘记nag

相关内容