Rechnen mit variablen Thema ist als GELÖST markiert
Rechnen mit variablen
Hallo ich habe eine Frage,
wie kann ich zwei Variablen miteinander verrechnen hier ist mein Bsp. Code:
\newcounter{xhalf};
\newcounter{temp1};
\newcounter{temp2};
\newcounter{temp3};
\newcounter{x1};
\newcounter{x2};
\setcounter{x1}{5};
\setcounter{x2}{7};
\setcounter{temp1}{\value{x1}-0.2};
\setcounter{temp2}{\value{x2}+0.2};
\setcounter{temp3}{\value{temp2}-\value{temp1}}; <- genau hier passiert der Fehler
%\setcounter{xhalf}{\value{temp3}/2}
ich hoffe ihr könnt mir weiterhelfen.
MfG
Mathias
wie kann ich zwei Variablen miteinander verrechnen hier ist mein Bsp. Code:
\newcounter{xhalf};
\newcounter{temp1};
\newcounter{temp2};
\newcounter{temp3};
\newcounter{x1};
\newcounter{x2};
\setcounter{x1}{5};
\setcounter{x2}{7};
\setcounter{temp1}{\value{x1}-0.2};
\setcounter{temp2}{\value{x2}+0.2};
\setcounter{temp3}{\value{temp2}-\value{temp1}}; <- genau hier passiert der Fehler
%\setcounter{xhalf}{\value{temp3}/2}
ich hoffe ihr könnt mir weiterhelfen.
MfG
Mathias
Re: Rechnen mit variablen
Für derartige Berechnungen gibt es eine verhältnismäßig große Auswahl an Paketen.
Re: Rechnen mit variablen
Im Prinzip mit `\setcounter{temp3}{\inteval{\value{temp2}-\value{temp1}}}`. Aber counter enthalten Integer. `\value{x1}-0.2` macht keinen Sinn, du hast einfach nur Glück, dass es keinen Fehler gibt.
Wenn du mit Dezimalen rechnen willst, kannst du das eingebaute fp-Module nutzen (siehe interface3.pdf):
Wenn du mit Dezimalen rechnen willst, kannst du das eingebaute fp-Module nutzen (siehe interface3.pdf):
\documentclass{book} \begin{document} \ExplSyntaxOn \fp_new_variable:n { A } \fp_new_variable:n { B } \fp_set_variable:nn { A } { 1.32 } \fp_set_variable:nn { B } { 2.4 } \ExplSyntaxOff \fpeval{0.3*A+pi*B} \end{document}
Ulrike Fischer
www.troubleshooting-tex.de
www.troubleshooting-tex.de
Re: Rechnen mit variablen
Viele Dank erstmal für eure Hilfe, jetzt funktioniert alles erstmal soweit, jedoch habe ich ein Problem. Ich kann meine Umgebung Diagramm nur einmal verwenden möchte es aber mehrmals verwenden.
Hier meine fDiagramm:
und hier rufe ich sie auf in meiner .tex Datei
Hier meine fDiagramm:
\ProvidesPackage{fDiagramm} \RequirePackage{tikz} \usetikzlibrary{shapes.geometric} \usetikzlibrary {backgrounds} \newenvironment{Diagramm}{ \begin{tikzpicture} \newlength{\yPosition} \setlength{\yPosition}{0cm} \newlength{\xLength} \newcounter{xLengtZustand}; \newcommand{\Sensor}[3]{ \node at (0,\yPosition+1.5cm) {##1}; \node at (1.55, \yPosition+2cm) {##3}; \node at (1.55, \yPosition+1cm) {##2}; \draw (2,\yPosition) -- (2,\yPosition+3cm); \addtolength{\yPosition}{2cm} % Y-Position um 1,5 erhöhen %\node at (0,1) {##1}; %\node at (1, 1.5) {##3}; %\node at (1, 0.5) {##2}; %\draw (1.5,0) -- (1.5,2); %Zweiter Sensor %\node at (1, 2.5) {0}; %\node at (1, 3.5) {1}; %\node at (0,3) {PR1}; %\draw (1.5,2) -- (1.5,4); %Zeitabschnitt %\draw (1.5,0.5) -- (2.5,0.5); %\draw (1.5,1.5) -- (2.5,1.5); %\draw (1.5,2.5) -- (2.5,2.5); %\draw (1.5,3.5) -- (2.5,3.5); %\node[draw, circle] (start) at (0,0) {Start}; %\node[draw, rectangle] (PR0) at (0,1) {Schritt 1}; %\node[draw, rectangle] (step2) at (0,2) {Schritt 2}; %\node[draw, circle] (end) at (6,0) {Ende}; %\draw[-] (start) -- (step1); %\draw[-] (step1) -- (step2); %\draw[-] (step2) -- (end); } \newcommand{\Label}{ \addtocounter{xLengtZustand}{+4}; \node[rotate=90] at (0.1, \yPosition+1.5cm) {Bauglied}; \node[rotate=90] at (1.55, \yPosition+1.5cm) {Zustand}; \draw (-1,0) rectangle (1.2,\yPosition+2.5cm); \draw (1.2,0) rectangle (2,\yPosition+2.5cm); \draw (2,0) rectangle (\value{xLengtZustand},\yPosition+2.5cm); \draw (-1,\yPosition + 0.7cm) -- (2,\yPosition + 0.7cm); } \newcommand{\Schritte}[1]{ \newcounter{step}; \setcounter{step}{##1}; %\addtocounter{step}{-2}; \setlength{\xLength}{0cm} \begin{scope}[on background layer] \draw[step=1cm,gray,very thin] (2,0) grid (##1+4,\yPosition + 1.2cm); \end{scope} \foreach \x in {0,...,\value{step}} { \node at (\x+3,\yPosition+1.5cm) {\x}; } \setcounter{xLengtZustand}{\value{step}}; } \newcommand{\Schritt}[4]{ \draw[red, ultra thick] (##1+2,##2) -- (##3+2,##4); } \newcommand{\pup}[5]{ \draw[fill] (##1+2,##2) circle (2pt) node[above left] {##5}; \draw[fill] (##3+2,##4) circle (2pt); \draw (##1+2,##2) -- (##1+2+0.2,##2+0.4); \draw[->] (##1+2+0.2,##2+0.4) -- (##3+2+0.2,##4-0.4); \draw (##3+2+0.2,##4-0.4) -- (##3+2,##4); } \newcommand{\pdown}[5]{ \draw[fill] (##1+2,##2) circle (2pt); \draw[fill] (##3+2,##4) circle (2pt) node[above left] {##5}; \draw (##1+2,##2) -- (##1+2+0.2,##2+0.4); \draw[<-] (##1+2+0.2,##2+0.4) -- (##3+2+0.2,##4-0.4); \draw (##3+2+0.2,##4-0.4) -- (##3+2,##4); } } { \end{tikzpicture} }
und hier rufe ich sie auf in meiner .tex Datei
\documentclass[10pt,a4paper]{article} \usepackage[utf8]{inputenc} \usepackage[german]{babel} \usepackage[T1]{fontenc} \usepackage{amsmath} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{units} \usepackage{fDiagramm} \author{Test} \title{Test} \begin{document} \maketitle \begin{Diagramm} \Sensor{Q1}{0}{1} \Sensor{T2}{0}{1} \Sensor{T1}{0}{1} \Schritte{6} \Label %Schritte für T1 \Schritt{0}{5}{2}{5} \Schritt{2}{5}{2}{6} \Schritt{2}{6}{3}{6} \Schritt{3}{6}{3}{5} \Schritt{3}{5}{6}{5} \Schritt{6}{5}{6}{6} \Schritt{6}{6}{8}{6} %Schritte für T2 \Schritt{0}{3}{4}{3} \Schritt{4}{3}{4}{4} \Schritt{4}{4}{5}{4} \Schritt{5}{4}{5}{3} \Schritt{5}{3}{6}{3} \Schritt{6}{3}{6}{4} \Schritt{6}{4}{8}{4} %Schritte Q1 \Schritt{0}{1}{2}{1} \Schritt{2}{1}{2}{2} \Schritt{2}{2}{3}{2} \Schritt{3}{2}{3}{1} \Schritt{3}{1}{4}{1} \Schritt{4}{1}{4}{2} \Schritt{4}{2}{5}{2} \Schritt{5}{2}{5}{1} \Schritt{5}{1}{6}{1} \Schritt{6}{1}{6}{2} \Schritt{6}{2}{8}{2} \pdown{2}{1}{2}{6}{\unit[0,2]{mm}} \pdown{4}{1}{4}{4}{\unit[0,2]{mm}} \pdown{6}{1}{6}{6}{\unit[0,2]{mm}} \pdown{6}{1}{6}{4}{\unit[0,2]{mm}} \end{Diagramm} \end{document}
- Stefan Kottwitz
- Admin
- Beiträge: 2544
- Registriert: Di 8. Jul 2008, 00:39
- Kontaktdaten:
Re: Rechnen mit variablen
Hallo Mathias,
ich finde super, dass Du TikZ verwendest! Ich bin ein großer Freund davon, daher habe ich auch ein Buch dazu geschrieben. Auf tikz.org/sample findest Du ein Kapitel, das sich konkret mit Rechnen befasst, also mit der calc-Library, sowie for-Schleifen und Schnitte von Pfaden.
Die Diagramm-Umgebung kann man nicht mehrfach verwenden, weil innerhalb der Umgebung Längen und Makros definiert werden. Also \newlength und \newcommand sollten raus aus der Umgebung und an den Anfang der .sty-Datei.
Mit TikZ würde ich jedoch integrierte TikZ Bordmittel zum Berechnen verwenden, also calc, ggf. tikzmath oder pgfmath.
Stefan
ich finde super, dass Du TikZ verwendest! Ich bin ein großer Freund davon, daher habe ich auch ein Buch dazu geschrieben. Auf tikz.org/sample findest Du ein Kapitel, das sich konkret mit Rechnen befasst, also mit der calc-Library, sowie for-Schleifen und Schnitte von Pfaden.
Die Diagramm-Umgebung kann man nicht mehrfach verwenden, weil innerhalb der Umgebung Längen und Makros definiert werden. Also \newlength und \newcommand sollten raus aus der Umgebung und an den Anfang der .sty-Datei.
Mit TikZ würde ich jedoch integrierte TikZ Bordmittel zum Berechnen verwenden, also calc, ggf. tikzmath oder pgfmath.
Stefan
Re: Rechnen mit variablen
Habe ich auch schon versucht.
Leider gibt es dann folgenden Fehlermeldung und ich war total Hilflos.
! LaTeX Error: Missing \begin{document}.
Anscheinend kann ich es auch nicht am Anfang der Datei machen weil er die Umgebung von \begin{Document} brauch.
\newlength{\yPosition} \setlength{\yPosition}{0cm} \newlength{\xLength} \newcounter{xLengtZustand}; \newenvironment{Diagramm}{ \begin{tikzpicture} \newcommand{\Sensor}[3]{ \node at (0,\yPosition+1.5cm) {##1}; \node at (1.55, \yPosition+2cm) {##3}; \node at (1.55, \yPosition+1cm) {##2}; \draw (2,\yPosition) -- (2,\yPosition+3cm); \addtolength{\yPosition}{2cm} % Y-Position um 1,5 erhöhen %\node at (0,1) {##1}; %\node at (1, 1.5) {##3}; %\node at (1, 0.5) {##2}; %\draw (1.5,0) -- (1.5,2);
! LaTeX Error: Missing \begin{document}.
Anscheinend kann ich es auch nicht am Anfang der Datei machen weil er die Umgebung von \begin{Document} brauch.
- Stefan Kottwitz
- Admin
- Beiträge: 2544
- Registriert: Di 8. Jul 2008, 00:39
- Kontaktdaten:
Re: Rechnen mit variablen
Das klingt, als hättest Du die .sty-Datei versucht zu übersetzen, und nicht das Dokument, dort steht \begin{document} ja drin. \newcommand muss auch noch raus aus tikzpicture- und Diagramm-Umgebungen.
Stefan
Stefan
Re: Rechnen mit variablen
Ok ich habe nochmal von vorne begonnen.
Vielleicht stelle ich mir das auch falsch vor wie das funktionieren könnt.
Ich sehe das wie bei einer Programmiersprache, ich definiere mir eine Funktion und die Kann ich mehrmals aufrufen in meinem Fall:
Jetzt kommt wahrscheinlich mein Denkfehler. Ich definier ja x und. y außerhalb von newcommand, deswegen denke ich das der Wert drin gespeichert wird und beim nächsten Aufruf damit weitergerechnet wird.
also wenn ich
\Sensor{Test}{0}{1}
\Sensor{Test1}{0}{1}
die Texte übereinander geschrieben werden, aber sie liegen leider aufeinander.
Ich hoffe ihr versteht was ich für ein Problem habe.
Vielleicht stelle ich mir das auch falsch vor wie das funktionieren könnt.
Ich sehe das wie bei einer Programmiersprache, ich definiere mir eine Funktion und die Kann ich mehrmals aufrufen in meinem Fall:
\newenvironment{Diagramm}{ \def\x{0} \def\y{0} \begin{tikzpicture} \newcommand{\Sensor}[3]{ \node at (0,\y + 1.5) {##1}; \node at (1.55, \y + 2) {##3}; \node at (1.55, \y + 1) {##2}; \draw (2,\y) -- (2,\y + 3); \y + 2 %Hier soll der wert um zwei erhöht werden dammit beim nächsten aufruf der Text über dem alten Text ist. } } { \end{tikzpicture} }
also wenn ich
\Sensor{Test}{0}{1}
\Sensor{Test1}{0}{1}
die Texte übereinander geschrieben werden, aber sie liegen leider aufeinander.
Ich hoffe ihr versteht was ich für ein Problem habe.
- Stefan Kottwitz
- Admin
- Beiträge: 2544
- Registriert: Di 8. Jul 2008, 00:39
- Kontaktdaten:
Re: Rechnen mit variablen
In jedem Aufruf der Umgebung Zähler und Makros neu anzulegen, ist ein Problem. Beim zweiten Durchlauf gibt es den Zähler schon.
Das sollte also aus der Umgebung raus und weiter oben stehen in der .sty-Datei:
Der Fehler "Missing \begin{document}" kam weil Du ein Semikolon in dieser Zeile drin hattest:
Das Semikolon ist ja hier "normaler Text" und dann beschwert sich LaTeX, weil das Dokument noch nicht begonnen wurde und schon soll Text ausgegeben werden.
Stefan
Das sollte also aus der Umgebung raus und weiter oben stehen in der .sty-Datei:
\newlength{\yPosition} \newlength{\xLength} \newcounter{xLengtZustand} \newcounter{step}
\newcounter{xLengtZustand};
Stefan
Re: Rechnen mit variablen
Ich habe es jetzt mit \calc gemacht wie du es mir empfohlen hast
hier jetzt der Code in einer Datei damit es kompiliert werden kann.
hier jetzt der Code in einer Datei damit es kompiliert werden kann.
\documentclass[10pt,a4paper]{article} \usepackage[utf8]{inputenc} \usepackage[german]{babel} \usepackage[T1]{fontenc} \usepackage{amsmath} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{units} \usepackage{tikz} \usetikzlibrary{shapes.geometric} \usetikzlibrary {backgrounds} \usetikzlibrary{calc} \newenvironment{Diagramm}{ \def\x{0} \def\y{0} \begin{tikzpicture} \newcommand{\Sensor}[3]{ \node at (0,\y + 1.5) {##1}; \node at (1.55, \y + 2) {##3}; \node at (1.55, \y + 1) {##2}; \draw (2,\y) -- (2,\y + 3); \y + 2 } } { \end{tikzpicture} } \author{Test} \title{Test} \begin{document} \maketitle \begin{Diagramm} \Sensor{Test}{1}{2} \Sensor{Test2}{1}{2} \end{Diagramm} \begin{Diagramm} \Sensor{Test}{1}{2} \Sensor{Test2}{1}{2} \end{Diagramm} \end{document}