Como não quebrar a página após \ incluir no LaTeX

110

Meu LaTeX me faz quebras de página após cada subseção porque minhas subseções estão em arquivos separados. Eu uso o comando \include{file}que adiciona uma quebra de página após o uso.

Eu gostaria de não ter nenhuma quebra de página causada pelo uso de \include{file}.

Como você pode impedir a quebra de página após o uso do include-command?

Léo Léopold Hertz 준영
fonte
2
Eu não acredito que você obtenha quebras de página após a subseção normalmente. Qual documentclass você está usando?
Cascabel
1
Você poderia postar seu cabeçalho (tudo até o \ begin {document}) para que possamos dizer o que está errado?
Gerald Senarclens de Grancy
10
Use \input, caso contrário use \inputou então use \input.
egregar

Respostas:

4

O pacote newclude sugerido por Will Robertson é bastante útil para evitar o clearpage. Parece que \includeonlypara funcionar é preciso ligar para o pacote logo em seguida \documentclass{...}. No ambiente complexo da minha dissertação também tive problemas com referências quebradas.

Uma boa solução, quando a inclusão apenas não é necessária para uma versão final, é usar as inclusões apenas no rascunho:

\newif\ifdraft\drafttrue

ou

\newif\ifdraft\draftfalse

\ifdraft
  \include{...}
\fi

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

A primeira linha pode ser facilmente anexada por um makefile, para fazer alvos de produção de versão de rascunho ou produção.

\includeonly{file1,file2,...}permite especificar uma lista de arquivos fonte chamados com \include{file1}(onde file1está um exemplo) que será mostrado no documento resultante. Os outros não serão exibidos, mas serão considerados para contadores, rótulos e índices quando os arquivos auxiliares correspondentes forem incluídos.

Em outras palavras, usando includee includeonlypode-se manter o tempo de compilação curto em um rascunho, tendo as referências corretas. Leituras adicionais no Wikilivros .

@Will Robertson

\includeé tão útil porque permite \includeonly{...}construir apenas as seções necessárias. Ao trabalhar em um texto mais longo, pode fazer uma grande diferença no tempo de compilação incluir apenas uma seção de um capítulo longo. Também é de uma utilidade inestimável, pois não é preciso folhear um longo rascunho enquanto trabalhamos em determinado ponto. Por último, arquivos menores de código-fonte são mais fáceis de manusear no gerenciamento de versão, por exemplo, git.

gschenk
fonte
Você pode dar um exemplo de como compilar apenas uma seção de um documento de trabalho muito longo? Usei esses métodos da seguinte resposta em pageselcerca de \discardpagesfromheree \keeppagesfromhere. Eles estão um pouco sobrepostos uns aos outros, então estou disposto a aprender se você pode lidar melhor com esse gerenciamento de rascunho. tex.stackexchange.com/a/267555/13173
Léo Léopold Hertz 준영
1
Se eu entendi corretamente , o pagesel deve alcançar mais do que apenas incluir , permitindo um controle preciso de quais páginas devem ser incluídas em uma compilação final. Incluir tem um escopo muito menor, de incluir código-fonte de forma que possa ser ligado e desligado.
gschenk
152

\includesempre usa \clearpage, um padrão não inteiramente sensato. Ele se destina a capítulos inteiros, não a subseções (por que você quer subseções em arquivos separados, afinal?).

Você pode corrigi-lo usando \input{filename}ou carregando o newcludepacote e escrevendo \include*{filename}.

Will Robertson
fonte
Meu projeto de banco de dados precisa do documento de planejamento, o documento "Construindo" para mostrar como configurar o sistema. Elas são seções em meu arquivo LaTeX.
Léo Léopold Hertz 준영
7
Posso pensar em uma pilha de motivos para colocar subseções em arquivos diferentes. A primeira que me vem à mente é ter um currículo com diferentes níveis de detalhamento, dependendo do destino e / ou candidatura. O Once pode facilmente cortar ou inserir bits, com um único símbolo '%'.
Nicholas Hamilton
8
Já faz um tempo desde que escrevi esta resposta, mas acredito que parênteses pretendia ser sarcástico:)
Will Robertson
A razão para \includeiniciar uma nova página é que ela \includeonlypode funcionar corretamente.
Carsten S
Outra razão para cortar seções em arquivos diferentes: considere escrever folhas de exercícios sempre tendo um maketitle no início, mas incluindo sempre uma folha de exercícios apenas na impressão. Eu mesmo não consideraria cada folha de exercícios um capítulo em si, especialmente porque mais folhas de exercícios se referem a um único capítulo em uma palestra. A inclusão serve apenas como contagem das folhas de exercícios, como a folha 1 com exercícios (1.1-1.4), a folha 2 com exercícios (2.1-2.3) e assim por diante.
C-Star-W-Star
30

Você pode interromper as quebras de página causadas \includepor colocar \let\clearpage\relaxantes dele. Assim,

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

colocaria o conteúdo dos três arquivos (e quaisquer arquivos subsequentemente incluídos) juntos sem uma quebra de página entre eles. Se você quiser parar de relaxar o \clearpagecomando, agrupe os arquivos a serem incluídos sem quebras de página em um grupo como este:

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

Isso interromperá uma quebra de página entre o arquivo1 e o arquivo2, mas inserirá a quebra de página normal após o arquivo2. (Observação: não sei se isso interfere nas referências e na numeração das páginas, embora imagine que deva estar OK.)

John
fonte
1
Obrigado! Esta resposta funciona bem quando você tem vários includes plus References e não quer uma nova página para eles. Basta fazer um grupo dos últimos incluir um e a parte da bibliografia, e não mais uma página apagada.
Manuel Ferreria
2
Manuel está certo: você pode usar o \begingroup\let\clearpage\relax ...\endgrouptruque onde quiser --- pare as quebras de página entre seções ou partes específicas, se quiser que a bibliografia esteja na mesma página do seu texto, etc.
John
1
Esta solução parece ter causado alguns problemas para mim com referências. Em um arquivo incluído que continha duas listas enumeradas, as referências aos itens da segunda lista não funcionaram. Não tenho ideia do porquê, mas mudar para newclude corrigiu o problema.
Mike Shulman
1
Eu recomendo contra a utilização deste método; criará mais problemas do que resolve (assumindo que resolva algum problema em primeiro lugar): consulte tex.stackexchange.com/a/185237/4427
egreg
2

Obrigado, Cambridge !

use \ include em vez de \ input, e use o comando \ includeonly para selecionar as seções a serem processadas

Léo Léopold Hertz 준영
fonte
2
Este não é o melhor conselho. Por que você iria querer usar \include{...]para um trabalho quando \input{...}o comando real é intencional para essas situações?
Florian R. Klein
1
Esta resposta não parece responder à pergunta de forma alguma. (Mesmo que seja um conselho útil, com uma boa referência.)
jciloa
Isso não responde à pergunta.
EL_DON