OSDN Git Service

Fix? of the ticket #28162.
authorHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Tue, 24 Apr 2012 08:17:28 +0000 (17:17 +0900)
committerHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Tue, 24 Apr 2012 08:17:28 +0000 (17:17 +0900)
12 files changed:
.gitattributes
doc/ltjsclasses.pdf
doc/luatexja-en.pdf
doc/luatexja-ja.pdf
doc/luatexja.dtx
no_runtime/ltjsclasses.dtx
src/jfm-ujis.lua
src/ltj-jfmglue.lua
src/ltjsclasses/ltjsarticle.cls
src/ltjsclasses/ltjsbook.cls
src/ltjsclasses/ltjskiyou.cls
src/ltjsclasses/ltjspf.cls

index 1f4d39d..3102d8c 100644 (file)
@@ -2,4 +2,5 @@
 README export-subst
 .gitattributes export-ignore
 .gitignore export-ignore
+/tool/release.mak export-ignore
 
index 011d32c..12db2fd 100644 (file)
Binary files a/doc/ltjsclasses.pdf and b/doc/ltjsclasses.pdf differ
index 861fbc5..7d59798 100644 (file)
Binary files a/doc/luatexja-en.pdf and b/doc/luatexja-en.pdf differ
index 09c712a..842ada4 100644 (file)
Binary files a/doc/luatexja-ja.pdf and b/doc/luatexja-ja.pdf differ
index 0b03c50..7673322 100644 (file)
@@ -2546,7 +2546,7 @@ to be that of letters in the character class~0. For example, suppose that
 \end{itemize}
 Then, the position of glyphs is shifted up by
 \[
- \frac{88x}{88x+12x} (28y+5y) - 28y = \frac{26}{825}y= 0.03\dot1\dot5y.
+ \frac{88x}{88x+12x} (28y+5y) - 28y = \frac{26}{25}y= 1.04y.
 \]
 %</en>
 %<*ja>
@@ -2561,7 +2561,7 @@ Then, the position of glyphs is shifted up by
 \end{itemize}
 となっていたとする.すると,実際の文字の出力位置は,
 \[
- \frac{88x}{88x+12x} (28y+5y) - 28y = \frac{26}{825}y= 0.03\dot1\dot5y
+ \frac{88x}{88x+12x} (28y+5y) - 28y = \frac{26}{25}y= 1.04y.
 \]
 だけ上にずらされることになる.
 %</ja>
@@ -3466,13 +3466,13 @@ $i$ は7より小さい自然数.
 
 %<*en>
 Furthermore, \LuaTeX-ja uses several `user-defined' whatsit nodes for
-typesetting. All those nodes store a natural number (hence the node's
-\texttt{type} is 100).
+inrernal processing. All those nodes store a natural number (hence the node's
+\texttt{type} is 100). The following \verb+user_id+s are used:
 %</en>
 %<*ja>
-さらに,\LuaTeX-ja はいくつかの「ユーザ定義の」whatsit ノードを組版に用いる.
+さらに,\LuaTeX-ja はいくつかの「ユーザ定義の」whatsit ノードを内部処理に用いる.
 これらの全てのノードは自然数を格納している(したがってノードの \texttt{type} は
-100 である).
+100 である).次の \verb+user_id+ が使用される:
 %</ja>
 \begin{description}
 \item[30111]
@@ -3502,14 +3502,21 @@ Nodes for Japanese Characters which the callback process of
           luaotfload won't be applied, and the character code is
           stored in the \texttt{value} field. Each node having this
           \verb+user_id+ is converted to a `glyph\_node' \emph{after}
-          the callback process of luaotfload.
+          the callback process of luaotfload. 
+          This \verb+user_id+ is only used by the \Pkg{luatexja-otf} package.
 %</en>
 %<*ja>
 luaotfload のコールバックによる処理が適用されない和文文字のためのノードで,
 \texttt{value} フィールドにその文字のコードが格納されている.
 この \verb+user_id+ を持つノードはそれぞれが luaotfload のコールバックの処理の
-\textbf{後で} `glyph\_node' に変換される.
+\textbf{後で} `glyph\_node' に変換される.この \verb+user_id+ は %
+\Pkg{luatexja-otf} パッケージでのみ使用される.
 %</ja>
+
+\item[30114]
+Nodes for indicating beginning of a paragraph. 
+A paragraph which is started by \verb+\item+ in list-like environments has a horizontal box
+for its label before the actual contents. So \dots
 \end{description}
 %<*en>
 These whatsits will be removed during the process of inserting \textbf{JAglue}s.
index 3d222f4..19d02a3 100644 (file)
@@ -22,7 +22,7 @@
 %  -----------------------------------------
 %
 % \fi
-% \CheckSum{4855}
+% \CheckSum{4976}
 %% \CharacterTable
 %%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
 %%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
@@ -50,7 +50,7 @@
 %<*driver>
 \ProvidesFile{ltjsclasses.dtx}
 %</driver>
-  [2011/10/03 ]
+  [2012/04/24]
 %<*driver>
 \documentclass{ltjsarticle}
 \usepackage{doc}
         \begingroup \@svsechd \endgroup
         \unskip
         \@tempskipa #1\relax
-        \hskip -\@tempskipa
+        \hskip -\@tempskipa\@inhibitglue
       \else
         \clubpenalty \@clubpenalty
         \everypar{}%
 %    \end{macrocode}
 % \end{macro}
 %
+% \section{段落の頭へのグルー挿入禁止}
+%
+% 段落頭のかぎかっこなどを見かけ1字半下げから全角1字下げに直します。
+%
+% [2012-04-24] LuaTeX-ja では JFM に段落開始時の括弧類の字下げ幅をコントロール
+% する機能がありますが,|\item| 直後ではラベル用のボックスが段落先頭になる
+% ため,うまく働きませんでした.形を変えて復活させます.
+%
+% |\item| 命令の直後です。
+%
+%    \begin{macrocode}
+\protected\def\@inhibitglue{\directlua{luatexja.jfmglue.create_beginpar_node()}}
+\def\@item[#1]{%
+  \if@noparitem
+    \@donoparitem
+  \else
+    \if@inlabel
+      \indent \par
+    \fi
+    \ifhmode
+      \unskip\unskip \par
+    \fi
+    \if@newlist
+      \if@nobreak
+        \@nbitem
+      \else
+        \addpenalty\@beginparpenalty
+        \addvspace\@topsep
+        \addvspace{-\parskip}%
+      \fi
+    \else
+      \addpenalty\@itempenalty
+      \addvspace\itemsep
+    \fi
+    \global\@inlabeltrue
+  \fi
+  \everypar{%
+    \@minipagefalse
+    \global\@newlistfalse
+    \if@inlabel
+      \global\@inlabelfalse
+      {\setbox\z@\lastbox
+       \ifvoid\z@
+         \kern-\itemindent
+       \fi}%
+      \box\@labels
+      \penalty\z@
+    \fi
+    \if@nobreak
+      \@nobreakfalse
+      \clubpenalty \@M
+    \else
+      \clubpenalty \@clubpenalty
+      \everypar{}%
+    \fi\@inhibitglue}%
+  \if@noitemarg
+    \@noitemargfalse
+    \if@nmbrlist
+      \refstepcounter\@listctr
+    \fi
+  \fi
+  \sbox\@tempboxa{\makelabel{#1}}%
+  \global\setbox\@labels\hbox{%
+    \unhbox\@labels
+    \hskip \itemindent
+    \hskip -\labelwidth
+    \hskip -\labelsep
+    \ifdim \wd\@tempboxa >\labelwidth
+      \box\@tempboxa
+    \else
+      \hbox to\labelwidth {\unhbox\@tempboxa}%
+    \fi
+    \hskip \labelsep}%
+  \ignorespaces}
+%    \end{macrocode}
+%
+% |\@gnewline| についてはちょっと複雑な心境です。
+% もともとのp\LaTeXe は段落の頭にグルーが入る方で統一されていました。
+% しかし |\\| の直後にはグルーが入らず,不統一でした。
+% そこで |\\| の直後にもグルーを入れるように直していただいた経緯があります。
+% しかし,ここでは逆にグルーを入れない方で統一したいので,
+% また元に戻してしまいました。
+%
+% しかし単に戻すだけでも駄目みたいなので,ここでも最後にグルーを消しておきます。
+%
+%    \begin{macrocode}
+\def\@gnewline #1{%
+  \ifvmode
+    \@nolnerr
+  \else
+    \unskip \reserved@e {\reserved@f#1}\nobreak \hfil \break \null
+    \inhibitglue \ignorespaces
+  \fi}
+%    \end{macrocode}
+%
 % \section{いろいろなロゴ}
 %
 % \LaTeX 関連のロゴを作り直します。
index 59b763e..87846f9 100644 (file)
@@ -56,7 +56,7 @@ luatexja.jfont.define_jfm {
         [4] = { 0.25, 0.0, 0.25 },
         [5] = { 0.25, 0.0, 0.25 },
         [6] = { 0.25, 0.0, 0.25 },
-        [7] = { 0.25, 0.0, 0.25 }
+        [7] = { 0.25, 0.0, 0.25 },
       }
    },
 
@@ -134,6 +134,9 @@ luatexja.jfont.define_jfm {
 
    [99] = { -- box末尾
       chars = {'boxbdd', 'parbdd'},
+      glue = {
+        [3] = { 0.25, 0.0, 0.25 },
+      }
    },
 
 }
\ No newline at end of file
index 228d376..eec0142 100644 (file)
@@ -461,8 +461,9 @@ function set_np_xspc_alchar(Nx, c,x, lig)
       end
       Nx.pre = ltjs_get_penalty_table('pre', c, 0, box_stack_level)
       Nx.post = ltjs_get_penalty_table('post', c, 0, box_stack_level)
+      Nx.char = 'jcharbdd'
    else
-      Nx.pre = 0; Nx.post = 0
+      Nx.pre = 0; Nx.post = 0; Nx.char = -1
    end
    Nx.met = nil
    local y = ltjs_get_penalty_table('xsp', c, 3, box_stack_level)
@@ -737,16 +738,14 @@ end
 
 local function get_OA_skip()
    if not ihb_flag then
-      local c
-      if Nq.id == id_math then c = -1 else c = 'jcharbdd' end
+      local c = Nq.char or 'jcharbdd'
       return new_jfm_glue(Np, fast_find_char_class(c,Np.met), Np.class)
    else return nil
    end
 end
 local function get_OB_skip()
    if not ihb_flag then
-      local c
-      if Np.id == id_math then c = -1 else c = 'jcharbdd' end
+      local c = Np.char or 'jcharbdd'
       return new_jfm_glue(Nq, Nq.class, fast_find_char_class(c,Nq.met))
    else return nil
    end
@@ -956,9 +955,45 @@ function main(ahead, amode)
 end
 
 -- \inhibitglue
-local inhibitglue_node=node_new(id_whatsit, sid_user)
-inhibitglue_node.user_id=30111; inhibitglue_node.type=100; inhibitglue_node.value=1
 
 function create_inhibitglue_node()
-   node.write(node.copy(inhibitglue_node))
+   local tn = node_new(id_whatsit, sid_user)
+   tn.user_id=30111; tn.type=100; tn.value=1
+   node.write(tn)
 end
+
+-- Node for indicating beginning of a paragraph
+-- (for ltjsclasses)
+function create_beginpar_node()
+   local tn = node_new(id_whatsit, sid_user)
+   tn.user_id=30114; tn.type=100; tn.value=1
+   node.write(tn)
+end
+
+local function whatsit_callback(Np, lp, Nq, bsl)
+   if Np.nuc then return Np 
+   elseif lp.user_id == 30114 then
+      Np.first = lp; Np.nuc = lp; Np.last = lp
+      Np.char = 'parbdd'
+      Np.met = nil
+      Np.pre = 0; Np.post = 0
+      Np.xspc_before = false
+      Np.xspc_after  = false
+      Np.auto_xspc = false
+      return Np
+   end
+end
+local function whatsit_after_callback(s, Nq, Np, bsl)
+   if not s and Nq.nuc.user_id == 30114 then
+      local x, y = node.prev(Nq.nuc), Nq.nuc
+      Nq.first, Nq.nuc, Nq.last = x, x, x
+      head = node_remove(head, y)
+   end
+   return s
+end
+
+luatexbase.add_to_callback("luatexja.jfmglue.whatsit_getinfo", whatsit_callback,
+                           "luatexja.beginpar.np_info", 1)
+luatexbase.add_to_callback("luatexja.jfmglue.whatsit_after", whatsit_after_callback,
+                           "luatexja.beginpar.np_info_after", 1)
+
index 586d35e..9475d20 100644 (file)
@@ -38,7 +38,7 @@
 %%   Right brace   \}     Tilde         \~}
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{ltjsarticle}
-  [2011/10/03 ]
+  [2012/04/24]
 \RequirePackage{luatexja}
 \newif\if@restonecol
 \newif\if@titlepage
         \begingroup \@svsechd \endgroup
         \unskip
         \@tempskipa #1\relax
-        \hskip -\@tempskipa
+        \hskip -\@tempskipa\@inhibitglue
       \else
         \clubpenalty \@clubpenalty
         \everypar{}%
   \parindent 1\zw
   \noindent
   \llap{\@makefnmark\hskip0.3\zw}#1}
+\protected\def\@inhibitglue{\directlua{luatexja.jfmglue.create_beginpar_node()}}
+\def\@item[#1]{%
+  \if@noparitem
+    \@donoparitem
+  \else
+    \if@inlabel
+      \indent \par
+    \fi
+    \ifhmode
+      \unskip\unskip \par
+    \fi
+    \if@newlist
+      \if@nobreak
+        \@nbitem
+      \else
+        \addpenalty\@beginparpenalty
+        \addvspace\@topsep
+        \addvspace{-\parskip}%
+      \fi
+    \else
+      \addpenalty\@itempenalty
+      \addvspace\itemsep
+    \fi
+    \global\@inlabeltrue
+  \fi
+  \everypar{%
+    \@minipagefalse
+    \global\@newlistfalse
+    \if@inlabel
+      \global\@inlabelfalse
+      {\setbox\z@\lastbox
+       \ifvoid\z@
+         \kern-\itemindent
+       \fi}%
+      \box\@labels
+      \penalty\z@
+    \fi
+    \if@nobreak
+      \@nobreakfalse
+      \clubpenalty \@M
+    \else
+      \clubpenalty \@clubpenalty
+      \everypar{}%
+    \fi\@inhibitglue}%
+  \if@noitemarg
+    \@noitemargfalse
+    \if@nmbrlist
+      \refstepcounter\@listctr
+    \fi
+  \fi
+  \sbox\@tempboxa{\makelabel{#1}}%
+  \global\setbox\@labels\hbox{%
+    \unhbox\@labels
+    \hskip \itemindent
+    \hskip -\labelwidth
+    \hskip -\labelsep
+    \ifdim \wd\@tempboxa >\labelwidth
+      \box\@tempboxa
+    \else
+      \hbox to\labelwidth {\unhbox\@tempboxa}%
+    \fi
+    \hskip \labelsep}%
+  \ignorespaces}
+\def\@gnewline #1{%
+  \ifvmode
+    \@nolnerr
+  \else
+    \unskip \reserved@e {\reserved@f#1}\nobreak \hfil \break \null
+    \inhibitglue \ignorespaces
+  \fi}
 \def\Shou#1{\hbox{$\m@th$%
   \csname S@\f@size\endcsname
   \fontsize\sf@size\z@
index b1bdbc7..9fb9bb5 100644 (file)
@@ -38,7 +38,7 @@
 %%   Right brace   \}     Tilde         \~}
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{ltjsbook}
-  [2011/10/03 ]
+  [2012/04/24]
 \RequirePackage{luatexja}
 \newif\if@restonecol
 \newif\if@titlepage
         \begingroup \@svsechd \endgroup
         \unskip
         \@tempskipa #1\relax
-        \hskip -\@tempskipa
+        \hskip -\@tempskipa\@inhibitglue
       \else
         \clubpenalty \@clubpenalty
         \everypar{}%
   \parindent 1\zw
   \noindent
   \llap{\@makefnmark\hskip0.3\zw}#1}
+\protected\def\@inhibitglue{\directlua{luatexja.jfmglue.create_beginpar_node()}}
+\def\@item[#1]{%
+  \if@noparitem
+    \@donoparitem
+  \else
+    \if@inlabel
+      \indent \par
+    \fi
+    \ifhmode
+      \unskip\unskip \par
+    \fi
+    \if@newlist
+      \if@nobreak
+        \@nbitem
+      \else
+        \addpenalty\@beginparpenalty
+        \addvspace\@topsep
+        \addvspace{-\parskip}%
+      \fi
+    \else
+      \addpenalty\@itempenalty
+      \addvspace\itemsep
+    \fi
+    \global\@inlabeltrue
+  \fi
+  \everypar{%
+    \@minipagefalse
+    \global\@newlistfalse
+    \if@inlabel
+      \global\@inlabelfalse
+      {\setbox\z@\lastbox
+       \ifvoid\z@
+         \kern-\itemindent
+       \fi}%
+      \box\@labels
+      \penalty\z@
+    \fi
+    \if@nobreak
+      \@nobreakfalse
+      \clubpenalty \@M
+    \else
+      \clubpenalty \@clubpenalty
+      \everypar{}%
+    \fi\@inhibitglue}%
+  \if@noitemarg
+    \@noitemargfalse
+    \if@nmbrlist
+      \refstepcounter\@listctr
+    \fi
+  \fi
+  \sbox\@tempboxa{\makelabel{#1}}%
+  \global\setbox\@labels\hbox{%
+    \unhbox\@labels
+    \hskip \itemindent
+    \hskip -\labelwidth
+    \hskip -\labelsep
+    \ifdim \wd\@tempboxa >\labelwidth
+      \box\@tempboxa
+    \else
+      \hbox to\labelwidth {\unhbox\@tempboxa}%
+    \fi
+    \hskip \labelsep}%
+  \ignorespaces}
+\def\@gnewline #1{%
+  \ifvmode
+    \@nolnerr
+  \else
+    \unskip \reserved@e {\reserved@f#1}\nobreak \hfil \break \null
+    \inhibitglue \ignorespaces
+  \fi}
 \def\Shou#1{\hbox{$\m@th$%
   \csname S@\f@size\endcsname
   \fontsize\sf@size\z@
index e34d0ed..4c2fe3c 100644 (file)
@@ -38,7 +38,7 @@
 %%   Right brace   \}     Tilde         \~}
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{ltjskiyou}
-  [2011/10/03 ]
+  [2012/04/24]
 \RequirePackage{luatexja}
 \newif\if@restonecol
 \newif\if@titlepage
         \begingroup \@svsechd \endgroup
         \unskip
         \@tempskipa #1\relax
-        \hskip -\@tempskipa
+        \hskip -\@tempskipa\@inhibitglue
       \else
         \clubpenalty \@clubpenalty
         \everypar{}%
   \parindent 1\zw
   \noindent
   \llap{\@makefnmark\hskip0.3\zw}#1}
+\protected\def\@inhibitglue{\directlua{luatexja.jfmglue.create_beginpar_node()}}
+\def\@item[#1]{%
+  \if@noparitem
+    \@donoparitem
+  \else
+    \if@inlabel
+      \indent \par
+    \fi
+    \ifhmode
+      \unskip\unskip \par
+    \fi
+    \if@newlist
+      \if@nobreak
+        \@nbitem
+      \else
+        \addpenalty\@beginparpenalty
+        \addvspace\@topsep
+        \addvspace{-\parskip}%
+      \fi
+    \else
+      \addpenalty\@itempenalty
+      \addvspace\itemsep
+    \fi
+    \global\@inlabeltrue
+  \fi
+  \everypar{%
+    \@minipagefalse
+    \global\@newlistfalse
+    \if@inlabel
+      \global\@inlabelfalse
+      {\setbox\z@\lastbox
+       \ifvoid\z@
+         \kern-\itemindent
+       \fi}%
+      \box\@labels
+      \penalty\z@
+    \fi
+    \if@nobreak
+      \@nobreakfalse
+      \clubpenalty \@M
+    \else
+      \clubpenalty \@clubpenalty
+      \everypar{}%
+    \fi\@inhibitglue}%
+  \if@noitemarg
+    \@noitemargfalse
+    \if@nmbrlist
+      \refstepcounter\@listctr
+    \fi
+  \fi
+  \sbox\@tempboxa{\makelabel{#1}}%
+  \global\setbox\@labels\hbox{%
+    \unhbox\@labels
+    \hskip \itemindent
+    \hskip -\labelwidth
+    \hskip -\labelsep
+    \ifdim \wd\@tempboxa >\labelwidth
+      \box\@tempboxa
+    \else
+      \hbox to\labelwidth {\unhbox\@tempboxa}%
+    \fi
+    \hskip \labelsep}%
+  \ignorespaces}
+\def\@gnewline #1{%
+  \ifvmode
+    \@nolnerr
+  \else
+    \unskip \reserved@e {\reserved@f#1}\nobreak \hfil \break \null
+    \inhibitglue \ignorespaces
+  \fi}
 \def\Shou#1{\hbox{$\m@th$%
   \csname S@\f@size\endcsname
   \fontsize\sf@size\z@
index 53a1df5..5a9e2b2 100644 (file)
@@ -38,7 +38,7 @@
 %%   Right brace   \}     Tilde         \~}
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{ltjspf}
-  [2011/10/03 ]
+  [2012/04/24]
 \RequirePackage{luatexja}
 \newif\if@restonecol
 \newif\if@titlepage
         \begingroup \@svsechd \endgroup
         \unskip
         \@tempskipa #1\relax
-        \hskip -\@tempskipa
+        \hskip -\@tempskipa\@inhibitglue
       \else
         \clubpenalty \@clubpenalty
         \everypar{}%
   \parindent 1\zw
   \noindent
   \llap{\@makefnmark\hskip0.3\zw}#1}
+\protected\def\@inhibitglue{\directlua{luatexja.jfmglue.create_beginpar_node()}}
+\def\@item[#1]{%
+  \if@noparitem
+    \@donoparitem
+  \else
+    \if@inlabel
+      \indent \par
+    \fi
+    \ifhmode
+      \unskip\unskip \par
+    \fi
+    \if@newlist
+      \if@nobreak
+        \@nbitem
+      \else
+        \addpenalty\@beginparpenalty
+        \addvspace\@topsep
+        \addvspace{-\parskip}%
+      \fi
+    \else
+      \addpenalty\@itempenalty
+      \addvspace\itemsep
+    \fi
+    \global\@inlabeltrue
+  \fi
+  \everypar{%
+    \@minipagefalse
+    \global\@newlistfalse
+    \if@inlabel
+      \global\@inlabelfalse
+      {\setbox\z@\lastbox
+       \ifvoid\z@
+         \kern-\itemindent
+       \fi}%
+      \box\@labels
+      \penalty\z@
+    \fi
+    \if@nobreak
+      \@nobreakfalse
+      \clubpenalty \@M
+    \else
+      \clubpenalty \@clubpenalty
+      \everypar{}%
+    \fi\@inhibitglue}%
+  \if@noitemarg
+    \@noitemargfalse
+    \if@nmbrlist
+      \refstepcounter\@listctr
+    \fi
+  \fi
+  \sbox\@tempboxa{\makelabel{#1}}%
+  \global\setbox\@labels\hbox{%
+    \unhbox\@labels
+    \hskip \itemindent
+    \hskip -\labelwidth
+    \hskip -\labelsep
+    \ifdim \wd\@tempboxa >\labelwidth
+      \box\@tempboxa
+    \else
+      \hbox to\labelwidth {\unhbox\@tempboxa}%
+    \fi
+    \hskip \labelsep}%
+  \ignorespaces}
+\def\@gnewline #1{%
+  \ifvmode
+    \@nolnerr
+  \else
+    \unskip \reserved@e {\reserved@f#1}\nobreak \hfil \break \null
+    \inhibitglue \ignorespaces
+  \fi}
 \def\Shou#1{\hbox{$\m@th$%
   \csname S@\f@size\endcsname
   \fontsize\sf@size\z@