Wie ein dynamisches Kommando erstellen?

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Wie ein dynamisches Kommando erstellen?

von Theresa » So 28. Apr 2013, 10:59

Hallo!

hab diesen Thread gerade beim "Stöbern" im Forum gefunden. Wie toll ist das denn? Diese Möglichkeit, Karos zu erzeugen suche ich seit gefühlten Ewigkeiten. Und man kann auch ganz problemlos eigene Breiten einstellen. So super!

Vielen Dank an euch!
werde das gleich als Standardbefehl in alle meine Arbeiten einbinden.

Lieben Gruß, Theresa

von Artur » Mo 19. Apr 2010, 15:49

Wow spitze, es funktioniert perfekt!!!

Tausend Dank!

von esdd » Mo 19. Apr 2010, 15:01

Hallo,

hier noch mal ein Vorschlag, bei dem Du die Zeilenanzahl wirklich vorgeben kannst. Außerdem habe ich den kariert-Befehl so geändert, dass am rechten Rand keine halben Kästchen entstehen.
\documentclass[parskip=half]{scrartcl} 

\usepackage[ngerman]{babel}   
\usepackage[latin1]{inputenc} 
\usepackage[T1]{fontenc}       
\usepackage{lmodern}             
\usepackage{tikz} 

\newcommand{\liniert}[2][0.9]{%
 \begin{tikzpicture}         
  \clip(0,0)rectangle(\textwidth,-#2*#1);
  \foreach \n in {1,...,#2}{ % 
   \draw[color=gray, text=black](0 ,-#1*\n )--(\textwidth,-#1*\n );} 
 \end{tikzpicture}}

\newcommand{\kariert}[2][0.5]{%
	\pgfmathtruncatemacro\anzahl{\textwidth/#1cm}
	\begin{tikzpicture}          
    \draw[step=#1,color=gray] (0,0) grid (\anzahl*#1,#2*#1); %Anzahl der Kästchenreihen 
  \end{tikzpicture}} 

\begin{document} 
\section*{Aufgabe 1} 
\label{sec:Aufgabe1} 
Beantworten Sie folgende Fragen:\\ 
normaler Linienabstand von 0.9\,cm:

\liniert{4}
       
Auch bei kleinem Linienabstand werden 4 Linien erzeugt!

\liniert[0.3]{4}

Berechnen Sie folgende Aufgaben:\\ 
normale Kästchengröße:

\kariert{5}

große Kästchengröße: hier ist die Anzahl der Kästchen äquivalent zum Parameterwert.

\kariert[2]{2}

\end{document}
Gruß
Elke

von Artur » Mo 19. Apr 2010, 13:56

Hier mal ein Beispiel: Unter anderem werden auch noch Kästchen erstellt um berechnungen durchzuführen. Vielleicht kann das ja jemand gebrauchen...
% ---------------------------------------------------------------------
% ++++ header
% ---------------------------------------------------------------------
\documentclass[
      parskip=half            
      ]{scrartcl}

\usepackage[a4paper,left=2cm, right=2cm,top=2.5cm,bottom=2.5cm]{geometry}
\usepackage[ngerman]{babel}  
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}      
\usepackage{lmodern}            
\usepackage{graphicx}        
\usepackage{color}
\usepackage{tikz}
% ---------------------------------------------------------------------
% ++++ Umgebungen
% ---------------------------------------------------------------------
\newcommand{\liniert}[2][0.9]{\begin{tikzpicture}         % Linien, default abstand ist 0.9cm
                                   \foreach \y in {0,#1,...,#2}
                                  \draw[color=gray, text=black] (0 ,\y ) -- (\textwidth,\y )
                                    ;\end{tikzpicture}
                                    }
\newcommand{\kariert}[2][0.5]{\begin{tikzpicture}         % Kästchen
                                             \draw[step=#1cm,color=gray] (0 , 0) grid (\textwidth,#2*#1) %Anzahl der Kästchenreihen
                                             ;\end{tikzpicture}
                                             }
% ---------------------------------------------------------------------
% ++++ Dokument
% ---------------------------------------------------------------------
\begin{document}
\section*{Aufgabe 1}
\label{sec:Aufgabe1}
Beantworten Sie folgende Fragen:\\
normaler Linienabstand von 0.9cm:\par
\liniert{4}      
kleiner Linienabstand von 0.3, leider werden keine 4 Linienzeilen erzeugt! (da der Endwert der Schleife kein Produkt ist)\par
\liniert[0.3]{4}  
Berechnen Sie folgende Aufgaben:\\
normale Kästchengröße:\par
\kariert{3}
große Kästchengröße: hier ist die Anzahl der Kästchen äquivalent zum Parameterwert.\par
\kariert[2]{3}
\end{document}
% ---------------------------------------------------------------------
% ++++  EOF
% ---------------------------------------------------------------------
Es ist jetzt nicht unbedingt tragisch dass der Parameter liniert nicht die Anzhal der Schreibzeilen erstellt. Es ging mir bloß um Perfektion... .

von esdd » Mo 19. Apr 2010, 12:43

Hallo,

wie wäre es mit einem lauffähigen Minimalbeispiel? Hier trotzdem ein Vorschlag:
\documentclass{scrartcl}
\usepackage{tikz}
\newcommand{\liniert}[2][0.9]{%
 \begin{tikzpicture}         
  \foreach \n in {0,...,#2}{ %
   \draw[color=gray, text=black] (0 ,#1*\n ) -- (\textwidth,#1*\n );}
 \end{tikzpicture} 
}  
                    
\begin{document}
\liniert{4}
\end{document}
Gruß
Elke

von cliffhanger » Mo 19. Apr 2010, 12:23

Hi Artur,

tikz (bzw. das darunterliegende PGF) hat selbst eine ziemlich mächtige Mathematik-Engine. Die sollte sowas ohne größere Probleme berechnen können.

Siehe PGFmanual Part IV - "Mathematical Engine"

Grüße
Benedikt

von Artur » Mo 19. Apr 2010, 11:58

vielen Dank,
leider löst es mein Problem nicht. Ich wollte Aufgabenblätter erstellen und dann einen Befehl haben mit den ich bequem Linien zeichne, die Linien werden mit dem Paket tikz erstellt.
Hier ein Beispiel:
% Linien, default abstand ist 0.9cm
\newcommand{\liniert}[2][0.9]{\begin{tikzpicture}			
  											\foreach \y in {0,#1,...,#2}
    										\draw[color=gray, text=black] (0 ,\y ) -- (\textwidth,\y )
;\end{tikzpicture}
												}
Im Text kann man dann bequem diese Linien einbauen.
\liniert{4}
Dies würde mir dann fünf linien zeichnen für vier Schreibzeilen. Das Problem ist dass der Standart-Linienabstand 0.9cm ist und der Parameter 2 nicht immer genau 4 Schreibzeilen erzeugen würde.

Mit folgendem Code müsste es gehen, aber anscheindend kann die tikzpicture Umgebung dies nicht verstehen.
% Linien, default abstand ist 0.9cm
\newcommand{\liniert}[2][0.9]{\begin{tikzpicture}			
  											\foreach \y in {0,#1,...,\number\numexpr#1*#2\relax}
    										\draw[color=gray, text=black] (0 ,\y ) -- (\textwidth,\y ); {\y}
;\end{tikzpicture}
											}
So hätte man dann eine gute Fuktion mit der man Schreiblinien erzeugt.

von phi » Mo 19. Apr 2010, 10:20

beispielsweise so:
\newcommand*{\produkt}[2]{#1 mal #2 ergibt: \number\numexpr#1*#2\relax}

Wie ein dynamisches Kommando erstellen?

von Artur » Mo 19. Apr 2010, 09:28

Wie bekommt man sowas in Latex hin:
\newcommand{\produkt}[2]{#1 mal #2 ergibt: #1*#2}
Es soll also das Produkt aus den Parametern ausgegeben werden.

Nach oben