X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=src%2Fltjclasses.dtx;h=ff744ea89022ccace01e4e8a19b614e05f1e2516;hb=3fae82d64b193c794fdf2f1262d80bddc98ce5a8;hp=9d8d760d95f3bdc7691d6c34c71efac9b72d0fb9;hpb=e4ee0e50d6c2ca7fb2b75208fb6cd08cf185c0dd;p=luatex-ja%2Fluatexja.git diff --git a/src/ltjclasses.dtx b/src/ltjclasses.dtx index 9d8d760..ff744ea 100644 --- a/src/ltjclasses.dtx +++ b/src/ltjclasses.dtx @@ -5,10 +5,10 @@ % % Copyright 1995-2001 ASCII Corporation. % Copyright (c) 2010 ASCII MEDIA WORKS -% Copyright (c) 2016-2017 Japanese TeX Development Community +% Copyright (c) 2016-2018 Japanese TeX Development Community % -% This file is part of the pLaTeX2e system. -% ----------------------------------------- +% This file is part of the pLaTeX2e system (community edition). +% ------------------------------------------------------------- % % \fi % @@ -103,6 +103,20 @@ % \changes{v1.7d}{2017/02/15}{titlepageのページ番号を奇数ならば1に、 % 偶数ならば0にリセットするように変更} % \changes{v1.7d}{2017/02/15}{縦組クラスの所属表示の番号を直立にした} +% \changes{v1.7d-ltj-13}{2017/02/19}{縦組時クラスで|ftnright|パッケージを使うと +% 脚注番号が上書きされ横に寝てしまう問題を修正(aminophenさん,ありがとうございます).} +% \changes{v1.7d-ltj-14}{2017/02/20}{openleftオプションの処理で\cs{iftdir}, \cs{ifydir}を +% 誤って使っている問題を修正(aminophenさん,ありがとうございます).} +% \changes{v1.7e}{2017/03/05}{トンボに表示するジョブ情報の書式を変更} +% \changes{v1.7e}{2017/03/05}{\cs{frontmatter}と\cs{mainmatter}を +% 奇数ページに送るように変更} +% \changes{v1.7e-ltj-15}{2017/08/31}{本ドキュメントのタイプセットで,小塚フォントが存在するときには +% それを用いるように変更(PDFサイズ削減のため).} +% \changes{v1.7f}{2017/08/31}{和文書体の基準を全角空白から「漢」に変更} +% \changes{v1.7g}{2017/09/19}{内部処理で使ったボックス0を空にした} +% \changes{v1.7h}{2018/02/04}{和文スケール値\cs{Cjascale}を定義} +% \changes{v1.8}{2018/07/03}{\cs{today}のデフォルトを和暦から西暦に変更} +% \changes{v1.8-ltj-16}{2018/10/08}{Lua\TeX-jaが|disablejfam|オプションをサポートしたことによる変更} % \fi % % \iffalse @@ -132,14 +146,22 @@ %<11pt&bk>\ProvidesFile{ltjtbk11.clo} %<12pt&bk>\ProvidesFile{ltjtbk12.clo} % - [2017/02/15 v1.7d-ltj-12 + [2018/10/08 v1.8-ltj-16 % Standard LuaLaTeX-ja class] %<10pt|11pt|12pt> Standard LuaLaTeX-ja file (size option)] %<*driver> ] \documentclass{ltjltxdoc} \GetFileInfo{ltjclasses.dtx} -\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 \usepackage[unicode]{hyperref} \title{Lua\LaTeX-ja用\texttt{jclasses}互換クラス} \author{Lua\TeX-jaプロジェクト} @@ -154,7 +176,7 @@ % % \section{はじめに} % このファイルは、Lua\LaTeX-ja用の|jclasses|互換クラスファイルです。 -% v1.6をベースに作成しています。 +% コミュニティ版をベースに作成しています。 % \dst{}プログラムによって、横組用のクラスファイルと縦組用のクラスファイル % を作成することができます。 % @@ -181,7 +203,7 @@ % 全ての変更点を知りたい場合は、|jclasses.dtx|と|ltjclasses.dtx|で|diff|を % とって下さい。 % \begin{itemize} -% \item |disablejfam|オプションを無効化。もし +% \item もし % \begin{quotation} % |! LaTeX Error: Too many math alphabets used in version ****.| % \end{quotation} @@ -379,15 +401,19 @@ % |tombow|オプションが指定されると、用紙サイズに合わせてトンボを出力します。 % このとき、トンボの脇にPDFを作成した日付が出力されます。 % 作成日付の出力を抑制するには、|tombow|ではなく、|tombo|と指定をします。 +% +% ジョブ情報の書式は元々|filename : 2017/3/5(13:3)|のような書式でしたが、 +% jsclassesにあわせて桁数固定の|filename (2017-03-05 13:03)|に直しました。 % \changes{v1.0g}{1996/09/03}{Add to \cs{@bannertoken}.} % \changes{v1.1a}{1997/01/23}{日付出力オプション} +% \changes{v1.7e}{2017/03/05}{トンボに表示するジョブ情報の書式を変更} % \begin{macrocode} \DeclareOption{tombow}{% \tombowtrue \tombowdatetrue \setlength{\@tombowwidth}{.1\p@}% \@bannertoken{% - \jobname\space:\space\number\year/\number\month/\number\day - (\number\hour:\number\minute)} + \jobname\space(\number\year-\two@digits\month-\two@digits\day + \space\two@digits\hour:\two@digits\minute)}% \maketombowbox} \DeclareOption{tombo}{% \tombowtrue \tombowdatefalse @@ -518,12 +544,12 @@ % |mathrmmc|オプションは、 % |\mathrm|と|\mathbf|を和欧文両対応にするためのクラスオプションです。 % \changes{v1.1d}{1992/02/04}{disablejfamの判断を間違えてたのを修正} +% \changes{v1.8-ltj-16}{2018/10/08}{Lua\TeX-ja本体が,主にメモリ消費を抑える目的で +% |disablejfam|オプションをサポートしました。そのため以前出していた警告は削除します。} % \begin{macrocode} \if@compatibility \@mathrmmctrue \else - \DeclareOption{disablejfam}{% - \ClassWarningNoLine{\@currname}{The class option 'disablejfam' is obsolete}} \DeclareOption{mathrmmc}{\@mathrmmctrue} \fi % \end{macrocode} @@ -559,7 +585,7 @@ % % \changes{v1.6-ltj-9}{2015/01/01}{サイズクラスのロード前にメトリックの変更を行わないと, % \cs{Cht}等の値が反映されないのでこの場所に移動させました.} -% +% % \begin{macrocode} %<*article|report|book> \directlua{luatexbase.add_to_callback('luatexja.load_jfm', @@ -683,14 +709,18 @@ % \begin{macro}{\Cvs} % \begin{macro}{\Chs} % 基準となる長さの設定をします。これらのパラメータは\file{lltjfont.sty}で定義 -% されています。 +% されています。基準とする文字を「全角空白」(EUCコード\texttt{0xA1A1})から +% 「漢」(JISコード\texttt{0x3441})へ変更しました。 +% \changes{v1.7f}{2017/08/31}{和文書体の基準を全角空白から「漢」に変更} +% \changes{v1.7g}{2017/09/19}{内部処理で使ったボックス0を空にした} % \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} @@ -821,6 +851,20 @@ % \end{macro} % \end{macro} % +% \begin{macro}{\Cjascale} +% このクラスファイルが意図する和文スケール値 +% ($1\,\mathrm{zw} \div \textmc{要求サイズ}$)を +% 表す実数値マクロ|\Cjascale|を定義します。 +% この\texttt{jclasses}互換クラスでは、Lua\TeX-ja読み込み時の和文スケール値がそのまま +% 使用され、その値は0.962216です。 +% \changes{v1.7h}{2018/02/04}{和文スケール値\cs{Cjascale}を定義} +% \begin{macrocode} +%<*article|report|book> +\def\Cjascale{0.962216} +% +% \end{macrocode} +% \end{macro} +% % % % \section{レイアウト} @@ -1499,7 +1543,7 @@ % |\marginparwidth|を計算します。 % ここで、|\@tempdima|の値は、\linebreak % |\paperwidth| $-$ |\textwidth|です。 -% \changes{v1.1d}{1995/11/24}{typo: \cs{marginmarwidth} to \cs{marginparwidth}} +% \changes{v1.1d}{1995/11/24}{\break typo: \cs{marginmarwidth} to \cs{marginparwidth}} % \begin{macrocode} %<*yoko> \if@twoside @@ -1786,30 +1830,17 @@ % \item|\pltx@cleartoevenpage|:偶数ページになるまでページを繰る命令 % \end{enumerate} % \changes{v1.7d}{2017/02/15}{\cs{cleardoublepage}の代用となる命令群を追加} +% \changes{v1.7d-ltj-14}{2017/02/20}{\cs{iftdir}, \cs{ifydir}を使わないように修正} % \begin{macrocode} \def\pltx@cleartorightpage{\clearpage\if@twoside - \ifodd\c@page - \iftdir - \hbox{}\thispagestyle{empty}\newpage - \if@twocolumn\hbox{}\newpage\fi - \fi - \else - \ifydir - \hbox{}\thispagestyle{empty}\newpage - \if@twocolumn\hbox{}\newpage\fi - \fi + \unless\ifodd\numexpr\c@page+\ltjgetparameter{direction}\relax + \hbox{}\thispagestyle{empty}\newpage + \if@twocolumn\hbox{}\newpage\fi \fi\fi} \def\pltx@cleartoleftpage{\clearpage\if@twoside - \ifodd\c@page - \ifydir - \hbox{}\thispagestyle{empty}\newpage - \if@twocolumn\hbox{}\newpage\fi - \fi - \else - \iftdir - \hbox{}\thispagestyle{empty}\newpage - \if@twocolumn\hbox{}\newpage\fi - \fi + \ifodd\numexpr\c@page+\ltjgetparameter{direction}\relax + \hbox{}\thispagestyle{empty}\newpage + \if@twocolumn\hbox{}\newpage\fi \fi\fi} % \end{macrocode} % @@ -1943,7 +1974,7 @@ % % \pstyle{jpl@in}スタイルは、クラスファイル内部で使用するものです。 % \LaTeX{}では、bookクラスを\pstyle{headings}としています。 -% しかし、\cs{tableofcontnts}コマンドの内部では\pstyle{plain}として +% しかし、\cs{tableofcontents}コマンドの内部では\pstyle{plain}として % 設定されるため、一つの文書でのページ番号の位置が上下に出力される % ことになります。 % @@ -2018,9 +2049,9 @@ %<*report|book> \def\chaptermark##1{\markboth{% \ifnum \c@secnumdepth >\m@ne -% \if@mainmatter +% \if@mainmatter \@chapapp\thechapter\@chappos\hskip1\zw -% \fi +% \fi \fi ##1}{}}% \def\sectionmark##1{\markright{% @@ -2047,9 +2078,9 @@ %<*report|book> \def\chaptermark##1{\markright{% \ifnum \c@secnumdepth >\m@ne -% \if@mainmatter +% \if@mainmatter \@chapapp\thechapter\@chappos\hskip1\zw -% \fi +% \fi \fi ##1}}% % @@ -2094,9 +2125,9 @@ %<*report|book> \def\chaptermark##1{\markboth{% \ifnum \c@secnumdepth >\m@ne -% \if@mainmatter +% \if@mainmatter \@chapapp\thechapter\@chappos\hskip1\zw -% \fi +% \fi \fi ##1}{}}% \def\sectionmark##1{\markright{% @@ -2125,9 +2156,9 @@ %<*report|book> \def\chaptermark##1{\markright{% \ifnum \c@secnumdepth >\m@ne -% \if@mainmatter +% \if@mainmatter \@chapapp\thechapter\@chappos\hskip1\zw -% \fi +% \fi \fi ##1}}% % @@ -2272,7 +2303,7 @@ \if@compatibility \newenvironment{titlepage} {% -% \cleardoublepage +% \cleardoublepage \if@twocolumn\@restonecoltrue\onecolumn \else\@restonecolfalse\newpage\fi \thispagestyle{empty}% @@ -2283,7 +2314,7 @@ % \end{macrocode} % % そして、\LaTeX{}ネイティブのための定義です。 -+% \changes{v1.7d}{2017/02/15}{bookクラスでtitlepageを必ず奇数ページ +% \changes{v1.7d}{2017/02/15}{bookクラスでtitlepageを必ず奇数ページ % に送るように変更} % \changes{v1.7d}{2017/02/15}{titlepageのページ番号を奇数ならば1に、 % 偶数ならば0にリセットするように変更} @@ -2509,8 +2540,8 @@ %\newcommand*{\sectionmark}[1]{} %\newcommand*{\subsectionmark}[1]{} %\newcommand*{\subsubsectionmark}[1]{} -%\newcommand*{\paragraph}[1]{} -%\newcommand*{\subparagraph}[1]{} +%\newcommand*{\paragraphmark}[1]{} +%\newcommand*{\subparagraphmark}[1]{} % \end{macrocode} % \end{macro} % \end{macro} @@ -2578,10 +2609,10 @@ % |\alph{|\Lcount{COUNTER}|}|は、\Lcount{COUNTER}の値を % $1=$~a, $2=$~b のようにして出力します。 % -% |\Roman{|\Lcount{COUNTER}|}|は、\Lcount{COUNTER}の値を +% |\Alph{|\Lcount{COUNTER}|}|は、\Lcount{COUNTER}の値を % $1=$~A, $2=$~B のようにして出力します。 % -% |\kansuji{|\Lcount{COUNTER}|}|は、\Lcount{COUNTER}の値を +% |\Kanji{|\Lcount{COUNTER}|}|は、\Lcount{COUNTER}の値を % 漢数字で出力します。 % % |\rensuji{|\meta{obj}|}|は、\meta{obj}を横に並べて出力します。 @@ -2661,20 +2692,35 @@ % これらの命令を|openany|オプションに応じて切り替え、二回目はそれを % 元に戻しています。アスキーによるjclasses.dtxは、1997/01/15に % 一回目の修正に追随しましたが、二回目の修正には追随していません。 -% コミュニティ版では、アスキーによる仕様を維持することとし、 -% |openany|オプションの場合は|\cleardoublepage|ではなく|\clearpage|が -% 発行されます。もし|\cleardoublepage|が起きてほしい場合には、 -% 明示的に挿入してください。(参考:latex/2754) +% コミュニティ版では、一旦はアスキーによる仕様を維持しようと考え +% ました(2016/11/22)が、以下の理由により二回目の修正にも追随する +% ことにしました(2017/03/05)。 +% +% アスキー版での|\frontmatter|と|\mainmatter|の改ページ挙動は +%\begin{quote} +% |openright|なら|\cleardoublepage|、|openany|なら|\clearpage|を実行 +%\end{quote} +% というものでした。しかし、|\frontmatter|及び|\mainmatter|はノンブルを +% 1にリセットしますから、改ページの結果が偶数ページ目になる場合 +% \footnote{縦tbookのデフォルト(openright)が該当するほか、横jbookと +% 縦tbookのopenanyのときには成り行き次第で該当する可能性があります。}に +% ノンブルが偶奇逆転してしまいました。このままでは|openany|の場合に両面 +% 印刷がうまくいかないため、新しいコミュニティ版では +%\begin{quote} +% 必ず|\pltx@cleartooddpage|を実行 +%\end{quote} +% としました。これは両面印刷(twoside)の場合は奇数ページに送り、 +% 片面印刷(oneside)の場合は単に改ページとなります。(参考:latex/2754) % \changes{v1.7b}{2016/11/22}{補足ドキュメントを追加} +% \changes{v1.7e}{2017/03/05}{\cs{frontmatter}と\cs{mainmatter}を +% 奇数ページに送るように変更} % \begin{macrocode} %<*book> \newcommand{\frontmatter}{% - \if@openleft \cleardoublepage \else - \if@openright \cleardoublepage \else \clearpage \fi \fi + \pltx@cleartooddpage \@mainmatterfalse\pagenumbering{roman}} \newcommand{\mainmatter}{% - \if@openleft \cleardoublepage \else - \if@openright \cleardoublepage \else \clearpage \fi \fi + \pltx@cleartooddpage \@mainmattertrue\pagenumbering{arabic}} \newcommand{\backmatter}{% \if@openleft \cleardoublepage \else @@ -2729,11 +2775,11 @@ % \end{description} % % |\secdef|は次のようにして使うことができます。 -% \begin{verbatim} +%\begin{verbatim} % \def\chapter {... \secdef \CMDA \CMDB } % \def\CMDA [#1]#2{....} % \chapter[...]{...} の定義 % \def\CMDB #1{....} % \chapter*{...} の定義 -% \end{verbatim} +%\end{verbatim} % % % \subsubsection{partレベル} @@ -2983,7 +3029,7 @@ % このマクロは、章見出しに番号を付けないときに呼び出されます。 % % \emph{日本語\TeX{}開発コミュニティによる補足}:やはり二段組でチャプター - タイトルより高い位置に右カラムの始点が来るという挙動を維持してあります。 +% タイトルより高い位置に右カラムの始点が来るという挙動を維持してあります。 % \changes{v1.7c}{2016/12/18}{奇妙なarticleガードとコードを削除して % ドキュメントを追加} % \begin{macrocode} @@ -3807,7 +3853,12 @@ % \LaTeX{} 2.09 % compatibility mode では和文数式フォントfamが2重定義されていた % ので、その部分を変更しました。 +% +% \changes{v1.8-ltj-14}{2018/10/08}{Lua\TeX-ja本体が|disablejfam|オプションをサポートしました。 +% クラス読み込み時に|disablejfam|オプションを指定した場合は、それがLua\TeX-jaに渡されて +% 数式中に日本語を記述することができなくなります(|\mathmc|, |\mathgt|も定義されません)。} % \begin{macrocode} +\unless\ifltj@disablejfam \if@compatibility\else \DeclareSymbolFont{mincho}{JY3}{mc}{m}{n} \DeclareSymbolFontAlphabet{\mathmc}{mincho} @@ -3821,6 +3872,7 @@ \reDeclareMathAlphabet{\mathbf}{\mathbf}{\mathgt} }% \fi +\fi % \end{macrocode} % % ここでは\LaTeX~2.09で一般的に使われていたコマンドを定義しています。 @@ -3944,7 +3996,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\@tocmarg} +% \begin{macro}{\@tocrmarg} % 複数行にわたる場合の右マージンです。 % \begin{macrocode} \newcommand{\@tocrmarg}{2.55em} @@ -3974,10 +4026,12 @@ % |\@tempdima|にしていますが、この変数はいろいろな箇所で使われますので、 % 期待した値が入らない場合があります。 % -% たとえば、|lltjfont.sty|での|\selectfont|は、和欧文のベースラインを調整する -% ために|\@tempdima|変数を用いています。そのため、|\l@...|マクロの中で -% フォントを切替えると、|\numberline|マクロのボックス -% の幅が、ベースラインを調整するときに計算した値になってしまいます。 +% ^^A たとえば、|lltjfont.sty|での|\selectfont|は、和欧文のベースラインを調整する +% ^^A ために|\@tempdima|変数を用いています。そのため、|\l@...|マクロの中で +% ^^A フォントを切替えると、|\numberline|マクロのボックス +% ^^A の幅が、ベースラインを調整するときに計算した値になってしまいます。 +% ^^A →修正(texjporg):最近の|\adjustbaseline|では|\adjust@dimen|が使われて +% ^^A いるため、記述をコメントアウトしました。 % % フォント選択コマンドの後、あるいは|\numberline|マクロの中でフォントを % 切替えてもよいのですが、一時変数を意識したくないので、 @@ -4016,19 +4070,21 @@ % \end{macro} % % \begin{macro}{\addcontentsline} -% ページ番号を|\rensuji|で囲むように変更します。 -% 横組のときにも`|\rensuji|'コマンドが出力されますが、 -% このコマンドによる影響はありません。 +% 縦組の場合にページ番号を|\rensuji|で囲むように変更します。 +% ^^A 横組のときにも`|\rensuji|'コマンドが出力されますが、 +% ^^A このコマンドによる影響はありません。 % % このマクロは\file{ltsect.dtx}で定義されています。 % \begin{macrocode} +\providecommand*\protected@file@percent{} \def\addcontentsline#1#2#3{% \protected@write\@auxout {\let\label\@gobble \let\index\@gobble \let\glossary\@gobble %\@temptokena{\rensuji{\thepage}}}% %\@temptokena{\thepage}}% {\string\@writefile{#1}% - {\protect\contentsline{#2}{#3}{\the\@temptokena}}}% + {\protect\contentsline{#2}{#3}{\the\@temptokena}% + \protected@file@percent}}% } % \end{macrocode} % \end{macro} @@ -4264,7 +4320,7 @@ \renewcommand\theenumiv{\@arabic\c@enumiv}}% \sloppy % \end{macrocode} -% \changes{v1.1a}{1997/01/23}{\LaTeX\ \texttt{!<1996/12/01!>}に合わせて修正} +% \changes{v1.1a}{1997/01/23}{\break\LaTeX\ \texttt{!<1996/12/01!>}に合わせて修正} % \begin{macrocode} \clubpenalty4000 \@clubpenalty\clubpenalty @@ -4402,8 +4458,11 @@ % \changes{v1.0h}{1996/12/17}{Typo:和歴 to 和暦} % |\today|コマンドの`年'を、 % 西暦か和暦のどちらで出力するかを指定するコマンドです。 +% 2018年7月以降の日本語\TeX{}開発コミュニティ版(v1.8)では、 +% デフォルトを和暦ではなく西暦に設定しています。 +% \changes{v1.8}{2018/07/03}{\cs{today}のデフォルトを和暦から西暦に変更} % \begin{macrocode} -\newif\if西暦 \西暦false +\newif\if西暦 \西暦true \def\西暦{\西暦true} \def\和暦{\西暦false} % \end{macrocode} @@ -4515,14 +4574,20 @@ % \end{macro} % \end{macro} % +% |stfloats|パッケージがシステムにインストールされている場合は、このパッケージを使って +% p\LaTeX の標準時と同じようにボトムフロートの下に脚注が組まれるようにします。 % \changes{v1.0d}{1996/02/29}{articleとreportのデフォルトを % \pstyle{plain}に修正} % \changes{v1.4}{2002/04/09}{縦組スタイルで\cs{flushbottom}しないようにした} +% \changes{v1.7d-ltj-13}{2017/02/19}{p\LaTeX とLua\TeX-jaの|\@makecol|が違うことを +% 考慮していなかった} % \begin{macrocode} %\pagestyle{headings} %\pagestyle{plain} \pagenumbering{arabic} \raggedbottom +\fnfixbottomtrue % 2017-02-19 +\IfFileExists{stfloats.sty}{\RequirePackage{stfloats}\fnbelowfloat}{} \if@twocolumn \twocolumn \sloppy @@ -4553,6 +4618,22 @@ % % \end{macrocode} % +% \section{各種パッケージへの対応} +% もともと縦組での利用を想定されていないいくつかのパッケージについて、 +% 補正するためのコードを記述しておきます。 +% この節のコードは|filehook|パッケージ(Lua\TeX-ja読み込み時に自動でロードされます) +% の機能を用いています。 +% +% \subsection{\texttt{ftnright}パッケージ} +% 脚注番号の書式が|ftnright|パッケージによって勝手に書き換えられるので、 +% パッケージ読み込み前に予め退避しておき、読み込み後に復帰させます。 +% \changes{v1.7d}{2017/02/19}{コード追加} +% \begin{macrocode} +%<*article|report|book> +\AtBeginOfPackageFile*{ftnright}{\let\ltjt@orig@@makefntext=\@makefntext} +\AtEndOfPackageFile*{ftnright}{\let\@makefntext=\ltjt@orig@@makefntext} +% +% \end{macrocode} % % % \Finale