Як не мати жодної сторінки після \ включити в 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.