如何创建带有 tikz 框式章节参考的页眉?

如何创建带有 tikz 框式章节参考的页眉?

另一位用户问问了类似的问题;但我只需要顶部标题和不是 edp 的完整设计. 我提供了一个最小的工作示例。

它看起来应该是这样的:

Edp LaTeX 设计标题。

如果您按下上方标题框之一,它们会将您重定向到正确的章节。我认为这真的很好,所以我想将其用于私人目的。但我很难重现这种效果。

以下是我使用 tikz 尝试的操作:

\documentclass{book}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{lipsum}
\pagestyle{empty}


\begin{document}

\begin{tikzpicture}[overlay, remember picture]
\foreach \x in {1,...,7};
\draw let \p1 = (current page.west), \p2 = (current page.east) in node[minimum width=\x2-\x1, minimum height=2cm, draw, rectangle, fill=black!90, anchor=north west, align=left, text width=\x2-\x1] at ($(current page.north west)$) {\Large\bfseries \quad #1};
\end{tikzpicture}


\chapter{Chapter one}
\end{document}

嗯,它在标题中创建了一个大黑框,里面没有文本。所以它根本不起作用。我曾想过使用 \foreach 函数,但遇到了麻烦。

基本上,我需要帮助来创建顶部的框,但在让它们重定向到章节方面遇到了问题。

希望你能帮助我?

答案1

这是tcolorbox自动链接到章节的版本。由于tcolorbox是 TiZ 包装可以对带有上层或底层的盒子进行很多添加。

\documentclass{book}
\usepackage[lmargin=1.5cm,rmargin=1.5cm,headheight=1.5cm]{geometry}
\usepackage{tikz}
\usepackage[most]{tcolorbox}
\usetikzlibrary{calc}
\usepackage{lipsum}
\pagestyle{empty}

\usepackage{totcount}

\usepackage{fancyhdr}

\usepackage[hidelinks]{hyperref}


\newtcolorbox{mycolorboxinternal}[1][]{%
  enhanced jigsaw,
  sharp corners,
  boxrule=0.0pt,
  boxsep=0pt,
  colupper={white},
  fontupper={\bfseries},
  equal height group=headerboxes,
  colback=orange,
  halign=center,
  valign=center,
  nobeforeafter,
  height=0.8cm,
  #1,
}


\newcommand{\mycolorbox}[2][]{%
  \begin{mycolorboxinternal}[#1]%
    #2%
  \end{mycolorboxinternal}%
}

\regtotcounter{chapter}

\rhead{}
\lhead{}
\chead{%
\begin{tcbraster}[%raster valign=center,
  raster row skip=0pt,
  raster before skip=0pt,
  raster columns={5}, 
  raster equal height=all, 
  raster equal height group=headerboxes,
  raster column skip=0pt,
  nobeforeafter,
  raster left skip=0pt, 
  raster right skip=0pt]
  \foreach \x in {1,...,\totvalue{chapter}} {%
    \ifodd\x 
    \def\backgroundcolor{orange}%
    \else
    \def\backgroundcolor{red}%
    \fi
    \mycolorbox[colback=\backgroundcolor]{\protect\nameref{chaplabel:\x}}%
  }
\end{tcbraster}
}


\pagestyle{fancy}
\usepackage{blindtext}
\begin{document}

\chapter{Kirche}\label{chaplabel:1}
\chapter{Soziales}\label{chaplabel:2}
\chapter{Gesellschaft}\label{chaplabel:3}
\chapter{Umwelt}\label{chaplabel:4}
\chapter{Kultur}\label{chaplabel:5}
\chapter{Entwicklung}\label{chaplabel:6}
\chapter{Ausland}\label{chaplabel:7}

\newpage
\blindtext[5]
\end{document}

在此处输入图片描述

答案2

这将在顶部绘制标签并使用 LaTeX 的\label/\ref系统插入章节编号。在我看来,这对于一个问题来说已经足够了,超链接留给读者作为练习。

换句话说,我可以让 TikZ 做一些事情,但是hyperref当它不想做或不想做的时候,我无法让它表现。

然而,这里确实不止一个问题,所以我认为即使我无法回答另一个问题,也值得回答其中一个问题。

标签

\documentclass{book}
\usepackage{tikz,calc}
\pagestyle{empty}
\begin{document}
\newlength\tabwidth
\setlength\tabwidth{\paperwidth/7}%
\begin{tikzpicture}[overlay, remember picture]
  \path [fill=red] (current page.north west) rectangle +(\paperwidth,-20mm);
  \path (current page.north west) foreach \i [evaluate=\i as \j using {25*(mod(\i,2)}] in {1,...,7} {%
    +({(\i-1)*\tabwidth},0) node [minimum width=\tabwidth, minimum height=2cm, rectangle, fill=white!\j!red, font=\Large\bfseries, text=white, anchor=north west] {\ref{ch:\i}}
  };
\end{tikzpicture}
\chapter{Chapter one}\label{ch:1}
\chapter{2}\label{ch:2}
\chapter{3}\label{ch:3}
\chapter{4}\label{ch:4}
\chapter{5}\label{ch:5}
\chapter{6}\label{ch:6}
\chapter{7}\label{ch:7}
\end{document}

相关内容