2010-02-07 33 views
6

Come posso incoraggiare/rendere Latex composto da una parte di testo in modo che venga visualizzato in una coppia di pagine consecutive, pari a una pagina dispari?Rendere Latex composto testo su due pagine affiancate

Con tentativi ed errori, \nopagebreak può essere indotto a farlo, ma esiste una strategia che funziona correttamente? Qualcosa di simile a un ambiente samepage sarebbe l'ideale, ma che:

  1. forzerà un'interruzione di pagina sulle pagine dispari, se ciò che è necessario per ottenere tutto il testo su pagine affiancate;
  2. Consente fino a un'interruzione di pagina in qualsiasi parte del corpo dell'ambiente e si interrompe in modo anomalo se ciò non può essere garantito.

risposta

6

Si potrebbe mettere insieme un ambiente come

 
\newenvironment{twopage}{% 
    \begingroup\setbox0\vbox\bgroup 
}{% 
    \egroup 
    \ifdim\ht0>\textheight 
    \setbox1\vsplit0 to \textheight 
    \cleardoublepage\unvbox1\clearpage 
    \ifdim\ht0>\textheight 
     \PackageWarning{twopage}{Overflow in twopage environment}% 
    \fi 
    \unvbox0\clearpage 
    \else 
    \clearpage\unvbox0\clearpage 
    \fi\endgroup 
} 

Se si desidera un fallimento più rumoroso, modificare \PackageWarning in \PackageError, I \unvbox es dovrebbero consentire per le note/galleggianti per funzionare correttamente - se non è necessario in tal caso, potresti prendere in considerazione di cambiarli tutti in \box es (anche se sono un po 'arrugginito sul comportamento di \vsplit rispetto alle profondità e ai salti dei box, in modo che possa produrre un comportamento divertente, ma garantirebbe solo due pagine facendo scorrere qualcosa in più dalla parte inferiore della seconda pagina).

+0

Accettato: Sembra perfetto. Ho ragione che il punto di \ unvbox è quello di fermare lo spazio spurio, perché altrimenti \ vsplit farebbe in modo che la casella 1 fosse esattamente \ textheight alto? –

+0

'\ unvbox' ha due effetti principali, entrambi i quali devono fare in modo che si comportino come se non ci fosse alcun ambiente di chiusura. Il primo è che qualsiasi whatsits/'\ vadjust's (usato da' \ mark', '\ footnote',' \ marginpar', ecc) non funziona correttamente all'interno delle scatole, dal momento che vogliono essere "di primo livello" nella pagina spedita (le caselle non sono state rimborsate). L'altro ha a che fare con lo spazio - non ricordo il comportamento di '\ vsplit' a distanza, ma credo che ci sia una differenza tra' pippo \ par \ vbox {bar \ par baz} \ par qux' e' foo \ par bar \ par baz \ par qux', e mi è sembrato che volessimo il secondo. – Steve

3

C'è a distinction between \clearpage and \cleardoublepage. Utilizzando \cleardoublepage appena prima del materiale desiderato sul lato sinistro e \clearpage prima del materiale che desideri sul lato destro, puoi forzare il layout che stai cercando.

Ovviamente, l'opzione twoside è obbligatoria.

+0

Tecnicamente, sì, questo risponde alla domanda che ho posto, ma in realtà sto dopo qualcosa di analogo a samepage: non voglio interruzioni a meno che non siano necessarie per mantenere il testo nelle pagine a fronte. Il tuo suggerimento assicurerà che il testo sia sulle pagine affiancate, ma è piuttosto desideroso di fare delle interruzioni di pagina. –

Problemi correlati