OSDN Git Service

luatexja-adjust.sty: {stretch,shrink}_priority keys in \ltjsetparameter
[luatex-ja/luatexja.git] / src / addons / luatexja-adjust.sty
index cdfad90..019f480 100644 (file)
   \expandafter\let\csname ifltj@in@latex\expandafter\endcsname
     \csname iftrue\endcsname
   \NeedsTeXFormat{LaTeX2e}
-  \ProvidesPackage{luatexja-adjust}[2013/05/14]
+  \ProvidesPackage{luatexja-adjust}[2016/05/15]
 \fi                             %</LaTeX>
 
 % Load core module if not yet.
+% xkeyval.sty is already required in luatexja.sty.
 \ifx\luatexjacoreLoaded\@undefined
   \ifltj@in@latex                 %<*LaTeX>
-    \RequirePackage{luatexja}[2013/05/14]
+    \RequirePackage{luatexja}[2016/05/15]
   \else                           %<*!LaTeX>
     \input luatexja.sty %
   \fi                             %</LaTeX>
 \expandafter\endinput\fi\relax
 
 %%------------------
+
 %! Main part of luatexja-adjust
-\RequireLuaTeXjaSubmodule{adjust}
+\ifnum\luatexversion>90
+  \RequireLuaTeXjaSubmodule{adjust}
+\else
+  \RequireLuaTeXjaSubmodule{adjust_85}
+\fi
+
+
+\newcount\ltjadj@status@le
+\newcount\ltjadj@status@pr
+\let\ltj@adjust@temp=\relax
+\define@choicekey[ltj]{adjust}{lineend}[\@@temp\ltj@adjust@temp]%
+{false,true,extended}[true]{%
+  \ifnum\ltj@adjust@temp=-1 \else\ltjadj@status@le=\ltj@adjust@temp\fi\relax}
+\define@boolkey[ltj]{adjust}{priority}[true]{%
+  \ltjadj@status@pr=\ifltj@adjust@priority1\else0\fi\relax}
+\protected\def\@@ltjenableadjust[#1]{%
+   \setkeys[ltj]{adjust}{#1}%
+   \directlua{luatexja.adjust.enable_cb(\the\ltjadj@status@le, \the\ltjadj@status@pr)}\ignorespaces
+}
+\protected\def\ltjdisableadjust{\ltjenableadjust[lineend=false,priority=false]}
+\protected\def\ltjenableadjust{%
+   \ltx@ifnextchar[{\@@ltjenableadjust}{\@@ltjenableadjust[lineend,priority]}}%]
 
-% enable/disable ``advanced'' line adjustment
-\protected\def\ltjdisableadjust{\directlua{luatexja.adjust.disable_cb()}}
-\protected\def\ltjenableadjust{\directlua{luatexja.adjust.enable_cb()}}
 \ltjenableadjust
-% there is also a key for \ltjsetparameter, for same effect
-\define@boolkey[ltj]{japaram}{adjust}[true]{%
-  \ifltj@japaram@adjust\ltjenableadjust\else\ltjdisableadjust\fi
+
+%%% 優先順位の設定
+%%% stretch_priority = {<xkanjiskip>, <kanjiskip>, <others>}
+\define@key[ltj]{japaram}{stretch_priority}{%
+  \directlua{luatexja.adjust.make_priority_table(1,#1)}\relax
 }
+\define@key[ltj]{japaram}{shrink_priority}{%
+  \directlua{luatexja.adjust.make_priority_table(2,#1)}\relax
+}
+\ltjsetparameter{stretch_priority={-3,-4,5}, shrink_priority={-3,-4,5}}
 
-\ifltj@in@latex
-  \RequirePackage{expl3}
-  \ExplSyntaxOn
-  \cs_new:Nn \ltj_adjust_inittable: {
-    % To be filled...
-  }
-  \cs_new:Nn \ltj_adjust_appendtable:n {
-    % To be filled
-  }
-  \clist_new:N \l_ltj_adjust_priority
-  \define@key[ltj]{japaram}{adjustpriority}{% COMMA LIST
-    \clist_set:Nx \l_ltj_adjust_priority {#1}
-    \ltj_adjust_inittable:
-    \clist_map_function:NN \l_ltj_adjust_priority \ltj_adjust_appendtable:n
-  }
-  \ExplSyntaxOff
-\fi
 
 %%------------------ all done
 \ltj@adjust@AtEnd