2009-07-30 11 views
96

My LaTeX mi fa pagine spezzate dopo ogni sottosezione perché le mie sottosezioni sono in file separati. Io uso il comando \include{file} che aggiunge un interruzione di pagina dopo l'uso di esso.Come non avere interruzioni di pagina dopo inclusione in LaTeX

Mi piacerebbe non avere pagebreak causato dall'uso di \include{file}.

Come è possibile evitare il taglio della pagina dopo l'uso del comando include?

+2

Non credo che si ottengano interruzioni di pagina dopo la sottosezione normalmente. Che tipo di documento stai usando? – Cascabel

+1

Potresti postare la tua intestazione (tutto fino a \ begin {document}) in modo che possiamo dire cosa sta andando male? –

+7

Usa '\ input', altrimenti usa' \ input' o usa '\ input'. – egreg

risposta

4

Il pacchetto newclude suggerito da Will Robertson è piuttosto utile per evitare la pagina di cancellazione. Appare, in modo che \includeonly funzioni, è necessario chiamare il pacchetto immediatamente dopo \documentclass{...}. Nel complesso contesto della mia tesi ho anche incontrato problemi con riferimenti non funzionanti.

Una buona soluzione, quando includeonly non è necessario per una versione finale, è quello di utilizzare comprende soltanto nel progetto:

\newif\ifdraft\drafttrue 

o

\newif\ifdraft\draftfalse 

\ifdraft 
    \include{...} 
\fi 

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

La prima linea può essere facilmente aggiunto da un makefile, per fare in modo che la produzione di bozze o di produzione produca obiettivi.

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

In altre parole, utilizzando include e includeonly si può mantenere il tempo di compilazione breve in una bozza pur avendo riferimenti corretti. Ulteriori letture su Wikibooks.

@Will Robertson

\include è così utile perché permette attraverso \includeonly{...} di costruire solo le sezioni necessarie. Mentre si lavora su un testo più lungo, può fare una notevole differenza in fase di compilazione per includere solo una parte di un lungo capitolo. È anche preziosamente utile in quanto non è necessario sfogliare una lunga sborra mentre si lavora in un punto. Infine, file di codice sorgente più piccoli sono più facili da gestire nella gestione delle versioni, ad es. idiota.

+0

Puoi per esempio dare un esempio di come compilare solo una sezione di un documento di lavoro molto lungo? Ho usato questi metodi della seguente risposta in 'pagesel' su' \ discardpagesfromhere' e '\ keeppagesfromhere'. Sono poco sovrapposti, quindi sono disposto a imparare se riesci a gestire meglio questa bozza di gestione. http://tex.stackexchange.com/a/267555/13173 –

+1

Se ho capito bene, _pagesel_ è di ottenere più di _includeonly_ consentendo un controllo preciso di quali pagine devono essere incluse in una build finale. Include ha uno scopo molto più piccolo, di includere codice sorgente in un modo che può essere acceso e spento. – gschenk

2

Grazie, Cambridge!

uso \ include invece di \ input, e usare il comando \ includeonly per selezionare le sezioni per elaborare

+2

Questo non è il miglior consiglio. Perché dovresti usare '\ include {...]' per un lavoro quando '\ input {...}' è il comando effettivo che è intenet per queste situazioni? –

+1

Questa risposta non sembra rispondere alla domanda. (Anche se è altrimenti un consiglio utile, con un buon riferimento.) – jciloa

+0

Questo non risponde alla domanda. –

137

\include utilizza sempre \clearpage, un default non del tutto ragionevole. È inteso per interi capitoli, non per sottosezioni (perché vorresti sottosezioni in file separati, comunque?).

È possibile risolvere il problema utilizzando \input{filename} oppure caricando il pacchetto newclude e scrivendo \include*{filename}.

+0

Il mio progetto di database ha bisogno di Pianificare il documento "Costruire" per mostrare come impostare il sistema. Sono sezioni nel mio file LaTeX. –

+6

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

+8

È passato un po 'di tempo da quando ho scritto questa risposta, ma credo che la parentesi sia stata pensata per essere sarcastico ':' –

24

È possibile interrompere le interruzioni di pagina causate da \include inserendo \let\clearpage\relax prima di esso. Quindi,

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

metterebbe il contenuto dei tre file (e di eventuali file inclusi successivamente) insieme senza un pagebreak tra di loro. Se si desidera interrompere il comando di relax \clearpage, quindi avvolgere i file da includere, senza interruzioni di pagina all'interno di un gruppo come questo:

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

Questo fermerà un'interruzione di pagina tra il file1 e file2, ma inserire il pagebreak normale dopo file2. (Nota: non so se questo interferisce con il riferimento e la numerazione delle pagine, anche se immagino che dovrebbe essere OK.)

+1

Grazie! Questa risposta funziona bene quando si dispone di più include più riferimenti e non si desidera una nuova pagina per loro. Basta creare un gruppo dell'ultimo include e la parte della bibliografia e non più una pagina vuota. –

+1

Manuel ha ragione: puoi usare il trucco '' \ \ begingroup \ let \ clearpage \ relax ... \ endgroup'' dove preferisci --- interrompi il pagebreak tra sezioni o parti particolari, se vuoi che la bibliografia sia attiva la stessa pagina del testo, ecc. – John

+1

Questa soluzione sembra aver causato alcuni problemi con riferimenti. In un file incluso che conteneva due elenchi enumerati, i riferimenti agli elementi della seconda lista non funzionavano. Non ho idea del perché questo dovrebbe essere, ma il passaggio a newclude ha risolto il problema. –

Problemi correlati