如何避免TikZ造成的空白

如何避免TikZ造成的空白

在自訂頁面上新增背景圖像時TikZ,會留下一個空白空間,將TikZ程式碼合併到文件中。例如,

\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}

正如您在下面的範例中看到的,TikZ程式碼在文件上留下了痕跡(\maketitle第一部分之前的空白區域)。這不是繪製 TikZ 影像的位置(位於頁邊空白處),但這是 TikZ 程式碼合併到文件中的位置TeX

我們如何處理TikZ程式碼以避免其在實際文件中留下痕跡?

圖 1:沒有TikZ程式碼(第一部分之前沒有多餘的空格)

圖 2:帶有TikZ程式碼(在第一部分之前添加了額外的空格) 在此輸入影像描述 在此輸入影像描述

答案1

A tikzpicture(即使使用overlay)意味著呼叫\leavevmode(如果您使用\leavevmode而不是您的tikzpictureinto 範例,您將獲得相同的足跡)。

若要新增不含足跡的tikzpicture位置overlay,請將其放在可以退出垂直模式的位置。

範例(在段落開頭):

\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}

答案2

您可以使用atbegshi套件和\AtBeginShipout/或相關命令,例如\AtBeginShipoutNext.例如,我們將\AtBeginShipoutFirst其放在第一頁:

\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}

答案3

我找不到確切的問題,但根據經驗,我們可能會避免將有趣的項目作為 LaTeX 首先看到的起始段落、表格單元格等。

例如,以下內容沒有任何效果。

\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}

在此輸入影像描述

相關內容