Grid automatisch anpassen

Tabellen und Grafiken erstellen und anordnen


ThoRie
Forum-Century
Forum-Century
Beiträge: 169
Registriert: Fr 12. Mai 2017, 11:57

Grid automatisch anpassen

Beitrag von ThoRie »

Hallo ich habe ein Problem mit folgendem Code:
\documentclass[a4paper]{article}
\usepackage{tikz}
\begin{document}
	\tikz \draw(0,0) grid (\linewidth,3);
\end{document}
Und zwar wäre es schön, wenn das Grid rechts nur bis zum letzten vollen Kästchen geht. Es ist ja derzeit etwas länger. Leider kommt es sehr oft bei mir vor, sodass jedes mal die Breite manuell anzupassen echt nervt. Gibt es da eine Möglichkeit, dass zu automatisieren? Also quasi so, dass er das größtmögliche, vollständige Grid einzeichnet?

Rolli
Forum-Guru
Forum-Guru
Beiträge: 406
Registriert: Mi 15. Feb 2017, 08:50
Wohnort: Mittelfranken

Re: Grid automatisch anpassen

Beitrag von Rolli »

Wie wäre es denn damit:
\documentclass[a4paper]{article}
\usepackage{tikz}
\usepackage{fp}
\usepackage{lengthconvert}

\begin{document}
\raggedright

\makeatletter
\FPeval\myLineWidth{round(0.035146*\strip@pt\dimexpr\linewidth\relax-0.5,0)}
\makeatother

\textbackslash{}linewidth = \Convert{\linewidth}\\[2ex]

\tikz\draw(0,0) grid (\linewidth,3);\\[.5ex]
\tikz\draw(0,0) grid (\myLineWidth,3);\\[2ex]

\setlength{\linewidth}{3.7cm}
\makeatletter
\FPeval\myLineWidth{round(0.035146*\strip@pt\dimexpr\linewidth\relax-0.5,0)}
\makeatother

\textbackslash{}linewidth = \Convert{\linewidth}\\[2ex]

\tikz\draw(0,0) grid (\linewidth,3);\\[.5ex]
\tikz\draw(0,0) grid (\myLineWidth,3);\\[2ex]

\newpage

\setlength{\linewidth}{3.00001cm}
\makeatletter
\FPeval\myLineWidth{round(0.035146*\strip@pt\dimexpr\linewidth\relax-0.5,0)}
\makeatother

\textbackslash{}linewidth = \Convert{\linewidth}\\[2ex]

\tikz\draw(0,0) grid (\linewidth,3);\\[.5ex]
\tikz\draw(0,0) grid (\myLineWidth,3);\\[2ex]

\setlength{\linewidth}{2.99999cm}
\makeatletter
\FPeval\myLineWidth{round(0.035146*\strip@pt\dimexpr\linewidth\relax-0.5,0)}
\makeatother

\textbackslash{}linewidth = \Convert{\linewidth}\\[2ex]

\tikz\draw(0,0) grid (\linewidth,3);\\[.5ex]
\tikz\draw(0,0) grid (\myLineWidth,3);\\[2ex]

\end{document}


Rolli
Forum-Guru
Forum-Guru
Beiträge: 406
Registriert: Mi 15. Feb 2017, 08:50
Wohnort: Mittelfranken

Re: Grid automatisch anpassen

Beitrag von Rolli »

Also quasi so, dass er das größtmögliche, vollständige Grid einzeichnet?
Da müsstest Du definieren, was größtmöglich bedeutet. Mein Vorschlag oben rundet stets ab; d. h. bsp. bei Zeilenbreite 2,9999 cm werden nur zwei Kästchen ausgegeben. Wenn Du bsp. bei Zeilenbreite 2,8000 cm drei Kästchen haben willst, dann den round(...) anpassen: round(... - 0.5) ist ja bekanntlich identisch zu floor(...) (für positive Argumente).
Gruß vom Rolli

Antworten