尝试编译主 .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}