
Warum wird diese rote Box-Überlagerung nicht richtig in der rechteckigen Headerbox verankert?
- Verwenden Sie weder xshift noch yshift.
- Ich möchte diese Headerbox am oberen Rand haben, jetzt ist ein weißer Raum dazwischen.
- Ändern Sie „baseline=(headerbox.center)“ in meiner Headerbox-Beschreibung nicht (damit mein Text zentriert ist). Verwenden Sie beispielsweise „\node at (headerbox.north east)...“, um die rote Box daran zu verankern.
Blockquote
\documentclass[10pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{positioning,calc,backgrounds}
\usepackage[left=2cm,top=2cm,right=2cm,bottom=2cm,showframe]{geometry}
\begin{document}
\newcommand{\newtab}[2]{%
\begin{tikzpicture}[overlay]
\node[inner sep=2mm,text=white] (#1) {#2};
\begin{scope}[on background layer]
\draw[fill=red]%
($(#1.north east)$)%
--($(#1.north west)$)%
--($(#1.south west)$)%
-- ($(#1.south east)$)%
-- cycle;%
\end{scope}%
\end{tikzpicture}%
}%
\noindent\begin{tikzpicture}[rounded corners=0mm, outer sep=0pt,baseline=(headerbox.center)]%
\path node[rectangle,minimum width=\textwidth-\fboxrule,minimum height=3cm,draw=black,fill=white,inner xsep=0mm,inner ysep=0in](headerbox)%
{Headertekst}%
;%
\node at (headerbox.north east)[anchor=south east,inner sep=0pt, outer sep=0pt, line width=0cm] {\newtab{headerbox}{Labeltekst}};
\end{tikzpicture}\par Test%
\end{document}
Antwort1
Fügen Sie eine Anpassung nach unten für die halbe Zeilenbreite hinzu, wenn das in Ihrem echten Dokument wichtig ist. Ich glaube nicht, dass Sie hier alle Bibliotheken brauchen, aber trotzdem.
\documentclass[10pt,a4paper]{article}
\usepackage{tikz}
\usetikzlibrary{positioning,calc,backgrounds}
\usepackage[left=2cm,top=2cm,right=2cm,bottom=2cm,showframe]{geometry}
\begin{document}
\newcommand{\newtab}[2]{%
\begin{tikzpicture}[overlay]
\node[inner sep=2mm,text=white] (#1) {#2};
\begin{scope}[on background layer]
\draw[fill=red]%
($(#1.north east)$)%
--($(#1.north west)$)%
--($(#1.south west)$)%
-- ($(#1.south east)$)%
-- cycle;%
\end{scope}%
\end{tikzpicture}%
}%
\noindent\begin{tikzpicture}[rounded corners=0mm, outer sep=0pt]%
\path node[rectangle,minimum width=\textwidth-\fboxrule,minimum height=3cm,draw=black,fill=white,inner xsep=0mm,inner ysep=0in, anchor=north](headerbox) at (current page.north)
{Headertekst}%
;%
\node at (headerbox.north east)[anchor=south east,inner sep=0pt, outer sep=0pt, line width=0cm] {\newtab{headerbox}{Labeltekst}};
\end{tikzpicture}\par Test%
\end{document}
Die Dicke der Linie ist teilweise ein Artefakt und teilweise, glaube ich, darauf zurückzuführen, dass die Hälfte der Linienbreite über der Linie liegt, die den Rahmen um den Textbereich zeichnet.
Antwort2
Ich habe eine Lösung gefunden:
- "Sauberer" Code
- \node[overlay], Overlay ist an diesem Knoten wichtig, sonst nimmt der Knoten Platz ein und die Headerbox wird nach unten verschoben.
Ohne das wird das rote Kästchen (headerbox)
im Knoten at (headerbox.north east)(headerbox) {Tekst};
nicht angezeigt. Ich weiß nicht, warum, denn (headerbox.north east)
es gibt eindeutig an, wo ich das rote Kästchen platzieren möchte. Dieser Code funktioniert jedenfalls einwandfrei:
Blockquote
\documentclass[10pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage{tikz}
\usepackage{calc}
\usetikzlibrary{calc,backgrounds}
\usepackage[showframe]{geometry}
\begin{document}
\noindent\begin{tikzpicture}
\node at (0,0) [rectangle,minimum width=\textwidth-\fboxrule,minimum height=5cm,draw=black,fill=white,inner xsep=0mm,inner ysep=0in,rounded corners=0mm, outer sep=0pt,baseline=(headerbox.center)](headerbox){};%
\node[overlay,inner sep=2mm,text=white,anchor=south east] at (headerbox.north east)(headerbox){Tekst};%
\begin{scope}[on background layer]%
\draw[fill=red,overlay]%
($ (headerbox.north east) $)
--($ (headerbox.north west) $)
--($ (headerbox.south west) $)
--($ (headerbox.south east) $)
-- cycle;%
\end{scope};%
\end{tikzpicture}%
\end{document}
Blockquote