• R/O
  • HTTP
  • SSH
  • HTTPS

luatexja: コミット

ソースコードの管理場所


コミットメタ情報

リビジョン6abeb05c5b8703d1871f6d4e861b3505ed8100cf (tree)
日時2011-11-22 03:21:41
作者Kazuki Maeda <kmaeda@user...>
コミッターKazuki Maeda

ログメッセージ

Improve \ltj@pkgpatch in luatexja-latex.sty.

  • If you load the following packages, patches for LuaTeX-ja also will be loaded by the filehook package:
    • listings
    • unicode-math
    • xunicode

変更サマリ

差分

--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,6 @@
1+*.log
2+*.aux
3+*.toc
4+*.out
5+*.tmp
6+*~
Binary files a/doc/man-en.pdf and b/doc/man-en.pdf differ
Binary files a/doc/man-ja.pdf and b/doc/man-ja.pdf differ
--- a/doc/manual.dtx
+++ b/doc/manual.dtx
@@ -5,7 +5,7 @@
55 \usepackage[margin=20mm,footskip=5mm]{geometry}
66
77 \usepackage{amsmath,amssymb,xcolor,pict2e,multienum,amsthm,float}
8-\usepackage{booktabs,listings,lltjlisting,showexpl,multicol}
8+\usepackage{booktabs,listings,showexpl,multicol}
99 \usepackage{luatexja-otf}
1010 \usepackage{luatexja-fontspec}
1111 \usepackage[unicode]{hyperref}
@@ -763,7 +763,7 @@ If you want to use these functions, load \Pkg{luatexja-otf} package.
763763 \CID{7652}飾区の\CID{13706}野家,
764764 葛飾区の吉野家
765765 \end{LTXexample}
766-%lltjlisting.sty要修正?:↑「森」の直後で改行.
766+%lltjp-listings.sty要修正?:↑「森」の直後で改行.
767767
768768
769769 %<en>\subsection{Changing Fonts}
--- a/src/addons/luatexja-fontspec.sty
+++ b/src/addons/luatexja-fontspec.sty
@@ -3,82 +3,9 @@
33 %
44
55 \NeedsTeXFormat{LaTeX2e}
6-\ProvidesPackage{luatexja-fontspec}[2011/11/16 v0.3]
7-
8-\def\UTFencname{EU2}\def\XeTeXpicfile{}
9-\RequirePackage{xunicode}
10-%% Patch for xunicode.sty
11-{\catcode`\"=12
12-\gdef\check@hexcom@digits@#1#2#3#4#5@!@#6#7#8{%
13- \ifx @#4\relax
14- \UTFacc@warning@{insufficient hex digits #7 for #6-\string#8}%
15- \else
16- \ifcat \active\noexpand#8%
17- \ifx\add@flag\@ne %
18- \expandafter\def\csname\UTFencname\string#8\endcsname{\ltjalchar"#1#2#3#4\relax}%
19- \ifx\unDeFiNed@#8%
20- \ifx\cf@encoding\UTFencname
21- \DeclareTextCommand{#8}{OT1}{\undefined}%
22- \else
23- \DeclareTextCommand{#8}{\cf@encoding}{\undefined}%
24- \fi
25- \else {% macro #8 exists already ...
26- \let\protect\noexpand
27- \edef\UTF@testi{#8}\def\UTF@testii{#8}%
28- \ifx\UTF@testi\UTF@testii\aftergroup\UTF@ignore
29- \else\aftergroup\UTF@doit\fi
30- }%
31- \iffalse
32- % ... but when it isn't robust, make it so
33- \expandafter\let\csname?-\string#8\endcsname#8\relax
34- \edef\next@UTF@{{\cf@encoding}%
35- {\expandafter\noexpand\csname?-\string#8\endcsname}}%
36- \expandafter\DeclareTextCommand\expandafter
37- {\expandafter#8\expandafter}\next@UTF@
38- \fi
39- \fi %
40- \else % \add@flag \z@
41- \expandafter\global\expandafter
42- \let\csname\UTFencname\string#8\endcsname\relax
43- \fi % end of \add@flag switch
44- \else % not active catcode --- shouldn't happen
45- % \typeout{*** did you really mean #8 ? ***}%
46- \ifx\add@flag\@ne %
47- \edef\tmp@name{\expandafter\string\csname\UTFencname\endcsname
48- \expandafter\string\csname#8\endcsname}%
49- \expandafter\def\csname\tmp@name\endcsname{\ltjalchar"#1#2#3#4\relax}%
50- \ifx\cf@encoding\UTFencname
51- \expandafter\DeclareTextCommand\expandafter
52- {\csname#8\endcsname}{OT1}{\undefined}%
53- \else
54- \expandafter\DeclareTextCommand\expandafter
55- {\csname#8\endcsname}{\cf@encoding}{\undefined}%
56- \fi
57- \else % \add@flag \z@
58- \expandafter\global\expandafter\let\csname#8\endcsname\relax
59- \fi % end of \add@flag switch
60- \fi % end of \ifcat
61- \fi}
62-\gdef\check@hex@digits@#1#2#3#4#5@!@#6#7#8#9{%
63- \ifx @#4\relax
64- \UTFacc@warning@{insufficient hex digits #7 for #6-\string#8#9}%
65- \else
66- \def\UTFchar{\ltjalchar"#1#2#3#4\relax}%
67- \expandafter\expandafter\expandafter\declare@utf@composite
68- \expandafter\expandafter\expandafter
69- {\expandafter\csname#6\endcsname}{\UTFchar}{#8}{#9}\relax
70- \fi}
71-%\gdef\add@UTF@accent#1#2#3{#2\ltjalchar"#1\relax}
72-\gdef\add@UTF@accent#1#2#3{\ifx\relax#2\relax\ltjalchar"#3\else
73- \ifx\ #2\relax\ltjalchar"#3\else
74- \expandafter\ifx\UTF@space#2\relax\ltjalchar"#3\else
75- \ifx~#2\ltjalchar"#3\else#2\ltjalchar"#1\fi\fi\fi\fi\relax}
76-\gdef\add@UTF@accents#1#2#3{#2\ltjalchar"#1\ltjalchar"#3\relax}
77-}
78-%% End of patch for xunicode.sty "
6+\ProvidesPackage{luatexja-fontspec}[2011/09/23 v0.2]
797
80-\RequirePackage{fontspec}
81-\RequirePackage{luatexja}
8+\RequirePackage{fontspec,luatexja}
829
8310 \ExplSyntaxOn
8411
@@ -207,23 +134,4 @@
207134
208135 \cs_set_eq:NN \addjfontfeature \addjfontfeatures
209136
210-% We reload xunicode package here.
211-\ExplSyntaxOff\ReloadXunicode{EU2}
212137 \endinput
213-
214-%% the following patch is needed to xunicode.sty:
215-%%
216---- /opt/texlive/2011/texmf-dist/tex/xelatex/xunicode/xunicode.sty 2011-09-12 08:31:47.000000000 +0900
217-+++ xunicode.sty 2011-11-16 22:06:17.061413113 +0900
218-@@ -1475,7 +1475,11 @@
219-
220- \newtoks\tipasavetokens
221- \newtoks\tipachecktokens
222-+
223-+\fi
224- \newif\iftipaonetoken
225-+\expandafter\ifx\csname ReloadXunicode\endcsname\relax
226-+
227- \def\tipalasttoken{!@! do nothing with this !@!}
228- \def\tipacatchonechar#1{\begingroup
229- \def\textipa##1{##1}% prevent recursion
--- a/src/luatexja-latex.sty
+++ b/src/luatexja-latex.sty
@@ -12,15 +12,26 @@
1212 \def\luatexjalatexLoaded{\endinput}
1313
1414 \NeedsTeXFormat{LaTeX2e}
15-\ProvidesPackage{luatexja-latex}[2011/11/20 v0.2]
15+\ProvidesPackage{luatexja-latex}[2011/11/22 LuaLaTeX-ja]
1616
17-\endlinechar=13
17+\def\ltj@pkgpatchlist{}
18+\def\ltj@pkgpatch#1{
19+ \@ifpackageloaded{#1}{\usepackage{lltjp-#1}}{
20+ \@ifpackageloaded{filehook}{\AtEndOfPackageFile*{#1}{\usepackage{lltjp-#1}}}{}
21+ }
22+ \ifx\ltj@pkgpatchlist\@empty
23+ \gdef\ltj@pkgpatchlist{#1}
24+ \else
25+ \xdef\ltj@pkgpatchlist{\ltj@pkgpatchlist, #1}
26+ \fi
27+}
1828
29+\endlinechar=13
1930
2031 %%% patch for LaTeX
21-\input{lltjfont.sty}
22-\input{lltjdefs.sty}
23-\input{lltjcore.sty}
32+\usepackage{lltjfont}
33+\usepackage{lltjdefs}
34+\usepackage{lltjcore}
2435
2536 %%% default parameters
2637 \ltjsetparameter{kanjiskip=0pt plus 0.4pt minus 0.4pt,
@@ -34,39 +45,18 @@
3445 \expandafter\let\csname JY3/mc/m/n/10\endcsname\relax
3546
3647 %%% patch for packages
37-\RequirePackage{expl3}
38-\ExplSyntaxOn
39-\def\ltj@pkgpatch#1#2#3#4{\@ifpackageloaded{#1}{\typeout{#1: TRUE}#3#2}{\typeout{#1: FALSE}%
40- \@ifpackageloaded{filehook}{\bool_set_true:N \l_tmpa_bool} {\bool_set_false:N \l_tmpa_bool} %
41- \file_if_exist:nTF {filehook.sty}
42- { \usepackage{filehook} \bool_set_true:N \l_tmpa_bool }
43- {}%
44- \bool_if:NTF \l_tmpa_bool
45- {\AtEndOfPackageFile*{#1}{#4#2}}
46- {}
47- }%
48+\IfFileExists{filehook.sty}{\usepackage{filehook}}{}
49+\ltj@pkgpatch{listings}
50+\ltj@pkgpatch{unicode-math}
51+\ltj@pkgpatch{xunicode}
52+\@ifpackageloaded{filehook}{}{%
53+ \@PackageWarningNoLine{luatexja-latex}{
54+ LuaTeX-ja uses filehook package to apply patches to the following packages:\MessageBreak
55+ \ltj@pkgpatchlist.\MessageBreak
56+ But your TeX system does not have the filehook package.\MessageBreak
57+ Therefore problems may occur if you load the above packages after this message}%
4858 }
4959
50-\ltj@pkgpatch{fontspec}{\usepackage{luatexja-fontspec}}{}{}
51-\ltj@pkgpatch{unicode-math}{%
52- \cs_set:Npn \um_set_mathcode:nnnn #1#2#3#4 {
53- \Umathcode \int_eval:n {#1} =
54- \mathchar@type#2 \csname sym#3\endcsname \int_eval:n {#4} \scan_stop:
55- \directlua{luatexja.math.is_math_letters[\int_eval:n {#4}]=true}
56- }
57- \cs_set:Npn \um_set_mathcode:nnn #1#2#3 {
58- \Umathcode \int_eval:n {#1} =
59- \mathchar@type#2 \csname sym#3\endcsname \int_eval:n {#1} \scan_stop:
60- \directlua{luatexja.math.is_math_letters[\int_eval:n {#1}]=true}
61- }
62- \cs_set:Npn \um_set_mathchar:NNnn #1#2#3#4 {
63- \Umathchardef #1 =
64- \mathchar@type#2 \csname sym#3\endcsname \int_eval:n {#4} \scan_stop:
65- \directlua{luatexja.math.is_math_letters[\int_eval:n {#4}]=true}
66- }
67-}{}{}
68-\ExplSyntaxOff
69-
7060 %%------------------ all done
7161 \ltj@latex@AtEnd
7262 \endinput
--- a/src/luatexja/setwidth.lua
+++ b/src/luatexja/setwidth.lua
@@ -110,7 +110,11 @@ function set_ja_width(ahead, dir)
110110 local met = ltjf.font_metric_table[p.font]
111111 local class = has_attr(p, attr_jchar_class)
112112 char_data = ltjf.metrics[met.jfm].size_cache[met.size].char_type[class]
113- p = capsule_glyph(p, dir, false, met, class)
113+ if char_data then
114+ p = capsule_glyph(p, dir, false, met, class)
115+ else
116+ p = node_next(p)
117+ end
114118 else
115119 p.yoffset = p.yoffset - (has_attr(p,attr_yablshift) or 0); p = node_next(p)
116120 end
--- a/src/lltjcore.sty
+++ b/src/patches/lltjcore.sty
@@ -1,7 +1,11 @@
1-%%
2-%% lltjcore.sty: derived from plcore.dtx in pLaTeX.
3-%% This file does not include the code relating to "tategaki".
4-%%
1+%
2+% lltjcore.sty: derived from plcore.dtx in pLaTeX.
3+% This file does not include the code relating to "tategaki".
4+%
5+
6+\NeedsTeXFormat{LaTeX2e}
7+\ProvidesPackage{lltjcore}[2011/11/22 Patch to LaTeX2e Kernel for LuaLaTeX-ja]
8+
59 \makeatletter
610 \newif\iftombow \tombowfalse
711 \newif\iftombowdate \tombowdatetrue
--- a/src/lltjdefs.sty
+++ b/src/patches/lltjdefs.sty
@@ -1,3 +1,10 @@
1+%
2+% lltjdefs.sty
3+%
4+
5+\NeedsTeXFormat{LaTeX2e}
6+\ProvidesPackage{lltjdefs}[2011/11/22 Default font settings for LuaLaTeX-ja]
7+
18 \DeclareKanjiEncodingDefaults{}{}
29 \DeclareErrorKanjiFont{JY3}{mc}{m}{n}{10}
310 \DeclareYokoKanjiEncoding{JY3}{}{}
--- a/src/lltjfont.sty
+++ b/src/patches/lltjfont.sty
@@ -1,7 +1,10 @@
1-%%
2-%% lltjfont.sty: derived from plfonts.dtx in pLaTeX.
3-%%
4-\makeatletter
1+%
2+% lltjfont.sty: derived from plfonts.dtx in pLaTeX.
3+%
4+
5+\NeedsTeXFormat{LaTeX2e}
6+\ProvidesPackage{lltjfont}[2011/11/22 Patch to NFSS2 for LuaLaTeX-ja]
7+
58 \let\k@encoding\@empty
69 \let\ck@encoding\@empty
710 % LuaTeX-ja uses JY3 and JT3 encodings.
--- a/src/lltjlisting.sty
+++ b/src/patches/lltjp-listings.sty
@@ -1,11 +1,14 @@
1-% lltjlisting.sty: modified from jlisting.sty (by Thor) for
2-% LuaTeX-ja.
1+%
2+% lltjp-listings.sty
3+%
4+% Modified from jlisting.sty (by Thor) for LuaTeX-ja.
5+%
36
47 \NeedsTeXFormat{LaTeX2e}
58 \def\filedate{2006/02/20}
69 \def\fileversion{0.2}
7-\ProvidesPackage{lltjlisting}[\filedate\space\fileversion\space(Thor)]
8-%
10+\ProvidesPackage{lltjp-listings}[\filedate\space\fileversion\space(Thor)]
11+\RequirePackage{listings}
912 \newcount\lst@nextchar
1013 \let\lst@@ProcessSpace\lst@ProcessSpace
1114 \def\lst@ProcessSpace#1{%
--- /dev/null
+++ b/src/patches/lltjp-unicode-math.sty
@@ -0,0 +1,26 @@
1+%
2+% lltjp-unicode-math.sty
3+%
4+
5+\NeedsTeXFormat{LaTeX2e}
6+\ProvidesPackage{lltjp-unicode-math}[2011/11/22 Patch to unicode-math for LuaLaTeX-ja]
7+
8+\RequirePackage{unicode-math,luatexja}
9+
10+\ExplSyntaxOn
11+\cs_set:Npn \um_set_mathcode:nnnn #1#2#3#4 {
12+ \Umathcode \int_eval:n {#1} =
13+ \mathchar@type#2 \csname sym#3\endcsname \int_eval:n {#4} \scan_stop:
14+ \directlua{luatexja.math.is_math_letters[\int_eval:n {#4}]=true}
15+}
16+\cs_set:Npn \um_set_mathcode:nnn #1#2#3 {
17+ \Umathcode \int_eval:n {#1} =
18+ \mathchar@type#2 \csname sym#3\endcsname \int_eval:n {#1} \scan_stop:
19+ \directlua{luatexja.math.is_math_letters[\int_eval:n {#1}]=true}
20+}
21+\cs_set:Npn \um_set_mathchar:NNnn #1#2#3#4 {
22+ \Umathchardef #1 =
23+ \mathchar@type#2 \csname sym#3\endcsname \int_eval:n {#4} \scan_stop:
24+ \directlua{luatexja.math.is_math_letters[\int_eval:n {#4}]=true}
25+}
26+\endinput
--- /dev/null
+++ b/src/patches/lltjp-xunicode.sty
@@ -0,0 +1,103 @@
1+%
2+% lltjp-xunicode.sty
3+%
4+
5+\NeedsTeXFormat{LaTeX2e}
6+\ProvidesPackage{lltjp-xunicode}[2011/11/22 Patch to xunicode for LuaLaTeX-ja]
7+
8+\def\UTFencname{EU2}\def\XeTeXpicfile{}
9+\RequirePackage{xunicode,luatexja}
10+{\catcode`\"=12
11+\gdef\check@hexcom@digits@#1#2#3#4#5@!@#6#7#8{%
12+ \ifx @#4\relax
13+ \UTFacc@warning@{insufficient hex digits #7 for #6-\string#8}%
14+ \else
15+ \ifcat \active\noexpand#8%
16+ \ifx\add@flag\@ne %
17+ \expandafter\def\csname\UTFencname\string#8\endcsname{\ltjalchar"#1#2#3#4\relax}%
18+ \ifx\unDeFiNed@#8%
19+ \ifx\cf@encoding\UTFencname
20+ \DeclareTextCommand{#8}{OT1}{\undefined}%
21+ \else
22+ \DeclareTextCommand{#8}{\cf@encoding}{\undefined}%
23+ \fi
24+ \else {% macro #8 exists already ...
25+ \let\protect\noexpand
26+ \edef\UTF@testi{#8}\def\UTF@testii{#8}%
27+ \ifx\UTF@testi\UTF@testii\aftergroup\UTF@ignore
28+ \else\aftergroup\UTF@doit\fi
29+ }%
30+ \iffalse
31+ % ... but when it isn't robust, make it so
32+ \expandafter\let\csname?-\string#8\endcsname#8\relax
33+ \edef\next@UTF@{{\cf@encoding}%
34+ {\expandafter\noexpand\csname?-\string#8\endcsname}}%
35+ \expandafter\DeclareTextCommand\expandafter
36+ {\expandafter#8\expandafter}\next@UTF@
37+ \fi
38+ \fi %
39+ \else % \add@flag \z@
40+ \expandafter\global\expandafter
41+ \let\csname\UTFencname\string#8\endcsname\relax
42+ \fi % end of \add@flag switch
43+ \else % not active catcode --- shouldn't happen
44+ % \typeout{*** did you really mean #8 ? ***}%
45+ \ifx\add@flag\@ne %
46+ \edef\tmp@name{\expandafter\string\csname\UTFencname\endcsname
47+ \expandafter\string\csname#8\endcsname}%
48+ \expandafter\def\csname\tmp@name\endcsname{\ltjalchar"#1#2#3#4\relax}%
49+ \ifx\cf@encoding\UTFencname
50+ \expandafter\DeclareTextCommand\expandafter
51+ {\csname#8\endcsname}{OT1}{\undefined}%
52+ \else
53+ \expandafter\DeclareTextCommand\expandafter
54+ {\csname#8\endcsname}{\cf@encoding}{\undefined}%
55+ \fi
56+ \else % \add@flag \z@
57+ \expandafter\global\expandafter\let\csname#8\endcsname\relax
58+ \fi % end of \add@flag switch
59+ \fi % end of \ifcat
60+ \fi}
61+\gdef\check@hex@digits@#1#2#3#4#5@!@#6#7#8#9{%
62+ \ifx @#4\relax
63+ \UTFacc@warning@{insufficient hex digits #7 for #6-\string#8#9}%
64+ \else
65+ \def\UTFchar{\ltjalchar"#1#2#3#4\relax}%
66+ \expandafter\expandafter\expandafter\declare@utf@composite
67+ \expandafter\expandafter\expandafter
68+ {\expandafter\csname#6\endcsname}{\UTFchar}{#8}{#9}\relax
69+ \fi}
70+%\gdef\add@UTF@accent#1#2#3{#2\ltjalchar"#1\relax}
71+\gdef\add@UTF@accent#1#2#3{\ifx\relax#2\relax\ltjalchar"#3\else
72+ \ifx\ #2\relax\ltjalchar"#3\else
73+ \expandafter\ifx\UTF@space#2\relax\ltjalchar"#3\else
74+ \ifx~#2\ltjalchar"#3\else#2\ltjalchar"#1\fi\fi\fi\fi\relax}
75+\gdef\add@UTF@accents#1#2#3{#2\ltjalchar"#1\ltjalchar"#3\relax}
76+}
77+% If unicode-math is already loaded, the following error occurs:
78+% ! Undefined control sequence.
79+% \hbar ->\hslash
80+% Therefore temporarily set \hbar=\relax.
81+\let\ltj@tmpa\hbar
82+\let\hbar\relax
83+\ReloadXunicode{EU2}
84+\makeatletter
85+\let\hbar\ltj@tmpa
86+\endinput
87+
88+%% the following patch is needed to xunicode.sty:
89+%%
90+--- /opt/texlive/2011/texmf-dist/tex/xelatex/xunicode/xunicode.sty 2011-09-12 08:31:47.000000000 +0900
91++++ xunicode.sty 2011-11-16 22:06:17.061413113 +0900
92+@@ -1475,7 +1475,11 @@
93+
94+ \newtoks\tipasavetokens
95+ \newtoks\tipachecktokens
96++
97++\fi
98+ \newif\iftipaonetoken
99++\expandafter\ifx\csname ReloadXunicode\endcsname\relax
100++
101+ \def\tipalasttoken{!@! do nothing with this !@!}
102+ \def\tipacatchonechar#1{\begingroup
103+ \def\textipa##1{##1}% prevent recursion
Binary files a/test/test07-math-unicode.pdf and b/test/test07-math-unicode.pdf differ
--- a/test/test07-math-unicode.tex
+++ b/test/test07-math-unicode.tex
@@ -2,7 +2,7 @@
22 \documentclass{article}
33 \usepackage[a4paper]{geometry}
44
5-\usepackage{fontspec}
5+\usepackage{luatexja-fontspec}
66
77 \usepackage{luatexja}
88 \makeatletter\ltj@alljachar %←全部の(>=U+0080な)文字を和文文字扱いに!
Binary files a/test/test07-math.pdf and b/test/test07-math.pdf differ
--- a/test/test07-math.tex
+++ b/test/test07-math.tex
@@ -48,4 +48,3 @@ mathgt: $\mathrm{\mathmc{あa}}\mathmc{あb}\mathgt{あa}$
4848 \]
4949
5050 \end{document}
51-
旧リポジトリブラウザで表示