OSDN Git Service

Warning messages for obsolete options in ltjclasses and ltjsclasses.
[luatex-ja/luatexja.git] / src / ltjsclasses / ltjsclasses.dtx
index 2dd9c06..fe86225 100644 (file)
@@ -22,7 +22,7 @@
 %  -----------------------------------------
 %
 % \fi
-% \CheckSum{5283}
+% \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
@@ -94,7 +94,7 @@
 %   \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| に変更してあります。
 %   これはデフォルトの漢字のカテゴリコードが12であるためです。
 % \end{itemize}
 %
+% \StopEventually
+%
 % 以下では実際のコードに即して説明します。
 % \section{Lua\TeX-ja の読み込み}
 %
 % あるいは |\documentclass[オプション]{ltjsarticle}|
 % のように呼び出します。
 %
-% まず,オプションに関連するいくつかのコマンドやスイッチ(論理変数)を定
+% 最初に,オプションに関連するいくつかのコマンドやスイッチ(論理変数)を定
 % 義します。
 %
 % \begin{macro}{\if@restonecol}
 %
 % 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スペシャルの利用}
 \fi
 %    \end{macrocode}
 %
-% \paragraph{PDF の用紙サイズの設定}
-%
-% \begin{macro}{\pdfpagewidth}
-% \begin{macro}{\pdfpageheight}
-% 出力の PDF の用紙サイズをここで設定しておきます。
-% |tombow| が真のときは2インチ足しておきます。
-%    \begin{macrocode}
-\setlength{\@tempdima}{\paperwidth}
-\setlength{\@tempdimb}{\paperheight}
-\iftombow
-  \advance \@tempdima 2in
-  \advance \@tempdimb 2in
-\fi
-\setlength{\pdfpagewidth}{\@tempdima}
-\setlength{\pdfpageheight}{\@tempdimb}
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
 % \paragraph{基準となる行送り}
 %
 % \begin{macro}{\n@baseline}
 \setlength\paperheight{\inv@mag\paperheight}%
 %    \end{macrocode}
 %
+% \paragraph{PDF の用紙サイズの設定}
+%
+% \begin{macro}{\pdfpagewidth}
+% \begin{macro}{\pdfpageheight}
+% 出力の PDF の用紙サイズをここで設定しておきます。
+% |tombow| が真のときは2インチ足しておきます。
+%    \begin{macrocode}
+\setlength{\@tempdima}{\paperwidth}
+\setlength{\@tempdimb}{\paperheight}
+\iftombow
+  \advance \@tempdima 2in
+  \advance \@tempdimb 2in
+\fi
+\setlength{\pdfpagewidth}{\@tempdima}
+\setlength{\pdfpageheight}{\@tempdimb}
+%    \end{macrocode}
+% \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|の再定義は不要のように思われます。
 %
 % 新クラスでも数式内で日本語が使えるようにしました。
 %
 % はトンボの内側に |1in| のスペース(|1truein| ではなく)を挿入するので,
 % 場合分けしています。
 %
+% [2011-10-03] Lua\TeX{} (pdf\TeX?) では |1truein| ではなく 
+% |1in| になるようです。
+%
 %    \begin{macrocode}
 \setlength{\oddsidemargin}{\paperwidth}
 \addtolength{\oddsidemargin}{-\fullwidth}
 \setlength{\oddsidemargin}{.5\oddsidemargin}
-\iftombow
-  \addtolength{\oddsidemargin}{-1in}
-\else
-  \addtolength{\oddsidemargin}{-\inv@mag in}
-\fi
+\addtolength{\oddsidemargin}{-1in}
 \setlength{\evensidemargin}{\oddsidemargin}
 \if@mparswitch
   \addtolength{\evensidemargin}{\fullwidth}
 %    \begin{macrocode}
 \setlength\marginparwidth{\paperwidth}
 \addtolength\marginparwidth{-\oddsidemargin}
-\addtolength\marginparwidth{-\inv@mag in}
+\addtolength\marginparwidth{-1in}
 \addtolength\marginparwidth{-\textwidth}
 \addtolength\marginparwidth{-1cm}
 \addtolength\marginparwidth{-\marginparsep}
 % [2003-06-26] |\headheight| を |\topskip| に直しました。
 % 以前はこの二つは値が同じであったので,変化はないはずです。
 %
+% [2011-10-03] ここも |\oddsidemargin| のときと同様に |-\inv@mag in| ではなく
+% |-1in| にします。
+%
 %    \begin{macrocode}
 \setlength\topmargin{\paperheight}
 \addtolength\topmargin{-\textheight}
 \addtolength\topmargin{-\footskip}
 \setlength\topmargin{0.5\topmargin}
 %<kiyou>\setlength\topmargin{81truebp}
-\iftombow
-  \addtolength\topmargin{-1in}
-\else
-  \addtolength\topmargin{-\inv@mag in}
-\fi
+\addtolength\topmargin{-1in}
 %    \end{macrocode}
 % \end{macro}
 %
     \@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 関連のロゴを作り直します。