diff --git a/mo/tex/protokol.tex b/mo/tex/protokol.tex index c666e1115379091ff9457af3a55bc522a5a7e6a4..0d494403ef04e7dbb60415efaad04dbfca8097f3 100644 --- a/mo/tex/protokol.tex +++ b/mo/tex/protokol.tex @@ -23,7 +23,43 @@ \def\kolo{TODO} \def\kat{TODO} -\def\field#1#2{\hbox to #1{#2\hss}} +\newbox\ellipsisbox +\setbox\ellipsisbox=\hbox{\bf~\dots~~} + +\directlua{ + function cut_box(box_nr, max_w) + local box = tex.box[box_nr] + % nodetree.analyze(box) + local n + local total_w = 0 + local last_visible + for n in node.traverse(box.head) do + local w, h, d = node.dimensions(n, n.next) + total_w = total_w + w + if total_w > max_w then + local new = node.copy_list(box.head, last_visible.next) + tex.box[box_nr] = node.hpack(new) + % nodetree.analyze(tex.box[box_nr]) + return + end + if n.id == 0 or n.id == 2 or n.id == 29 then % hlist, rule, glyph + last_visible = n + end + end + end +} + +\def\limitedbox#1#2{% + \setbox0=\hbox{#2}% + \ifdim \wd0 > #1\relax + \dimen0=\dimexpr #1 - \wd\ellipsisbox\relax + \directlua{cut_box(0, tex.dimen[0])}% + \setbox0=\hbox{\box0\copy\ellipsisbox}% + \fi + \box0 +} + +\def\field#1#2{\hbox to #1{\limitedbox{#1}{#2}\hss}} \def\fillin#1{\smash{\lower 2pt\hbox to #1{\hrulefill}}} % \proto{kód}{jméno}{třída}{škola}{příklad} diff --git a/mo/tex/test.tex b/mo/tex/test.tex index 463635321157cf1dac9e747b65c4d77174efa4a2..84ad7c77f56117871613abc20ea87602d0e3e37e 100644 --- a/mo/tex/test.tex +++ b/mo/tex/test.tex @@ -7,6 +7,7 @@ \proto{MO:70-P-III-2:12345}{Pokusný Králík}{4/4}{Gymnázium Na Paloučku, Králíky}{P-III-2} \proto{MO:70-P-III-3:12345}{Pokusný Králík}{4/4}{Gymnázium Na Paloučku, Králíky}{P-III-3} \proto{MO:70-P-III-4:12345}{Pokusný Králík}{4/4}{Gymnázium Na Paloučku, Králíky}{P-III-4} +\proto{MO:70-P-III-4:12345}{Pokusný Králík}{4/4}{MŠ, ZŠ a SŠ pro sluchově postižené, Valašské Meziříčí}{P-III-4} \universal \blank