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