Cómo no tener un salto de página después de \ include en LaTeX


110

Mi LaTeX me hace saltos de página después de cada subsección porque mis subsecciones están en archivos separados. Utilizo el comando \include{file}que agrega un salto de página después de usarlo.

Me gustaría que no haya saltos de página causados ​​por el uso de \include{file}.

¿Cómo no se puede hacer un salto de página después del uso de include-comando?


2
No creo que obtengas saltos de página después de la subsección normalmente. ¿Qué clase de documento estás usando?
Cascabel

1
¿Podrías publicar tu encabezado (todo hasta el \ begin {document}) para que podamos saber qué va mal?
Gerald Senarclens de Grancy

10
Utilizar \input, utilizar de \inputotro modo o utilizar \input.
egreg

Respuestas:


4

El nuevo paquete de inclusión sugerido por Will Robertson es bastante útil para evitar la página clara. Parece que para \includeonlyque funcione uno tiene que llamar al paquete inmediatamente después\documentclass{...} . En el complejo entorno de mi disertación también encontré problemas con referencias rotas.

Una buena solución, cuando no se necesita includeonly para una versión final, es usar include solo en el borrador:

\newif\ifdraft\drafttrue

o

\newif\ifdraft\draftfalse

\ifdraft
  \include{...}
\fi

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

La primera línea se puede agregar fácilmente mediante un archivo MAKE, para hacer que el borrador o la versión de producción produzcan objetivos.

\includeonly{file1,file2,...}permite especificar una lista de archivos fuente llamados con \include{file1}(donde file1es un ejemplo) que se mostrará en el documento resultante. Los demás no aparecerán, pero se considerarán para contadores, etiquetas, tablas de contenido cuando se incluyan los archivos auxiliares correspondientes.

En otras palabras, al usar includey includeonlyse puede reducir el tiempo de compilación en un borrador mientras se tienen las referencias correctas. Más información sobre Wikilibros .

@ Will Robertson

\includees muy útil porque permite \includeonly{...}construir solo las secciones necesarias. Mientras se trabaja en texto más extenso, puede suponer una gran diferencia en el tiempo de compilación incluir solo una sección de un capítulo extenso. También es muy útil ya que uno no tiene que hojear un borrador largo mientras trabaja en un punto. Por último, los archivos más pequeños de código fuente son más fáciles de manejar en la gestión de versiones, por ejemplo, git.


¿Puede dar un ejemplo de cómo compila sólo una sección de un documento de trabajo muy extenso? He utilizado estos métodos de la siguiente respuesta en pageselaproximadamente \discardpagesfromherey \keeppagesfromhere. Se superponen un poco entre sí, por lo que estoy dispuesto a saber si puede manejar mejor esta gestión de borradores. tex.stackexchange.com/a/267555/13173
Léo Léopold Hertz 준영

1
Si lo entiendo correctamente, pagesel logrará más que incluir solo al permitir un control preciso de qué páginas se incluirán en una compilación final. Incluir tiene un alcance mucho menor, ya que incluye el código fuente de una manera que se puede activar y desactivar.
gschenk

152

\includeutiliza siempre \clearpage, un valor predeterminado no del todo sensato. Está destinado a capítulos completos, no a subsecciones (de todos modos, ¿por qué querrías subsecciones en archivos separados?).

Puede solucionarlo utilizando \input{filename}o cargando el newcludepaquete y escribiendo en su \include*{filename}lugar.


Mi proyecto de base de datos necesita un documento de planificación, el documento "Construcción", para mostrar cómo configurar el sistema. Son secciones en mi archivo LaTeX.
Léo Léopold Hertz 준영

7
Puedo pensar en una pila de razones por las que colocar subsecciones en diferentes archivos. Lo primero que me viene a la mente, es tener un CV con distintos niveles de detalle, según el objetivo y / o solicitud de empleo. Una vez puede cortar o colocar bits fácilmente, con un solo símbolo '%'.
Nicholas Hamilton

8
Ha pasado un tiempo desde que escribí esta respuesta, pero creo que el paréntesis estaba destinado a ser sarcástico:)
Will Robertson

La razón por la que \includeinicie una nueva página es que \includeonlypuede funcionar correctamente.
Carsten S

Otra razón para recortar secciones en archivos diferentes: considere escribir hojas de ejercicios siempre con un título de maqueta al principio, pero incluyendo siempre una hoja de ejercicios solo en la impresión. Yo mismo no consideraría cada hoja de ejercicios un capítulo en sí, especialmente porque más hojas de ejercicios se refieren a un solo capítulo en una conferencia. El include solo sirve para contar las hojas de ejercicios como la hoja 1 con ejercicios (1.1-1.4), la hoja 2 con ejercicios (2.1-2.3) y así sucesivamente.
C-Star-W-Star

30

Puede detener los saltos de página causados \includepor colocar \let\clearpage\relaxantes. Entonces,

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

pondría el contenido de los tres archivos (y cualquier archivo incluido posteriormente) juntos sin un salto de página entre ellos. Si desea dejar de relajar el \clearpagecomando, ajuste los archivos para incluirlos sin saltos de página dentro de un grupo como este:

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

Esto detendrá un salto de página entre file1 y file2, pero inserte el salto de página normal después de file2. (Nota: no sé si esto interfiere con las referencias y la numeración de páginas, aunque imagino que debería estar bien).


1
¡Gracias! Esta respuesta funciona bien cuando tiene varias inclusiones más referencias y no desea una nueva página para ellas. Simplemente haga que un grupo de los últimos incluya uno y la parte de bibliografía, y ya no sea una página clara.
Manuel Ferreria

2
Manuel tiene razón: puedes usar el \begingroup\let\clearpage\relax ...\endgrouptruco donde quieras --- detener los saltos de página entre secciones o partes particulares, si quieres que la bibliografía esté en la misma página que tu texto, etc.
Juan

1
Esta solución parece haberme causado algunos problemas con las referencias. En un archivo incluido que contenía dos listas enumeradas, las referencias a los elementos de la segunda lista no funcionaron. No tengo idea de por qué debería ser esto, pero cambiar a newclude solucionó el problema.
Mike Shulman

1
Recomiendo no usar este método; creará más problemas de los que resuelve (asumiendo que resuelve algún problema en primer lugar): consulte tex.stackexchange.com/a/185237/4427
egreg

2

¡Gracias, Cambridge !

use \ include en lugar de \ input, y use el comando \ includeonly para seleccionar secciones para procesar


2
Este no es el mejor consejo. ¿Por qué querría utilizarlo \include{...]para un trabajo cuando \input{...}es el comando real el que se utiliza para estas situaciones?
Florian R. Klein

1
Esta respuesta no parece responder a la pregunta en absoluto. (Aunque por lo demás es un consejo útil, con una buena referencia.)
jciloa

Esto no responde a la pregunta.
EL_DON
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.