X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=test%2Ftest27-lineprofile.tex;h=7c8e33760965d41343e8afdf0217d839b37b2613;hb=f078ac2f7998a102c7ec765e725f2269eed9f872;hp=7fd402dabc906adcc3f2fbc4154c1734800c7587;hpb=9ea20b314a026311726be0138551700bbc036509;p=luatex-ja%2Fluatexja.git diff --git a/test/test27-lineprofile.tex b/test/test27-lineprofile.tex index 7fd402d..7c8e337 100644 --- a/test/test27-lineprofile.tex +++ b/test/test27-lineprofile.tex @@ -1,159 +1,8 @@ \documentclass[10ptj]{ltjsarticle} \usepackage[width=40\zw, lines=40,centering]{geometry} -\usepackage{amsmath,luacode,xcolor} -\begin{luacode} - lineskip = {} -do - local insert = table.insert - local rangedimensions, max = node.rangedimensions, math.max - function lineskip.p_profile(before, after) - local t = {} - do - local w_acc, d_before = 0, 0 - local x = before.head; local xn = x.next - while x do - local w, d - if xn then w, _, d= rangedimensions(before,x,xn) - else w, _, d= rangedimensions(before,x) end - if d~=d_before then - d_before = d; t[w_acc] = t[w_acc] or {} - if t[w_acc][1] then t[w_acc][1]=max(t[w_acc][1],d) - else t[w_acc][1]=d end - end - w_acc = w_acc + w - x = xn; if x then xn = x.next end - end - end - do - local w_acc, h_before = 0, 0 - local x = after.head; local xn = x.next - while x do - local w, h - if xn then w, h = rangedimensions(after,x,xn) - else w, h = rangedimensions(after,x) end - if h~=h_before then - h_before = h; t[w_acc] = t[w_acc] or {} - if t[w_acc][2] then t[w_acc][2]=max(t[w_acc][2],h) - else t[w_acc][2]=h end - end - w_acc = w_acc + w - x = xn; if x then xn = x.next end - end - end - local t2 = {} - for i,v in pairs(t) do insert(t2, { i, v[1], v[2] } ) end - table.sort(t2, function(a,b) return a[1]dmax then dmax=d end - if h>hmax then hmax=h end - if (bls-h-d) -65536000) then - local normal = tex.baselineskip.width - prev - new_b.height - local lmin, adj = nil, 0; - if tail.id==0 and new_b.id==0 then - if tail.depth==prev then lmin, adj = l_profiler(tail,new_b) end - end - local g = node.new(12); l_skip(lmin or normal, g, adj, normal) - node.write(g) - end - node.write(new_b) - tex.prevdepth = new_b.depth - return nil -- do nothing on tex side - end - luatexbase.remove_from_callback('append_to_vlist_filter','ltj.direction') - luatexja.base.add_to_callback('append_to_vlist_filter', - lineskip_append_vlist, - 'line profile', 10000) -end -\end{luacode} +\usepackage{amsmath,luacode,xcolor,luatexja-adjust} \begin{document} -\directlua{% - lineskip.step_factor = 0.5 -} - -% #1: null(TeX 既定) or profile(行の中身を考慮した行間測定) -% #2: null(TeX 既定) -% or step(行送りが \baselineskip で十分でなかった場合, -% lineskip.step_factor * \baselineskip の倍数だけ広げて -% 行間が \lineskip 以上になるようにする) -\def\R#1#2{\directlua{lineskip.setting('#1','#2')}% +\def\R#1#2{\ltjenableadjust[profile=#1,linestep=#2]% \noindent\fbox{\parbox{25\zw}{% \baselineskip14pt\noindent \setbox2=\vtop{\noindent\hsize20\zw\textcolor{cyan!30!white}{% @@ -175,7 +24,7 @@ end □□□□■□□□□■□□□□■□□□□■□□□□■□□□□■□□□□■□□□□■ □□□□■□□□□■□□□□■□□□□■ }}\dp2=0pt\rlap{\copy2}\par\vspace*{-\baselineskip} -\textbf{#1, #2}\\ +\textbf{profile: #1, linestep: #2}\par \vrule height 2pt depth 0pt width 10\zw\\ \vrule height 2pt depth 0pt width 10\zw\\ \the\baselineskip あああああああああああああああ\\ @@ -203,9 +52,50 @@ end }}\newpage} -\R{null}{null} -\R{profile}{null} -\R{null}{step} -\R{profile}{step} +\R{false}{false} +\R{true}{false} +\R{false}{true} +\R{true}{true} + +\ltjgetparameter{linestep_factor} + +\ltjdisableadjust +\def\R#1#2{\ltjenableadjust[profile=#1,priority=#2]% +\noindent\fbox{\parbox[t]{20\zw}{% +\baselineskip14pt\noindent +\textbf{profile: #1, priority: #2}\par + \ltjsetparameter{xkanjiskip=.25\zw plus 20pt minus 20pt} + ああxあaaaあxあx\vrule height 30pt depth 30pt width 9.7\zw「\break + \vrule height 30pt depth 30pt width9.6\zw xあxあxあaaaああ「\break +}}} + +\R{false}{false}% +\R{true}{false}\\ +\R{false}{true}% +\R{true}{true}% + +\ltjdisableadjust +\ltjenableadjust[profile] + +\def\R#1{% + \fbox{\parbox[t]{130pt}{\lineskip1pt\textbf{#1pt (\texttt{lineskip}: \the\lineskip)}\\% + \noindent\vrule height 5pt depth 50pt width 45pt\kern30pt% + \vrule height 5pt depth 50pt width 30pt\\ + \textcolor{red}{\kern\dimexpr45pt+#1pt\vrule height 50pt depth 5pt width20pt}% + \textcolor{blue}{\kern-40pt\vrule height 5pt depth 5pt width 60pt}% + }}\hskip0pt\ignorespaces +} + +\newpage +\texttt{profile\_hgap\_factor=\ltjgetparameter{profile_hgap_factor}}\par +\noindent +\R{0}\R{0.5}\R{1}\R{2}\R{8}\R{9}\R{10} + + +\newpage +\ltjsetparameter{profile_hgap_factor=2} +\texttt{profile\_hgap\_factor=\ltjgetparameter{profile_hgap_factor}}\par +\noindent +\R{0}\R{0.5}\R{1}\R{2}\R{8}\R{9}\R{10} \end{document}