OSDN Git Service

Merge branch 'kitagawa_test' into cjascale
[luatex-ja/luatexja.git] / src / ltjsclasses.dtx
index f5b1730..ebe511e 100644 (file)
 %<*driver>
 \ProvidesFile{ltjsclasses.dtx}
 %</driver>
-  [2017/02/19 ltjsclasses ]
+  [2017/09/19 ltjsclasses ]
 %<*driver>
 \IfFileExists{luatex85.sty}{\RequirePackage{luatex85}}{}
 \documentclass{ltjsarticle}
 \usepackage{hypdoc}
 \hypersetup{unicode=true}
-\usepackage[ipaex,nfssonly]{luatexja-preset}
+\begingroup
+ \suppressfontnotfounderror=1
+ \global\font\testfont=file:KozMinPr6N-Regular.otf
+\endgroup
+\ifx\testfont\nullfont
+  \usepackage[ipaex,nfssonly]{luatexja-preset}
+\else
+  \usepackage[kozuka-pr6n,nfssonly]{luatexja-preset}
+\fi  
 \ltjsetparameter{alxspmode={`\*,allow}}
 \ltjsetparameter{alxspmode={`\\,allow}}
 %%%%\usepackage{unicode-math}
 %
 % \begin{macro}{\if@openleft}
 %
-% [????-??-??] |\chapter|,|\part| を左ページ起こしにするかどうかです。
+% [2017-02-24] |\chapter|,|\part| を左ページ起こしにするかどうかです。
 %
 %    \begin{macrocode}
 %<book|report>\newif\if@openleft
 % \texttt{openright} と表すことにしてあります。
 % \texttt{openany} で偶数ページからでも始まるようになります。
 %
-% [????-??-??] \texttt{openright} は横組では奇数ページ起こし,縦組では
+% [2017-02-24] \texttt{openright} は横組では奇数ページ起こし,縦組では
 % 偶数ページ起こしを表します。ややこしいですが,これは\LaTeX の標準クラスが
 % 西欧の横組事情しか考慮せずに,奇数ページ起こしと右起こしを一緒にしてしまっ
 % たせいです。縦組での奇数ページ起こしと横組での偶数ページ起こしも表現したい
 %
 % [2016-03-21 LTJ] 拡大率の計算で1~ptを$1/72.27$インチでなく0.3514~mmと間違えて扱っていたのを修正。
 %    \begin{macrocode}
-%<*!jspf>
-\expandafter\let\csname JY3/mc/m/n/10\endcsname\relax
-\ifmingoth
-  \DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [0.924715] \ltj@stdmcfont:jfm=min}{}
-  \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.924715] \ltj@stdgtfont:jfm=min}{}
-\else
-  \ifptexjis
-    \DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [0.924715] \ltj@stdmcfont:jfm=jis}{}
-    \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.924715] \ltj@stdgtfont:jfm=jis}{}
-  \else
-    \DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [0.924715] \ltj@stdmcfont:jfm=ujis}{}
-    \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.924715] \ltj@stdgtfont:jfm=ujis}{}
-  \fi
-\fi
-\DeclareFontShape{JT3}{mc}{m}{n}{<-> s * [0.924715] \ltj@stdmcfont:jfm=ujisv}{}
-\DeclareFontShape{JT3}{gt}{m}{n}{<-> s * [0.924715] \ltj@stdgtfont:jfm=ujisv}{}
-%</!jspf>
+%<!jspf> \def\Cjascale{0.924715}
 %    \end{macrocode}
 %
 % これにより,公称10ポイントの和文フォントを0.924715倍したことにより,
 % $0.9*72.27/72 \simeq 0.903375$ 倍します。
 %
 %    \begin{macrocode}
-%<*jspf>
+%<jspf> \def\Cjascale{0.903375}
+%    \end{macrocode}
+%
+% 実際にフォントの再定義を行う部分です.
+%
+%    \begin{macrocode}
 \expandafter\let\csname JY3/mc/m/n/10\endcsname\relax
 \ifmingoth
-  \DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [0.903375] \ltj@stdmcfont:jfm=min}{}
-  \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.903375] \ltj@stdgtfont:jfm=min}{}
+  \DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [\Cjascale] \ltj@stdmcfont:jfm=min}{}
+  \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [\Cjascale] \ltj@stdgtfont:jfm=min}{}
 \else
   \ifptexjis
-    \DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [0.903375] \ltj@stdmcfont:jfm=jis}{}
-    \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.903375] \ltj@stdgtfont:jfm=jis}{}
+    \DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [\Cjascale] \ltj@stdmcfont:jfm=jis}{}
+    \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [\Cjascale] \ltj@stdgtfont:jfm=jis}{}
   \else
-    \DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [0.903375] \ltj@stdmcfont:jfm=ujis}{}
-    \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.903375] \ltj@stdgtfont:jfm=ujis}{}
+    \DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [\Cjascale] \ltj@stdmcfont:jfm=ujis}{}
+    \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [\Cjascale] \ltj@stdgtfont:jfm=ujis}{}
   \fi
 \fi
-\DeclareFontShape{JT3}{mc}{m}{n}{<-> s * [0.903375] \ltj@stdmcfont:jfm=ujisv}{}
-\DeclareFontShape{JT3}{gt}{m}{n}{<-> s * [0.903375] \ltj@stdgtfont:jfm=ujisv}{}
-%</jspf>
+\DeclareFontShape{JT3}{mc}{m}{n}{<-> s * [\Cjascale] \ltj@stdmcfont:jfm=ujisv}{}
+\DeclareFontShape{JT3}{gt}{m}{n}{<-> s * [\Cjascale] \ltj@stdgtfont:jfm=ujisv}{}
 %    \end{macrocode}
 %
 % 和文でイタリック体,斜体,サンセリフ体,
 % \texttt{jsclasses}で行われていた |\textmc|, |\textgt| の再定義は不要のように思われます。
 %
 % \texttt{jsclasses.dtx}中で行われていた |\reDeclareMathAlphabet| の再定義は削除。
+% また,Yue ZHANGさん作の\texttt{fixjfm}パッケージ対応のコードもLua\TeX-jaでは削除しています.
 %
 %    \begin{macrocode}
 \AtBeginDocument{%
 % パラメータに実際の値を設定します。
 % たとえば |\Cwd| は |\normalfont| の全角幅(|1\zw|)です。
 %
+% [2017-08-31] 基準とする文字を「全角空白」(EUCコード\texttt{0xA1A1})から
+% 「漢」(JISコード\texttt{0x3441})へ変更しました。
+%
+% [2017-09-19] 内部的に使った |\box0| を空にします。
 %    \begin{macrocode}
-\setbox0\hbox{\char"3000}% 全角スペース
+\setbox0\hbox{漢}
 \setlength\Cht{\ht0}
 \setlength\Cdp{\dp0}
 \setlength\Cwd{\wd0}
 \setlength\Cvs{\baselineskip}
 \setlength\Chs{\wd0}
+\setbox0=\box\voidb@x
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
 % \begin{macro}{\pltx@cleartoleftpage}
 % \begin{macro}{\pltx@cleartooddpage}
 % \begin{macro}{\pltx@cleartoevenpage}
-% [????-??-??] コミュニティ版\pLaTeX の標準クラス2017/02/15に合わせて,
+% [2017-02-24] コミュニティ版\pLaTeX の標準クラス2017/02/15に合わせて,
 % 同じ命令を追加しました。
 % \begin{enumerate}
 %   \item|\pltx@cleartorightpage|:右ページになるまでページを繰る命令
 % \end{macro}
 %
 % \begin{macro}{\cleardoublepage}
-% [????-??-??] コミュニティ版\pLaTeX の標準クラス2017/02/15に合わせて,
+% [2017-02-24] コミュニティ版\pLaTeX の標準クラス2017/02/15に合わせて,
 % reportとbookクラスの場合に|\cleardoublepage|を再定義します。
 %    \begin{macrocode}
-%<*!article>
+%<*book|report>
 \if@openleft
   \let\cleardoublepage\pltx@cleartoleftpage
 \else\if@openright
   \let\cleardoublepage\pltx@cleartorightpage
 \fi\fi
-%</!article>
+%</book|report>
 %    \end{macrocode}
 % \end{macro}
 %
         \begingroup \@svsechd \endgroup
         \unskip
         \@tempskipa #1\relax
-        \hskip -\@tempskipa\@inhibitglue
+        \hskip -\@tempskipa\ltjfakeparbegin
       \else
         \clubpenalty \@clubpenalty
         \everypar{}%
 %    \begin{macrocode}
 %<*book>
 \newcommand\frontmatter{%
-  \if@openleft
-       \cleardoublepage
-  \else\if@openright
-    \cleardoublepage
-  \else
-    \clearpage
-  \fi\fi
+  \pltx@cleartooddpage
   \@mainmatterfalse
   \pagenumbering{roman}}
 %    \end{macrocode}
 %
 % ページ番号を算用数字にし,章番号を付けるようにします。
 %
+% [2017-03-05] |\frontmatter| と |\mainmatter| の2つの命令は,
+% 改丁または改ページした後で |\pagenumbering{...}| でノンブルを1に
+% リセットします。長い間 |\frontmatter| は \texttt{openany} のときに
+% 単なる改ページとしていましたが,これではノンブルをリセットする際に
+% 偶奇逆転が起こる場合がありました。\texttt{openany} かどうかに依らず
+% 奇数ページまで繰るように修正することで,問題を解消しました。
+% 実は,\LaTeX の標準クラスでは1998年に修正されていた問題です
+% (コミュニティ版\pLaTeX の標準クラス2017/03/05も参照)。
+%
 %    \begin{macrocode}
 \newcommand\mainmatter{%
-% \if@openleft
-%      \cleardoublepage
-% \else\if@openright
-    \cleardoublepage
-% \else
-%   \clearpage
-% \fi\fi
+  \pltx@cleartooddpage
   \@mainmattertrue
   \pagenumbering{arabic}}
 %    \end{macrocode}
 %<*book|report>
 \def\@endpart{\vfil\newpage
   \if@twoside
-   \if@openleft %% added (????/??/??)
+   \if@openleft %% added (2017/02/24)
     \null\thispagestyle{empty}\newpage
    \else\if@openright %% added (2016/12/13)
     \null\thispagestyle{empty}\newpage
-   \fi\fi %% added (2016/12/13, ????/??/??)
+   \fi\fi %% added (2016/12/13, 2017/02/24)
   \fi
   \if@restonecol
     \twocolumn
 %
 % タイトルを独立のページに出力するのに使われます。
 %
-% [????-??-??] コミュニティ版\pLaTeX の標準クラス2017/02/15に合わせて,
+% [2017-02-24] コミュニティ版\pLaTeX の標準クラス2017/02/15に合わせて,
 % bookクラスでタイトルを必ず奇数ページに送るようにしました。といっても,
 % 横組クラスしかありませんでしたので,従来の挙動は何も変わっていません。
 % また,book以外の場合のページ番号のリセットもコミュニティ版\pLaTeX の
 %
 %    \begin{macrocode}
 \newenvironment{titlepage}{%
-%<book>    \pltx@cleartooddpage %% ????-??-??
+%<book>    \pltx@cleartooddpage %% 2017-02-24
     \if@twocolumn
       \@restonecoltrue\onecolumn
     \else
 % する機能がありますが,|\item| 直後ではラベル用のボックスが段落先頭になる
 % ため,うまく働きませんでした。形を変えて復活させます。
 %
+% [2017-04-03 LTJ] 従来クラフファイルで定義していた |\@inhibitglue| は,
+% Lua\TeX-jaのコアに |\ltjfakeparbegin| として正式に追加されたのでリネームします.
+%
 % |\item| 命令の直後です。
 %
 %    \begin{macrocode}
-\protected\def\@inhibitglue{\directlua{luatexja.jfmglue.create_beginpar_node()}}
+\let\@inhibitglue=\ltjfakeparbegin
 \def\@item[#1]{%
   \if@noparitem
     \@donoparitem
     \else
       \clubpenalty \@clubpenalty
       \everypar{}%
-    \fi\@inhibitglue}%
+    \fi\ltjfakeparbegin}%
   \if@noitemarg
     \@noitemargfalse
     \if@nmbrlist