Come non avere interruzioni di pagina dopo \ includi in LaTeX


110

Il mio LaTeX mi crea interruzioni di pagina dopo ogni sottosezione perché le mie sottosezioni sono in file separati. Uso il comando \include{file}che aggiunge un'interruzione di pagina dopo l'uso.

Vorrei non avere interruzioni di pagina causate dall'uso di \include{file}.

Come puoi includeevitare interruzioni di pagina dopo l'uso di -command?


2
Non credo che normalmente si ottengano interruzioni di pagina dopo la sottosezione. Quale documentclass stai usando?
Cascabel

1
Potresti pubblicare la tua intestazione (tutto fino al \ begin {document}) in modo che possiamo dire cosa sta andando storto?
Gerald Senarclens de Grancy

10
Usa \input, altrimenti usa \inputo usa \input.
egreg

Risposte:


4

Il pacchetto newclude suggerito da Will Robertson è piuttosto utile per evitare il clearpage. Sembra, in ordine\includeonly funzionare bisogna chiamare il pacco subito dopo \documentclass{...}. Nell'ambiente complesso della mia dissertazione ho anche riscontrato problemi con riferimenti interrotti.

Una buona soluzione, quando includeonly non è necessario per una versione finale, è usare include solo nella bozza:

\newif\ifdraft\drafttrue

o

\newif\ifdraft\draftfalse

\ifdraft
  \include{...}
\fi

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

La prima riga può essere facilmente aggiunta da un makefile, per creare obiettivi di produzione in versione bozza o di produzione.

\includeonly{file1,file2,...}permette di specificare un elenco di file sorgente chiamati con \include{file1}(dove file1è un esempio) che verranno visualizzati nel documento risultante. Gli altri non verranno visualizzati, ma sono considerati per contatori, etichette, sommari quando sono inclusi i file aux corrispondenti.

In altre parole, usando includee includeonlysi può mantenere breve il tempo di compilazione in una bozza pur avendo riferimenti corretti. Ulteriori letture Wikibooks .

@ Will Robertson

\includeè così utile perché permette \includeonly{...}di costruire solo le sezioni necessarie. Mentre si lavora su un testo più lungo, includere solo una sezione di un capitolo lungo può fare una grande differenza nei tempi di compilazione. È anche estremamente utile in quanto non è necessario sfogliare una lunga bozza mentre si lavora a un certo punto. Infine, file più piccoli di codice sorgente sono più facili da gestire nella gestione delle versioni, ad esempio git.


Puoi fare un esempio di come compili solo una sezione di un documento di lavoro molto lungo? Ho usato questi metodi della seguente risposta in pageselcirca \discardpagesfromheree \keeppagesfromhere. Sono poco sovrapposti tra loro, quindi sono disposto a imparare se puoi gestire meglio questa gestione delle bozze. tex.stackexchange.com/a/267555/13173
Léo Léopold Hertz 준영

1
Se lo capisco correttamente, pagesel deve ottenere più di includeonly consentendo un controllo preciso quali pagine devono essere incluse in una build finale. Include ha uno scopo molto più piccolo, di includere il codice sorgente in un modo che può essere attivato e disattivato.
gschenk

152

\include usa sempre \clearpage , un default non del tutto sensato. È inteso per interi capitoli, non per sottosezioni (perché dovreste volere le sottosezioni in file separati, comunque?).

Puoi risolverlo utilizzando \input{filename}o caricando il newcludepacchetto e scrivendo \include*{filename}.


Il progetto del mio database necessita del documento di pianificazione, il documento "Edificio", per mostrare come impostare il sistema. Sono sezioni nel mio LaTeX -file.
Léo Léopold Hertz 준영

7
Posso pensare a una serie di motivi per cui inserire sottosezioni in file diversi. Il primo che mi viene in mente è avere un CV con diversi livelli di dettaglio, a seconda del target e / o della domanda di lavoro. Once può facilmente tagliare o inserire bit, con un unico simbolo '%'.
Nicholas Hamilton

8
È passato un po 'di tempo da quando ho scritto questa risposta, ma credo che le parentesi volessero essere sarcastiche:)
Will Robertson

Il motivo per cui \includeinizia una nuova pagina è che \includeonlypuò funzionare correttamente.
Carsten S

Un altro motivo per ritagliare le sezioni in file diversi: considera di scrivere fogli di esercizi che abbiano sempre un titolo all'inizio ma includendo sempre un foglio di esercizi solo sulla stampa. Io stesso non considererei ogni foglio di esercizio un capitolo in sé, soprattutto perché più fogli di esercizi si riferiscono a un singolo capitolo in una lezione. Includeonly serve per contare i fogli degli esercizi come il foglio 1 con gli esercizi (1.1-1.4), il foglio 2 con gli esercizi (2.1-2.3) e così via.
C-Star-W-Star

30

È possibile interrompere le interruzioni di pagina causate \includeda posizionandole \let\clearpage\relaxprima. Così,

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

metterebbe insieme il contenuto dei tre file (e qualsiasi file successivamente incluso) senza un'interruzione di pagina tra di loro. Se vuoi interrompere il rilassamento del \clearpagecomando, avvolgi i file per includerli senza interruzioni di pagina all'interno di un gruppo come questo:

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

Ciò interromperà un'interruzione di pagina tra file1 e file2, ma inserirà la normale interruzione di pagina dopo file2. (Nota: non so se questo interferisce con i riferimenti e la numerazione delle pagine, anche se immagino che dovrebbe essere OK.)


1
Grazie! Questa risposta funziona bene quando hai più include più riferimenti e non vuoi una nuova pagina per loro. Basta fare un gruppo dell'ultimo includi uno e la parte della bibliografia, e non più una pagina chiara.
Manuel Ferreria

2
Manuel ha ragione: puoi usare il \begingroup\let\clearpage\relax ...\endgrouptrucco dove preferisci --- ferma le interruzioni di pagina tra sezioni o parti particolari, se vuoi che la bibliografia sia sulla stessa pagina del tuo testo, ecc.
John

1
Questa soluzione sembra aver causato alcuni problemi per me con i riferimenti. In un file incluso che conteneva due elenchi enumerati, i riferimenti agli elementi del secondo elenco non funzionavano. Non ho idea del motivo per cui dovrebbe essere, ma il passaggio a newclude ha risolto il problema.
Mike Shulman

1
Raccomando di non utilizzare questo metodo; creerà più problemi di quanti
egreg

2

Grazie Cambridge !

usa \ include invece di \ input e usa il comando \ includeonly per selezionare le sezioni da elaborare


2
Questo non è il miglior consiglio. Perché dovresti usarlo \include{...]per un lavoro quando \input{...}è il comando effettivo che è destinato a queste situazioni?
Florian R. Klein

1
Questa risposta sembra non rispondere affatto alla domanda. (Anche se per il resto è un consiglio utile, con un buon riferimento.)
jciloa

Questo non risponde alla domanda.
EL_DON
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.