我有一种感觉,当我最终弄清楚这个问题的根源时,这将会相当令人尴尬,但是因为我已经为此奋斗了一段时间,所以我发布这个问题更多的是关于调试问题的建议,而不是特定的代码修复。
遗憾的是,我没能想出一个合适的 MWE 来重现这个问题。这是我在解开所有宏后能得到的最接近的答案。希望这里有一些线索可以帮助我弄清楚应该从哪里着手。
背景:
该图的原始(完整)版本和相关文本编译为standalone
使用 TeXLive2010 编译为文件,并按要求生成了 6 张图表。然而,我不是能够成功地将此standalone
文件合并到更大的文档中(超过 100 页)。当时,我试图制作 MWE,但只能将其简化为特定顺序的复杂图形集合(即,仅更改顺序或图形似乎会产生结果,但不同的顺序会以错误终止 - 我认为它们是TeX Capacity
相关的错误)。由于这个 MWE 非常大,我没有在这里发布它,我想等到 TeXLive2011 准备好了。因此,作为一种解决方法,我继续使用这个图形集合不是在我的文档中。这已经是很久以前的事了,而且我的大部分代码都已经更改,因此不确定当前表单是否仍会在使用 TeXLive2010 的大型文档中表现出这种行为。
现在,使用 TeXLive2011,似乎我只需使用这个图形 6 次就可以重现问题。删除其中任何一个实例都会产生输出,因此我需要所有 6 次才能重现问题。
代码摘要:
下面给出的代码按提供的方式进行编译,并使用 TeXLive2010 和 TeXLive2011(截至 2011 年 10 月中旬更新)生成 6 张图表。
该文件01R28-Fig.tex
是一个独立文件,它绘制了以下函数的图形(这里的颜色与图形的颜色相对应):
主文件两次使用独立图形(两个不同的域)来表示三个值,并调整、等a={3,4,5}
的值。这里有一些代码实际上应该没有任何效果。我保留了这些代码,因为这是我的宏应该包含的内容,删除其中一些xmin
xmax
种类可以缓解问题。例如,每条路径都使用 进行标记name path global=
。由于我删除了访问路径的代码部分,这实际上应该不会产生影响,但确实会产生影响。此外,诸如更改颜色之类的小事也会产生显著的效果。
好的,那么如果此代码编译成功,那么问题到底是什么?好吧,如果我取消注释,\usepackages{MyPackages}
我就会遇到问题。此文件不仅包含我包含的软件包,还包含我的所有宏和其他设置信息。不幸的是,我无法将内容缩减MyPackages
为可以发布的内容。
我尝试MyPackages
通过删除不需要的代码来减少代码量。实际上,这里不需要任何代码(因为这个 MWE 可以编译),但只要包含它,我就会得到TeX 容量超出。如果我尝试将其复制并粘贴到此文件中,问题就会消失。如果我注释掉 所包含文件中看似不相关的代码片段MyPackages
,一切似乎都会正常。对我来说,这表明存在一些内存损坏,所以我想知道我还应该尝试什么……
我所知道的关于 TeXLive2011 的唯一具体的事情MyPackages
是我需要添加一个\ifdefined\newmdenv
(为了能够使用 TeXLive2010 运行它),因为它似乎只适用于 TeXLive2011。
下面\usepackage{MyPackages}
,我列出了几个\def
可用于启用/禁用代码部分的命令。
TeXLive2010:(\usepackage{MyPackages}
未注释):
现在,此处发布的 MWE 可与 TeXLive2010 和 TeXLive2011 版本配合使用。但使用MyPackages
包含的版本时,我得到了以下行为:
使用 TeXLive2010,我确实得到了期望的输出经过多次失误(并击中返回在每个之后)。为了使这个更容易阅读,我把这些错误信息放在了附录 A以下。
这似乎是enumitem
,但这个文件中的列表似乎非常基础,所以不明白序言中的某些内容会产生什么影响。但尽管如此,我确实使用 TeXLive2010 获得了正确的输出。此外,如果我重新运行(保留 .aux 文件),我会收到相同的消息(除了“rerunfilecheck 警告”不再出现)。
TeXLive2011:(\usepackage{MyPackages}
未注释):
但是,当我切换到使用 TeXLive2011 时,事情变得很奇怪。第一次(即删除所有 .aux 文件后)运行它时,我收到一个致命错误:
./01R28-Fig.tex:138: TeX capacity exceeded, sorry [main memory size=3000000].
<to be read again>
\unhbox
l.138 \end{tikzpicture}
./01R28-Fig.tex:138: ==> Fatal error occurred, no output PDF file produced!
Transcript written on 01R28-V6.log.
并且没有产生任何输出。但我确实获得了所需的输出,如下所示:
在后续运行中(上面的致命错误留下了 .aux 文件),我确实得到了期望的输出经过几次与 TeXLive2010 产生的错误类似但不同的错误。我已将这些错误消息包含在附录 B以下。
下面的所有后续项目也都要求我跳过这些错误,并且都是初始运行(删除了所有 .aux 文件)。
violet
如果我仅将red
GraphF的两个实例更改为我确实得到了期望的输出。我在序言中能做什么,以至于微小的颜色变化会导致截然不同的结果?使用
\def\NumOfSamples{400}
500 代替我确实得到了想要的结果。\def\SuppressSpuriousNode{}
注释, 对代码的唯一影响是\node at (axis cs: 2,4) [cyan] {\GraphLabelF};
添加了这个。同样,注释掉这个后,我确实得到了想要的结果。三张图和两个轴均通过 进行标记
name path global
。注释掉任何人下列中删除的names path global
:\def\AddNamePathOfAxis{}
name path global
从两个轴上移除\def\AddNamePathOfGraphF{}
\def\AddNamePathOfGraphG{}
也会导致文件产生所需的输出。
禁用任何一通过再次注释掉
\def\ShowFigureA{}
...\def\ShowFigureF{}
产生所需的输出。
禁用全部六位数字仍然会产生enumitem
错误并产生:
这是为了说明为什么我无法最小化中的内容MyPackages
。在其中一个包含的文件中,MyPackages
我有这个宏:
\newcommand{\KERN}{}
如果我评论这一行,我得到期望输出。此宏仅在本文档中未使用的环境中使用,并且除了在最坏的情况下添加一个空格之外,该命令实际上不能做太多事情,但它却彻底改变了行为。
关于我应该去哪里寻找,您有什么想法吗?
如果你真的想解决代码问题,我应该用什么来MyPackages
复制这种行为?:-) 颜色的变化对我来说是最令人困惑的。是的,线条确实显示为红色。
以下是代码:
\RequirePackage{etoolbox}
\documentclass{standalone}
\usepackage{standalone}
\usepackage[shortlabels]{enumitem}
\usepackage{xcolor}
\usepackage{xparse}
\usepackage{pgfplots}
\usetikzlibrary{calc,intersections}%
\usepackage{filecontents}
%\usepackage{MyPackages}% The problem is in here somewhere
\def\NumOfSamples{500}% Compiles with 100,200,300, or 400
\def\ShowFigureA{}% These control which of the 6 figures are drawn.
\def\ShowFigureB{}% Commenting out any of these results (i.e.,
\def\ShowFigureC{}% disabling a figure), results in the desired
\def\ShowFigureD{}% output being produced.
\def\ShowFigureE{}%
\def\ShowFigureF{}%
\def\SuppressSpuriousNode{}% Compiles if ANY of these are
\def\AddNamePathOfAxis{}% commented out.
\def\AddNamePathOfGraphF{}%
\def\AddNamePathOfGraphG{}%
%%-----------------------------------------------------------------
%%-----------------------------------------------------------------
%%-----------------------------------------------------------------
\begin{filecontents}{01R28-Fig.tex}
\documentclass{standalone}
\usepackage{xcolor}
\usepackage{xparse}
\usepackage{pgfplots}
\usetikzlibrary{calc,intersections}%
\begin{document}
\providecommand*{\A}{3}%
\providecommand*{\NumOfSamples}{500}%
\pgfmathdeclarefunction{log}{2}{\pgfmathparse{ln(#2)/ln(#1)}}% log_#2 (#1)
\pgfmathdeclarefunction{GivenF}{1}{\pgfmathparse{(#1)^(\A)}}
\pgfmathdeclarefunction{GivenG}{1}{\pgfmathparse{(\A)^(#1)}}
\pgfmathdeclarefunction{GivenH}{1}{\pgfmathparse{log(\A,(#1))}}
\NewDocumentCommand{\GraphFunction}%
{O{Style_w} O{Style_w} m m m g}{%
% [GraphStyle] [LabelStyle] {x-min}{x-max} {f(x)} {<label>}
\addplot[%
mark=none,
domain=#3:#4,
samples=\NumOfSamples,% Adjust value above
#1
]
({x},{#5})
node [#2] {#6}
;
}
\begin{tikzpicture}
%--------------------------------------------------------------
% These are only needed for this file to be compilable standalone
% These are to be set prior to including this figure to customize this
\providecommand*{\XAxisMin}{-1.0}
\providecommand*{\XAxisMax}{3.0}
\providecommand*{\YAxisMin}{-2.0}
\providecommand*{\YAxisMax}{10}
\providecommand*{\DomainMinF}{\XAxisMin}
\providecommand*{\DomainMaxF}{2.2}
\providecommand*{\DomainMinG}{\XAxisMin}
\providecommand*{\DomainMaxG}{2.1}
\providecommand*{\DomainMinH}{0.1}
\providecommand*{\DomainMaxH}{\XAxisMax}
%--------------------------------------------------------------
\newcommand*{\GraphLabelF}{$y = x^{\A}$}
\newcommand*{\GraphLabelG}{$y = \A^x$}
\newcommand*{\GraphLabelH}{$y = \log_{\A} x$}
\begin{axis}[xmin=\XAxisMin, xmax=\XAxisMax, ymin=\YAxisMin, ymax=\YAxisMax]
%^^^^^^^^^^^^^^^^^^^^^^^^^%
% Compiles if \AddNamePathOfAxis is supressed:
% i.e., the `name path global` settings are disabled.
%^^^^^^^^^^^^^^^^^^^^^^^^^%
\ifdefined\AddNamePathOfAxis
\tikzstyle{XAxisNameStyle}=[name path global=XAxisPath]% Craps out with
\tikzstyle{YAxisNameStyle}=[name path global=YAxisPath]% these settings
\else
\tikzstyle{XAxisNameStyle}=[]% Compiles with these settings
\tikzstyle{YAxisNameStyle}=[]% i.e., axis are not named
\fi
\addplot [% Name the x axis
XAxisNameStyle,
gray, thick
]
coordinates{(\XAxisMin,0.0) (\XAxisMax,0.0)};
\addplot [% Name the y-axis
YAxisNameStyle,
gray, thick
]
coordinates{(0,\YAxisMin) (0,\YAxisMax)};
%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^%
% Compiles if we disable the `name path global` setting for GraphF
%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^%
\ifdefined\AddNamePathOfGraphF% Craps out with these settings
\tikzstyle{GraphFNameStyle}=[name path global=GraphF]%
\else% Compiles with these settings
\tikzstyle{GraphFNameStyle}=[]%
\fi
\GraphFunction[smooth, violet, very thick,
GraphFNameStyle,% Bizarre: Need comma or % here
]
[violet, right]
{\DomainMaxF}{\DomainMinF}
{GivenF(x)}{\GraphLabelF}
%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^%
\ifdefined\SuppressSpuriousNode% Compiles if this is node is suppressed
\else
\node at (axis cs: 2,4) [cyan] {\GraphLabelF};
\fi
%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^%
%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^%
% Compiles if we disable the `name path global` setting for GraphG
%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^%
\ifdefined\AddNamePathOfGraphG% Craps out with these settings
\tikzstyle{GraphGNameStyle}=[name path global=GraphG]%
\else% Compiles with these settings
\tikzstyle{GraphGNameStyle}=[]%
\fi
\GraphFunction[smooth, orange, very thick,
GraphGNameStyle,% Bizarre: Need comma or % here
]
[orange, above right]
{\DomainMaxG}{\DomainMinG}
{GivenG(x)}{\GraphLabelG}
\GraphFunction
[smooth, magenta, very thick]
[magenta, above right, xshift=1.5ex]
{\DomainMaxH}{\DomainMinH}
{GivenH(x)}{\GraphLabelH}
\end{axis}
\end{tikzpicture}
\end{document}
\end{filecontents}% 01R28-Fig
%%-----------------------------------------------------------------
%%-----------------------------------------------------------------
%%-----------------------------------------------------------------
\usepackage{standalone}
\usepackage[shortlabels]{enumitem}
\usepackage{xcolor}
\usepackage{xparse}
\usepackage{pgfplots}
\usetikzlibrary{calc,intersections}%
\usepackage{filecontents}
\newcommand*{\InsertFigure}{\input{01R28-Fig}}
\begin{document}
\begin{enumerate}[(i)]
\item $a=3$
{% Group to keep settings local
\newcommand*{\A}{3}
\ifdefined\ShowFigureA
\begin{minipage}{0.90\linewidth}
\pgfmathsetmacro{\XAxisMin}{-1.8}
\pgfmathsetmacro{\XAxisMax}{3.5}
\pgfmathsetmacro{\YAxisMin}{-5.0}
\pgfmathsetmacro{\YAxisMax}{50}
\pgfmathsetmacro{\DomainMinF}{\XAxisMin}
\pgfmathsetmacro{\DomainMaxF}{\XAxisMax}
\pgfmathsetmacro{\DomainMinG}{\XAxisMin}
\pgfmathsetmacro{\DomainMaxG}{\XAxisMax}
\pgfmathsetmacro{\DomainMinH}{0.001}
\pgfmathsetmacro{\DomainMaxH}{\XAxisMax}
\pgfplotsset{
width=0.80\linewidth, height=6.0cm,
xtick={-1,0,1,2,3}, scale only axis,
ytick={0,10,...,40},
yticklabel style={text width=\widthof{$-20$},align=right},
xticklabel style={text width=\widthof{$2.4$},align=center}
}
\InsertFigure
\end{minipage}
\fi% end \ifdefined\ShowFigureA
\ifdefined\ShowFigureB
\bigskip
\begin{minipage}{0.90\linewidth}
\pgfmathsetmacro{\XAxisMin}{2.4}
\pgfmathsetmacro{\XAxisMax}{3.1}
\pgfmathsetmacro{\YAxisMin}{12.0}
\pgfmathsetmacro{\YAxisMax}{30.0}
\pgfmathsetmacro{\DomainMinF}{\XAxisMin}
\pgfmathsetmacro{\DomainMaxF}{\XAxisMax}
\pgfmathsetmacro{\DomainMinG}{\XAxisMin}
\pgfmathsetmacro{\DomainMaxG}{\XAxisMax}
\pgfmathsetmacro{\DomainMinH}{\XAxisMin}
\pgfmathsetmacro{\DomainMaxH}{\XAxisMax}
\pgfplotsset{
width=0.80\linewidth, height=6.0cm,
xtick={2.5,2.6,2.7,2.8,2.9,3.0}, scale only axis,
ytick={15,20,25},
yticklabel style={text width=\widthof{$-20$},align=right},
xticklabel style={text width=\widthof{$2.4$},align=center}
}
\InsertFigure
\end{minipage}
\fi% end \ifdefined\ShowFigureB
}
%-----------------------------------------------------------
\bigskip
\item $a=4$
{% Group to keep settings local
\newcommand*{\A}{4}
\ifdefined\ShowFigureC
\begin{minipage}{0.90\linewidth}
\pgfmathsetmacro{\XAxisMin}{-1.5}
\pgfmathsetmacro{\XAxisMax}{1.5}
\pgfmathsetmacro{\YAxisMin}{-0.5}
\pgfmathsetmacro{\YAxisMax}{4}
\pgfmathsetmacro{\DomainMinF}{-1.45}
\pgfmathsetmacro{\DomainMaxF}{2.2}
\pgfmathsetmacro{\DomainMinG}{\XAxisMin}
\pgfmathsetmacro{\DomainMaxG}{2.2}
\pgfmathsetmacro{\DomainMinH}{0.5}
\pgfmathsetmacro{\DomainMaxH}{\XAxisMax}
\pgfplotsset{
width=0.85\linewidth, height=6.0cm,
xtick={-1.0,-0.5,0,0.5,1.0}, scale only axis,
ytick={0,1,2,3},
yticklabel style={text width=\widthof{$400$},align=right},
xticklabel style={text width=\widthof{$-4.5$},align=center}
}
\InsertFigure
\end{minipage}
\fi% end \ifdefined\ShowFigureC
\ifdefined\ShowFigureD
\bigskip
\begin{minipage}{0.90\linewidth}
\pgfmathsetmacro{\XAxisMin}{1.5}
\pgfmathsetmacro{\XAxisMax}{4.5}
\pgfmathsetmacro{\YAxisMin}{0}
\pgfmathsetmacro{\YAxisMax}{400}
\pgfmathsetmacro{\DomainMinF}{\XAxisMin}
\pgfmathsetmacro{\DomainMaxF}{4.5}
\pgfmathsetmacro{\DomainMinG}{\XAxisMin}
\pgfmathsetmacro{\DomainMaxG}{4.4}
\pgfmathsetmacro{\DomainMinH}{5.0}% Won't plot H here, since this
\pgfmathsetmacro{\DomainMaxH}{5.1}% is beyond \XAxisMax
\pgfplotsset{
width=0.85\linewidth, height=6.0cm,
xtick={2.0,2.5,3.0,3.5,4.0}, scale only axis,
ytick={0,100,200,300},
yticklabel style={text width=\widthof{$400$},align=right},
xticklabel style={text width=\widthof{$4.5$},align=center}
}
\InsertFigure
\end{minipage}
\fi% end \ifdefined\ShowFigureD
}
%-----------------------------------------------------------
\bigskip
\item $a=5$
{% Group to keep settings local
\newcommand*{\A}{5}%
\ifdefined\ShowFigureE
\begin{minipage}{0.90\linewidth}
\pgfmathsetmacro{\XAxisMin}{-1.5}
\pgfmathsetmacro{\XAxisMax}{2.5}
\pgfmathsetmacro{\YAxisMin}{-5}
\pgfmathsetmacro{\YAxisMax}{25}
\pgfmathsetmacro{\DomainMinF}{-1.4}
\pgfmathsetmacro{\DomainMaxF}{2.2}
\pgfmathsetmacro{\DomainMinG}{\XAxisMin}
\pgfmathsetmacro{\DomainMaxG}{2.2}
\pgfmathsetmacro{\DomainMinH}{0.0001}
\pgfmathsetmacro{\DomainMaxH}{\XAxisMax}
\pgfplotsset{
width=0.80\linewidth, height=6.0cm,
xtick={-1,0,1,2,3}, scale only axis,
yticklabel style={text width=\widthof{$3,400$},align=right},
xticklabel style={text width=\widthof{$-5.00$},align=center}
}
\InsertFigure
\end{minipage}
\fi% end \ifdefined\ShowFigureE
\ifdefined\ShowFigureF
\bigskip
\begin{minipage}{0.90\linewidth}
\pgfmathsetmacro{\XAxisMin}{4.95}
\pgfmathsetmacro{\XAxisMax}{5.05}
\pgfmathsetmacro{\YAxisMin}{2800}
\pgfmathsetmacro{\YAxisMax}{3400}
\pgfmathsetmacro{\DomainMinF}{\XAxisMin}
\pgfmathsetmacro{\DomainMaxF}{\XAxisMax}
\pgfmathsetmacro{\DomainMinG}{\XAxisMin}
\pgfmathsetmacro{\DomainMaxG}{\XAxisMax}
\pgfmathsetmacro{\DomainMinH}{\XAxisMin}
\pgfmathsetmacro{\DomainMaxH}{\XAxisMax}
\pgfplotsset{
width=0.80\linewidth, height=6.0cm,
xtick={4.95,5.00,5.05}, scale only axis,
yticklabel style={text width=\widthof{$3,400$},align=right},
xticklabel style={text width=\widthof{$5.00$},align=center}
}
\InsertFigure
\end{minipage}
\fi% end \ifdefined\ShowFigureF
}
\end{enumerate}
\end{document}
附录 A:TeXLive2010enumitem
错误
(/usr/local/texlive/2010/texmf-dist/tex/latex/microtype/mt-eur.cfg)
(./01R28-Fig.tex) (./01R28-Fig.tex) (./01R28-Fig.tex) (./01R28-Fig.tex)
(./01R28-Fig.tex) (./01R28-Fig.tex)
./01R28-V6.tex:364: Undefined control sequence.
\enit@endenumerate ->\enit@after
\endlist \enit@toks \expandafter {\enit@sav...
l.364 \end{enumerate}
?
./01R28-V6.tex:364: Undefined control sequence.
\enit@endenumerate ...expandafter {\enit@savekeys
}\xdef \enit@afterlist {\d...
l.364 \end{enumerate}
?
Preview: Tightpage -32891 -32891 32891 32891
[1{/usr/local/texlive/2010/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
(./01R28-V6.aux)
>Package rerunfilecheck Warning: File `01R28-V6.out' has changed.
(rerunfilecheck) Rerun to get outlines right
(rerunfilecheck) or use package `bookmark'.
附录 B:TeXLive2011enumitem
错误
./01R28-Fig.tex) (./01R28-Fig.tex) (./01R28-Fig.tex) (./01R28-Fig.tex)
(./01R28-Fig.tex) (./01R28-Fig.tex)
./01R28-V6.tex:364: Undefined control sequence.
\enit@endenumerate ->\enit@after
\endlist \ifx \enit@series \relax \else \if...
l.364 \end{enumerate}
?
./01R28-V6.tex:364: Undefined control sequence.
\enit@endenumerate ...\else \ifnum \enit@resuming
=\@ne \enit@setresumekeys ...
l.364 \end{enumerate}
?
./01R28-V6.tex:364: Missing number, treated as zero.
<to be read again>
=
l.364 \end{enumerate}
?
./01R28-V6.tex:364: Undefined control sequence.
\enit@setresumekeys ...xpandafter {\enit@savekeys
}\xdef \enit@afterlist {#2...
l.364 \end{enumerate}
?
./01R28-V6.tex:364: Undefined control sequence.
\enit@setresumekeys ...it@toks }\ifnum \enit@type
=\z@ #3\def \enit@noexcs {...
l.364 \end{enumerate}
?
./01R28-V6.tex:364: Missing number, treated as zero.
<to be read again>
=
l.364 \end{enumerate}
?
./01R28-V6.tex:364: Undefined control sequence.
<argument> enit@resume@series@\enit@series
l.364 \end{enumerate}
?
./01R28-V6.tex:364: Undefined control sequence.
\enit@endenumerate ...t \fi \ifnum \enit@resuming
=\thr@@ \enit@setresumekey...
l.364 \end{enumerate}
?
./01R28-V6.tex:364: Missing number, treated as zero.
<to be read again>
=
l.364 \end{enumerate}
?
./01R28-V6.tex:364: Undefined control sequence.
\enit@setresumekeys ...xpandafter {\enit@savekeys
}\xdef \enit@afterlist {#2...
l.364 \end{enumerate}
?
./01R28-V6.tex:364: Undefined control sequence.
\enit@setresumekeys ...it@toks }\ifnum \enit@type
=\z@ #3\def \enit@noexcs {...
l.364 \end{enumerate}
?
./01R28-V6.tex:364: Missing number, treated as zero.
<to be read again>
=
l.364 \end{enumerate}
?
Preview: Tightpage -32891 -32891 32891 32891
[1{/usr/local/texlive/2011/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
(./01R28-V6.aux)
答案1
嗯main memory
- 引用乳胶伴侣的话 - TeX 的一部分,其中存储了宏定义和当前页面的材料。...超过主内存...可能会发生,如果你加载许多包,有大量巨大的延迟浮点数或使用动态生成新宏的宏包。
您可以设置 \tracingstats=2。然后 TeX 将报告主内存状态。... 左边的数字&
是专用于大对象的内存,右边的数字是宏定义使用的内存。
关于您的枚举问题:这听起来像是一个分组问题。在 开头设置的定义enumerate
在 处丢失\end{enumerate}
。我会尝试将 eg 放在\makeatletter\show\enit@savekeys
各个地方,以了解定义何时发生变化。