我有一个 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
另外将标题移动到正确的位置。\chead
包fancyhdr
用于将中间标题设置为\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}