2009-07-30 11 views
96

Moja LaTeX powoduje, że po poszczególnych podsekcjach łamam strony, ponieważ moje podsekcje są w osobnych plikach. Używam polecenia \include{file}, które dodaje sidebreak po użyciu.Jak uniknąć łamania się strony po include LaTeX

Chciałbym, aby nie było żadnych stronicowań spowodowanych użyciem \include{file}.

W jaki sposób można uniknąć przerwania strony po użyciu polecenia include -polecenie?

+2

Nie wierzę, że zwykle otrzymujesz podziały strony po podrozdziale. Z jakiej klasy dokumentów korzystasz? – Cascabel

+1

Czy możesz opublikować swój nagłówek (wszystko do \ begin {document}), abyśmy mogli powiedzieć, co się dzieje? –

+7

Użyj '\ input', w przeciwnym razie użyj' \ input' lub użyj '\ input'. – egreg

Odpowiedz

4

Pakiet newclude zaproponowany przez Willa Robertsona jest raczej przydatny, aby uniknąć jasności strony. Wygląda na to, że aby \includeonly zadziałał, należy zadzwonić do paczki zaraz po \documentclass{...}. W złożonym środowisku mojej pracy doktorskiej natknąłem się również na problemy ze zepsutymi referencjami.

Dobrym obejście, gdy includeonly nie jest potrzebne do ostatecznej wersji, jest użycie zawiera tylko w projekcie:

\newif\ifdraft\drafttrue 

lub

\newif\ifdraft\draftfalse 

\ifdraft 
    \include{...} 
\fi 

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

Pierwsza linia może być łatwo załączonym przez plik Makefile, aby produkcja robocza lub wersja produkcyjna osiągała cele.

\includeonly{file1,file2,...} pozwala określić listę plików źródłowych zwanych z \include{file1} (gdzie file1 jest przykład), który pokaże w wynikowym dokumencie. Pozostałe nie będą wyświetlane, ale są uwzględniane w przypadku liczników, etykiet i spisów treści, gdy są dołączone odpowiednie pliki Aux.

Innymi słowy, za pomocą include i includeonly można utrzymać czas kompilacji krótki w wersji roboczej, mając jednocześnie prawidłowe referencje. Więcej informacji na Wikibooks.

@Will Robertson

\include jest tak przydatny, ponieważ pozwala przez \includeonly{...} zbudować tylko niezbędne części. Podczas pracy nad dłuższym tekstem może być dość duża różnica w czasie kompilacji, aby uwzględnić tylko część obszernego rozdziału. Jest również nieoceniony, ponieważ nie trzeba przeglądać długiego przeciągu podczas pracy w jednym punkcie. Wreszcie, mniejsze pliki kodu źródłowego są łatwiejsze w zarządzaniu wersjami, np. git.

+0

Czy możesz podać przykład, jak kompilujesz tylko jedną sekcję bardzo długi dokument roboczy? Użyłem tych metod następującej odpowiedzi w 'pagesel' na temat' \ discardpagesfromhere' oraz '\ keeppagesfromhere'. Są one mało zachodzące na siebie, więc jestem gotów dowiedzieć się, czy możesz lepiej zarządzać tym projektem zarządzania. http://tex.stackexchange.com/a/267555/13173 –

+1

Jeśli rozumiem to poprawnie, _pagesel_ ma osiągnąć więcej niż _includeonly_, pozwalając na dokładną kontrolę, które strony mają być zawarte w ostatecznej wersji. Uwzględnij ma znacznie mniejszy zakres, w tym kod źródłowy w sposób, który można włączać i wyłączać. – gschenk

2

Dziękujemy, Cambridge!

użycie \ include zamiast \ input i użyj polecenia \ includeonly wybrać sekcje przetwarzać

+2

To nie jest najlepsza rada. Dlaczego chcesz używać '\ include {...]' dla zadania, gdy '\ input {...}' jest rzeczywistym poleceniem, które jest intendetem dla tych sytuacji? –

+1

Ta odpowiedź nie wydaje się w ogóle odpowiadać na pytanie. (Chociaż w innym przypadku jest to użyteczna rada, z dobrym referencją.) – jciloa

+0

To nie odpowiada na pytanie. –

137

\include zawsze używa \clearpage, a nie do końca sensowne domyślne. Jest on przeznaczony dla całych rozdziałów, a nie dla podsekcji (dlaczego tak czy inaczej chcesz mieć podsekcji w oddzielnych plikach?).

Można to naprawić, korzystając z \input{filename} lub ładując pakiet newclude i zapisując \include*{filename} zamiast tego.

+0

Moje potrzeby w zakresie projektu bazy danych Dokumentowanie planowania "Budowanie" dokumentu, aby pokazać, jak skonfigurować system. Są to sekcje w moim pliku LaTeX-a. –

+6

Mogę wymyślić zestaw powodów, dla których warto umieścić podsekcje w różnych plikach. Pierwszym, co przychodzi na myśl, jest posiadanie CV o różnych poziomach szczegółowości, w zależności od celu i/lub podania o pracę. Raz można łatwo odcinać bity lub wstawiać bity, za pomocą jednego symbolu "%". –

+8

Minęło trochę czasu odkąd napisałem tę odpowiedź, ale uważam, że nawias miał być sarkastyczny ':)' –

24

Możesz zatrzymać zmiany strony spowodowane przez \include, umieszczając przed nią \let\clearpage\relax. Tak więc, zawartość trzech plików (i wszystkich później dołączonych plików) zostanie umieszczona razem, bez odstępu między nimi. Jeśli chcesz zatrzymać się \clearpage relaks polecenie, a następnie owinąć pliki do obejmują bez pagebreaks obrębie grupy tak:

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

Spowoduje to zatrzymanie pagebreak między plik1 i plik2, ale włóż normalne pagebreak po plik2. (Uwaga: nie wiem, czy to przeszkadza w referencjach i numerowaniu stron, ale wyobrażam sobie, że powinno to być w porządku.)

+1

Dzięki! Ta odpowiedź działa dobrze, gdy masz wiele załączników plus referencje i nie chcesz dla nich nowej strony. Wystarczy, że grupa ostatniej zawiera jedną i część bibliograficzną, a nie jest już czysta. –

+1

Manuel ma rację: możesz użyć sztuczki '' \ begingroup \ let \ clear \ show ... relax ... \ endgroup'' gdzie chcesz - zatrzymaj przerwy między poszczególnymi sekcjami lub częściami, jeśli chcesz, aby bibliografia była włączona ta sama strona co Twój tekst, itp. – John

+1

To rozwiązanie spowodowało dla mnie pewne problemy z referencjami. W dołączonym pliku, który zawierał dwie wyliczone listy, odwołania do elementów z drugiej listy nie działały. Nie mam pojęcia, dlaczego tak powinno być, ale przejście na newclude naprawiło problem. –

Powiązane problemy