OSDN Git Service

Fix ticket 29311.
[luatex-ja/luatexja.git] / src / patches / lltjp-listings.sty
index 5059ef9..a65ee47 100644 (file)
   \setcatcoderange{"20000}{"2FFFF}{13}}
 
 % lowest level
+\def\lst@kanjitrue{\let\lst@ifkanji\iftrue}
+\def\lst@kanjifalse{\let\lst@ifkanji\iffalse}
+\lst@AddToHook{InitVars}{\lst@kanjifalse}
+
+\def\lst@AppendOther{%
+    \lst@ifletter\lst@Output\lst@letterfalse\fi\lst@kanjifalse
+    \futurelet\lst@lastother\lst@Append}
+\def\lst@AppendLetter{%
+    \lst@ifletter
+      \lst@ifkanji\lst@Output\lst@kanjifalse
+      \fi
+    \else
+      \lst@lettertrue\lst@ifkanji\lst@kanjifalse\else\lst@OutputOther\fi
+    \fi
+    \lst@Append}
+
 \def\lst@ProcessJALetter{\lst@whitespacefalse \lst@AppendJALetter}
+\def\lst@ProcessJALetterHalf{\lst@whitespacefalse \lst@AppendJALetterHalf}
+\def\lst@ProcessJALetter@inhibit@prebreak{%
+  \lst@whitespacefalse \lst@AppendJALetter@inhibit@prebreak}
+\def\lst@ProcessJALetter@inhibit@postbreak{%
+  \lst@whitespacefalse \lst@AppendJALetter@inhibit@postbreak}
+
 \def\lst@AppendJALetter{%
-    \lst@ifletter \lst@Output\else\lst@OutputOther\fi\lst@lettertrue
+    \lst@ifletter
+      \lst@Output
+    \else
+      \lst@ifkanji\else\lst@OutputOther\fi\lst@lettertrue
+    \fi\lst@kanjitrue
     \advance\lst@length\@ne\lst@Append}
-\def\lst@ProcessJALetterHalf{\lst@whitespacefalse \lst@AppendJALetterHalf}
 \def\lst@AppendJALetterHalf{%
-    \lst@ifletter \lst@Output\else\lst@OutputOther\fi\lst@lettertrue
+    \lst@ifletter
+      \lst@Output
+    \else
+      \lst@ifkanji\else\lst@OutputOther\fi\lst@lettertrue
+    \fi\lst@kanjitrue
     \lst@Append}
+\def\lst@AppendJALetter@inhibit@prebreak{%
+    \lst@ifletter\else\lst@lettertrue\fi\lst@kanjitrue
+    \advance\lst@length\@ne\lst@Append}
+\def\lst@AppendJALetter@inhibit@postbreak{%
+    \lst@ifletter
+      \lst@Output
+    \else
+      \lst@ifkanji\else\lst@OutputOther\fi
+    \fi\lst@letterfalse\lst@kanjitrue
+    \advance\lst@length\@ne\lst@Append}
+
 
 % loading lltjp-listing-jpt.tex
 \def\ltj@@listing@jpset#1#2{% fast: #2-#1+1 must be a multiple of 16
   \@tempcnta=#1 \@tempcntb=#2 \@temptokena{}%
   \loop\relax\ifnum\@tempcnta<\@tempcntb\relax
     \ltj@@listing@jpset@\global\advance\@tempcnta\sixt@@n\repeat
-  \expandafter\edef\csname ltj@@listing@jpcmd@i#1\endcsname{\the\@temptokena}%
-  \toks@\expandafter\expandafter\expandafter\expandafter%
-  \expandafter\expandafter\expandafter{\expandafter\expandafter%
-  \expandafter\the\expandafter\toks@\csname ltj@@listing@jpcmd@i#1\endcsname}%
+  \ltj@@listing@jpset@after{#1}
 }
-\def\ltj@@listing@jpsetN#1#2#3{%
+\def\ltj@@listing@jpsetN#1#2#3{% for (not large) range
   \@tempcnta=#1 \@tempcntb=#2 \@temptokena{}%
   \loop \global\advance\@tempcnta\@ne\ifnum\@tempcnta<\@tempcntb\relax
-    \ltj@@listing@jpsetN@#3\repeat
+    \ltj@@listing@jpsetN@{\@tempcnta}{#3}\repeat
+  \ltj@@listing@jpset@after{#1}
+}
+
+\def\ltj@@listing@jpset@after#1{%
   \expandafter\edef\csname ltj@@listing@jpcmd@i#1\endcsname{\the\@temptokena}%
   \toks@\expandafter\expandafter\expandafter\expandafter%
   \expandafter\expandafter\expandafter{\expandafter\expandafter%
   \expandafter\the\expandafter\toks@\csname ltj@@listing@jpcmd@i#1\endcsname}%
+  \@temptokena{}%
 }
 
 \begingroup
   \expandafter\expandafter\expandafter{\expandafter\expandafter%
   \expandafter\the\expandafter\@temptokena\@temp}%
 }
-\gdef\ltj@@listing@jpsetN@#1{{%
-    \lccode`\~=\@tempcnta \lccode`\/=\@tempcnta
-    \lowercase{\gdef\@temp{\gdef~{#1/}}}}%
+\gdef\ltj@@listing@jpsetN@#1#2{{%
+    \@tempcnta=#1 \lccode`\~=\@tempcnta \lccode`\/=\@tempcnta
+    \lowercase{\gdef\@temp{\gdef~{#2/}}}}%
   \@temptokena\expandafter\expandafter\expandafter\expandafter%
   \expandafter\expandafter\expandafter{\expandafter\expandafter%
   \expandafter\the\expandafter\@temptokena\@temp}%