Tikz 覆盖元素会产生不必要的边距

Tikz 覆盖元素会产生不必要的边距

我有一个 Tikz 元素,它是我的文档的标题横幅,它被覆盖以便与页面顶部对齐。

我还有一段文本,使用来自几何的 tmargin 在 tikz 标题下重新对齐。

但是这部分文本并没有根据边距对齐,因为剩余的 tikz 元素创建了一个实体,为文档添加了不可见的边距,破坏了对齐。

fbox通过使用tikzpicture

如果我\noindent在此之前使用,我可以将框移动到左边。

我怎样才能删除这个“框”或其边距,以便我的部分可以与页边距重新对齐?

小型工作示例:

\documentclass{article}
\usepackage{tikz}
\newcommand\titlefont{\LARGE\bfseries}
\newcommand\subtitlefont{\Large\bfseries}
\newcommand{\header}[2]%
 {\fbox
   {\begin{tikzpicture}[remember picture, overlay]%
    \node[outer sep=0, inner sep=0, rectangle, fill=green!30,
          anchor=north, minimum width=\paperwidth, minimum height=2.5cm]
      (box) at (current page.north){};
    \node (picture) at (box)
      {\includegraphics[height=2cm]{example-image-a.png}%
      };
    \node [outer xsep=3mm, inner xsep=0, right, align=left]
      (name) at (box.west){\titlefont #1 \\ \subtitlefont #2};
    \end{tikzpicture}%
   }%
 }
\begin{document}
\header{Title}{Subtitle}
\section{Section}
\end{document}

在此处输入图片描述

答案1

您可以使用 eso-pic 包

\documentclass{article}
\usepackage{eso-pic}
\usepackage{tikz}
\newcommand\titlefont{\LARGE\bfseries}
\newcommand\subtitlefont{\Large\bfseries}
\newcommand{\header}[2]%
 {\fbox
   {\begin{tikzpicture}[remember picture, overlay]%
    \node[outer sep=0, inner sep=0, rectangle, fill=green!30,
          anchor=north, minimum width=\paperwidth, minimum height=2.5cm]
      (box) at (current page.north){};
    \node (picture) at (box)
      {\includegraphics[height=2cm]{example-image-a.png}%
      };
    \node [outer xsep=3mm, inner xsep=0, right, align=left]
      (name) at (box.west){\titlefont #1 \\ \subtitlefont #2};
    \end{tikzpicture}%
   }%
 }
\begin{document}
\AddToShipoutPictureBG*{\AtPageUpperLeft{\header{Title}{Subtitle}}}
\section{Section}

\end{document}

答案2

下面是使用包的解决方案fancyhdr\raisebox并将\makebox的高度、深度和宽度缩小tikzpicture为零。\raisebox另外将标题移动到正确的位置。\cheadfancyhdr用于将中间标题设置为\header第一页的命令,而将其他页的标题设置为无。

\documentclass{article}
\usepackage{tikz}
\newcommand\titlefont{\LARGE\bfseries}
\newcommand\subtitlefont{\Large\bfseries}
\newcommand{\header}[2]%
 {\raisebox{6ex}[0ex][0ex]{\makebox[0em]{\begin{tikzpicture}%
    \node[outer sep=0, inner sep=0, rectangle, fill=green!30,
          anchor=north, minimum width=\paperwidth, minimum height=2.5cm]
      (box) at (current page.north){};
    \node (picture) at (box)
      {\includegraphics[height=2cm]{example-image-a.png}%
      };
    \node [outer xsep=3mm, inner xsep=0, right, align=left]
      (name) at (box.west){\titlefont #1 \\ \subtitlefont #2};
    \end{tikzpicture}%
 }}}
\usepackage{ifthen}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt}
\lhead{}
\rhead{}
\chead{\ifthenelse{\value{page}=1}{\header{Title}{Subtitle}}{}}
\begin{document}
\section{Section}
\end{document}

相关内容