Seite 1 von 1

[LuaLaTeX] Berechnungen

Verfasst: Sa 30. Nov 2013, 12:27
von Gast
Hallo,

ich arbeite seit ein paar Wochen an einer Arbeit für mein Studium. Da sich einige Berechnungen im Dokument befinden für welche sich die Rahmenbedingungen ändern können, habe ich diese wie folgt in meinem Dokument eingebunden:
\newcommand{\Kraft}	{450} %N
\newcommand{\Laenge}		{10} %mm
.
.
.

$\luaexec{tex.sprint(string.format("\%.3f\\, "Nmm", \Kraft*\Laenge )}$
Da ich einige der Berechneten Werte später wieder benötige, habe ich versucht diese in Variablen abzuspeichern, jedoch keine funktionierende Lösung gefunden. Die einzige funktionierende Lösung die ich finden konnte war es die Rechnung zu kopieren und wieder einzufügen. Da dies jedoch sehr schnell sehr unübersichtlich wird und eine eventuelle spätere Fehlersuche somit nahezu unmöglich ist, hoffe ich das mit jemand weiterhelfen kann.
Gibt es eine Möglichkeit einen Berechneten Wert mittels einer Variable an einen späteren Rechenschritt zu übergeben?

Viele Grüße :)

Verfasst: So 1. Dez 2013, 11:29
von Noch so einer
Obwohl das in den wichtigen Hinweisen zu fast jedem Unterforum erwähnt wird, hast Du leider kein vollständiges Minimalbeispiel gemacht, so dass ich auf Spekulationen bezüglich dessen, was Du eigentlich willst, und was Du erfolglos versucht hast, angewiesen bin. Daher sei nur darauf hingewiesen, dass man natürlich in Lua Variablen anlegen und später auch wieder darauf zugreifen kann:
\documentclass{article}

\newcommand{\Kraft}{450}
\newcommand{\Laenge}{10}

\begin{document}

Zu erst mal rechnen.
\directlua{a=\Kraft*\Laenge}

Und hetzt das Ergebnis verwenden: \directlua{tex.print(a)}

\end{document}

Verfasst: Fr 6. Dez 2013, 15:03
von LuaTex
Hallo,

eigentlich ist das fast genau das was ich haben wollte - vielen Dank dafür. Da ich die berechneten Werte aber auch Teilweise im Text verwende, wollte ich diese wie die Variablen zuvor erzeugen, um die Werte nicht umständlich über \directlua{..} aufrufen zu müssen.
\documentclass{article}

\newcommand{\Kraft}{450}
\newcommand{\Laenge}{10}
\newcommand{\Moment}{\directlua{\Kraft*\Laenge}}

\begin{document}

Zu erst mal rechnen.

Und hetzt das Ergebnis verwenden: \Moment

\end{document}
Hierbei erhalte ich jedoch immer eine Fehlermedlung. Ich habe es schon einmal geschafft den Wert ausgeben zu lassen, konnte jedoch dann mit dem Berechneten Wert mittels der Variable \Moment nicht mehr weiter rechnen.
Besteht eigentlich eine Möglichkeit die Berechnungen in eine externe Datei auszulagern und diese in LaTex aufzurufen? Damit würde natürlich das eigentliche Dokument sehr übersichtlich bleiben.
Als beispiel:
Ich berechne alle Werte in einer externen Datei und rufe dann zu Beginn meines LaTeX-Dokument die Werte auf und lege diese in \newcommand{\Kraft}{Berechnete Variable aus externer Datei} ab.

Verfasst: Do 2. Jan 2014, 02:52
von esdd
Hier ist mal noch ein Vorschlag:
\documentclass{article} 

\usepackage{fontspec} 

\newcommand\Kraft{450} 
\newcommand\Laenge{10} 
\newcommand\Moment{\directlua{tex.print(\Kraft*\Laenge)}} 

\begin{document} 

Und jetzt das Ergebnis verwenden: \Moment 

\renewcommand\Laenge{20} 

Und hier das neue Ergebnis für die Länge 20: \Moment 

\end{document}
Falls \Moment nur einmal berechnet werden soll, d.h. \Kraft und \Laenge sich nicht ändern, dann kann man auch
\edef\Moment{\directlua{tex.print(\Kraft*\Laenge)}}
statt \newcommand\Moment{...} verwenden.

Gruß
Elke