%!TEX program = lualatex

% Copyright (c) 2021 Thomas Jenni

% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the "Software"), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:

% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.

% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.

\documentclass{article}

\usepackage{luacode}
\usepackage{siunitx}
\usepackage{amsmath}

% siunitx config
\sisetup{
	output-decimal-marker = {.}, 
	per-mode = symbol,
	separate-uncertainty = false,
	add-decimal-zero = true,
	exponent-product = \cdot,
	round-mode=off
}

% empty unit
\DeclareSIUnit\unitless{}

\DeclareSIUnit\inch{in}

% init lua-physical
\begin{luacode}
physical = require("physical")
N = physical.Number
\end{luacode}


\newcommand{\q}[1]{%
	\directlua{tex.print(physical.Quantity.tosiunitx(#1,"add-decimal-zero=true,scientific-notation=fixed,exponent-to-prefix=false"))}%
}

\newcommand{\qs}[1]{%
	\directlua{tex.print(physical.Quantity.tosiunitx(#1,"scientific-notation=true,exponent-to-prefix=false,round-integer-to-decimal=true"))}%
}

\newcommand{\qt}[1]{%
	\directlua{tex.print(physical.Quantity.tosiunitx(#1,"scientific-notation=engineering,exponent-to-prefix=true,round-integer-to-decimal=true"))}%
}

\newcommand{\qn}[1]{%
	\directlua{tex.print(physical.Quantity.tosiunitx(#1,"add-decimal-zero=true,scientific-notation=fixed,exponent-to-prefix=false",1))}%
}

\newcommand{\qu}[1]{%
	\directlua{tex.print(physical.Quantity.tosiunitx(#1,nil,2))}%
}





\begin{document}

\section*{Example for the {\tt lua-physical} package}.

Compile this Lua\LaTeX file with the command `{\tt lualatex lua-physical\_example.tex}'.



\begin{enumerate}

\begin{luacode}
a = 12 * _cm
b = 150 * _mm
c = 1.5 * _m

V = ( a * b * c ):to(_dm^3)
\end{luacode}

\item Find the volume of a cuboid with lengths $\q{a}$,
$\q{b}$ and $\q{c}$.
%
\begin{equation*}
  V= a \cdot b \cdot c
  = \q{a} \cdot \q{b} \cdot \q{c}
  = \underline{\q{V}}
\end{equation*}





\begin{luacode}
l = 12 * _in
\end{luacode}

\item Convert $\q{l}$ to the unit $\qu{_cm}$.
%
\begin{equation*}
  l = \q{l} \cdot \frac{\q{_in:to(_cm)}}{\qu{_in}} = \q{l:to(_cm)}
\end{equation*}





\begin{luacode}
N.omitUncertainty = true

d = N(1,0.0001) * ( _au ):to(_km)
v = N(1,0.0001) * ( _c ):to(_km/_s)
t = ( d/v ):to(_min)
\end{luacode}

\item Calculate the time, a lightray travels from the surface of the sun to the earth.
The mean distance from the sun to the eart is $\qs{d}$. The speed of light is $\q{v}$.
%
\begin{equation*}
  t = \frac{d}{v} = \frac{\qs{d}}{\q{v}} = \underline{\q{t}}
\end{equation*}

\end{enumerate}


\end{document}
