Jak nie mieć podziału strony po \ include w LaTeX

110

Mój LaTeX powoduje podział stron po każdej podsekcji, ponieważ moje podsekcje są w osobnych plikach. Używam polecenia, \include{file}które dodaje podział strony po jego użyciu.

Chciałbym, aby strona nie była przerywana przez użycie \include{file}.

Jak możesz includeuniknąć łamania strony po użyciu -command?

Léo Léopold Hertz 준영
źródło
2
Nie wierzę, że po podsekcji normalnie pojawiają się podziały stron. Jakiej klasy dokumentów używasz?
Cascabel
1
Czy możesz opublikować swój nagłówek (wszystko do \ begin {document}), żebyśmy mogli stwierdzić, co się dzieje?
Gerald Senarclens de Grancy
10
Użyj \input, w inny sposób użyj \inputlub użyj \input.
egreg

Odpowiedzi:

4

Pakiet newclude zasugerowany przez Willa Robertsona jest raczej przydatny, aby uniknąć wyraźnej strony. Wygląda na to, że \includeonlyaby zadziałać, należy natychmiast po paczce zadzwonić \documentclass{...}. W skomplikowanym środowisku pracy doktorskiej napotkałem również problemy z zerwanymi odniesieniami.

Dobrym sposobem obejścia problemu, gdy tylko dołączanie nie jest potrzebne w ostatecznej wersji, jest użycie dołączeń tylko w wersji roboczej:

\newif\ifdraft\drafttrue

lub

\newif\ifdraft\draftfalse

\ifdraft
  \include{...}
\fi

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

Pierwsza linia może być łatwo dołączona przez makefile, aby szkic lub wersja produkcyjna były celami.

\includeonly{file1,file2,...}pozwala określić listę plików źródłowych o nazwie with \include{file1}(gdzie file1jest przykład), które będą wyświetlane w wynikowym dokumencie. Pozostałe nie pojawią się, ale są brane pod uwagę dla liczników, etykiet, spisów treści, gdy dołączone są odpowiednie pliki aux.

Innymi słowy, używając includei includeonlymożna skrócić czas kompilacji w wersji roboczej, mając jednocześnie prawidłowe odniesienia. Dalsze czytanie na Wikibooks .

@Will Robertson

\includejest tak przydatny, ponieważ pozwala \includeonly{...}na budowanie tylko potrzebnych sekcji. Podczas pracy nad dłuższym tekstem uwzględnienie tylko części długiego rozdziału może mieć spore znaczenie w czasie kompilacji. Jest to również nieocenione, ponieważ nie trzeba przeglądać długich szkiców podczas pracy w jednym miejscu. Wreszcie mniejsze pliki kodu źródłowego są łatwiejsze w obsłudze w zarządzaniu wersjami, np. Git.

gschenk
źródło
Czy możesz podać przykład, w jaki sposób kompilujesz tylko jedną część bardzo długiego dokumentu roboczego? Użyłem tych metod następującej odpowiedzi w pageselokoło \discardpagesfromherei \keeppagesfromhere. W niewielkim stopniu nakładają się na siebie, więc jestem gotów się dowiedzieć, czy możesz lepiej poradzić sobie z zarządzaniem wersją roboczą. tex.stackexchange.com/a/267555/13173
Léo Léopold Hertz 준영
1
Jeśli dobrze rozumiem, Pagesel ma osiągnąć więcej niż tylko dołączanie , umożliwiając dokładną kontrolę, które strony mają zostać uwzględnione w ostatecznej kompilacji. Uwzględnij ma znacznie mniejszy zakres, obejmujący kod źródłowy w sposób, który można włączać i wyłączać.
gschenk
152

\includezawsze używa \clearpage, nie do końca rozsądne ustawienie domyślne. Jest przeznaczony dla całych rozdziałów, a nie podsekcji (po co w ogóle miałbyś mieć podsekcje w osobnych plikach?).

Możesz to naprawić, używając \input{filename}lub ładując newcludepakiet i pisząc \include*{filename}zamiast tego.

Will Robertson
źródło
Mój projekt bazy danych wymaga planowania dokumentu „Budowa”, aby pokazać, jak skonfigurować system. To są sekcje w moim pliku LaTeX.
Léo Léopold Hertz 준영
7
Przychodzi mi do głowy mnóstwo powodów, dla których należy umieszczać podsekcje w różnych plikach. Pierwszą, która przychodzi na myśl, jest CV o różnym poziomie szczegółowości, w zależności od celu i / lub podania o pracę. Raz można łatwo wyciąć lub włożyć bity za pomocą pojedynczego symbolu „%”.
Nicholas Hamilton,
8
Minęło trochę czasu, odkąd napisałem tę odpowiedź, ale uważam, że nawias miał być sarkastyczny:)
Will Robertson
Powodem \includerozpoczęcia nowej strony jest to, że \includeonlymoże działać poprawnie.
Carsten S
Kolejny powód przycinania sekcji do różnych plików: Rozważ pisanie arkuszy ćwiczeń, które zawsze mają na początku maketitit, ale zawsze zawierają tylko jeden arkusz ćwiczeń na wydruku. Sam nie uważałbym każdego arkusza ćwiczeń za rozdział, zwłaszcza, że ​​więcej arkuszy ćwiczeń odnosi się do jednego rozdziału w wykładzie. Zawiera on tylko funkcję liczenia arkuszy ćwiczeń, takich jak arkusz 1 z ćwiczeniami (1.1-1.4), arkusz 2 z ćwiczeniami (2.1-2.3) i tak dalej.
C-Star-W-Star
30

Możesz zatrzymać podziały stron spowodowane \includeprzez umieszczenie \let\clearpage\relaxgo przed nim. Więc,

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

umieściłby zawartość trzech plików (i wszelkich później dołączonych plików) razem bez podziału strony między nimi. Jeśli chcesz przestać rozluźniać \clearpagepolecenie, zawiń pliki, aby uwzględnić je bez podziałów stron w grupie takiej jak ta:

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

Spowoduje to zatrzymanie podziału strony między plik1 i plik2, ale wstawi normalny podział strony po pliku2. (Uwaga: nie wiem, czy to koliduje z odwołaniami i numeracją stron, chociaż wyobrażam sobie, że powinno być OK).

Jan
źródło
1
Dzięki! Ta odpowiedź działa dobrze, gdy masz wiele dołączeń plus Referencje i nie chcesz dla nich nowej strony. Po prostu utwórz grupę z ostatniej zawierającą jedną i część bibliograficzną, a nie będzie już czystą stroną.
Manuel Ferreria
2
Manuel ma rację: możesz użyć tej \begingroup\let\clearpage\relax ...\endgroupsztuczki, gdziekolwiek zechcesz - zatrzymaj podziały stron między poszczególnymi sekcjami lub częściami, jeśli chcesz, aby bibliografia była na tej samej stronie co twój tekst itp.
Jan
1
Wydaje się, że to rozwiązanie spowodowało pewne problemy z odniesieniami. W załączonym pliku, który zawierał dwie wyliczone listy, odniesienia do pozycji drugiej listy nie działały. Nie mam pojęcia, dlaczego tak się dzieje, ale przejście na newclude rozwiązało problem.
Mike Shulman
1
Polecam przed użyciem tej metody; stworzy więcej problemów niż rozwiązuje (zakładając, że w pierwszej kolejności rozwiązuje jakiś problem): patrz tex.stackexchange.com/a/185237/4427
egreg
2

Dziękuję, Cambridge !

użyj \ include zamiast \ input i użyj polecenia \ includeonly, aby wybrać sekcje do przetworzenia

Léo Léopold Hertz 준영
źródło
2
To nie jest najlepsza rada. Dlaczego miałbyś chcieć używać \include{...]do zadania, kiedy \input{...}jest to polecenie, które jest przeznaczone dla takich sytuacji?
Florian R. Klein,
1
Ta odpowiedź nie wydaje się w ogóle odpowiadać na pytanie. (Mimo że jest to pożyteczna rada, z dobrym odniesieniem.)
jciloa
To nie odpowiada na pytanie.
EL_DON,