362
363
364
365
366
367
368
369
370
371
372
373
374
375
...
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
...
757
758
759
760
761
762
763
764
765
766
767
768
769
770
|
section > figure.listing > hr {
border: none;
margin: 0;
height: 0.7em;
counter-increment: line-number;
}
]];
}
local stylesNeeded = {}
local function getSpanRenderers(tag,elt)
local htmlDoc = function(title, head, body)
return [[<!doctype html>]] .. tag('html',nil,
................................................................................
htmlDoc = htmlDoc;
}
end
local function getBlockRenderers(tag,elt,sr,catenate)
local function insert_toc(b,s)
local lst = {tag = 'ol', attrs={}, nodes={}}
local stack = {lst}
local top = function() return stack[#stack] end
local all = s.origin.doc.secorder
for i, sec in ipairs(all) do
if sec.heading_node then
local ent = tag('li',nil,
catenate{tag('a', {href='#'..getSafeID(sec)},
................................................................................
l,sep,sat = param:match('^%('..string.rep('([^%s]*)%s*',i)..'%)$')
if l then break end
end
l = ss.math.lerp(tonumber(l), tbg, tfg)
return tone(l, tonumber(sat), tonumber(sep), tonumber(alpha))
end
end
css = css:gsub('@(%w+)/([0-9.]+)(%b())', replace)
css = css:gsub('@(%w+)(%b())', function(a,b) return replace(a,nil,b) end)
css = css:gsub('@(%w+)/([0-9.]+)', replace)
css = css:gsub('@(%w+)', function(a,b) return replace(a,nil,b) end)
return (css:gsub('%s+',' '))
end
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
|
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
...
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
...
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
|
section > figure.listing > hr {
border: none;
margin: 0;
height: 0.7em;
counter-increment: line-number;
}
]];
toc = [[
]];
tocFixed = [[
@media (min-width: calc(@[width]:[100vw] + 20em)) {
ol.toc {
position: fixed;
padding-top: 1em; padding-bottom: 1em;
padding-right: 1em;
margin-top: 0; margin-bottom: 0;
right: 0; top: 0; bottom: 0;
max-width: calc(50vw - ((@[width]:[0]) / 2) - 3.5em);
overflow-y: auto;
}
@media (max-width: calc(@[width]:[100vw] + 30em)) {
ol.toc {
max-width: calc(100vw - ((@[width]:[0])) - 9.5em);
}
body {
margin-left: 5em;
}
}
}
]];
}
local stylesNeeded = {}
local function getSpanRenderers(tag,elt)
local htmlDoc = function(title, head, body)
return [[<!doctype html>]] .. tag('html',nil,
................................................................................
htmlDoc = htmlDoc;
}
end
local function getBlockRenderers(tag,elt,sr,catenate)
local function insert_toc(b,s)
local lst = {tag = 'ol', attrs={class='toc'}, nodes={}}
stylesNeeded.toc = true
if opts['width'] then
stylesNeeded.tocFixed = true
end
local stack = {lst}
local top = function() return stack[#stack] end
local all = s.origin.doc.secorder
for i, sec in ipairs(all) do
if sec.heading_node then
local ent = tag('li',nil,
catenate{tag('a', {href='#'..getSafeID(sec)},
................................................................................
l,sep,sat = param:match('^%('..string.rep('([^%s]*)%s*',i)..'%)$')
if l then break end
end
l = ss.math.lerp(tonumber(l), tbg, tfg)
return tone(l, tonumber(sat), tonumber(sep), tonumber(alpha))
end
end
css = css:gsub('@(%b[]):(%b[])', function(v,d) return opts[v:sub(2,-2)] or v:sub(2,-2) end)
css = css:gsub('@(%w+)/([0-9.]+)(%b())', replace)
css = css:gsub('@(%w+)(%b())', function(a,b) return replace(a,nil,b) end)
css = css:gsub('@(%w+)/([0-9.]+)', replace)
css = css:gsub('@(%w+)', function(a,b) return replace(a,nil,b) end)
return (css:gsub('%s+',' '))
end
|