Grid unter tcolorbox (Lösung des Autors klappt teilw. nicht)

Tabellen und Grafiken erstellen und anordnen


cis
Forum-Anfänger
Forum-Anfänger
Beiträge: 27
Registriert: Mi 22. Jul 2020, 20:14

Grid unter tcolorbox (Lösung des Autors klappt teilw. nicht)

Beitrag von cis »

Ich habe hier das Problem, dass ich unter eine tcolorbox ein grid nahtlos anschließen möchte.
Bei der [Lösung des Autors][1] ist mir aufgefallen, dass diese für größere Werte \setlength{\gridlinewidth}{<Längenmaß>} nicht mehr funktioniert, vgl. Bild.

Irgendetwas fehlt. Wie kann ich das fixen?
Hinweis: Ich habe \usepackage[ width=16cm, height=26cm, ]{geometry} gewählt, da ich auf einer DINA4 (210 × 297 [mm]) Seite einen Rand von um die 2cm brauche (oder etwas größer, nicht viel kleiner) und maximal viele 2cm-grid-Quadrate in der Breite haben viel.

Hinweis 2: Wenn ich an das 1. Bild, an dem steht "klappt gut" steht, genauer heranzoome bin ich der Meinung, dass es eigentlich doch nicht so gut klappt: es scheint kein sauberes Grid zu sein.

Hinweis 3: Crosspost unmittelbar angegeben https://texwelt.de/fragen/26754/grid-un ... eilw-nicht

Bild


Code: Alles auswählen

\documentclass[a4paper]{article} % DINA4 (210 × 297 [mm])
\usepackage[%showframe=true,
  width=16cm,
  height=26cm,
]{geometry}
\pagestyle{empty}

\usepackage{tikz}
\usepackage[most]{tcolorbox}

\begin{document}
\newlength{\gridlinewidth}

\setlength{\gridlinewidth}{0.4pt} % default tikz line width
\begin{tcolorbox}[
  enhanced,
  height=6cm,
  sharp corners,
  boxrule=10pt,  % für Testzwecke
  grow sidewards by=.5\gridlinewidth,
  enlarge bottom finally by=8cm+\gridlinewidth,
  finish={%
    \begin{scope}[shift={([xshift=0.5\gridlinewidth, yshift=-0.5\gridlinewidth]frame.south west)}]
    \draw[step=2, line cap=rect, red]  grid +(\linewidth, -8);
    \end{scope}
  }
]
\verb+\setlength{\gridlinewidth}{0.4pt}+ klappt gut.
\end{tcolorbox}

\setlength{\gridlinewidth}{7.4pt} % default tikz line width
\begin{tcolorbox}[
  enhanced,
  height=6cm,
  sharp corners,
  boxrule=10pt,  % für Testzwecke
  grow sidewards by=.5\gridlinewidth,
  enlarge bottom finally by=8cm+\gridlinewidth,
  finish={%
    \begin{scope}[shift={([xshift=0.5\gridlinewidth, yshift=-0.5\gridlinewidth]frame.south west)}]
    \draw[step=2, line cap=rect, red]  grid +(\linewidth, -8);
    \end{scope}
  }
]
\verb+\setlength{\gridlinewidth}{7.4pt}+ klappt nicht. 
\end{tcolorbox}


Text after box and grid.
\end{document}

[1]: https://tex.stackexchange.com/questions ... 628#553628


esdd
Forum-Meister
Forum-Meister
Beiträge: 2483
Registriert: So 7. Feb 2010, 16:36

Re: Grid unter tcolorbox (Lösung des Autors klappt teilw. nicht)

Beitrag von esdd »

Als \gridlinewidth muss die Linienbreite angegeben werden, die auch für das Zeichnen des Gitters verwendet wird. Es reicht also nicht, \gridlinewidth auf 7.4pt zu setzen, sondern Du musst diese gegenüber der Standardeinstellung geänderte Linienbreite auch beim Zeichnen des Gitters verwenden. Am einfachsten ist es, wenn Du für das Gitter line width=\gridlinewidth setzt, also

Code: Alles auswählen

\draw[step=2, line cap=rect, red, line width=\gridlinewidth]  grid +(\linewidth, -8);

cis
Forum-Anfänger
Forum-Anfänger
Beiträge: 27
Registriert: Mi 22. Jul 2020, 20:14

Re: Grid unter tcolorbox (Lösung des Autors klappt teilw. nicht)

Beitrag von cis »

Ja, komisch. Ich war der Meinung das drin gehabt zu haben. Das macht ja sonst gar keinen Sinn.

TeXwork zeigt damit eine lecht Lücke an; Adobe Reader nicht, daegegen eine sehr leichte Versetzung, die beim Druck vermutlich nicht auffallen wird.

Wie auch immer. Ich schätze, dass es damit geht. (Aber ich habe noch en Problem...)
Also das löst jetzt erstmal das Ausgangsproblem:

Code: Alles auswählen

\documentclass[a4paper]{article} % DINA4 (210 × 297 [mm])
\usepackage[%showframe=true,
  width=16cm,
  height=26cm,
]{geometry}
\pagestyle{empty}

\usepackage{tikz}
\usepackage[most]{tcolorbox}

\begin{document}
\newlength{\gridlinewidth}
\setlength{\gridlinewidth}{0.4pt} % default tikz line width

\begin{tcolorbox}[
enhanced,
height=6cm,
sharp corners,
boxrule=6\gridlinewidth,  % deutlich abheben
grow sidewards by=0.5\gridlinewidth,
enlarge bottom finally by=8cm+\gridlinewidth,
finish={%
\begin{scope}[shift={([xshift=0.5\gridlinewidth, yshift=-0.5\gridlinewidth-0cm]frame.south west)}]
\draw[step=2, line cap=rect, red, line width=\gridlinewidth]  grid +(\linewidth, -8);
\end{scope}
}
]
\verb+\setlength{\gridlinewidth}{<y>}+  \\
y = \the\gridlinewidth
\end{tcolorbox}
Text after box and grid.
\end{document}

cis
Forum-Anfänger
Forum-Anfänger
Beiträge: 27
Registriert: Mi 22. Jul 2020, 20:14

Re: Grid unter tcolorbox (Lösung des Autors klappt teilw. nicht)

Beitrag von cis »

Wie ist das hier? Kann man da direkt etwas anschließen?
Darf es eine Stufe schwerer sein?

Das Problem ist: die gezeigte tcolorbox hat nur den Zweck einen (deutlichen) äußeren Rahmen um ein tbcitemize zu zeichnen (das zieht schonmal haufenweise Einstellungen nach sich; also falls da jmd. etwas Einfacheres kennt, gerne... Weil das macht hier echt Schwierigkeiten)

Wenn ich jetzt also, mit zur Verdeutlichung raufgesetzter

Code: Alles auswählen

\setlength{\gridlinewidth}{2.4pt}% 0.4pt = default tikz line width

den tbcitemize Inhalt ergänze, wird es schlecht (s.u.).

· Die gesamte Box über dem grid sollte 6cm hoch sein.
· Wahrscheinlich ist es nur eine Kleinigkeit, die fehlt. Aber durch dieses Rahmenzeichnen usw. ist der Code wieder umfangreich geworden.

Vielleicht kann mir ja jmd. sagen, was noch fehlt.

Bild

Code: Alles auswählen

\documentclass[a4paper]{article} % DINA4 (210 × 297 [mm])
\usepackage[%showframe=true,
  width=16cm,
  height=26cm,
]{geometry}
\pagestyle{empty}
\usepackage{tikz}

\newlength{\gridlinewidth}
\setlength{\gridlinewidth}{2.4pt}% 0.4pt = default tikz line width
\usepackage[most]{tcolorbox}
\tcbset{
NoGaps/.style={boxsep=0pt, left=0pt, right=0pt, top=0pt, bottom=0pt,}, 
CommonStyle/.style={NoGaps, sharp corners,  colback=white, colframe=black, before skip=0pt, after skip=0pt,}, 
SymbolStyle/.style={boxrule=3\gridlinewidth, colframe=blue}, 
}

\begin{document}
% Äußere Box ==========================
\begin{tcolorbox}[CommonStyle, 
height=6cm,    
colframe=brown, sharp corners, boxrule=6\gridlinewidth, % deutlich abheben grow sidewards by=0.5\gridlinewidth, enlarge bottom finally by=8cm+\gridlinewidth, enhanced, finish={% \begin{scope}[shift={([xshift=0.5\gridlinewidth, yshift=-0.5\gridlinewidth-0cm]frame.south west)}] \draw[step=2, line cap=rect, red, line width=\gridlinewidth] grid +(\linewidth, -8); \end{scope} } ] % Innere Boxen ========================== \begin{tcbitemize}[ CommonStyle, boxsep=3pt, % raster rows=2, % kein zusätzl. Effekt raster height=6cm-3\gridlinewidth, % Problem hier ========= raster row 1/.style={height=3cm}, raster equal height=rows, % =============================== sharp corners, boxrule=3\gridlinewidth, raster columns=100, raster column skip=0pt, raster row skip=0pt, ] \tcbitem[raster multicolumn=20, SymbolStyle] X \tcbitem[raster multicolumn=15] Y \tcbitem[raster multicolumn=65] Z \tcbitem[raster multicolumn=60] a \\ 1 \\ 2\\ 3 \\ 4\\ 5 \\ 6 \\ 7 \\8 \tcbitem[raster multicolumn=40] b \end{tcbitemize} \end{tcolorbox} Text after box and grid. \end{document}

cis
Forum-Anfänger
Forum-Anfänger
Beiträge: 27
Registriert: Mi 22. Jul 2020, 20:14

Re: Grid unter tcolorbox (Lösung des Autors klappt teilw. nicht)

Beitrag von cis »

Vermutlich ist es so richtiog umgesetzt:

Code: Alles auswählen

\newlength{\gridlinewidth}
\setlength{\gridlinewidth}{2.4pt}% 0.4pt = default tikz line width

\pgfmathsetlengthmacro\OuterBoxLinewidth{6*\gridlinewidth}
\pgfmathsetlengthmacro\InnerBoxLinewidth{3*\gridlinewidth}
\pgfmathsetlengthmacro\SymbolBoxLinewidth{7*\gridlinewidth}
\pgfmathsetlengthmacro\HighReduced{6cm-\InnerBoxLinewidth-\OuterBoxLinewidth}

Code: Alles auswählen

\documentclass[a4paper]{article} % DINA4 (210 × 297 [mm])
\usepackage[%showframe=true,
  width=16cm,
  height=26cm,
]{geometry}
\pagestyle{empty}
\usepackage{tikz}

\newlength{\gridlinewidth}
\setlength{\gridlinewidth}{2.4pt}% 0.4pt = default tikz line width

\pgfmathsetlengthmacro\OuterBoxLinewidth{6*\gridlinewidth}
\pgfmathsetlengthmacro\InnerBoxLinewidth{3*\gridlinewidth}
\pgfmathsetlengthmacro\SymbolBoxLinewidth{7*\gridlinewidth}
\pgfmathsetlengthmacro\HighReduced{6cm-\InnerBoxLinewidth-\OuterBoxLinewidth}

\usepackage[most]{tcolorbox}
\tcbset{
NoGaps/.style={boxsep=0pt, left=0pt, right=0pt, top=0pt, bottom=0pt,}, 
CommonStyle/.style={NoGaps, sharp corners,  colback=white, colframe=black, before skip=0pt, after skip=0pt,}, 
SymbolStyle/.style={boxrule=\SymbolBoxLinewidth, colframe=blue}, 
}

\begin{document}
% Äußere Box ==========================
\begin{tcolorbox}[CommonStyle, 
height=6cm,    
colframe=brown, sharp corners, boxrule=\OuterBoxLinewidth, % deutlich abheben grow sidewards by=0.5\gridlinewidth, enlarge bottom finally by=8cm+\gridlinewidth, enhanced, finish={% \begin{scope}[shift={([xshift=0.5\gridlinewidth, yshift=-0.5\gridlinewidth-0cm]frame.south west)}] \draw[step=2, line cap=rect, red, line width=\gridlinewidth] grid +(\linewidth, -8); \end{scope} } ] % Innere Boxen ========================== \begin{tcbitemize}[ CommonStyle, boxsep=3pt, % raster rows=2, % kein zusätzl. Effekt raster height=\HighReduced, raster row 1/.style={height=3cm}, raster equal height=rows, % =============================== sharp corners, boxrule=\InnerBoxLinewidth, raster columns=100, raster column skip=0pt, raster row skip=0pt, ] \tcbitem[raster multicolumn=20, SymbolStyle] X \tcbitem[raster multicolumn=15] Y \tcbitem[raster multicolumn=65] Z \tcbitem[raster multicolumn=60] a \\ 1 \\ 2\\ 3 \\ 4\\ 5 \\ 6 \\ 7 \\8 \tcbitem[raster multicolumn=40] b \end{tcbitemize} \end{tcolorbox} Text after box and grid. \end{document}

Antworten