TeX 容量超出 (OT1+ztmcm)

TeX 容量超出 (OT1+ztmcm)

尝试编译主 .tex 文件时出现以下错误:

TeX capacity exceeded, sorry [parameter stack size=10000]

.log 文件中有一些信息可能相关但对我没有太大帮助:

ABD: EveryShipout initializing macros
LaTeX Font Info:    Try loading font information for OT1+ztmcm on input line 11
.

(/usr/local/texlive/2016/texmf-dist/tex/latex/psnfss/ot1ztmcm.fd
File: ot1ztmcm.fd 2000/01/03 Fontinst v1.801 font definitions for OT1/ztmcm.
)
LaTeX Font Info:    Try loading font information for OML+ztmcm on input line 11
.

(/usr/local/texlive/2016/texmf-dist/tex/latex/psnfss/omlztmcm.fd
File: omlztmcm.fd 2000/01/03 Fontinst v1.801 font definitions for OML/ztmcm.
)
LaTeX Font Info:    Try loading font information for OMS+ztmcm on input line 11
.

(/usr/local/texlive/2016/texmf-dist/tex/latex/psnfss/omsztmcm.fd
File: omsztmcm.fd 2000/01/03 Fontinst v1.801 font definitions for OMS/ztmcm.
)
LaTeX Font Info:    Try loading font information for OMX+ztmcm on input line 11
.

(/usr/local/texlive/2016/texmf-dist/tex/latex/psnfss/omxztmcm.fd
File: omxztmcm.fd 2000/01/03 Fontinst v1.801 font definitions for OMX/ztmcm.
)
LaTeX Font Info:    Try loading font information for OT1+ptm on input line 11.

(/usr/local/texlive/2016/texmf-dist/tex/latex/psnfss/ot1ptm.fd
File: ot1ptm.fd 2001/06/04 font definitions for OT1/ptm.
)
LaTeX Font Info:    Font shape `OT1/ptm/bx/n' in size <12> not available
(Font)              Font shape `OT1/ptm/b/n' tried instead on input line 11.
LaTeX Font Info:    Font shape `OT1/ptm/bx/n' in size <9> not available
(Font)              Font shape `OT1/ptm/b/n' tried instead on input line 11.
LaTeX Font Info:    Font shape `OT1/ptm/bx/n' in size <7> not available
(Font)              Font shape `OT1/ptm/b/n' tried instead on input line 11.

! TeX capacity exceeded, sorry [parameter stack size=10000].
\@ifnextchar #1#2#3->
                     \let \reserved@d =#1\def \reserved@a {#2}\def \reserved...
l.11 \input{monog_pretextuais.tex}

If you really absolutely need more capacity,
you can ask a wizard to enlarge me.

我安装并更新了几乎所有的 LaTeX 软件包(包括 psnfss、collection-fontsextra 等),除了一些非常特定于 Windows 的软件包。我使用 texlive(tlmgr),因为我发现 Ubuntu 存储库中的软件包太过时了。我使用 LaTeXila 和 latexmk(tex > dvi > ps > pdf)来编辑和编译我的文件。对于我的项目来说,将衬线字体设为 Times New Roman(mathptmx)并将文档类设为 abntex2 非常重要,因为我需要遵守许多类似 ABNT 的标准。

我曾尝试创建 MWE。

这些是主文件的内容:

\input{monog_preambulo.tex}

% ELEMENTOS PRÉ-TEXTUAIS
\begin{document}
\pretextual
\pagestyle{plain}
\aliaspagestyle{chapter}{plain}
\pagenumbering{roman}

\input{monog_pretextuais.tex}
\end{document}

monog_preambulo.tex 内容:

\documentclass[
    % -- opções do pacote memoir --
    letter,                                 % estranhamente, Normas do IEL.pdf pag53 recomenda letter
    12pt,                                   % tamanho da fonte
    oneside,                                % para impressão apenas em frente; ver Normas do IEL.pdf pag54
    %openright,                             % capítulos começam em pág ímpar
    %sumario=tradicional,
    oldfontcommands,                        % autoriza certas operações do linguex
    % -- opções do pacote babel --
    english,                                % idioma secundário
    brazil                                  % idioma principal
    ]{abntex2}
%\special{papersize=21.59cm,27.94cm}         % tamanho carta
                                            % https://en.wikibooks.org/wiki/LaTeX/Page_Layout

% margens
\usepackage[
top=3cm,
left=3cm,
bottom=2cm,
right=2cm,
%showframe
]{geometry}
% note que, conforme Norma do IEL.pdf pag53, se essa monografia exceder 100 páginas,
% todas as margens deverão ser de 3cm.

% encoding
\usepackage[utf8]{inputenc}                 % encoding do texto de input
\usepackage[T1]{fontenc}                    % encoding da fonte usada no output

% fontes
\usepackage{mathptmx}                       % serifada: times new roman; integra o pacote psnfss
\usepackage[scaled=.92]{helvet}             % sans: helvetica
\usepackage{courier}                        % monospace: courier
\usepackage{pifont}                         % dingbats, symbols; integra o pacote psnfss

% desenhos
\usepackage{float}                           % permite ambientes float
\usepackage[section]{placeins}              % evita que floats ultrapassem a seção pretendida
%\usepackage{caption}                       %
\usepackage[absolute]{textpos}              % cria caixas em posições absolutas
\usepackage{graphicx}                       % inclui figuras
\usepackage[dvipsnames]{xcolor}             % controle das cores
%\usepackage{pstricks}                       % faz os desenhos vetorizados
%\usepackage[all]{xy}
%\usepackage{tikz}
\usepackage{tikz-qtree}                     % árvores sintáticas
\usepackage{tikz-qtree-compat}              % permite \qroof e \1, \0 nos nodes

% lógica
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
    %\providecommand{\abs}[1]{\lvert#1\rvert}
    % comando para a cardinalidade de conjuntos; \abs{2} retorna |2|
    %\let\emptyset\varnothing                % muda a aparência do símbolo do conjunto vazio

% linguística
\usepackage{linguex}                        % exemplos numerados e glosas
\automath                                   % permite árvores dentro dos exemplos do linguex

% comentários e debugging
%\usepackage{lipsum}                        % texto genérico
\usepackage{verbatim}                       % ambientes código e comentário
\usepackage[portuguese]{todonotes}

% dados para a capa e a folha de rosto
\usepackage{monografiaiel}
\titulo{O t{\'\i}tulo da monografia}
\autor{Daniel Alves da Silva Lopes Diniz}
\orientador[Orientadora:]{Profa. Dra. Ruth Elisabeth Vasconcellos Lopes}
\local{Campinas}
\data{2016}
\instituicao{%
Universidade Estadual de Campinas
\par
Instituto de Estudos da Linguagem
}
\tipotrabalho{Monografia (gradua{\c c}\~ao)}
\preambulo{Monografia apresentada ao Instituto de Estudos da Linguagem da Universidade Estadual de Campinas como requisito parcial para a obten{\c c}\~ao do t\'\itulo de bacharel em Lingu\'\istica.}

% tipografia
% hyperref deve ser declarado antes de abntex2cite
\setlength{\parindent}{2cm}                 % tamanho da tabulação; ver Normas do IEL.pdf pag53
\setlength{\ABNTEXcitacaorecuo}{4cm}        % recuo para citações longas; ver Normas do IEL.pdf pag40
\setlength{\parskip}{.2cm}                  % espaço entre parágrafos
\usepackage{indentfirst}                    % 1º parágrafo indentado
\usepackage{needspace}                      % bloco de texto ininterruptível
%\usepackage{microtype}                      % justificação melhorada
\raggedbottom                               % evita preenchimento da página
%\usepackage{booktabs}                      % tabelas melhores
%\usepackage{multirow}                      % mesclar células verticalmente
\usepackage{hyperref}                       % links internos
\makeatletter
\hypersetup{
    pdftitle={vers\~ao 3},
    pdfauthor={\@author},
%
    colorlinks      = true,                 % cores em vez de caixas
    urlcolor        = Black,                % links externos
    linkcolor       = Black,                % link internos
    citecolor       = Black                 % citações
}
\makeatother

% referências bibliográficas
%\begin{comment}
\usepackage[
    alf,                                    % autor-data
    %versalete,                             % versalete
    abnt-emphasize = bf,                    % destaques em negrito, e não em itálico
    abnt-etal-list = 3,                     % abrevia autorias maiores que 3 (Normas do IEL.pdf pag22
    %abnt-etal-text = it,                   % escreve o et al., em italico
    %abnt-and-type = &,                     % usa o carater '&' no lugar de 'e' para mais de um autor
    abnt-last-names = abnt,                 % trata sobrenomes "estritamente" conforme a ABNT
    abnt-repeated-author-omit = yes         % autores com mais de uma entrada recebem ______
]{abntex2cite}

monog_pretextuais.tex 内容:

nothing; that is, even when all its contents are commented out, I still get an error.

我对这个错误感到非常绝望,因为我需要尽快完成这项工作,但它不再编译了。

答案1

下面的代码识别了原因并防止了无限循环,但不幸的是,\protected在处理原始输入文件名时定义仍然会扩展,因此_仍然会被误解。

最安全的说法似乎是与文件名\automath不兼容,应该在本地使用(或者更好的是,对于整个文档)来禁用该功能。_\noautomath



你陷入了无限循环

\@ifnextchar #1#2#3->\let \reserved@d =
                                       #1\def \reserved@a {#2}\def \reserved...

\@ifnextchar #1#2#3->\let \reserved@d =
                                       #1\def \reserved@a {#2}\def \reserved...

\@ifnextchar #1#2#3->\let \reserved@d =
                                       #1\def \reserved@a {#2}\def \reserved...

\@ifnextchar #1#2#3->\let \reserved@d =

您加载的其中一个包_以一种有点大胆的方式定义,因此文件名不再安全

\input{monog\string_pretextuais.tex}
            %%%%%%%%

作品。


罪魁祸首是\automath

\automath实际上是在gb4e包中定义的(通过间接加载linguex)。

在下面的例子中,我展示了一个更安全的定义,可以向软件包维护者提出,它允许_在文件名和其他地方使用,而无需使用前缀\string

\documentclass{article}
\usepackage{gb4e}

{ % Temporarily change catcodes
  \catcode`\_=\active
  \catcode`\^=\active
   \makeatletter

  \global\def\automath{%
    \catcode`\_=\active
    \catcode`\^=\active
    \protected\def_##1{\gb@ifnextchar^{\automath@two_{##1}}{\ensuremath{\sb{##1}}}}%
    \protected\def^##1{\gb@ifnextchar_{\automath@two^{##1}}{\ensuremath{\sp{##1}}}}}
}


\automath
\begin{document}

\errorcontextlines10000
a_b

\input{monog_pretextuais.tex}
\end{document}

如果您尝试上述操作而不使用中间的代码,{...}那么您会得到相同的无限循环。

答案2

这里有一个解决方案,可以避免您以任何方式修改文档正文。它假定您始终使用 LaTeX 书籍推荐的格式:(\input {foo}即带括号,空格是可选的)。

当我研究这个解决方案时,我发现了一个大问题gb4e:插入符号在序言中加载后仍处于活动状态!这是注定失败导致其他软件包的加载出现问题。例如,文件内容无法在其之后加载。

BEFORE: 7
AFTER: 13

无论如何,这是在上述约束下的一种可能的方法。

\documentclass{article}

\usepackage{filecontents}
\begin{filecontents}{name_with^underscore^and_caret}
Hello: c_d^e
\end{filecontents}

% IMPORTANT NOTE. There is something WRONG with gb4e.
% IT MAKES THE CARET ACTIVE !!!!!!!!!!!!!!!!

\typeout{BEFORE: \the\catcode`\^}
\usepackage{gb4e}
\typeout{AFTER: \the\catcode`\^}

\begingroup
% Temporarily change catcodes
  \catcode`\_=\active
  \catcode`\^=\active
  \makeatletter

% redefine \automath

\gdef\automath{%
    \catcode`\_=\active
    \catcode`\^=\active
    \def\automath@sub##1%
      {\gb@ifnextchar^{\automath@two_{##1}}{\ensuremath{\sb{##1}}}}%
    \def\automath@sup##1%
      {\gb@ifnextchar_{\automath@two^{##1}}{\ensuremath{\sp{##1}}}}%
    \def_{\ifzzz@ininput\string_\else\expandafter\automath@sub\fi}%
    \def^{\ifzzz@ininput\string^\else\expandafter\automath@sup\fi}%
    }

\endgroup

% patch LaTeX
\makeatletter
\newif\ifzzz@ininput
% but this will not have the characters active during file input
% \let\zzz@iinput\@iinput
% \def\@iinput#1{\zzz@ininputtrue\zzz@iinput{#1}\zzz@ininputfalse}

% thus we proceed rather this way:
\long\def \InputIfFileExists#1#2{\zzz@ininputtrue
    \IfFileExists{#1}%
    {#2\@addtofilelist{#1}\zzz@ininputfalse\@@input \@filef@und}}

\makeatother

\automath

% check this does work:
\listfiles

\begin{document}

a_b

\input {name_with^underscore^and_caret.tex}

a_b

\end{document}

在此处输入图片描述

在此处输入图片描述

相关内容