Cómo evitar los espacios vacíos causados ​​por TikZ

Cómo evitar los espacios vacíos causados ​​por TikZ

Al agregar una imagen de fondo en TikZuna página personalizada, deja un espacio vacío donde TikZse incorpora el código al documento. Por ejemplo,

\documentclass{article}
\usepackage{lipsum}
\usepackage{tikz}
\usetikzlibrary{calc}
\title{Test Title}
\author{A name}
\begin{document}
\maketitle
\tikz[overlay,remember picture]{%
\node [rotate=45] at ($(current page.north west)+(7,-7)$) {\Huge\textcolor{gray}{TikZ}};
}
\section{First}
\lipsum[1]
\section{Second}
\subsection{This is not nice}
\lipsum[1]
\subsection{This is fine}
\lipsum[1]
\end{document}

Como puede ver en los ejemplos siguientes, el TikZcódigo deja una huella en el documento (un espacio vacío antes \maketitlede la primera sección). Aquí no es donde se dibuja la imagen de TikZ (que está en el margen), sino que es aquí donde se incorpora el código de TikZ al TeXdocumento.

¿Cómo tratamos el TikZcódigo para evitar su huella en el documento real?

Figura 1: Sin TikZcódigo (sin espacio adicional antes de la primera sección)

Figura 2: Con TikZcódigo (se agregó un espacio adicional antes de la primera sección) ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Respuesta1

A tikzpicture(incluso con overlay) implica una llamada a \leavevmode(si usa \leavevmodeen lugar de your tikzpictureen su ejemplo, obtendrá la misma huella).

Para agregar un tikzpictureespacio overlaysin huella, colóquelo donde pueda salir del modo vertical.

Ejemplo (al comienzo de un párrafo):

\documentclass{article}
\usepackage{lipsum}
\usepackage{tikz}
\usetikzlibrary{calc}
\title{Test Title}
\author{A name}
\begin{document}
\maketitle
\section{First}
\tikz[remember picture,overlay]%
\node [rotate=45] at ($(current page.north west)+(7,-7)$)%
{\Huge\textcolor{gray}{TikZ}};%
\lipsum[1]
\section{Second}
\subsection{This is not nice}
\lipsum[1]
\subsection{This is fine}
\lipsum[1]
\end{document}

Respuesta2

Puede utilizar el atbegshipaquete y \AtBeginShipout/o comandos relacionados como \AtBeginShipoutNext. Aquí, por ejemplo, vamos \AtBeginShipoutFirsta ponerlo en la primera página:

\documentclass{article}
\usepackage{lipsum}
\usepackage{tikz}
\usepackage{atbegshi}
\usetikzlibrary{calc}
\title{Test Title}
\begin{document}
\AtBeginShipoutFirst{\tikz[overlay,remember picture]{
\node at ($(current page.west)+(2,0)$) {\Huge\textcolor{gray}{TEST}};
}}
\maketitle
\section{First}
\lipsum[1]
\section{Second}
\subsection{This is not nice}
\lipsum[1]
\subsection{This is fine}
\lipsum[1]
\end{document}

Respuesta3

No puedo encontrar la pregunta exacta, pero como regla general, podemos evitar poner elementos interesantes como lo primero que ve LaTeX: párrafos iniciales, celdas tabulares, etc. A menudo no le gusta.

Por ejemplo, lo siguiente no tiene ningún efecto.

\documentclass{article}
\usepackage{lipsum}
\usepackage{tikz}

\title{Test Title}
\author{authorize}
\begin{document}
\maketitle
\section{First}
My precious sentence which doesn't finish with a par.
\tikz[overlay,remember picture]{
\path[use as bounding box](0,0);
\node [gray,inner sep=0,rotate=45] at ([shift={(7cm,-7cm)}]current page.north west) {\Huge TikZ};
}\lipsum[1]

\section{Second}
\subsection{This is not nice}
\lipsum[1]
\subsection{This is fine}
\lipsum[1]
\end{document}

ingrese la descripción de la imagen aquí

información relacionada