% -----------------------------------------
%
% \fi
-% \CheckSum{5218}
+% \CheckSum{5037}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
% \end{tabular}
% \end{quote}
%
-% |ltjclasses| と大きく違うのは以下の点です。
+% |ltjclasses| と違うのは以下の点です。
%
% \paragraph{サイズオプションの扱いが違う}
%
% 43ポイント,12Q,14Qの指定を可能にしています。
%
% \subsection{\texttt{jsclasses.dtx} からの主な変更点}
-% 全ての変更点を知りたい場合は、|jsclasses.dtx| と |ltjsclasses.dtx| で |diff| を
+% 全ての変更点を知りたい場合は,|jsclasses.dtx| と |ltjsclasses.dtx| で |diff| を
% とって下さい。
-% なお,オプションで無効にしたものがいくつかありますが,互換性のために
-% オプション自体は残してあります(つまり,削除されたオプションが指定されていても
-% コンパイルは通る)。
% \begin{itemize}
-% \item フォントメトリック関係のオプション |mingoth|, |winjis|, |jis| が
-% 効かないようにしてあります(要検討)。
-% \item up\TeX 関係のオプションを削除してあります。
-% \item |disablejfam| オプションが無効になっています。
+% \item フォントメトリック関係のオプション |winjis| は単に無視されます。
+% \item 標準では |jfm-ujis.lua|(Lua\TeX-ja標準のメトリック,OTFパッケージのものがベース)を使用します。
+% \item |uplatex| オプションを削除してあります。
+% \item |disablejfam| オプションが無効になっています。もし
+% \begin{quotation}
+% |! LaTeX Error: Too many math alphabets used in version ****.|
+% \end{quotation}
+% のエラーが起こった場合は,|lualatex-math| パッケージを読み込んでみて下さい。
% \item |papersize| オプションの指定に関わらず PDF のページサイズは適切に
% 設定されます。
-% \item 「\texttt{amsmath} との衝突の回避」のコードは,上流で既に対処されている上に
+% \item Lua\TeX-ja 同梱のメトリックを用いる限りは,段落の頭にグルーは挿入されません。
+% そのため,オリジナルの |jsclasses.dtx| 内にあったhack(|\everyparhook|)は不要になったので,
+% 削除しました。
+% \item 「\texttt{amsmath} との衝突の回避」のコードは,上流で既に対処されているうえ,
% これがあると |grfext.sty| を読み込んだ際にエラーを引き起こすので削除しました。
% \item |\小|,|\上小|,|\if西暦|,|\西暦|,|\和暦|をそれぞれ
% |\Shou|, |\UeShou|, |\ifSeireki|, |\Seireki|, |\Wareki| に変更してあります。
%
% p\TeX では数式中では16通りのフォントしか使えませんでしたが,Lua\TeX では
% Omega 拡張が取り込まれていて256通りのフォントが使えます。
-% そのためこのオプションは無効にしてありますが,互換性のためにオプション自体は
-% 残しておきます。
+% ただし,\LaTeXe カーネルでは未だに数式ファミリの数は16個に制限されているので,
+% 実際に使用可能な数式ファミリの数を増やすためには |lualatex-math| パッケージを
+% 読み込む必要があることに注意が必要です。
%
% \begin{macrocode}
-\DeclareOption{disablejfam}{\@enablejfamfalse}
+\DeclareOption{disablejfam}{%
+ \ClassWarningNoLine{\@currname}{The class option 'disablejfam' is obsolete}}
% \end{macrocode}
%
% \paragraph{ドラフト}
%
% \paragraph{和文フォントメトリックの選択}
%
-% 一旦無効にします。Lua\TeX-ja でも対応する JFM ファイルを用意すれば
-% 互換性は確保できると思われます(要検討)。
-%
+% ここではOTFパッケージのメトリックを元とした,|jfm-ujis.lua|メトリックを標準で使います。
+% 古い \texttt{min10},\texttt{goth10} 互換のメトリックを使いたいときは \texttt{mingoth}
+% というオプションを指定します。
+% p\TeX でよく利用される \texttt{jis} フォントメトリックと互換のメトリックを使いたい場合は,
+% \texttt{ptexjis} というオプションを指定します。
+% \texttt{winjis} メトリックは用済みのため,\texttt{winjis} オプションは無視されます。
+%
% \begin{macrocode}
-\newif\ifwinjis
-\winjisfalse
\newif\ifmingoth
\mingothfalse
\newif\ifjisfont
\jisfontfalse
-\newif\if@jsc@uplatex
-\@jsc@uplatexfalse
+\newif\ifptexjis
+\ptexjisfalse
+\DeclareOption{winjis}{%
+ \ClassWarningNoLine{\@currname}{The class option 'winjis' is obsolete}}
+\DeclareOption{uplatex}{%
+ \ClassWarningNoLine{\@currname}{The class option 'uplatex' is obsolete}}
\DeclareOption{mingoth}{\mingothtrue}
-\DeclareOption{winjis}{\winjistrue}
+\DeclareOption{ptexjis}{\ptexjistrue}
\DeclareOption{jis}{\jisfonttrue}
-\DeclareOption{uplatex}{\@jsc@uplatextrue\winjisfalse}
% \end{macrocode}
%
% \paragraph{papersizeスペシャルの利用}
% \end{macro}
% \end{macro}
%
+% \section{和文フォントの選択}
+%
+% JISの1ポイントは0.3514mm(約1/72.28インチ),
+% PostScriptの1ポイントは1/72インチですが,
+% \TeX では1/72.27インチを1pt(ポイント),
+% 1/72インチを1bp(ビッグポイント)と表します。
+% QuarkXPressなどのDTPソフトは標準で1/72インチを1ポイント
+% としますが,以下ではすべて1/72.27インチを1ptとしています。
+% 1インチは定義により25.4mmです。
+%
+% \pTeX (アスキーが日本語化した\TeX )では,例えば従来のフォントメトリック
+% \texttt{min10} やJISフォントメトリックでは「公称10ポイントの和文フォントは,
+% 実際には9.62216ptで出力される(メトリック側で0.962216倍される)」という
+% 仕様になっています。
+% 一方,Lua\TeX-jaの提供するメトリックでは,そのようなことはありません。
+% 公称10ポイントの和文フォントは,10ポイントで出力されます。
+%
+% この|ltjsclasses|でも,派生元の|jsclasses|と同じように,
+% この公称10ポイントのフォントをここでは13級に縮小して
+% 使うことにします。そのためには,$13\,\textrm{Q}/10\,\textrm{pt}\simeq 0.924872$ 倍
+% すればいいことになります。
+%
+%
+% \begin{macrocode}
+%<*!jspf>
+\ifmingoth
+ \DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [0.924872] psft:Ryumin-Light:jfm=min}{}
+ \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.924872] psft:GothicBBB-Medium:jfm=min}{}
+\else
+ \ifptexjis
+ \DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [0.924872] psft:Ryumin-Light:jfm=jis}{}
+ \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.924872] psft:GothicBBB-Medium:jfm=jis}{}
+ \else
+ \DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [0.924872] psft:Ryumin-Light:jfm=ujis}{}
+ \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.924872] psft:GothicBBB-Medium:jfm=ujis}{}
+ \fi
+\fi
+%</!jspf>
+% \end{macrocode}
+%
+% これにより,公称10ポイントの和文フォントを0.924872倍したことにより,
+% 約9.25ポイント,
+% DTPで使う単位(1/72インチ)では9.21ポイントということになり,
+% 公称10ポイントといっても実は9ポイント強になります。
+%
+% 某学会誌では,
+% 和文フォントをPostScriptの9ポイントにするために,
+% $0.9*72.27/72 \simeq 0.903375$ 倍します。
+%
+% \begin{macrocode}
+%<*jspf>
+\ifmingoth
+ \DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [0.903375] psft:Ryumin-Light:jfm=min}{}
+ \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.903375] psft:GothicBBB-Medium:jfm=min}{}
+\else
+ \ifptexjis
+ \DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [0.903375] psft:Ryumin-Light:jfm=jis}{}
+ \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.903375] psft:GothicBBB-Medium:jfm=jis}{}
+ \else
+ \DeclareFontShape{JY3}{mc}{m}{n}{<-> s * [0.903375] psft:Ryumin-Light:jfm=ujis}{}
+ \DeclareFontShape{JY3}{gt}{m}{n}{<-> s * [0.903375] psft:GothicBBB-Medium:jfm=ujis}{}
+ \fi
+\fi
+%</jspf>
+% \end{macrocode}
+%
% 和文でイタリック体,斜体,サンセリフ体,
% タイプライタ体の代わりにゴシック体を使うことにします。
%
{\not@math@alphabet\ttfamily\mathtt
\romanfamily\ttdefault\kanjifamily\gtdefault\selectfont}
% \end{macrocode}
-%
-% \begin{macro}{\textmc}
-% \begin{macro}{\textgt}
-%
-% 次のコマンドはイタリック補正なども含めて定義されていますが,
-% 和文ではイタリック補正はあまり役に立たず,
-% 欧文・和文間のグルーが入らないという副作用もありますので,
-% 単純な定義に直します。
-%
-% \begin{macrocode}
-\def\textmc#1{\relax\ifmmode\hbox\fi{\mcfamily #1}}
-\def\textgt#1{\relax\ifmmode\hbox\fi{\gtfamily #1}}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
+%%
+% Lua\TeX-jaでは和文組版に伴うグルーはノードベースで挿入するようになり,また
+% 欧文・和文間のグルーとイタリック補正は干渉しないようになりました。
+% まだ「和文の斜体」についてはLua\LaTeX カーネル側でまともな対応がされていませんが,
+% |jsclasses.dtx|で行われていた|\textmc|, |\textgt|の再定義は不要のように思われます。
%
% 新クラスでも数式内で日本語が使えるようにしました。
%
\@tempskipa -\@tempskipa \@afterindentfalse
\fi
\if@nobreak
-% \everypar{\everyparhook}% これは間違い
\everypar{}%
\else
\addpenalty\@secpenalty
%
% |\@sect| と |\@xsect| は,
% 前のアキがちょうどゼロの場合にもうまくいくように,多少変えてあります。
-% |\everyparhook| も挿入しています。
%
% \begin{macrocode}
\def\@sect#1#2#3#4#5#6[#7]#8{%
% 二つ挿入した |\everyparhook| のうち後者が |\paragraph| 類の後で2回実行され,
% それ以降は前者が実行されます。
%
+% [2011-10-05] Lua\TeX-jaでは|\everyparhook|は不要なので削除。
+%
% \begin{macrocode}
\def\@xsect#1{%
% 見出しの後ろの空きを \@tempskipa にセット
\hskip -\@tempskipa
\else
\clubpenalty \@clubpenalty
- \everypar{\everyparhook}%
- \fi\everyparhook}%
+ \everypar{}%
+ \fi}%
\else
\par \nobreak
\vskip \@tempskipa
% \end{macrocode}
% \end{macro}
%
-% \section{段落の頭へのグルー挿入禁止}
-%
-% 段落頭のかぎかっこなどを見かけ1字半下げから全角1字下げに直します。
-%
-% \begin{macrocode}
-\def\@inhibitglue{%
- \futurelet\@let@token\@@inhibitglue}
-\def\@@inhibitglue{%
- \ifx\@let@token「
- \inhibitglue
- \else
- \ifx\@let@token(
- \inhibitglue
- \else
- \ifx\@let@token『
- \inhibitglue
- \else
- \ifx\@let@token[
- \inhibitglue
- \fi
- \fi
- \fi
- \fi}
-\let\everyparhook=\@inhibitglue
-\AtBeginDocument{\everypar{\everyparhook}}
-% \end{macrocode}
-%
-% これだけではいけないようです。あちこちに |\everypar| を初期化するコマンドが
-% 隠されていました。
-%
-% まず,環境の直後の段落です。
-%
-% \begin{macrocode}
-\def\@doendpe{%
- \@endpetrue
- \def\par{%
- \@restorepar\everypar{\everyparhook}\par\@endpefalse}%
- \everypar{{\setbox\z@\lastbox}\everypar{\everyparhook}\@endpefalse\everyparhook}}
-% \end{macrocode}
-%
-% |\item| 命令の直後です。
-%
-% \begin{macrocode}
-\def\@item[#1]{%
- \if@noparitem
- \@donoparitem
- \else
- \if@inlabel
- \indent \par
- \fi
- \ifhmode
- \unskip\unskip \par
- \fi
- \if@newlist
- \if@nobreak
- \@nbitem
- \else
- \addpenalty\@beginparpenalty
- \addvspace\@topsep
- \addvspace{-\parskip}%
- \fi
- \else
- \addpenalty\@itempenalty
- \addvspace\itemsep
- \fi
- \global\@inlabeltrue
- \fi
- \everypar{%
- \@minipagefalse
- \global\@newlistfalse
- \if@inlabel
- \global\@inlabelfalse
- {\setbox\z@\lastbox
- \ifvoid\z@
- \kern-\itemindent
- \fi}%
- \box\@labels
- \penalty\z@
- \fi
- \if@nobreak
- \@nobreakfalse
- \clubpenalty \@M
- \else
- \clubpenalty \@clubpenalty
- \everypar{\everyparhook}%
- \fi\everyparhook}%
- \if@noitemarg
- \@noitemargfalse
- \if@nmbrlist
- \refstepcounter\@listctr
- \fi
- \fi
- \sbox\@tempboxa{\makelabel{#1}}%
- \global\setbox\@labels\hbox{%
- \unhbox\@labels
- \hskip \itemindent
- \hskip -\labelwidth
- \hskip -\labelsep
- \ifdim \wd\@tempboxa >\labelwidth
- \box\@tempboxa
- \else
- \hbox to\labelwidth {\unhbox\@tempboxa}%
- \fi
- \hskip \labelsep}%
- \ignorespaces}
-% \end{macrocode}
-%
-% 二つ挿入した |\everyparhook| のうち後者が |\section| 類の直後に2回,
-% 前者が3回目以降に実行されます。
-%
-% \begin{macrocode}
-\def\@afterheading{%
- \@nobreaktrue
- \everypar{%
- \if@nobreak
- \@nobreakfalse
- \clubpenalty \@M
- \if@afterindent \else
- {\setbox\z@\lastbox}%
- \fi
- \else
- \clubpenalty \@clubpenalty
- \everypar{\everyparhook}%
- \fi\everyparhook}}
-% \end{macrocode}
-%
-% |\@gnewline| についてはちょっと複雑な心境です。
-% もともとのp\LaTeXe は段落の頭にグルーが入る方で統一されていました。
-% しかし |\\| の直後にはグルーが入らず,不統一でした。
-% そこで |\\| の直後にもグルーを入れるように直していただいた経緯があります。
-% しかし,ここでは逆にグルーを入れない方で統一したいので,
-% また元に戻してしまいました。
-%
-% しかし単に戻すだけでも駄目みたいなので,ここでも最後にグルーを消しておきます。
-%
-% \begin{macrocode}
-\def\@gnewline #1{%
- \ifvmode
- \@nolnerr
- \else
- \unskip \reserved@e {\reserved@f#1}\nobreak \hfil \break \null
- \inhibitglue \ignorespaces
- \fi}
-% \end{macrocode}
-%
% \section{いろいろなロゴ}
%
% \LaTeX 関連のロゴを作り直します。