2010-05-13 14 views
5

Sto utilizzando il pacchetto exercise per visualizzare gli esercizi in un libro. Ho ridefinito alcuni comandi come questo, che aggiunge in fondo un po 'di spazio, una matita, e due hrule di prima e dopo l'esercizio fisico:rompere un ambiente tra le pagine - il modo intelligente

\renewcommand{\ExerciseHeader}{\vskip 1em\hrule\vskip 1em\centerline{\textbf{\large\smallpencil 
\ExerciseHeaderNB\ExerciseHeaderTitle% 
\ExerciseHeaderDifficulty\ExerciseHeaderOrigin\medskip}}} 
\makeatletter\def\endExerciseEnv{\termineliste{1}\@EndExeBox\vskip .5em\hrule\vskip 1em}\makeatother 

Ora questo funziona, ma c'è un piccolo problema:

ci sono situazioni dove solo il \ hrule finisce per essere nella parte inferiore di una pagina e il resto dell'esercizio va nella pagina successiva. C'è anche il comportamento opposto: l'intero esercizio è su una pagina, ad eccezione di \ hrule in "endExerciseEnv", che viene svuotato alla pagina successiva.

La mia domanda è:

come forzare la parte superiore hrule venire

  • sia insieme con l'intestazione dell'esercizio (voce, titolo, tutto ciò che non) e almeno dire 5em o giù di lì di "testo di esercizio" (in modo che non sembri brutto),
  • O essere completamente svuotato, con l'intero esercizio?

domanda simile per la hrule fondo: Come forzare avere almeno 5 em di "esercizio di testo" di fronte ad esso sulla pagina visibile dove il hrule si va a? (o l'inizio dell'ambiente Esercizio, a seconda di quale evento si verifica per primo, come nel caso in cui l'ambiente non sia superiore a 5em)

Qualsiasi guru LaTeX che lo sa?

Addendum

ho chiesto nelle domande LaTeX passato come questo e ho ottenuto le risposte che mi ha richiesto di fare cose manualmente, come "inserire un \ vskip qua e là", o simili. Sia chiaro: Questo è un libro, ci sono molti esercizi, e HO BISOGNO che sia fatto "automaticamente", andando nel modo corretto di redeclaring dei comandi & co.

+0

In genere, quando si ottiene una risposta su come farlo manualmente, si ha la possibilità di avvolgere il risultato in '\ newenvironment' o simili. Inoltre, se il risultato è più di un banale incantesimo, c'è qualcosa da dire per trasformarlo in un pacchetto di estensione in piena regola. Cerca "LaTeX per scrittori di classi e pacchetti". Certo, è meglio quando qualcuno ha fatto il lavoro per te. Ecco da dove provengono molti dei pacchetti su CTAN ... – dmckee

risposta

2

TeX possibile inserire un'interruzione di pagina prima che la colla, per esempio \vskip 1em.

apportare alcune modifiche:

1) Si scrive \vskip 1em\hrule\vskip 1em sostituirlo con

\vskip 1em\hrule \nobreak \vskip 1em 

2) Si scrive \vskip .5em\hrule\vskip 1em sostituirlo con

\nobreak\vskip .5em\hrule\vskip 1em 

È anche possibile inserire \goodbreak a mostra un buon punto per rompere la pagina. Questo buon punto può essere inserito prima e dopo la tua excersise.

1) \goodbreak\vskip 1em\hrule \nobreak \vskip 1em

2) \nobreak\vskip .5em\hrule \goodbreak \vskip 1em

+0

Grazie. Non l'ho ancora provato, ma sembra buono. – Flavius

Problemi correlati