So erhalten Sie keinen Seitenumbruch nach \ include in LaTeX


110

Mein LaTeX führt nach jedem Unterabschnitt zu Seitenbrüchen, da sich meine Unterabschnitte in separaten Dateien befinden. Ich benutze den Befehl, \include{file}der nach der Verwendung einen Seitenumbruch hinzufügt.

Ich möchte keinen Seitenumbruch haben, der durch die Verwendung von verursacht wird \include{file}.

Wie kann man nach der Verwendung von -command keinen Seitenumbruch machen include?


2
Ich glaube nicht, dass Sie nach dem Unterabschnitt normalerweise Seitenumbrüche bekommen. Welche Dokumentklasse verwenden Sie?
Cascabel

1
Könnten Sie Ihren Header posten (alles bis zum \ begin {document}), damit wir erkennen können, was falsch läuft?
Gerald Senarclens de Grancy

10
Verwenden \input, anderweitig verwenden \inputoder anderweitig verwenden \input.
Egreg

Antworten:


4

Das von Will Robertson vorgeschlagene Newclude-Paket ist ziemlich nützlich, um die Clearpage zu vermeiden. Es scheint, um \includeonlyzu arbeiten, muss man das Paket sofort danach aufrufen \documentclass{...}. In dem komplexen Umfeld meiner Dissertation stieß ich auch auf Probleme mit fehlerhaften Referenzen.

Eine gute Problemumgehung, wenn für eine endgültige Version nicht nur Include benötigt wird, besteht darin, Includes nur im Entwurf zu verwenden:

\newif\ifdraft\drafttrue

oder

\newif\ifdraft\draftfalse

\ifdraft
  \include{...}
\fi

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

Die erste Zeile kann einfach durch ein Makefile angehängt werden, um Entwurfs- oder Produktionsversionsziele zu erstellen.

\includeonly{file1,file2,...}Ermöglicht die Angabe einer Liste von Quelldateien, die mit aufgerufen werden \include{file1}(wo file1ist ein Beispiel), die im resultierenden Dokument angezeigt werden. Die anderen werden nicht angezeigt, werden jedoch für Zähler, Beschriftungen und Inhaltsverzeichnisse berücksichtigt, wenn die entsprechenden Aux-Dateien enthalten sind.

Mit anderen Worten, durch Verwendung von includeund includeonlykann die Kompilierungszeit in einem Entwurf kurz gehalten werden, während korrekte Referenzen vorhanden sind. Lesen Sie weiter auf Wikibooks .

@ Will Robertson

\includeist so nützlich, weil es erlaubt \includeonly{...}, nur benötigte Abschnitte zu erstellen. Bei der Arbeit an längerem Text kann es einen großen Unterschied in der Kompilierungszeit machen, nur einen Abschnitt eines langen Kapitels einzuschließen. Es ist auch von unschätzbarem Wert, da man während der Arbeit an einem Punkt nicht durch einen langen Entwurf blättern muss. Schließlich sind kleinere Dateien mit Quellcode in der Versionsverwaltung einfacher zu handhaben, z. B. Git.


Können Sie bitte ein Beispiel geben, wie Sie nur einen Abschnitt eines sehr langen Arbeitspapiers zusammenstellen? Ich habe diese Methoden der folgenden Antwort in pageseletwa \discardpagesfromhereund verwendet \keeppagesfromhere. Sie überschneiden sich kaum, daher bin ich bereit zu erfahren, ob Sie mit diesem Managemententwurf besser umgehen können. tex.stackexchange.com/a/267555/13173
Léo Léopold Hertz 준영

1
Wenn ich es richtig verstehe, soll Pagesel mehr als nur einschließen, indem genau gesteuert wird, welche Seiten in einem endgültigen Build enthalten sein sollen. Include hat einen viel kleineren Umfang, nämlich das Einschließen von Quellcode auf eine Weise, die ein- und ausgeschaltet werden kann.
Gschenk

152

\includeverwendet immer \clearpageeinen nicht ganz vernünftigen Standard. Es ist für ganze Kapitel gedacht, nicht für Unterabschnitte (warum sollten Sie Unterabschnitte überhaupt in separaten Dateien haben wollen?).

Sie können das Problem beheben, indem Sie \input{filename}das newcludePaket verwenden oder laden und \include*{filename}stattdessen schreiben .


Mein Datenbankprojekt benötigt das Planungsdokument "Gebäude", um zu zeigen, wie das System eingerichtet wird. Sie sind Abschnitte in meiner LaTeX-Datei.
Léo Léopold Hertz 준영

7
Ich kann mir eine Reihe von Gründen vorstellen, warum Unterabschnitte in verschiedene Dateien eingefügt werden sollten. Das erste, was mir in den Sinn kommt, ist ein Lebenslauf mit unterschiedlichen Detaillierungsgraden, je nach Ziel und / oder Bewerbung. Einmal können Bits mit einem einzigen '%'-Symbol leicht herausgeschnitten oder eingefügt werden.
Nicholas Hamilton

8
Es ist schon eine Weile her, seit ich diese Antwort geschrieben habe, aber ich glaube, dass Klammern sarkastisch sein sollten:)
Will Robertson

Der Grund, warum \includeeine neue Seite gestartet wird, ist, dass \includeonlysie ordnungsgemäß funktionieren kann.
Carsten S

Ein weiterer Grund für das Zuschneiden von Abschnitten in verschiedene Dateien: Schreiben Sie Übungsblätter, die am Anfang immer einen Maketitel haben, aber immer nur ein Übungsblatt auf dem Ausdruck enthalten. Ich selbst würde nicht jedes Übungsblatt als Kapitel selbst betrachten, zumal sich mehr Übungsblätter auf ein einzelnes Kapitel in einer Vorlesung beziehen. Das Include dient nur zum Zählen der Übungsblätter wie Blatt 1 mit Übungen (1.1-1.4), Blatt 2 mit Übungen (2.1-2.3) und so weiter.
C-Star-W-Star

30

Sie können Seitenbrüche stoppen, \includeindem Sie sie \let\clearpage\relaxdavor platzieren . So,

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

würde den Inhalt der drei Dateien (und aller später enthaltenen Dateien) ohne einen Seitenumbruch zwischen ihnen zusammenfügen. Wenn Sie den \clearpageBefehl nicht mehr lockern möchten , verpacken Sie die Dateien so, dass sie ohne Seitenumbrüche in eine Gruppe wie die folgende aufgenommen werden:

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

Dadurch wird ein Seitenumbruch zwischen Datei1 und Datei2 gestoppt, aber der normale Seitenumbruch nach Datei2 eingefügt. (Hinweis: Ich weiß nicht, ob dies die Referenzierung und Seitennummerierung beeinträchtigt, obwohl ich mir vorstelle, dass dies in Ordnung sein sollte.)


1
Vielen Dank! Diese Antwort funktioniert gut, wenn Sie mehrere Includes plus Referenzen haben und keine neue Seite für diese möchten. Machen Sie einfach eine Gruppe der letzten, die eine und den Bibliographieteil enthält, und keine Clearpage mehr.
Manuel Ferreria

2
Manuel hat recht: Sie können den \begingroup\let\clearpage\relax ...\endgroupTrick anwenden, wo immer Sie möchten - stoppen Sie Seitenumbrüche zwischen bestimmten Abschnitten oder Teilen, wenn Sie möchten, dass sich die Bibliographie auf derselben Seite wie Ihr Text befindet usw.
John

1
Diese Lösung scheint mir einige Probleme mit Referenzen verursacht zu haben. In einer enthaltenen Datei, die zwei Aufzählungslisten enthielt, funktionierten Verweise auf die Elemente der zweiten Liste nicht. Ich habe keine Ahnung, warum das so sein sollte, aber der Wechsel zu newclude hat das Problem behoben.
Mike Shulman

1
Ich empfehle gegen diese Methode verwendet wird ; es wird mehr Probleme verursachen als es löst (vorausgesetzt, es löst überhaupt ein Problem): siehe tex.stackexchange.com/a/185237/4427
egreg

2

Vielen Dank, Cambridge !

Verwenden Sie \ include anstelle von \ input und wählen Sie mit dem Befehl \ includeonly die zu verarbeitenden Abschnitte aus


2
Dies ist nicht der beste Rat. Warum sollten Sie \include{...]für einen Job verwenden, wenn \input{...}der eigentliche Befehl für diese Situationen vorgesehen ist?
Florian R. Klein

1
Diese Antwort scheint die Frage überhaupt nicht zu beantworten. (Auch wenn es ansonsten ein nützlicher Rat ist, mit einer guten Referenz.)
jciloa

Dies beantwortet die Frage nicht.
EL_DON
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.