Comment ne pas avoir de saut de page après \ inclure dans LaTeX


110

Mon LaTeX me fait des sauts de page après chaque sous-section car mes sous-sections sont dans des fichiers séparés. J'utilise la commande \include{file}qui ajoute un saut de page après son utilisation.

Je souhaite qu'aucun saut de page ne soit causé par l'utilisation de \include{file}.

Comment pouvez-vous pas de saut de page après l'utilisation de include-command?


2
Je ne pense pas que vous obteniez normalement des sauts de page après la sous-section. Quelle classe de documents utilisez-vous?
Cascabel

1
Pourriez-vous publier votre en-tête (tout jusqu'au \ begin {document}) afin que nous puissions dire ce qui ne va pas?
Gerald Senarclens de Grancy

10
Utiliser \input, utiliser \inputou utiliser autrement \input.
egreg

Réponses:


4

Le package newclude suggéré par Will Robertson est plutôt utile pour éviter la page clear. Il semble que \includeonlypour fonctionner, il faut appeler le paquet immédiatement après \documentclass{...}. Dans l'environnement complexe de ma thèse, j'ai également rencontré des problèmes de références brisées.

Une bonne solution de contournement, lorsque includeonly n'est pas nécessaire pour une version finale, consiste à utiliser des inclusions uniquement dans le brouillon:

\newif\ifdraft\drafttrue

ou

\newif\ifdraft\draftfalse

\ifdraft
  \include{...}
\fi

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

La première ligne peut être facilement ajoutée par un makefile, pour que la production de la version brouillon ou de production fasse des cibles.

\includeonly{file1,file2,...}permet de spécifier une liste de fichiers source appelés avec \include{file1}(où file1est un exemple) qui s'affichera dans le document résultant. Les autres n'apparaîtront pas, mais sont pris en compte pour les compteurs, les étiquettes, les tables des matières lorsque les fichiers auxiliaires correspondants sont inclus.

En d'autres termes, en utilisant includeet includeonlyon peut réduire le temps de compilation dans un brouillon tout en ayant des références correctes. Lectures complémentaires sur Wikibooks .

@Will Robertson

\includeest si utile car il permet \includeonly{...}de construire uniquement les sections nécessaires. Tout en travaillant sur du texte plus long, le temps de compilation peut faire toute la différence en n'incluant qu'une section d'un long chapitre. Il est également extrêmement utile car il n'est pas nécessaire de parcourir un long brouillon tout en travaillant à un moment donné. Enfin, les petits fichiers de code source sont plus faciles à gérer dans la gestion des versions, par exemple git.


Pouvez-vous donner un exemple de la manière dont vous compilez une seule section d'un très long document de travail? J'ai utilisé ces méthodes de la réponse suivante dans pageselenviron \discardpagesfromhereet \keeppagesfromhere. Ils se chevauchent peu, donc je suis prêt à apprendre si vous pouvez mieux gérer ce projet de gestion. tex.stackexchange.com/a/267555/13173
Léo Léopold Hertz 준영

1
Si je comprends bien, pagesel doit réaliser plus que l' inclusion uniquement en permettant un contrôle précis des pages à inclure dans une version finale. Inclure a une portée beaucoup plus restreinte, consistant à inclure le code source d'une manière qui peut être activée et désactivée.
gschenk

152

\include utilise toujours \clearpage , une valeur par défaut pas tout à fait sensée. Il est destiné à des chapitres entiers, pas à des sous-sections (pourquoi voudriez-vous des sous-sections dans des fichiers séparés, de toute façon?).

Vous pouvez le corriger en utilisant \input{filename}ou en chargeant le newcludepackage et en écrivant à la \include*{filename}place.


Mon projet de base de données a besoin du document de planification, le document "Construction" pour montrer comment mettre en place le système. Ce sont des sections dans mon fichier LaTeX.
Léo Léopold Hertz 준영

7
Je peux penser à une pile de raisons pour lesquelles mettre des sous-sections dans différents fichiers. Le premier qui me vient à l'esprit est d'avoir un CV avec différents niveaux de détails, en fonction de la cible et / ou de la candidature. Une fois peut facilement couper ou insérer des bits, avec un seul symbole «%».
Nicholas Hamilton

8
Cela fait un moment que j'ai écrit cette réponse, mais je crois que la parenthèse était censée être sarcastique:)
Will Robertson

La raison pour laquelle \includeune nouvelle page démarre est qu'elle \includeonlypeut fonctionner correctement.
Carsten S

Une autre raison de recadrer des sections dans différents fichiers: pensez à écrire des feuilles d'exercices ayant toujours un maketitle au début mais incluant toujours une feuille d'exercice uniquement sur l'impression. Je ne considérerais pas moi-même chaque feuille d'exercice comme un chapitre lui-même, d'autant plus que davantage de feuilles d'exercices font référence à un seul chapitre d'une conférence. L'inclusion sert uniquement à compter les feuilles d'exercices comme la feuille 1 avec les exercices (1.1-1.4), la feuille 2 avec les exercices (2.1-2.3) et ainsi de suite.
C-Star-W-Star

30

Vous pouvez arrêter les sauts de page causés par \includeen les plaçant \let\clearpage\relaxavant. Alors,

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

mettrait le contenu des trois fichiers (et de tous les fichiers inclus ultérieurement) sans un saut de page entre eux. Si vous souhaitez arrêter d'assouplir la \clearpagecommande, enveloppez les fichiers pour les inclure sans sauts de page dans un groupe comme celui-ci:

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

Cela arrêtera un saut de page entre fichier1 et fichier2, mais insérera le saut de page normal après fichier2. (Remarque: je ne sais pas si cela interfère avec le référencement et la numérotation des pages, même si j'imagine que cela devrait être OK.)


1
Merci! Cette réponse fonctionne bien lorsque vous avez plusieurs inclusions plus des références et que vous ne voulez pas d'une nouvelle page pour eux. Faites simplement un groupe de la dernière inclusion et de la partie bibliographie, et non plus une page claire.
Manuel Ferreria

2
Manuel a raison: vous pouvez utiliser l' \begingroup\let\clearpage\relax ...\endgroupastuce où vous voulez --- arrêter les sauts de page entre des sections ou des parties particulières, si vous voulez que la bibliographie soit sur la même page que votre texte, etc.
Jean

1
Cette solution semble m'avoir causé quelques problèmes de références. Dans un fichier inclus contenant deux listes énumérées, les références aux éléments de la deuxième liste ne fonctionnaient pas. Je n'ai aucune idée de pourquoi cela devrait être, mais le passage à newclude a résolu le problème.
Mike Shulman

1
Je recommande de ne pas utiliser cette méthode; cela créera plus de problèmes qu'il n'en résout (en supposant qu'il résout un problème en premier lieu): voir tex.stackexchange.com/a/185237/4427
egreg

2

Merci Cambridge !

utilisez \ include au lieu de \ input et utilisez la commande \ includeonly pour sélectionner les sections à traiter


2
Ce n'est pas le meilleur conseil. Pourquoi voudriez-vous utiliser \include{...]pour un travail quand \input{...}est la commande réelle qui est prévue pour ces situations?
Florian R. Klein

1
Cette réponse ne semble pas du tout répondre à la question. (Même si c'est par ailleurs un conseil utile, avec une bonne référence.)
jciloa

Cela ne répond pas à la question.
EL_DON
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.