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
11567
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
258
Лучше сделайте минимальный рабочий пример, вызывающий эту ошибку. Такой, чтобы любой пришедший в ветку обсуждения вашего вопроса и желающий попробовать её воспроизвести мог бы это сделать копированием выложенного кода. Код вставляется через "подсветка синтаксиса: ЛаТеХ".
Из дополняющих команд: в начале файла можно вставить \listfiles, чтобы видеть, что грузится. Для вкладывания в минимальный рабочий пример генерируемых файлов есть пакет filecontents.

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


31/01/14
11567
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
11567
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
11567
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
11567
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
11567
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, Супермодераторы



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

Сейчас этот форум просматривают: Lenchik


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

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