In meinem Dokument füge ich an einigen Stellen eine unterschiedliche Anzahl Zeilen mit Kästchen. Bisher mache ich das so:

\documentclass[parskip=half-]{scrartcl} 
\usepackage{tikz}
\usepackage{showframe} % Seitenlayout anzeigen

\begin{document}

Beantworte folgende Frage:
\begin{center}
  \tikz\draw[step=1cm,gray](0,0)grid(13,3);
\end{center}

\fbox{% nur um Abmessungen zu zeigen
  \begin{minipage}{0.5\linewidth}
    Beantworte folgende Frage:
    \begin{center}
      \tikz\draw[step=0.5cm,gray](0,0)grid(7,2);
    \end{center}
  \end{minipage}
}
\end{document}

alt text

Das funktioniert zwar, aber ich muss immer schauen, wie viele Kästchen wirklich in eine Zeile passen.

Deshalb hätte ich gern einen Befehl

\kaestchenzeilen[<seitenlänge eines kästchens>]{<zeilenanzahl>}

der mir Kästchenpapier mit der angebenen zeilenanzahl zeichnet und dabei die vorhandene Breite automatisch für die maximal mögliche Anzahl vollständiger Kästchen ausnutzt. Die seitenlänge der einzelnen Kästchen möchte ich ebenfalls vorgeben. In der Regel wird also etwas horizontaler Freiraum übrig bleiben, der dann aber immer kleiner als eine Kästchenbreite ist.

gefragt 10 Dez '13, 16:13

welle's gravatar image

welle
106222631
Akzeptiert-Rate: 0%

bearbeitet 10 Dez '13, 17:35

1

Bei beiden Lösungen bekommst du Probleme, wenn die die \linewidth ein ganzes Vielfaches von <Seitenlänge eines Kästchen> ist, da das TikZ-Picture außerdem an beiden Seiten noch .5\pgflinewidth hinzufügt (oben und unten auch). Das macht das ganze Picture dann \linewidth+\pgflinewidth groß, zu groß.

Etwas related: TeX.sx/TeX.sx-Antwort

(10 Dez '13, 22:59) Qrrbrbirlbel

@Qrrbrbirlbel Ah, sowas hatte ich schon befürchtet... Dann muss man das halt an der geeigneten Stelle abziehen

(10 Dez '13, 23:01) cgnieder

@Qrrbrbirlbel Danke für den Hinweis, hab ich jetzt unten korrigiert. Eigentlich hätte ich das auch selbst merken sollen :-(

(11 Dez '13, 10:10) esdd

Zum Berechnen der maximalen Kästchenzahl in einer Zeile kann man \pgfmathtruncatemacro nutzen. Dabei muss berücksichtigt werden, dass am linken und rechten Rand jeweils noch Platz für 0.5\pgflinewidth benötigt wird.

\documentclass[12pt,parskip=half-]{scrartcl} 
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{showframe} % Seitenlayout anzeigen

\newcommand\kariert[2][0.5cm]{% 
   \begin{tikzpicture}[gray,step=#1]
     \pgfmathtruncatemacro\anzahl{(\linewidth-\pgflinewidth)/#1} % maximale Anzahl Kästchen pro Zeile
     \draw (0,0) rectangle (\anzahl*#1,#2*#1) (0,0) grid (\anzahl*#1,#2*#1);
   \end{tikzpicture} 
}

\newcommand{\liniert}[2][0.5cm]{% 
  \begin{tikzpicture}[gray]
  \path[use as bounding box](0,0)rectangle(\linewidth,-#2*#1-0.5\pgflinewidth); 
   \foreach \n in {1,...,#2}\draw(0 ,-#1*\n )--(\linewidth,-#1*\n ); 
  \end{tikzpicture}}

\begin{document} 
\minisec{Kästchenzeilen}
\begin{center}
  \kariert[1cm]{3}
\end{center}

\minisec{Linien}
\liniert[1cm]{3}

\minisec{In Minipages}
\begin{minipage}{0.6\linewidth}
  Beantworte folgende Frage:
  \begin{flushleft}
    \kariert{4}
  \end{flushleft}
\end{minipage}%
\begin{minipage}{0.4\linewidth}
  Beantworte folgende Frage:
  \begin{center}
    \liniert{4}
  \end{center}
\end{minipage}
\end{document}

In dem Beispiel ist gleich noch ein Vorschlag, wie man auch Linien zum Schreiben zeichnen könnte, vielleicht wird das ja auch mal gebraucht.

alt text

Permanenter link

beantwortet 10 Dez '13, 22:03

esdd's gravatar image

esdd
17.7k254256
Akzeptiert-Rate: 62%

bearbeitet 11 Dez '13, 10:06

\pgfmathtruncatemacro ist wohl genauso ein Bordmittel, das ich vermutet hatte :)

(10 Dez '13, 22:10) cgnieder

@Clemens Das ist das gleiche wie \pgfmathsetmacro{int(<eval>)}.

(10 Dez '13, 22:41) Qrrbrbirlbel

@Qrrbrbirlbel Auch \pgfmathsetmacro ist mir nur vage bekannt... Ich bin nur Gelegenheits-TikZ-Nutzer und muss für sowas immer noch jedes Mal das pgfmanual öffnen :)

(10 Dez '13, 22:45) cgnieder
3

\pgfmathsetmacro#1 is quasi \pgfmathparse{<eval>}\let\#1\pgfmathresult. (Es gibt Unterschiede zwischen 2.10 und CVS.) Da gibt's noch ein paar weitere „Setter“. Es gibt noch \pgfmathsetlength, \pgfmathsetcount und \pgfmathsetcounter, die quasi LaTeXs Makros spiegeln (nur halt mit PGFmath-Evaluation).

Im Prinzip hätte sie auch einfach

\draw[step={#1},color=gray] (0,0) grid ({int(\linewidth/(#1))*(#1)},{(#2)*(#1)});

verwenden können, ohne extra Makro. Man beachte die Klammerung der Parameter, die es etwas robuster gegenüber Input macht, der zum Beispiel aus einer Summe besteht.

(10 Dez '13, 22:52) Qrrbrbirlbel

Möglich, dass TikZ bequemere Bordmittel hat... hier ist jedenfalls eine auf die Schnelle zusammengeschusterte Idee (zum \romannumeral Trick siehe Wofür verwendet man romannumeral-Expansion?):

\documentclass[parskip=half-]{scrartcl} 
\usepackage{tikz}
\usepackage{showframe} % Seitenlayout anzeigen

\makeatletter
\newlength\breite
% der Befehl gibt bei einer Kommazahl den ganzzahligen Anteil:
\def\ganzezahl#1.#2\q@stop{#1}
% die Kaestchenbox
%  \kaestchenbox{<Anzahl Zeilen>}
%  \kaestchenbox[<Breite Kaestchen>>]{<Anzahl Zeilen>}
\newcommand\kaestchenbox[2][5mm]{%
  \begin{tikzpicture}
    % Kaestchenbreite:
    \setlength\breite{#1}%
    % anzahl Kaestchen, die in die verfuegbare Breite passen:
    \edef\anzahl{%
      \expandafter\ganzezahl
      % expandieren, bis nur noch die Zahl da ist,
      % \strip@pt entfernt die Einheit `pt' bei einer Länge:
      \romannumeral-`0\strip@pt
      \dimexpr1pt*\linewidth/\breite\relax\relax\q@stop
    }%
    % das Gitter:
    \draw[x=\breite,y=\breite,step=\breite]
    (0,0) grid (\anzahl,#2) ;
  \end{tikzpicture}%
}
\makeatother

\begin{document}

\kaestchenbox{4}

Beantworte folgende Frage:
\begin{center}
  \kaestchenbox[1cm]{3}
\end{center}

\fbox{% nur um Abmessungen zu zeigen
  \begin{minipage}{0.5\linewidth}
    Beantworte folgende Frage:
    \begin{center}
      \kaestchenbox{4}
    \end{center}
  \end{minipage}%
}

\end{document}

alt text

Permanenter link

beantwortet 10 Dez '13, 20:14

cgnieder's gravatar image

cgnieder
22.1k243463
Akzeptiert-Rate: 60%

bearbeitet 10 Dez '13, 20:17

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×728

gestellte Frage: 10 Dez '13, 16:13

Frage wurde gesehen: 22,835 Mal

zuletzt geändert: 11 Dez '13, 10:10