Skip to content

Commit

Permalink
refactor sourcecode sub-package and apply mods
Browse files Browse the repository at this point in the history
  • Loading branch information
robitex committed Apr 8, 2021
1 parent d8d4ec4 commit 136312c
Show file tree
Hide file tree
Showing 17 changed files with 372 additions and 270 deletions.
30 changes: 15 additions & 15 deletions guidalua.tex
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
% License information see LICENSE text file

\documentclass[b5paper,11pt,openany]{guidatematica}
\ProvidesFile{guidalua.tex}[2021/04/05 v0.4.4 Guida al linguaggio Lua per LuaTeX]
\ProvidesFile{guidalua.tex}[2021/04/08 v0.4.4 Guida al linguaggio Lua per LuaTeX]
\GetFileInfo{guidalua.tex}
\setmonofont[Scale=0.82]{Fira Mono}
\usepackage{sourcecode}
Expand All @@ -21,15 +21,15 @@
\fvset{
fontsize=\small,
numbers=left,
xleftmargin=6mm,
numbersep=2.25mm
xleftmargin=7.5mm,
numbersep=5.75mm
}

\lstset{
\lstset{% general setup
numbers=left,
numberstyle=\tiny,
xleftmargin=6mm,
numbersep=2.25mm
xleftmargin=7.5mm,
numbersep=5.75mm
}

\usepackage[
Expand All @@ -53,18 +53,17 @@
colbacklower=white,
boxrule=0.4pt,
leftrule=3.2pt,
fonttitle=\bfseries,
fontupper=\small,
fontlower=\small
}

\setmarginnotes{6pt}{\dimexpr\foremargin-12pt\relax}{5pt}
\tcbuselibrary{documentation}
\tcbset{doc marginnote={
colframe=verdeguit,
colback=verdeguit!5!white,
width=21.5mm,
enlarge right by=-2mm,
enlarge left by=-5mm,
halign=flush left
\tcbset{
doc marginnote={
colframe=verdeguit,
colback=verdeguit!5!white,
if odd page or oneside={flushleft upper}{flushright upper}
}
}

Expand All @@ -80,7 +79,7 @@
\newcommand\gotosec{\textcolor{verdeguit}{\tiny\S}}

\newlength{\margindown}
\setlength{\margindown}{10mm}
\setlength{\margindown}{2.5mm}

\makeatletter
\newcommand\guidalualicensebox{
Expand Down Expand Up @@ -135,6 +134,7 @@
}

\begin{document}
\newtcolorbox[blend into=listings]{tcbfloat}[2][]{float=htb,title={#2},#1}
\hypersetup{
colorlinks=true,
linkcolor=verdeguit,
Expand Down
81 changes: 52 additions & 29 deletions section/I-01-calc.tex
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ \section{La calcolatrice}

Tentiamo qualcosa di molto semplice con Lua, assegnare l'espressione a una
variabile per poi stamparla nel documento:
%

\tcbdocmarginnote[enlarge top initially by=\margindown]{%
Lua in \TeX\\
\gotosec{} \ref{secLuaInLuaLaTeX}}
Expand All @@ -38,7 +38,8 @@ \section{La calcolatrice}
\fn{tex.print}\\
\gotosec{} \ref{secPassaggioDati}}
%
\begin{Verbatim}
\begin{lines}
#[tex]
% !TeX program = LuaLaTeX
% filename: app-start/E0-001-expr.tex
\documentclass{article}
Expand All @@ -50,7 +51,7 @@ \section{La calcolatrice}
Finalmente una calcolatrice:
\( 1.24 (7.45 + 11.21) = \expr{1.24*(7.45 + 11.21)}\)
\end{document}
\end{Verbatim}
\end{lines}

\newcommand\expr[1]{\directlua{
local result = #1
Expand All @@ -69,7 +70,11 @@ \section{La calcolatrice}
Funziona anche con le stringhe, a patto di delimitarne il valore, e con le
espressioni booleane. Proviamo:
\begin{tcolorbox}
\verb=\( 56.9 > 78.42 \) è \texttt{\expr{ 56.9 > 78.42 }}=
\begin{lines}
#[tex]
#[tcolorbox]
\( 56.9 > 78.42 \) è \texttt{\expr{ 56.9 > 78.42 }}
\end{lines}
\tcblower
\( 56.9 > 78.42 \) è \texttt{\expr{ 56.9 > 78.42 }}
\end{tcolorbox}
Expand All @@ -79,7 +84,7 @@ \subsection{Espressioni booleane personalizzate}

E se si volessero sostituire le rappresentazioni testuali dei valori vero e
falso? Ecco la modifica:
%

\tcbdocmarginnote[enlarge top initially by=\margindown]{%
Ciclo \key{if}\\
\gotosec{} \ref{secFondCicloIf}}
Expand All @@ -92,15 +97,16 @@ \subsection{Espressioni booleane personalizzate}
Operatore ternario\\
\gotosec{} \ref{secFondOperatoreTernario}}
%
\begin{Verbatim}
\begin{lines}
#[tex]
\newcommand\expr[1]{\directlua{
local result = #1
if type(result) == "boolean" then
result = result and "vero" or "falso"
end
tex.print(tostring(result))
}}
\end{Verbatim}
\end{lines}

\renewcommand\expr[1]{\directlua{
local result = #1
Expand All @@ -112,10 +118,11 @@ \subsection{Espressioni booleane personalizzate}

Un semplice test ci conforterà sulla correttezza del codice e si funziona:
\begin{tcolorbox}[sidebyside]
\begin{Verbatim}[numbers=none, xleftmargin=0pt]
\begin{lines}
#[tcolorbox]
\expr{100 == 100 and 7 > 3}
\expr{-10 < -100}
\end{Verbatim}
\end{lines}
\tcblower
\expr{100 == 100 and 7 > 3}\\
\expr{-10 < -100}
Expand All @@ -126,12 +133,13 @@ \subsection{Arrotondamento numerico}

Vorrei poter regolare l'arrotondamento del risultato numerico della calcolatrice
ricorrendo a un argomento opzionale separato dall'espressione da una virgola:
%

\tcbdocmarginnote[enlarge top initially by=\margindown]{%
\fn{string.format}\\
\gotosec{} \ref{secFondStringFormat}}
%
\begin{Verbatim}
\begin{lines}
#[tex]
\newcommand\expr[1]{\directlua{
local result, dec = #1
if type(result) == "boolean" then
Expand All @@ -144,7 +152,7 @@ \subsection{Arrotondamento numerico}
end
tex.print(tostring(result))
}}
\end{Verbatim}
\end{lines}

\renewcommand\expr[1]{\directlua{
local result, dec = #1
Expand All @@ -167,7 +175,11 @@ \subsection{Arrotondamento numerico}

Mettiamo alla prova la modifica alla macro \cs{expr}:
\begin{tcolorbox}
\verb|\(\sqrt{2} + \sqrt{3} \approx \expr{ 2^0.5 + 3^0.5, 2}\)|
\begin{lines}
#[tex]
#[tcolorbox]
\(\sqrt{2} + \sqrt{3} \approx \expr{ 2^0.5 + 3^0.5, 2}\)
\end{lines}
\tcblower
\(\sqrt{2} + \sqrt{3} \approx \expr{ 2^0.5 + 3^0.5, 2}\)
\end{tcolorbox}
Expand All @@ -184,7 +196,8 @@ \subsection{Funzioni matematiche}
\verb=\expr{math.cos(math.pi)}= invece della più naturale \verb=\expr{cos(pi)}=.
Ma ci vuole poco a riassegnare le funzioni a nomi locali per far si che
l'identità trigonometrica precedente sia un'espressione valida:
\begin{Verbatim}
\begin{lines}
#[tex]
\newcommand\expr[1]{\directlua{
local cos = math.cos
local sin = math.sin
Expand All @@ -199,7 +212,7 @@ \subsection{Funzioni matematiche}
end
tex.print(tostring(result))
}}
\end{Verbatim}
\end{lines}

\renewcommand\expr[1]{\directlua{
local cos = math.cos
Expand All @@ -219,17 +232,21 @@ \subsection{Funzioni matematiche}
Una prova della calcolatrice potenziata con le funzioni trigonometriche ci dirà
se tutto funziona ancora bene:
\begin{tcolorbox}
\begin{Verbatim}[numbers=none,xleftmargin=0pt]
\(\sin^2(1/2) + \cos^2(1/2) = \expr{sin(0.5)^2 + cos(0.5)^2, 8}\).
\end{Verbatim}
\begin{lines}
#[tex]
#[tcolorbox]
\(\sin^2(1/2) + \cos^2(1/2) =\expr{sin(0.5)^2 + cos(0.5)^2, 8}\).
\end{lines}
\tcblower
\(\sin^2(1/2) + \cos^2(1/2) = \expr{sin(0.5)^2 + cos(0.5)^2, 8}\).
\end{tcolorbox}
e per un'espressione booleana:
\begin{tcolorbox}
\begin{Verbatim}[numbers=none,xleftmargin=0pt]
A \( 1/3 \) l'identità è \emph{\expr{sin(1/3)^2 + cos(1/3)^2 == 1}}
\end{Verbatim}
\begin{lines}
#[tex]
#[tcolorbox]
A \(1/3\) l'identità è \emph{\expr{sin(1/3)^2 + cos(1/3)^2 == 1}}
\end{lines}
\tcblower
A \( 1/3 \) l'identità è \emph{\expr{sin(1/3)^2 + cos(1/3)^2 == 1}}
\end{tcolorbox}
Expand Down Expand Up @@ -268,7 +285,8 @@ \subsection{Costanti numeriche}
Iteratore \fn{pairs}\\
\gotosec{} \ref{secFondPairsIterator}}
%
\begin{Verbatim}
\begin{lines}
#[tex]
\directlua{
calclib = {}
for name, object in pairs(math) do
Expand All @@ -282,7 +300,7 @@ \subsection{Costanti numeriche}
end
tex.print(tostring(calclib.ans))
}}
\end{Verbatim}
\end{lines}

Stiamo sfruttando una tecnica piuttosto interessante: all'interno di un blocco
viene riassegnata localmente la variabile \code{\_ENV} a \code{calclib}, una
Expand Down Expand Up @@ -310,11 +328,13 @@ \subsection{Costanti numeriche}
}}
%
\begin{tcolorbox}[sidebyside]
\begin{Verbatim}
\begin{lines}
#[tex]
#[tcolorbox]
\expr{pi/4}\\
\expr{cos(ans)}\\
\expr{acos(ans)}
\end{Verbatim}
\end{lines}
\tcblower
\expr{pi/4}\\
\expr{cos(ans)}\\
Expand All @@ -331,7 +351,8 @@ \subsection{Costanti numeriche}
una stringa solo come chiave tra le opzioni, potremo implementare la
memorizzazione del risultato dell'espressione stessa, così che sia poi
riutilizzabile:
\begin{Verbatim}
\begin{lines}
#[tex]
\directlua{
calclib = {}
for name, object in pairs(math) do
Expand Down Expand Up @@ -363,7 +384,7 @@ \subsection{Costanti numeriche}
end
tex.print(tostring(calclib.ans))
}}
\end{Verbatim}
\end{lines}

\renewcommand\expr[2][]{\directlua{
do
Expand Down Expand Up @@ -393,12 +414,14 @@ \subsection{Costanti numeriche}

Eccone un esempio:
\begin{tcolorbox}
\begin{Verbatim}[numbers=none,xleftmargin=0pt]
\begin{lines}
#[tex]
#[tcolorbox]
\( b = \expr[b=10, h=20]{b} \), % oppure \expr["b", h=20]{10}
\( h = \expr{h} \),
\( M = \expr[m = 1000]{m}\), % oppure \expr["m"]{1000}
\( \sigma = M/W_\mathrm{x} = \expr[w=(b*h^2)/6]{m/w}\).
\end{Verbatim}
\end{lines}
\tcblower
\( b = \expr[b = 10]{b} \),
\( h = \expr[h = 20]{h} \),
Expand Down

0 comments on commit 136312c

Please sign in to comment.