% -----------------------------------------
% Original: jsclasses.dtx
%
-% pLaTeX2ε新ドキュメントクラス
+% pLaTeX2ε新ドキュメントクラス(日本語 TeX 開発コミュニティ版)
+% 原作者:奥村晴彦 <okumura@okumuralab.org>
%
-% これは LaTeX3 Project の classes.dtx と株式会社アスキーの jclasses.dtx
-% に基づいて,もともと奥村晴彦 <okumura@okumuralab.org> により
-% 作成されたものです。
-% 現在は日本語\TeX 開発コミュニティにより管理されています。
-%
-% [2002-12-19] いろいろなものに収録していただく際にライセンスを明確にする
-% 必要が生じてきました。アスキーのものが最近はmodified BSDライセンスになっ
-% ていますので,私のものもそれに準じてmodified BSDとすることにします。
-%
-% [2016-07-11] abenoriさんによる\texttt{nomag}オプションをマージしました。
-% なお,ソースコードの管理はGitHubで行うことにしました。
-%
-% [2016-07-13] 日本語\TeX 開発コミュニティによる管理に移行しました。
-%
-% Copyright 1993 1994 1995 1996 1997 1998 1999
+% Copyright 1993-2016
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
%<*driver>
\ProvidesFile{ltjsclasses.dtx}
%</driver>
- [2017/02/19 ltjsclasses ]
+ [2018/01/14 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{nomag}で無効化することができるようにしました。
%
% \texttt{noxreal},~\texttt{real}は旧来の互換性として今は残してありますが,2017年7月に削除する予定です。
+%
+% [2018-01-14] \texttt{noxreal},~\texttt{real} を削除しました.また,内部命令の名称を
+% \texttt{jsclasses}に合わせました.
+%
% \begin{macrocode}
-\newif\if@ltjs@mag@xreal
-\@ltjs@mag@xrealtrue
-\DeclareOption{nomag*}{\@ltjs@mag@xrealtrue}
-\DeclareOption{nomag}{\@ltjs@mag@xrealfalse}
-\DeclareOption{noxreal}{%
- \ClassWarningNoLine{\jsc@clsname}{%
- The class option `noxreal' is obsolete. \MessageBreak
- Please use the `nomag' option instead}%
- \@ltjs@mag@xrealfalse}
-\DeclareOption{real}{%
- \ClassWarningNoLine{\jsc@clsname}{%
- The class option `real' is obsolete. \MessageBreak
- Please use the `nomag' option instead}%
- \@ltjs@mag@xrealfalse}
+\newif\ifjsc@mag@xreal
+\jsc@mag@xrealtrue
+\DeclareOption{nomag*}{\jsc@mag@xrealtrue}
+\DeclareOption{nomag}{\jsc@mag@xrealfalse}
\DeclareOption{usemag}{%
\ClassWarningNoLine{\jsc@clsname}{%
This \jsc@clsname\space cls does not support `usemag'\MessageBreak
option, since LuaTeX does not support \string\mag\MessageBreak in pdf output}%
- \@ltjs@mag@xrealtrue}
+ \jsc@mag@xrealtrue}
% \end{macrocode}
% \texttt{openright} と表すことにしてあります。
% \texttt{openany} で偶数ページからでも始まるようになります。
%
-% [????-??-??] \texttt{openright} は横組では奇数ページ起こし,縦組では
+% [2017-02-24] \texttt{openright} は横組では奇数ページ起こし,縦組では
% 偶数ページ起こしを表します。ややこしいですが,これは\LaTeX の標準クラスが
% 西欧の横組事情しか考慮せずに,奇数ページ起こしと右起こしを一緒にしてしまっ
% たせいです。縦組での奇数ページ起こしと横組での偶数ページ起こしも表現したい
% [2017-02-17 LTJ] |\directlua|中で出力される数字のカテゴリーコードが12になるようにしました.
% この保証をしないと例えば\texttt{listings}パッケージで無限ループになります.
% \begin{macrocode}
-\if@ltjs@mag@xreal
+\ifjsc@mag@xreal
\ifdim\jsc@mpt=\p@\else
\expandafter\let\csname OT1/cmr/m/n/10\endcsname\relax
\expandafter\let\csname TU/lmr/m/n/10\endcsname\relax
%
% [2014-07-26 LTJ] なお,現状のところ,縦組用JFMは\texttt{jfm-ujisv.lua}しか準備していません。
%
-% [2016-03-21 LTJ] 拡大率の計算で1~ptを$1/72.27$インチでなく0.3514~mmと間違えて扱っていたのを修正。
+% [2016-03-21 LTJ] 拡大率の計算で1~ptを$1/72.27$インチでなく0.3514\,mmと間違えて扱っていたのを修正。
+%
+% [2017-12-31] 和文スケール($1\,\mathrm{zw} \div \hbox{要求サイズ}$)を
+% 表す実数値マクロ |\Cjascale| を定義しました。
+%
% \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