2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Что делать с TeX capacity exceeded?
Сообщение01.02.2016, 03:42 


01/02/16
10
Суть проблемы: выдаёт ошибку
TeX capacity exceeded, sorry [input stack size=5000]
при компиляции файла такого содержания:

\documentclass[12pt,a4paper]{book}

\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage[russian]{babel}
\usepackage[OT1]{fontenc}
\usepackage[pdftex]{graphicx}
\usepackage{wrapfig,array,color}
\usepackage{a4wide}

\begin{document}
\maketitle
\tableofcontents
\input{Introduction}
\input{Preface}

\input{Part-1}
\input{Part-2}
\input{Part-3}

\input{Literature}

\end{document}

Если отключить любые две из трёх подключаемых частей - никакой ошибки нет и всё прекрасно компилится генеря нормальный PDF файл. Ровно поэтому не понятно, каким может быть минимально работающий пример - всё нормально работает с любой из этих трёх частей поодиночке. При подключении хотя бы двух частей книжки ошибка происходит на первой же главе второй части книжки.

Есть ли какие-нибудь идеи почему это происходит, что этот TeX хочет и что с этим делать? Есть гипотеза, что это всё потому, что часта довольно длинные и содержащие очень много картинок (текст по геометрии). Все картинки в PNG и лежат в той же папке, что и *.tex файлы. Вот тут http://zmn.botaniklife.ru/texfaq.html говорят, что они понимают, что это всё значит, но я никогда не слышал ни о каком Huge TeX-e и инструкции как переключать LagreTeX на HugeTeX там мне не понятны.

Ubuntu 14 LTS, TeX и TeXstudio поставлены из репозитория.
Заранее всем спасибо.

 Профиль  
                  
 
 Re: Что делать с TeX capacity exceeded?
Сообщение01.02.2016, 03:58 
Заслуженный участник
Аватара пользователя


31/01/14
11053
Hogtown
Попробуйте сначала заменить input на include. Не видя Ваших файлов трудно что-либо сказать определенное.

 Профиль  
                  
 
 Re: Что делать с TeX capacity exceeded?
Сообщение01.02.2016, 06:42 


01/02/16
10
Спасибо за совет. Ещё раз перечитал Львовского и кое что у себя исправил.

Цитата:
Комаду \include нельзя употреблять в файле, который сам включа-
ется в текст с помощью \include (для \input такого запрета нет).


Теперь у меня части книги включены с помощью \include (это позволяет начать часть с новой страницы), а главы включены в части с помощью \input - ибо Лювовский сказал, что низзя иначе. :)

Однако эффект тот же, что описан выше (по отдельности всё компилится и все картинки вставляются, но вместе - нет).

Файлы организованы очень просто: главны файл включает части через \include. Части подключают главы через \input. Что я могу ещё рассказать о структуре, чтобы помочь ответить на вопрос?

Спасибо ещё раз.

 Профиль  
                  
 
 Re: Что делать с TeX capacity exceeded?
Сообщение01.02.2016, 07:23 


13/07/14
257
Лучше сделайте минимальный рабочий пример, вызывающий эту ошибку. Такой, чтобы любой пришедший в ветку обсуждения вашего вопроса и желающий попробовать её воспроизвести мог бы это сделать копированием выложенного кода. Код вставляется через "подсветка синтаксиса: ЛаТеХ".
Из дополняющих команд: в начале файла можно вставить \listfiles, чтобы видеть, что грузится. Для вкладывания в минимальный рабочий пример генерируемых файлов есть пакет filecontents.

 Профиль  
                  
 
 Re: Что делать с TeX capacity exceeded?
Сообщение01.02.2016, 08:05 
Заслуженный участник
Аватара пользователя


31/01/14
11053
Hogtown
Sergey Belyaev в сообщении #1095722 писал(а):
Теперь у меня части книги включены с помощью \include (это позволяет начать часть с новой страницы), а главы включены в части с помощью \input - ибо Лювовский сказал, что низзя иначе. :)


А зачем Вам нужно? Почему бы не включать все главы непосредственно в мастер-файл (скажем, master.tex) через \include? Вам известба команда для преамбулы \includeonly?

Вы уверены, что нигде у Вас не infinite loop?

Где у Вас макро (\newcommand, \renewcommand, \newtheorem, \newtheorem*? В отдельных частях? Это может быть причиной. Попробуйте всех их задвинуть в отдельный файл defines.tex и его подключить через \input в преамбулу master.tex

Общие замечания
Я не слишком хорошо знаю book.cls (использую гораздо более новый, гибкий и хорошо поддерживаемый memoir.cls); есть ли там раздел высшего уровня \part (выше чем \chapter)?

Кстати, вместо color.sty лучше xcolor.sty.

Почему у Вас вся графика в png, а не в pdf? Математическая графика как правило векторная, а png в отличие от pdf формат битмапный. Я 9/10 своей математической графики генерирую через пакет tikz непосредственно в LaTeX, а если готовлю задачи о геометрии для школьников, подключая ещё tkz-euclide.

При всём уважении к Львовскому, его книга устарела и читать надо документацию к пакетам и классу

 Профиль  
                  
 
 Re: Что делать с TeX capacity exceeded?
Сообщение01.02.2016, 15:13 


01/02/16
10
Спасибо Lenchik и Red_Herring за советы. Проблему пока не исправил, но пытаюсь учесть сделанные вами рекомендации. По порядку:

Цитата:
Лучше сделайте минимальный рабочий пример


Спасибо за эту ссылку. Первый раз вижу что-то подобное и так хорошо написанное. Постараюсь всё учесть и выложить здесь. Если раньше проблема не разрешится путём предложенного в ссылке улучшения кода.

Цитата:
А зачем Вам нужно? Почему бы не включать все главы непосредственно в мастер-файл (скажем, master.tex) через \include?


Я сделал множественное вложение файлов для того, чтобы иметь небольшие куски текста, которые удобно редактировать в TeXstudio без промотки собственного файла длиной до пола. Главный файл подключает части книги, части подключают главы (и делают только это. Через \input). Главы подключают разделы (тоже через \input. И делают только это). Каждый раздел уже содержит текст, который и пишется. Мне (по крайней мере после Львовского) казалось, что все так и делают. Сейчас сделаю, как советует Red_Herring. Это совсем просто изменить и всё включу через \include.

Цитата:
Вам известна команда для преамбулы \includeonly?


Известна, однако я ей не пользуюсь. Я просто комментирую подключаемые файлы в основном master.tex. Это разве плохо? Нерационально? (Я серьёзно. Может быть я просто не знаю преимуществ использования \includeonly, которые она имеет перед простым комментированием частей (строчек \include{Part1}))

Цитата:
Вы уверены, что нигде у Вас не infinite loop?


Конечно неуверен. Как в этом можно быть уверенным. :) Однако, как я и писал выше, при компилировании частей по отдельности, компиляция происходит корректно и проблема не возникает. Однако, спасибо за эту мысль. Постараюсь по возможности последить ещё и за этим.

Цитата:
Где у Вас макро (\newcommand, \renewcommand, \newtheorem, \newtheorem*? В отдельных частях? Это может быть причиной. Попробуйте всех их задвинуть в отдельный файл defines.tex и его подключить через \input в преамбулу master.tex


Все эти макро, у меня, разумеется есть, однако я не стал их включать чтобы не загромождать восприятие кода. Их много. Правда много. Сделаю, как Вы советуете и помещу в отдельный файл.

Цитата:
Я не слишком хорошо знаю book.cls (использую гораздо более новый, гибкий и хорошо поддерживаемый memoir.cls); есть ли там раздел высшего уровня \part (выше чем \chapter)?


Спасибо за совет. Обязательно посмотрю. В book есть разделы \part. Именно так я и подключаю три части своей книги.

Цитата:
Кстати, вместо color.sty лучше xcolor.sty.


Снова спасибо. Этот пакет мне надо убрать так как издательство всё равно будет всё печатать чёрно-белым.

Цитата:
Почему у Вас вся графика в png, а не в pdf? Математическая графика как правило векторная, а png в отличие от pdf формат битмапный. Я 9/10 своей математической графики генерирую через пакет tikz непосредственно в LaTeX, а если готовлю задачи о геометрии для школьников, подключая ещё tkz-euclide.


Вот это мой крупный недочёт. Сам же хотел всё сделать в векторной графике. Теперь все несколько сот картинок буду перефодить в PDF. Для создания рисунков я использую Geogebra. Из которой я и переводил рисунки в PNG. Однако совершенно не проблема перевести их в PDF, что я видимо и сделаю, несмотря на количество этих рисунков (несколько сотен - книжка по геометрии :):)). Почему я не использую tikz? Наверное потому что Geogebra - это WYSWYG. По Вашему совету попробовал перегнать всё из Geogebr-ы в tikz. Перегоняет. Но буквы, написанные Computer Modern (обозначения точек) на рисунке Geogebra корректно перегоняет в pdf, но в tikz они получаются маленькие.

Правильно ли я понимаю. что размер этих букв будет ровно такой же, как и размер букв в формулах в тексте? Если да, то это же замечательно, но тогда у меня вопрос как Вы подбираете размер картинки, чтобы буквы выглядели пропорционально рисунку, не слишком маленькими и не слишком большими? Масшабированием самого рисунка? И наверное tkz-euclide умеет это делать путём одной команды....

Цитата:
При всём уважении к Львовскому, его книга устарела и читать надо документацию к пакетам и классу


Это я и делаю, когда описания пакета нет у Львовского. Но вот видите, иногда и Львовский мне пригождается :):) Я ещё не такой уж TeXник :):)

Спасибо за ответы ещё и ещё раз. Как видно тема немного расширилась. :)

Прошу дать мне возможность переделать текст, прислать минимально работающий пример по совету Lenchik-а или описать в чём же была ошибка, или задать новые вопросы.

 Профиль  
                  
 
 Re: Что делать с TeX capacity exceeded?
Сообщение01.02.2016, 16:50 
Заслуженный участник
Аватара пользователя


31/01/14
11053
Hogtown
Sergey Belyaev в сообщении #1095825 писал(а):
Цитата:
Вам известна команда для преамбулы \includeonly?

Известна, однако я ей не пользуюсь. Я просто комментирую подключаемые файлы в основном master.tex. Это разве плохо? Нерационально? (Я серьёзно. Может быть я просто не знаю преимуществ использования \includeonly, которые она имеет перед простым комментированием частей (строчек \include{Part1}))

Разумеется это плохо. Допустим у Вас есть master.tex, chapter1.tex и chapter2.tex которые подключаются через \include. Тогда после того как Вы процессировали их у Вас будут master.aux, chapter1.aux и chapter2.aux. Эти последние 2 файла содержат много чего для ЛаТеХа полезного: http://dxdy.ru/post865137.html и вот когда Вы решаете прогрессировать только какую-либо главу через \includeonly эта информация используется, а при комментировании--нет! Все ссылки на другие главы становятся неопределёнными!
Цитата:
Цитата:
Вы уверены, что нигде у Вас не infinite loop?

Конечно неуверен. Как в этом можно быть уверенным. :) Однако, как я и писал выше, при компилировании частей по отдельности, компиляция происходит корректно и проблема не возникает.

М.б. между главами. Поэтому все макро лучше держать вместе
Цитата:
Снова спасибо. Этот пакет мне надо убрать так как издательство всё равно будет всё печатать чёрно-белым.

Я использую в процессе написания пакеты
Используется синтаксис LaTeX
\usepackage[color]{showkeys}
\definecolor{refkey}{rgb}{0,0,1}
\definecolor{labelkey}{rgb}{1,0,0}

\usepackage{todonotes}


И для full glory нужен цвет

-- 01.02.2016, 09:16 --

Sergey Belyaev в сообщении #1095825 писал(а):
Цитата:
Почему у Вас вся графика в png, а не в pdf? Математическая графика как правило векторная, а png в отличие от pdf формат битмапный. Я 9/10 своей математической графики генерирую через пакет tikz непосредственно в LaTeX, а если готовлю задачи о геометрии для школьников, подключая ещё tkz-euclide.


Вот это мой крупный недочёт. Сам же хотел всё сделать в векторной графике. Теперь все несколько сот картинок буду перефодить в PDF. Для создания рисунков я использую Geogebra. Из которой я и переводил рисунки в PNG. Однако совершенно не проблема перевести их в PDF, что я видимо и сделаю, несмотря на количество этих рисунков (несколько сотен - книжка по геометрии :):)).

Это ПРОБЛЕМА. Переведя png в pdf Вы отнюдь не сделаете графику векторной (pdf может содержать bitmap). Придётся всё заново. Есть программы векторизующие графику, но это всё гораздо хуже, чем если делать правильно с самого начала. Ведь Геогебра имеет экспорт и в векторные форматы pdf, eps, svg!

Цитата:
Почему я не использую tikz? Наверное потому что Geogebra - это WYSWYG. По Вашему совету попробовал перегнать всё из Geogebr-ы в tikz. Перегоняет. Но буквы, написанные Computer Modern (обозначения точек) на рисунке Geogebra корректно перегоняет в pdf, но в tikz они получаются маленькие.

Правильно ли я понимаю. что размер этих букв будет ровно такой же, как и размер букв в формулах в тексте? Если да, то это же замечательно, но тогда у меня вопрос как Вы подбираете размер картинки, чтобы буквы выглядели пропорционально рисунку, не слишком маленькими и не слишком большими? Масшабированием самого рисунка? И наверное tkz-euclide умеет это делать путём одной команды....


Менять размер шрифта от текста к картинке, и т.б. от картинки к картинке считается дурным тоном. AMS запрещает \includegraphics[scale=...]{...} А вот если у Вас \begin{tikzpicture}[scale=...]...\end{tikzpicture} то ни шрифты, ни ширины линий не меняются!

Цитата:
Цитата:
При всём уважении к Львовскому, его книга устарела и читать надо документацию к пакетам и классу

Это я и делаю, когда описания пакета нет у Львовского. Но вот видите, иногда и Львовский мне пригождается :):) Я ещё не такой уж TeXник :):)

Но пакеты меняются, в т.ч. устаревают. Поэтому и Львовский, и LaTeX companion (и LaTeX Graphics Companion и т.д.) не заменяют документации к пакетам

 Профиль  
                  
 
 Re: Что делать с TeX capacity exceeded?
Сообщение01.02.2016, 18:07 


01/02/16
10
ПРОБЛЕМА РЕШЕНА!

Часть 1 моей книжки содержит только \section, но не \chapter (В других частях есть и то и другое). Поэтому при сборке содержания эти \section нумеруются 0.1, 0.2, 0.3 и.т.д. Естественно меня это не устроило и я написал перед первым \section в первой части:

Код:
\renewcommand{\thesection}%
{\arabic{section}}


А после последней \section этой же первой части.

Код:
\renewcommand{\thesection}%
{\thesection.\arabic{section}}


Уже не помню почему. Явно вычитал у Львовского. Сам бы не додумался. В общем, затык был ровно в этом. После того, как эти четыре строчки были закомментированы проблема исчезла и всё стало компилиться.

Возникает встречный вопрос. Как сделать так, чтобы в части книги которая \part и НЕ содержит частей, которые \chapter, однако содержат много \section, LaTeX бы нумеровал эти \section НЕ так:

0.1. О слонах
0.2. О мартышках и т.д.,

а вот так:

Часть 1
1. О слонах
2. О мартышках и т.д.,

Имеется в виду следующий код:

Код:
\part{Часть 1}
\section{О слонах}
\section{О мартышках}



Это важно потому, что эти \section не дотягивают по смыслу книжки до глав \chapter с одной стороны, а с другой стороны все определения и теоремы БЕЗ вышеописанных добавок со счётчиками выглядят так: Теорема 1.0.3. Вот этот ноль посередине-то и хочется убрать. Когда я компилил это дело раньше - первую часть отдельно - всё работало и все теоремы и определения нумеровались как надо.

 Профиль  
                  
 
 Re: Что делать с TeX capacity exceeded?
Сообщение01.02.2016, 18:48 
Заслуженный участник
Аватара пользователя


31/01/14
11053
Hogtown
Естественно infinite loop:
Используется синтаксис LaTeX
\renewcommand{\thesection}%
{\thesection.\arabic{section}}

(истерический смех!!!!)
Надо
Используется синтаксис LaTeX
\renewcommand{\thesection}%
{\thechapter.\arabic{section}}

 Профиль  
                  
 
 Re: Что делать с TeX capacity exceeded?
Сообщение03.02.2016, 00:48 
Админ форума
Аватара пользователя


19/03/10
8952
 i  Часть обсуждения вынесена в отдельную тему: «Графика в ЛаТеХе»

 Профиль  
                  
 
 Re: Что делать с TeX capacity exceeded?
Сообщение03.02.2016, 01:15 


28/11/11
2884
Red_Herring в сообщении #1095845 писал(а):
Используется синтаксис LaTeX
\usepackage[color]{showkeys}
\definecolor{refkey}{rgb}{0,0,1}
\definecolor{labelkey}{rgb}{1,0,0}

Любопытно: а это зачем? Ну, будут лейблы ссылок подписаны сверху, это я понял. Только чтобы не двигались части текста?

 Профиль  
                  
 
 Re: Что делать с TeX capacity exceeded?
Сообщение03.02.2016, 01:34 
Заслуженный участник
Аватара пользователя


31/01/14
11053
Hogtown
longstreet в сообщении #1096315 писал(а):
Любопытно: а это зачем? Ну, будут лейблы ссылок подписаны сверху, это я понял. Только чтобы не двигались части текста?

Ну чтобы знать лейблы, ведь в pdf обычно их не видно. Это полезно в процессе подготовки статьи, не в конечном варианте

 Профиль  
                  
 
 Re: Что делать с TeX capacity exceeded?
Сообщение03.02.2016, 01:38 


28/11/11
2884
Red_Herring, а лично Ваша практика: сильно ориентируетесь на промежуточные PDF в процессе подготовки, или на LaTeX код mainly? Т.е. насколько частую компиляцию и её просмотр используете?

 Профиль  
                  
 
 Re: Что делать с TeX capacity exceeded?
Сообщение03.02.2016, 03:32 
Заслуженный участник
Аватара пользователя


31/01/14
11053
Hogtown
longstreet в сообщении #1096319 писал(а):
Red_Herring, а лично Ваша практика: сильно ориентируетесь на промежуточные PDF в процессе подготовки, или на LaTeX код mainly? Т.е. насколько частую компиляцию и её просмотр используете?

Зависит от сложности. 1--5 раз на страницу. Заведомо каждый раз после сложного уравнения или картинки.

Вообще-то это offtopic. Хотя тема интересная: практика подготовки.

 Профиль  
                  
 
 Re: Что делать с TeX capacity exceeded?
Сообщение12.02.2016, 13:40 


06/02/12
35
Sergey Belyaev в сообщении #1095825 писал(а):
Я сделал множественное вложение файлов для того, чтобы иметь небольшие куски текста, которые удобно редактировать в TeXstudio без промотки собственного файла длиной до пола.

Любой приличный редактор для разработки (неважно чего) умеет сворачивать блоки кода. TeXstudio умеет это, в том числе.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group