Як не мати жодної сторінки після \ включити в LaTeX


110

Мій LaTeX робить мені переломи сторінок після кожного підрозділу, оскільки мої підрозділи знаходяться в окремих файлах. Я використовую команду, \include{file}яка додає розрив сторінки після його використання.

Я хотів би, щоб не було жодної сторінки, викликаної використанням \include{file}.

Як ви не можете заборонити сторінку після використання include-command?


2
Я не вірю, що після підрозділу ви нормально отримуєте розриви сторінки. Який клас документів ви використовуєте?
— Каскабель

1
Чи можете ви опублікувати заголовок (усе, поки \ почнеться документ {document}), щоб ми могли сказати, що відбувається не так?
— Джеральд Сенаркленс де Грансі

10
Використовуйте \input, в іншому випадку використовуйте \inputчи іншим чином \input.
— егрег

Відповіді:


4

Пакет newclude, запропонований Віллом Робертсоном, досить корисний, щоб уникнути очищення сторінки. Здається, \includeonlyщоб працювати, потрібно негайно зателефонувати за пакетом\documentclass{...} . У складній обстановці моєї дисертації я також зіткнувся з проблемами зі зламаними посиланнями.

Хорошим способом вирішення, коли includeonly не потрібен для остаточної версії, є використання, що включає лише в чернетку:

\newif\ifdraft\drafttrue

або

\newif\ifdraft\draftfalse

\ifdraft
  \include{...}
\fi

\ifdraft
  \include{file}
\else
  \input{file}
\fi

Перший рядок може бути легко доповнений файлом makefile, щоб зробити чернетку або виробничу версію виробництва зробити цілями.

\includeonly{file1,file2,...}дозволяє вказати список вихідних файлів, викликаних \include{file1}(де file1є приклад), який відображатиметься в отриманому документі. Інші не відображатимуться, але розглядаються як лічильники, мітки, таблиці вмісту, коли входять відповідні допоміжні файли.

Іншими словами, за допомогою includeі includeonlyможна утримувати час складання в чернеті, маючи правильні посилання. Подальше читання у Wikibooks .

@Вілл Робертсон

\includeє настільки корисним, оскільки дозволяє \includeonly{...}створювати лише потрібні секції. Працюючи над більш довгим текстом, можна досить змінити час компіляції, включивши лише розділ тривалої глави. Це також неоціненно корисно, оскільки не потрібно перегортати довгу чернетку, працюючи в один момент. Нарешті, менші файли вихідного коду легше обробляти в управлінні версіями, наприклад, git.


Чи можете ви навести приклад того, як ви складаєте лише один розділ дуже довгого робочого документу? Я використав ці методи наступної відповіді pageselпро \discardpagesfromhereі \keeppagesfromhere. Вони трохи перетинаються, тому я готовий дізнатися, чи можна краще впоратися з цим проектом управління. tex.stackexchange.com/a/267555/13173
— Léo Léopold Hertz 준영

1
Якщо я розумію correclty, pagesel є досягнення більш includeonly , дозволяючи контролювати штраф , які сторінки повинні бути включені в фінальній збірці. Включення має набагато менший обсяг, включаючи вихідний код таким чином, що його можна включати та вимикати.
— gschenk

152

\includeзавжди використовує \clearpage, не зовсім розумний за замовчуванням. Він призначений для цілих розділів, а не для підрозділів (навіщо б ви хотіли, щоб підрозділи були окремими файлами?).

Ви можете виправити це, використовуючи \input{filename}або завантажуючи newcludeпакунок і записуючи \include*{filename}замість цього.


Мій проект бази даних потребує документа планування документа "Створення", щоб показати, як налаштувати систему. Вони є розділами мого LaTeX -файлу.
— Лео Леопольд Герц 준영

7
Я можу придумати купу причин, чому розміщувати підрозділи в різних файлах. Перше, що спадає на думку, - це резюме з різним рівнем деталізації, залежно від цілі та / або заявки на роботу. Після цього ви можете легко відрізати біти або вставити біти з одним символом "%".
— Ніколас Гамільтон

8
Минув час, коли я написав цю відповідь, але я вважаю, що думка повинна була бути саркастичною:)
— Уілл Робертсон

Причина, що \includeзаводить нову сторінку, полягає в тому, що вона \includeonlyможе працювати належним чином.
— Carsten S

Ще одна причина для обрізання розділів у різні файли. Розгляньте, як писати аркуші з вправами, які завжди мають макетіт на початку, але завжди містять лише один аркуш вправ лише на роздруківці. Я сам не вважав би кожен аркуш навчальних занять самим главою, тим більше, що більше навчальних аркушів стосується однієї глави лекції. Включено тільки служить підрахунком аркушів з вправами, як лист 1 з вправами (1.1-1.4), аркуш 2 з вправами (2.1-2.3) тощо.
— C-Star-W-Star

30

Ви можете зупинити розриви сторінки, викликані \includeрозміщенням \let\clearpage\relaxперед ним. Так,

\let\clearpage\relax
\include{file1}
\include{file2}
\include{file3}

змістив би вміст трьох файлів (і будь-яких файлів, що згодом були включені), без розриву сторінок між ними. Якщо ви хочете припинити розслаблення \clearpageкоманди, оберніть файли, щоб вони включились без розривів сторінки в такій групі:

\begingroup
\let\clearpage\relax
\include{file1}
\include{file2}
\endgroup
\include{file3}

Це зупинить розрив сторінки між file1 та file2, але вставить нормальну сторінкуbreak після file2. (Примітка. Я не знаю, чи це заважає посиланням та нумерації сторінок, хоча я думаю, що це повинно бути нормально.)


1
Дякую! Ця відповідь добре працює, коли у вас є кілька включених плюс Посилання, і вам не потрібна нова сторінка для них. Просто зробіть групу останніх, включіть одну і бібліографічну частину, а вже не чітку сторінку.
— Мануель Феррерія

2
Мануель має рацію: ви можете використовувати \begingroup\let\clearpage\relax ...\endgroupхитрість, де вам подобається --- зупиняйте розбивання сторінок між окремими розділами чи частинами, якщо ви хочете, щоб бібліографія знаходилася на тій самій сторінці, що й ваш текст, тощо.
— Джон

1
Здається, це рішення викликало у мене деякі проблеми з посиланнями. У включеному файлі, який містив два перелічені списки, посилання на елементи другого списку не працювали. Я поняття не маю, чому це повинно бути, але перехід на новевиключення вирішив проблему.
— Майк Шульман

1
Я рекомендую проти використання цього методу; це створить більше проблем, ніж вирішує (припускаючи, що це вирішує в першу чергу певну проблему): див. tex.stackexchange.com/a/185237/4427
— egreg

2

Дякую, Кембридж !

використовуйте \ включайте замість \ введення та використовуйте команду \ includeonly для вибору розділів для обробки


2
Це не найкраща порада. Чому ви хочете використовувати \include{...]для роботи, коли \input{...}є фактична команда, яка призначена для цих ситуацій?
— Флоріан Р. Кляйн

1
Ця відповідь, схоже, зовсім не відповідає на питання. (Хоча це інакше корисна порада, з хорошим посиланням.)
— jciloa

Це не відповідає на запитання.
— EL_DON
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.