용량 문제가 자주 발생하고 매번 한도를 높이는 것 같습니다. 이 사이트에는 이와 관련된 몇 가지 질문이 있습니다. 그러나 일부 상충되는 정보가 있는 것 같고 어디에도 없는 것 같습니다.모두이러한 한도는 자세히 설명되어 있습니다.
주요 질문:
그래서 내가 찾고 있는 것은
- 변수 이름
- 기본값.
- 순수한최대로 설정할 수 있습니다.
- 이러한 사용량을 최소화하려면 어떤 조치를 취해야 합니까? 이러한 각 용량 제한에 대한 DO 및 DONT는 무엇입니까?
내가 알고 있는 설정은 로그 파일 끝에 보고된 설정입니다.
106477 strings out of 493042
2524840 string characters out of 39884661
12363848 words of memory out of 12435455
103471 multiletter control sequences out of 15000+600000
197845 words of font info for 228 fonts, out of 8000000 for 9000
1143 hyphenation exceptions out of 8191
86i,17n,86p,10523b,3398s stack positions out of 5000i,500n,10000p,200000b,80000s
그러나 여기에 나열되지 않은 다른 항목도 있을 수 있습니다. 내 즉각적인 문제는 words of memory
위의 숫자가 내 색인 생성의 첫 번째 실행에서 나온 것이기 때문에 발생합니다. 두 번째 실행을 시도하면 TeX Capacity Exceeded
.
예다른변수:
Davis Carlisle의 의견에 따르면 사용할 수도 있고 extra_mem_top
사용할 extra_mem_bot
수도 있습니다. 그러나 이는 더 큰 용량을 허용합니까 words of memory
, 아니면 보고서의 다른 용량 제한 중 하나와 관련되어 있습니까? 다시 말하지만, 설정할 수 있는 최대값은 얼마입니까?
가능한 DO와 DONT:
사용량 최소화와 관련하여 제가 가지고 있는 몇 가지 질문이 여기에 나열되어 있으므로 각 변수에 대한 DO 및 DONT에서 이러한 내용을 다룰 수 있을 것입니다.
\def\foo{xxx}
대신 사용하는 것이 더 낫습니다\newcommand*{\foo}{xxx}
. TeX 외부에서 중복된 매크로 이름을 검사할 수 있습니다.문자 수가 많은 매크로 이름으로 인해 이들 중 일부의 사용이 늘어나나요?
예를 들어,
\expandafter\newcommand\csname dir1/dir1/long-file-name\endcsname{xxxx}
용량을 업그레이드하는 데 문제가 있습니다. 이러한 제한을 절약하기dir1/dir1/long-file-name
위해 더 짧은 문자열에 매핑하는 것이 더 나을까요 ?ZXyw
예, 가독성이 떨어지지만 이 교체를 자동화할 수 있습니다.반복되는 텍스트로 인해 제한 사용이 늘어나나요? 다음 중 어느 것이 더 좋을까요?
\MyMacro{../../../../dirA/dirB/dirC/dirD/file0001.tex} \MyMacro{../../../../dirA/dirB/dirC/dirD/file0002.tex} ... \MyMacro{../../../../dirA/dirB/dirC/dirD/file5000.tex}
또는
\def\Path{../../../../dirA/dirB/dirC/dirD/} \MyMacro{\Path/file0001.tex} \MyMacro{\Path/file0002.tex} ... \MyMacro{\Path/file5000.tex}
\undef
더 이상 필요하지 않은 매크로를 사용하면 이러한 제한에 도움이 됩니까 ?
확실히, 나는 내가 생각한 것들을 실험할 수 있지만 아마도 이러한 제한된 문자열과 단어의 사용을 줄이기 위해 수행할 수 있는 다른 것들이 있을 것입니다.
불일치의 예
내 안에는 명시된 최대값인 (12.4M)이
/usr/local/texlive/2015/texmf.cnf
있습니다 .main_memory = 12435455
라텍스에서 오류가 발생했습니다. 아야---내 내부 상수가 손상되었습니다..12435456
실제로 1씩 늘리려고 하면Ouch---my internal constants have been clobbered!---case 14
.sudo vi texmf.cnf
에 따라 실행한 후에도LaTeX 용량 늘리기.그러나 Thomas F. Sturm의 솔루션은 다음과 같습니다.TeX의 "주 메모리 크기"를 확장하는 방법은 무엇입니까? (pgfplots 메모리 과부하)쇼
100571134 words of memory out of 103000000
따라서 최대값은 최소 103M임을 나타냅니다.
/usr/local/texlive/2015/texmf-dist/web2c/texmf.cnf
게다가 해당 파일에는Memory. Must be less than 8,000,000 total.
. 글쎄, 나는 그 이상을 사용할 수 있기 때문에 그것은 분명히 잘못된 것입니다.
노트:
kpsewhich texmf.cnf
Leo Liu의 답변에 따라 보고된 파일이 변경될 것이라고 가정합니다 .TeX의 "주 메모리 크기"를 확장하는 방법은 무엇입니까? (pgfplots 메모리 과부하), 내 경우에는/usr/local/texlive/2015/texmf.cnf
이들 중 일부를 설정하는 다른 방법이 있다면 그 방법도 알고 싶습니다.
- 지금 내 주요 문제는 많은 수의 항목과
words of memory
한도를 색인화하는 것입니다. 나는 (합당한 범위 내에서) 런타임에 대해 덜 걱정하고 이러한 제한을 초과하는 것에 대해 더 관심을 갖습니다. - 중요한 경우를 대비해 TeXLive2015를 사용하고 있습니다. 그러나 한계가 분포에 따라 달라지는 경우에도 그 점을 아는 것이 좋습니다.
- 이 질문은 용량 제한을 초과하는 오류 조건에 대한 것이 아닙니다(예: 저의 순진한 질문Tex 용량 초과(매크로 사용 후 %를 제거한 경우)).
참고자료:
- TeX/LaTeX의 새로운 매크로 또는 명령 수에 제한이 있습니까?여기에 언급된 변수를 나열하고 테스트 사례를 제공합니다. 그러나 그는 특히 매크로 수에 따른 제한에 초점을 맞췄습니다.
- (La)TeX의 메모리 사용량 구성 요소훌륭한 참조이므로 이러한 답변을 대신 추가할 수 있으며 중복으로 닫힐 수 있습니까?
답변1
\newcommand*{\foo}{xxx} 대신 \def\foo{xxx}를 사용하는 것이 더 낫습니다. TeX 외부에서 중복된 매크로 이름을 검사할 수 있습니다.
아니요, 같은 내용이 나옵니다.
예를 들어, \expandafter\newcommand\csname dir1/dir1/long-file-name\endcsname{xxxx}에 용량과 관련된 문제가 있습니까?
이론적으로는 그렇습니다. csname은 어딘가에 저장되어야 하므로 39884661개의 문자열 문자 중 2524840개가 소모됩니다.
하지만 아마도 20자 정도만 줄여서 39884661에서 큰 차이는 없을 것입니다.
다음 중 어느 것이 더 좋을까요?
다시 말하지만, 첫 번째는 csname( \path
) 을 하나 더 정의하므로 더 많은 것을 사용합니다.
103471 multiletter control sequences out of 15000+600000
하지만 넌 그 한계 근처에도 못 가
더 이상 필요하지 않은 매크로를 정의 취소하면 이러한 제한을 해결하는 데 도움이 됩니까?
예, 그렇기 때문에 라텍스는 해시 항목에서 많은 명령을 제거하지만 \begin{document}
(다중 문자 명령의 수) 정의를 저장하는 데 사용된 주 메모리는 회수됩니다.
답변2
몇 년 전에 저는 "TeX 용량 초과" 문제에 대한 배경 정보, 근본 원인 및 이를 방지하는 방법에 대해 이야기한 적이 있습니다.
강연의 첫 번째 부분은 다음에서 출판되었습니다."Die TeXnische Komödie" 1995년 3월호, 22페이지.
24페이지에는 모든(표준 TeX.web) 오버플로 오류 메시지, 관련 TeX.web 매개변수 및 매개변수 설정이 포함된 표가 있습니다.
단점: (1) 강연과 논문은 독일어로만 작성되었습니다. (2) 두 번째와 세 번째 부분의 나머지 모든 주제를 포함하여 기사 시리즈를 마무리할 시간이 충분하지 않았습니다. (3) 표준 TeX를 기반으로 합니다. 웹 응답. e-TeX, pdfTeX, XeTeX, LuaTeX 및 유사한 확장 변형이 없는 web2c "bigTeX" 버전.