OSDN Git Service

Fix ltj-inputbuf.lua for the case \endlinechar != 13.
authorHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Thu, 10 May 2012 12:43:23 +0000 (21:43 +0900)
committerHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Thu, 10 May 2012 12:43:23 +0000 (21:43 +0900)
src/ltj-inputbuf.lua
test/test15-catcode.pdf
test/test15-catcode.tex

index 512e4d1..6032b50 100644 (file)
@@ -14,22 +14,25 @@ luatexja.load_module('charrange'); local ltjc = luatexja.charrange
 
 local node_new = node.new
 local id_glyph = node.id('glyph')
+local getcatcode = tex.getcatcode
 
 --- the following function is modified from jafontspec.lua (by K. Maeda).
 --- Instead of "%", we use U+FFFFF for suppressing spaces.
 function add_comment(buffer)
    local i = utf.len(buffer)
-   while (i>0) and (tex.getcatcode(utf.byte(buffer, i))==1 
-                or tex.getcatcode(utf.byte(buffer, i))==2) do
+   while (i>0) and (getcatcode(utf.byte(buffer, i))==1 
+                or getcatcode(utf.byte(buffer, i))==2) do
       i=i-1
    end
    if i>0 then
       local c = utf.byte(buffer, i)
-      local ct = tex.getcatcode(c)
-      local ctl = tex.getcatcode(13) -- endline character
-      local ctc = tex.getcatcode(0xFFFFF) -- new comment character
-      if ((ct==11) or (ct==12)) and (ctl==5) and (ctc==14) then
-        local p =  node_new(id_glyph)
+      local ct = getcatcode(c)
+      local te = tex.endlinechar
+      local ctl = (te ~= -1) and (getcatcode(te)==5) and (getcatcode(0xFFFFF)==14)
+      -- Is the catcode of endline character is 5 (end-of-line)?
+      -- Is the catcode of U+FFFFF (new comment char) is 14 (comment)?
+      if ((ct==11) or (ct==12)) and ctl then
+        local p = node_new(id_glyph)
         p.char = c
         if ltjc.is_ucs_in_japanese_char(p) then
            buffer = buffer .. string.char(0xF3,0xBF,0xBF,0xBF) -- U+FFFFF
index 3ba4230..ea8e1f9 100644 (file)
Binary files a/test/test15-catcode.pdf and b/test/test15-catcode.pdf differ
index f8fa4c9..a1e4eb4 100644 (file)
@@ -26,4 +26,27 @@ plain \TeX
 \testcattable{\CatcodeTablehoge}
 \testcattable{\CatcodeTablepiyo}
 
+\bigskip
+
+\par\noindent{\tenbf\tengt endlinecharが13でない場合}\par
+{\catcode13=12\spaceskip=20pt%
+\ltjsetparameter{autoxspacing=false}%
+{\endlinechar=`\A\catcode`\A=5 
+%%%% {\endlinechar=`\A\catcode`\A=5% ではダメ
+%%%%(末尾の % のおかげで \catcode 代入が行末までに完結していない)
+あいうえお
+かきくけこ
+C
+B}%
+あいうえお
+かきくけこ
+C
+B}
+
+{\spaceskip=20pt\ltjsetparameter{autoxspacing=false}%
+\endlinechar=`\A\catcode`\A=5 
+あいうえお
+かきくけこ
+C
+B}
 \end