Modul:Mathematikunterricht/ Vorlage:Bruch in Blockdarstellung
Modul Mathematikunterricht
Modulbeschreibung
Modul zur Darstellung von Brüchen als farbigen Teil eines Rechteck-Rasters
(Schokolade) für die Vorlage Mathematikunterricht/ Vorlage:Bruch in Blockdarstellung.
Die Vorlage benutzt die Funktion blockdarstellungWrapper
.
Beispiel Vorlagenbenutzung für den Bruch 18/8:
{{:Mathematikunterricht/ Vorlage:Bruch in Blockdarstellung |18 |8 |zeilen= 2 |style1= background: orange |styleRest= background: greenyellow |steinhöhe= 2em |steinbreite= 3em}}
Ergebnis:
Parameter:
1
,2
für Zähler, Nennerzeilen
: 1 oder 2.. Zeilen hochrichtung
Ausmalrichtungvlnr
(links nach rechts, Standardwert) odervonu
style1
,styleRest
für die Farbe..,styleDiv
blockhöhe
,blockbreite
Funktionen
blockdarstellung
blockdarstellungWrapper
Wrapperfunktion, kann aus der Vorlage ohne Parameter aufgerufen werden
- Diese Dokumentation wurde mithilfe von Modul:LuaDokumentation erstellt und befindet sich im Quelltext.
- Liste der Unterseiten
--- Modul zur Darstellung von Brüchen als farbigen Teil eines Rechteck-Rasters
-- (Schokolade) für die Vorlage [[Mathematikunterricht/ Vorlage:Bruch in Blockdarstellung]].
-- Die Vorlage benutzt die Funktion <code>blockdarstellungWrapper</code>.<br><br>
-- Beispiel Vorlagenbenutzung für den Bruch 18/8:<br>
-- {<nowiki/>{:Mathematikunterricht/ Vorlage:Bruch in Blockdarstellung |18 |8 |zeilen= 2
-- |style1= background: orange |styleRest= background: greenyellow
-- |steinhöhe= 2em |steinbreite= 3em}}
-- Ergebnis:<br>
-- {{:Mathematikunterricht/ Vorlage:Bruch in Blockdarstellung |18 |8 |zeilen= 2
-- |style1= background: orange |styleRest= background: greenyellow |steinhöhe= 2em |steinbreite= 3em}}<br>
-- <br>
-- Parameter:
-- * <code>1</code>, <code>2</code> für Zähler, Nenner
-- * <code>zeilen</code>: 1 oder 2.. Zeilen hoch
-- * <code>richtung</code> Ausmalrichtung <code>vlnr</code> (links nach rechts, Standardwert) oder <code>vonu</code>
-- * <code>style1</code>, <code>styleRest</code> für die Farbe.., <code>styleDiv</code>
-- * <code>blockhöhe</code>, <code>blockbreite</code>
local p = {}
function paint(x, rows, cols, direction)
direction= direction or "vlnr"
cells= {}; n= 1
if direction=="vlnr" then
for i= 1, cols do
for j= 1, rows do
if n<=x then
cells[#cells+1]= (j-1)*cols+i
n= n+1
end
end
end
else --top to bottom
for i= 1, rows do
for j= 1, cols do
if n<=x then
cells[#cells+1]= (i-1)*cols+j
n= n+1
end
end
end
end
--mw.addWarning("table.concat(cells) "..mw.dumpObject(cells).." "..table.concat(cells, ","))
return table.concat(cells, ",")
end
--- Hauptfunktion
function p.blockdarstellung(frame)
nom= assert(tonumber(frame.args[1]), "nonumber arg1-2 "..mw.dumpObject(frame.args))
denom= assert(tonumber(frame.args[2]), "nonumber arg1-2 "..mw.dumpObject(frame.args))
zeilen= assert(tonumber(frame.args["zeilen"] or 1), "nonumber zeilen "..mw.dumpObject(frame.args))
assert(denom%zeilen==0, "nenner/zeilen nicht ganzzahlig "..mw.dumpObject(frame.args))
spalten= denom/zeilen
direction= frame.args["richtung"] or "vlnr"
mosaikArgs= {
["style1"]= frame.args["style1"],
["styleRest"]= frame.args["styleRest"],
["steinhöhe"]= frame.args["blockhöhe"],
["steinbreite"]= frame.args["blockbreite"]}
styleDiv= frame.args["styleDiv"] or ""
out= ""
for i= 1, math.ceil(nom/denom) do
mosaikArgs[1]= spalten
mosaikArgs[2]= zeilen
mosaikArgs["liste1"]= paint(nom-denom*(i-1), zeilen, spalten, direction)
--mw.addWarning("mosaikArgs"..mw.dumpObject(mosaikArgs))
out= out
..'<div style="display:inline-block; margin:1mm 3mm 1mm 1mm;'
..styleDiv..'">'
..frame:expandTemplate {title = 'Mosaik', args = mosaikArgs}
..'</div>'
end
return out
end
--- Wrapperfunktion, kann aus der Vorlage ohne Parameter aufgerufen werden
function p.blockdarstellungWrapper(frame)
return p.blockdarstellung(frame:getParent())
end
return p