Как не иметь разрывов страниц после \ include в LaTeX


111

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

Я бы хотел, чтобы не было разрывов страниц, вызванных использованием \include{file}.

Как можно includeизбежать разрыва страницы после использования -команды?


2
Я не верю, что вы обычно получаете разрывы страниц после подраздела. Какой класс документов вы используете?
Cascabel

1
Не могли бы вы опубликовать свой заголовок (все до \ begin {document}), чтобы мы могли понять, что происходит не так?
Джеральд Сенаркленс де Гранси,

10
Используйте \input, иначе используйте \inputили еще используйте \input.
egreg

Ответы:


4

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

Хорошим обходным решением, когда includeonly не требуется для окончательной версии, является использование include только в черновике:

\newif\ifdraft\drafttrue

или

\newif\ifdraft\draftfalse

\ifdraft
  \include{...}
\fi

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

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

\includeonly{file1,file2,...}позволяет указать список исходных файлов с именем \include{file1}(где file1- пример), который будет отображаться в итоговом документе. Остальные не будут отображаться, но учитываются для счетчиков, меток, оглавлений, когда включены соответствующие файлы aux.

Другими словами, используя includeи, includeonlyможно сократить время компиляции черновика, имея при этом правильные ссылки. Дальнейшее чтение в Викиучебниках .

@ Уилл Робертсон

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


Не могли бы вы привести пример того, как вы составляете только один раздел очень длинного рабочего документа? Я использовал эти методы в следующем ответе pageselо \discardpagesfromhereи \keeppagesfromhere. Они мало пересекаются друг с другом, поэтому я хочу узнать, сможете ли вы лучше справиться с управлением этим проектом. tex.stackexchange.com/a/267555/13173
Лео Леопольд Герц,

1
Если я понимаю это правильно, pagesel должен достичь большего, чем просто include , позволяя точно контролировать, какие страницы должны быть включены в окончательную сборку. Include имеет гораздо меньшие возможности включения исходного кода таким образом, чтобы его можно было включать и выключать.
gschenk 01

152

\includeвсегда использует \clearpage, не совсем разумное значение по умолчанию. Он предназначен для целых глав, а не для подразделов (в любом случае, зачем вам подразделы в отдельных файлах?).

Вы можете исправить это, используя \input{filename}или загрузив newcludeпакет и написав \include*{filename}вместо него.


Моему проекту базы данных необходим документ планирования, документ «Строительство», чтобы показать, как настроить систему. Это разделы в моем LaTeX-файле.
Лео Леопольд Герц 준영

7
Я могу придумать множество причин, по которым нужно помещать подразделы в разные файлы. Первое, что приходит на ум, - это резюме с разным уровнем детализации, в зависимости от цели и / или заявки на работу. Once может легко вырезать или вставлять биты с помощью одного символа «%».
Николас Гамильтон,

9
Прошло много времени с тех пор, как я написал этот ответ, но я считаю, что это слово в скобках должно было быть саркастическим:)
Уилл Робертсон

Причина \includeзапуска новой страницы в том, что она \includeonlyможет работать правильно.
Carsten S

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

31

Вы можете остановить pagebreaks вызванного \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}

Это остановит разрыв страницы между файлом1 и файл2, но вставит нормальный разрыв страницы после файла2. (Примечание: я не знаю, мешает ли это ссылкам и нумерации страниц, хотя я думаю, что все должно быть в порядке.)


1
Спасибо! Этот ответ хорошо работает, когда у вас есть несколько включений плюс ссылки, и вам не нужна новая страница для них. Просто сделайте группу последних, включающую одну и часть библиографии, а не пустую страницу.
Мануэль Феррерия

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

1
Это решение, похоже, вызвало у меня проблемы со ссылками. Во включенном файле, который содержал два пронумерованных списка, ссылки на элементы второго списка не работали. Я понятия не имею, почему это должно быть, но переход на newclude устранил проблему.
Майк Шульман

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

2

Спасибо, Кембридж !

используйте \ include вместо \ input и используйте команду \ includeonly для выбора разделов для обработки


2
Это не лучший совет. Почему вы хотите использовать эту команду \include{...]для работы, если \input{...}это настоящая команда, предназначенная для этих ситуаций?
Флориан Р. Кляйн

1
Этот ответ, кажется, вообще не отвечает на вопрос. (Хотя в остальном это полезный совет с хорошей ссылкой.)
jciloa

Это не отвечает на вопрос.
EL_DON
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.