PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : interner Speicher von tex erhöhen (ubuntu 10.04)



menuhin
21-06-2010, 15:25
Hallo,

in meiner Diss befinden zahlreiche Abbildungen, davon einige mit vielen Stützstellen. Deshalb möchte ich den internen Speicher von TeX erhöhen.

Durch diesen Link:
http://ubuntuforums.org/archive/index.php/t-1193066.html
bin ich auf das file "etc/texmf/texmf.d/95NonPath.cnf" aufmerksam geworden, dessen Inhalt wie folgt ist:



# $progname: kpathsea v. 3.5.3 or later overwrites this at runtime. To
# avoid empty expansions from binaries linked against an earlier
# version of the library, we set $progname and $engine to something
# non-empty:
progname = unset
engine = unset


% Part 2: Non-path options.

% If this option is set to true, `tex a.b' will look first for a.b.tex
% (within each path element), and then for a.b, i.e., we try standard
% extensions first. If this is false, we first look for a.b and then
% a.b.tex, i.e., we try the name as-is first.
%
% Both names are always tried; the difference is the order in which they
% are tried. The setting applies to all searches, not just .tex.
%
% This setting only affects names being looked up which *already* have
% an extension. A name without an extension (e.g., `tex story') will
% always have an extension added first.
%
% The default is true, because we already avoid adding the standard
% extension(s) in the usual cases. E.g., babel.sty will only look for
% babel.sty, not babel.sty.tex, regardless of this setting.
try_std_extension_first = t

% Write .log/.dvi/etc. files here, if the current directory is unwritable.
% TEXMFOUTPUT = /tmp

% If a dynamic file creation fails, log the command to this file, in
% either the current directory or TEXMFOUTPUT. Set to the
% empty string or 0 to avoid logging.
MISSFONT_LOG = missfont.log

% Set to a colon-separated list of words specifying warnings to suppress.
% To suppress everything, use TEX_HUSH = all; this is currently equivalent to
% TEX_HUSH = checksum:lostchar:readable:special
% To suppress nothing, use TEX_HUSH = none or do not set the variable at all.
TEX_HUSH = none

% Enable system commands via \write18{...}. When enabled fully (set to
% 1), obviously insecure. When enabled partially (set to p), only the
% commands listed in shell_escape_commands are allowed. Although this
% is not fully secure either, it is much better, and so useful that we
% enable it for everything but bare tex.
shell_escape = p

% Special: convert is the standard command name for ImageMagick, but it
% is also the name of a dangerous filesystem-changing command on
% Windows. So enable imgconvert (used in w32tex), but not convert.

% No spaces in this command list.
shell_escape_commands = \
bibtex,bibtex8,dvips,epstopdf,epspdf,etex,fc-match,\
imgconvert,\
kpsewhich,makeindex,mkgrkindex,\
pdfluatex,ps2pdf,ps4pdf,pstopdf,pygmentize,\
rpdfcrop,texindy,xindy,ulqda\

% plain TeX should remain unenhanced.
shell_escape.tex = f

% Allow TeX \openin, \openout, or \input on filenames starting with `.'
% (e.g., .rhosts) or outside the current tree (e.g., /etc/passwd)?
% a (any) : any file can be opened.
% r (restricted) : disallow opening "dotfiles".
% p (paranoid) : as 'r' and disallow going to parent directories, and
% restrict absolute paths to be under $TEXMFOUTPUT.
openout_any = p
openin_any = a

%% Deprecated option
%% % Disable search on multiple suffixes filenames. In many case, when `foo.bar'
%% % is looked for, you do not want to look for `foo.bar.tex' before. This flag
%% % disables searching for standard suffixes if the file name has already an
%% % extension of 3 characters. Default value is true (old behaviour).
%% allow_multiple_suffixes = f

% Allow TeX and MF to parse the first line of an input file for
% the %&format construct.
parse_first_line = t

% But don't parse the first line if invoked as "tex", since we want that
% to remain Knuth-compatible. The src_specials and
% file_line_error_style settings, as well as the options -enctex,
% -mltex, -8bit, etc., also affect this, but they are all off by default.
parse_first_line.tex = f

% Control file:line:error style messages.
file_line_error_style = f

% Enable the mktex... scripts by default? These must be set to 0 or 1.
% Particular programs can and do override these settings, for example
% dvips's -M option. Your first chance to specify whether the scripts
% are invoked by default is at configure time.
%
% These values are ignored if the script names are changed; e.g., if you
% set DVIPSMAKEPK to `foo', what counts is the value of the environment
% variable/config value `FOO', not the `MKTEXPK' value.
%
% MKTEXTEX = 0
% MKTEXPK = 0
% MKTEXMF = 0
% MKTEXTFM = 0
% MKTEXFMT = 0
% MKOCP = 0
% MKOFM = 0

% Used by makempx to run TeX. We use "etex" because MetaPost is
% expecting DVI, and not "tex" because we want first line parsing.
TEX = etex

% These variables specify the external program called for the
% interactive `e' option. %d is replaced by the line number and %s by
% the current filename. The default is specified at compile-time, and
% we let that stay in place since different platforms like different values.
%TEXEDIT = vi +%d "%s"
%MFEDIT = ${TEXEDIT}
%MPEDIT = ${TEXEDIT}


% Part 3: Array and other sizes for TeX (and Metafont and MetaPost).
%
% If you want to change some of these sizes only for a certain TeX
% variant, the usual dot notation works, e.g.,
% main_memory.hugetex = 20000000
%
% If a change here appears to be ignored, try redumping the format file
% with fmtutil-sys.

% Memory. Must be less than 8,000,000 total.
%
% main_memory is relevant only to initex, extra_mem_* only to non-ini.
% Thus, have to redump the .fmt file after changing main_memory; to add
% to existing fmt files, increase extra_mem_*. (To get an idea of how
% much, try \tracingstats=2 in your TeX source file;
% web2c/tests/memtest.tex might also be interesting.)
%
% To increase space for boxes (as might be needed by, e.g., PiCTeX),
% increase extra_mem_bot.
%
% For some xy-pic samples, you may need as much as 700000 words of memory.
% For the vast majority of documents, 60000 or less will do.
%
main_memory = 3000000 % words of inimemory available; also applies to inimf&mp
extra_mem_top = 0 % extra high memory for chars, tokens, etc.
extra_mem_bot = 0 % extra low memory for boxes, glue, breakpoints, etc.

% ConTeXt needs lots of memory.
extra_mem_top.context = 2000000
extra_mem_bot.context = 4000000

% Lambda too is a memory hog with all languages installed
main_memory.lambda = 2200000

% Words of font info for TeX (total size of all TFM files, approximately).
% Must be >= 20000 and <= 4000000 (without tex.ch changes).
font_mem_size = 3000000

% Total number of fonts. Must be >= 50 and <= 9000 (without tex.ch changes).
font_max = 9000

% Extra space for the hash table of control sequences (which allows 10K
% names as distributed).
hash_extra = 50000

% Max number of characters in all strings, including all error messages,
% help texts, font names, control sequences. These values apply to TeX and MP.
pool_size = 1250000
% Minimum pool space after TeX/MP's own strings; must be at least
% 25000 less than pool_size, but doesn't need to be nearly that large.
string_vacancies = 90000
% Maximum number of strings.
max_strings = 500000
% min pool space left after loading .fmt
pool_free = 47500

% Buffer size. TeX uses the buffer to contain input lines, but macro
% expansion works by writing material into the buffer and reparsing the
% line. As a consequence, certain constructs require the buffer to be
% very large, even though most documents can be handled with a small value.
buf_size = 200000

% Hyphenation trie. The maximum possible is 4194303 (ssup_trie_size in
% the sources), but we don't need that much. The value here suffices
% for all known free hyphenation patterns to be loaded simultaneously
% (as TeX Live does).
%
trie_size = 700000

hyph_size = 8191 % prime number of hyphenation exceptions, >610, <32767.
% http://primes.utm.edu/curios/page.php/8191.html
nest_size = 500 % simultaneous semantic levels (e.g., groups)
max_in_open = 15 % simultaneous input files and error insertions
+ % also applies to MetaPost
param_size = 10000 % simultaneous macro parameters
save_size = 50000 % for saving values outside current group
stack_size = 5000 % simultaneous input sources

% These are Omega-specific.
ocp_buf_size = 500000 % character buffers for ocp filters.
ocp_stack_size = 10000 % stacks for ocp computations.
ocp_list_size = 1000 % control for multiple ocps.

% Parameter specific to MetaPost.
% Size of the hash table for control sequences, default 65536.
% hash_size.mpost = 65536

% These work best if they are the same as the I/O buffer size, but it
% doesn't matter much. Must be a multiple of 8.
dvi_buf_size = 16384 % TeX
gf_buf_size = 16384 % MF

% It's probably inadvisable to change these. At any rate, we must have:
% 45 < error_line < 255;
% 30 < half_error_line < error_line - 15;
% 60 <= max_print_line;
% These apply to Metafont and MetaPost as well.
error_line = 79
half_error_line = 50
max_print_line = 79

Den rot markierten Wert habe ich auf 7.999.999 erhöht und anschließend im Terminal

sudo update-texmf

ausgeführt. Im Log-file erscheint immer noch dieselbe Fehlermeldung. Auszug aus dem Log-file:


PGFPlots: reading {Data/4-3a.dat}
Runaway definition?
->
! TeX capacity exceeded, sorry [main memory size=3000000].
\pgfplotsapplistXXpushback@smallbufoverfl ...toka
\the \t@pgfplots@tokb }\le...
l.160 \end{axis}

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


Here is how much of TeX's memory you used:
44037 strings out of 493848
764718 string characters out of 3149228
3000001 words of memory out of 3000000
45456 multiletter control sequences out of 15000+200000
285232 words of font info for 703 fonts, out of 3000000 for 9000
718 hyphenation exceptions out of 8191
57i,20n,95p,1782b,2218s stack positions out of 5000i,500n,10000p,200000b,50000s
! ==> Fatal error occurred, no output PDF file produced!

Dann habe ich im Terminal

sudo update-fmtutil

ausgeführt. Jedoch immer noch dieselbe Fehlermeldung.

Ich habe außerdem den Parameter

main_memory = 7999999 % words of inimemory available; also applies to inimf&mp

im file usr/local/texlive/2009/texmf/web2c/texmf.cnf von 3000000 auf 7999999 gesetzt
und anschließend "sudo update-texmf". Wieder dieselbe Fehlermeldung.

Die Abfrage

kpsewhich --all texmf.cnf

ergibt:

/usr/local/texlive/2009/texmf.cnf
/usr/local/texlive/2009/texmf/web2c/texmf.cnf

In das erste file sollen lediglich die Änderungen des zweiten files eingefügt werden. Also habe ich "main_memory = 7999999" in das erste file eingefügt aber die Fehlermeldung bleibt bestehen.

Kann mir jemand sagen wie man es richtig macht???

Vielen Dank.

Gruß,

menuhin

menuhin
21-06-2010, 20:21
ok für alle, die mal das gleiche Problem haben sollten:

Nachdem der Parameter main_memory = 8000000 (Maximum) in texmf.cnf gesetzt wurde, müssen sämtliche .fmt-files redumped werden:

"Thus, have to redump the .fmt file after changing main_memory"

D.h.: fmtutil --all

und der main memory ist erhöht.:)

oneb
11-10-2010, 09:35
Bei mir war fmutil --all zunächst nur als root auszuführen, dann funktioniert es aber nicht.

Man muss dann den Besitzer des Ordners, in den fmutil schreiben will auf sich selbst ändern. Danach geht's!

Feuersaenger
13-10-2010, 11:14
Hallo,

also ich habe schon haeufig memory limits aktualisiert und musste nie neue Format files generieren. Und ich habe die memory limits durchaus sehr stark erhoeht, weil ich grosse plots habe rechnen lassen.


Ich glaube, der Hauptpunkt hier ist, dass Du Dir ein *eigenes* texmf.cnf irgendwohin packen kannst, das sowas wie

% newly created file ~/texmf/mytexcnf/texmf.cnf:
% If you want to change some of these sizes only for a certain TeX
% variant, the usual dot notation works, e.g.,
% main_memory.hugetex = 20000000
main_memory = 230000000 % words of inimemory available; also applies to inimf&mp
extra_mem_top = 10000000 % extra high memory for chars, tokens, etc.
extra_mem_bot = 10000000 % extra low memory for boxes, glue, breakpoints, etc.
save_size = 150000 % for saving values outside current group
stack_size = 150000 % simultaneous input sources
% Max number of characters in all strings, including all error messages,
% help texts, font names, control sequences. These values apply to TeX and MP.
% pool_size = 1250000
% Minimum pool space after TeX/MP's own strings; must be at least
% 25000 less than pool_size, but doesn't need to be nearly that large.
% string_vacancies = 90000
% Maximum number of strings.
% max_strings = 100000
% min pool space left after loading .fmt
% pool_free = 47500

enthaelt und dann dieses in die TeX Suchpfade aufnimmst. Unter Linux geht das z.B. mit
export TEXMFCNF=~/texmf/mytexcnf:
wenn die Datei in ~/texmf/mytexcnf/texmf.cnf liegt.

Fuer weitere Informationen: Ich habe das aus der Dokumentation von pgfplots rauskopiert, zu finden unter
http://pgfplots.sourceforge.net/pgfplots.pdf
in Abschnitt 6.2 Memory Limitations. Dort steht auch was fuer Windows.

Mit liebem Gruss

Christian