X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=src%2Fltjsclasses.dtx;h=98680844a0b96d9c953cc6facf46d409d5ea4554;hb=ef70dd9bfdf2bd68a327dd89d875b12dd3719dcf;hp=12d89b74d02dbb81232e99ffe99a8c5fa8d10cb1;hpb=337a2ed17b7735e740e6f9b282fa1ecc5c4e014b;p=luatex-ja%2Fluatexja.git diff --git a/src/ltjsclasses.dtx b/src/ltjsclasses.dtx index 12d89b7..9868084 100644 --- a/src/ltjsclasses.dtx +++ b/src/ltjsclasses.dtx @@ -25,7 +25,7 @@ % % Copyright 1995-1999 ASCII Corporation. % Copyright 1999-2016 Haruhiko Okumura -% Copyright 2016 Japanese TeX Development Community +% Copyright 2016-2017 Japanese TeX Development Community % ----------------------------------------- % % \fi @@ -57,13 +57,21 @@ %<*driver> \ProvidesFile{ltjsclasses.dtx} % - [2017/01/23 ltjsclasses ] + [2017/08/28 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} @@ -99,12 +107,18 @@ % これは,元々奥村晴彦先生により作成され,現在は日本語\TeX 開発コミュニティにより % 管理されている\texttt{jsclasses.dtx}をLua\LaTeX-ja用に改変したものです。 % 次のドキュメントクラス(スタイルファイル)を生成します。 +% +% [2017-02-13] forum:2121の議論を機に,ltjsreportクラスを新設しました。 +% 従来のltjsbookの |report| オプションと比べると,|abstract| 環境の使い方 +% および挙動がアスキーのjreportに近づきました。 +% % \begin{quote} % \begin{tabular}{lll} % $\langle$\textsf{article}$\rangle$ & \texttt{ltjsarticle.cls} & 論文・レポート用 \\ % $\langle$\textsf{book}$\rangle$ & \texttt{ltjsbook.cls} & 書籍用 \\ +% $\langle$\textsf{report}$\rangle$ & \texttt{ltjsreport.cls} & レポート用 \\ % $\langle$\textsf{jspf}$\rangle$ & \texttt{ltjspf.cls} & 某学会誌用 \\ -% $\langle$\textsf{kiyou}$\rangle$ & \texttt{ltjskiyou.cls} & 某紀要用 +% $\langle$\textsf{kiyou}$\rangle$ & \texttt{ltjskiyou.cls} & 某紀要用 % \end{tabular} % \end{quote} % @@ -221,14 +235,23 @@ % % \begin{macro}{\if@openright} % -% |\chapter|,|\part| を奇数ページ起こしにするかどうかです。 -% 書籍では真が標準です。 +% |\chapter|,|\part| を右ページ起こしにするかどうかです。 +% 横組の書籍では真が標準で,要するに片起こし,奇数ページ起こしになります。 % % \begin{macrocode} %\newif\if@openright % \end{macrocode} % \end{macro} % +% \begin{macro}{\if@openleft} +% +% [2017-02-24] |\chapter|,|\part| を左ページ起こしにするかどうかです。 +% +% \begin{macrocode} +%\newif\if@openleft +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\if@mainmatter} % % 真なら本文,偽なら前付け・後付けです。 @@ -489,12 +512,20 @@ % % \paragraph{右左起こし} % -% 書籍では章は通常は奇数ページ起こしになりますが, +% 書籍では章は通常は奇数ページ起こしになりますが,横組ではこれを +% \texttt{openright} と表すことにしてあります。 % \texttt{openany} で偶数ページからでも始まるようになります。 % +% [2017-02-24] \texttt{openright} は横組では奇数ページ起こし,縦組では +% 偶数ページ起こしを表します。ややこしいですが,これは\LaTeX の標準クラスが +% 西欧の横組事情しか考慮せずに,奇数ページ起こしと右起こしを一緒にしてしまっ +% たせいです。縦組での奇数ページ起こしと横組での偶数ページ起こしも表現したい +% ので,ltjsclassesでは新たに \texttt{openleft} も追加しました。 +% % \begin{macrocode} -%\DeclareOption{openright}{\@openrighttrue} -%\DeclareOption{openany}{\@openrightfalse} +%\DeclareOption{openright}{\@openrighttrue\@openleftfalse} +%\DeclareOption{openleft}{\@openlefttrue\@openrightfalse} +%\DeclareOption{openany}{\@openrightfalse\@openleftfalse} % \end{macrocode} % % \paragraph{eqnarray環境と数式の位置} @@ -646,10 +677,13 @@ \DeclareOption{english}{\@englishtrue} % \end{macrocode} % -% \paragraph{ltjsreport相当} +% \paragraph{ltjsbookをltjsreportもどきに} % % オプション \texttt{report} を新設しました。 % +% [2017-02-13] 従来は「ltjsreport相当」をltjsbookの \texttt{report} オプションで提供して +% いましたが,新しくltjsreportクラスも作りました。どちらでもお好きな方を使ってください。 +% % \begin{macrocode} %<*book> \newif\if@report @@ -774,6 +808,9 @@ % % [2017-01-23] \LaTeXe\ 2017-01-01以降ではTUエンコーディングが標準なので, % \texttt{type1cm}パッケージは読み込まないようにしました. +% +% [2017-02-17 LTJ] |\directlua|中で出力される数字のカテゴリーコードが12になるようにしました. +% この保証をしないと例えば\texttt{listings}パッケージで無限ループになります. % \begin{macrocode} \if@ltjs@mag@xreal \ifdim\jsc@mpt=\p@\else @@ -786,11 +823,11 @@ local getdimen, mpt=tex.getdimen, tex.getdimen('jsc@mpt')/65536 local t = lua.get_functions_table() t[\the\ltjs@@magnify@font@calc] = function() - tex.sprint(math.floor(0.5+mpt*getdimen('dimen@'))) + tex.sprint(-2,math.floor(0.5+mpt*getdimen('dimen@'))) end function luatexja.ltjs_unmagnify_fsize(a) local s = luatexja.print_scaled(math.floor(0.5+a/mpt*65536)) - tex.sprint( (s:match('%.0$')) and s:sub(1,-3) or s ) + tex.sprint(-2, (s:match('%.0$')) and s:sub(1,-3) or s ) end } \endgroup @@ -798,7 +835,7 @@ \def\@tempa{#1}\def\@tempb{#2}% \ifx\@tempb\@empty \edef\@tempb{ scaled\directlua{% - tex.sprint(math.floor(0.5+\jsc@magscale*1000)) + tex.sprint(-2,math.floor(0.5+\jsc@magscale*1000)) }}% \else \dimen@\@tempb\relax @@ -1748,7 +1785,7 @@ % %<*report> \setlength\fullwidth{0.76\paperwidth} -\if@twocolumn \@tempdima=2zw \else \@tempdima=1zw \fi +\if@twocolumn \@tempdima=2\zw \else \@tempdima=1\zw \fi \divide\fullwidth\@tempdima \multiply\fullwidth\@tempdima \setlength\textwidth{\fullwidth} % @@ -2124,6 +2161,65 @@ % \end{macro} % \end{macro} % +% \section{改ページ(日本語\TeX{}開発コミュニティ版のみ)}\label{sec:cleardoublepage} +% +% \begin{macro}{\pltx@cleartorightpage} +% \begin{macro}{\pltx@cleartoleftpage} +% \begin{macro}{\pltx@cleartooddpage} +% \begin{macro}{\pltx@cleartoevenpage} +% [2017-02-24] コミュニティ版\pLaTeX の標準クラス2017/02/15に合わせて, +% 同じ命令を追加しました。 +% \begin{enumerate} +% \item|\pltx@cleartorightpage|:右ページになるまでページを繰る命令 +% \item|\pltx@cleartoleftpage|:左ページになるまでページを繰る命令 +% \item|\pltx@cleartooddpage|:奇数ページになるまでページを繰る命令 +% \item|\pltx@cleartoevenpage|:偶数ページになるまでページを繰る命令 +% \end{enumerate} +% となっています。 +% +% \begin{macrocode} +%<*article|book|report> +\def\pltx@cleartorightpage{\clearpage\if@twoside + \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\numexpr\c@page+\ltjgetparameter{direction}\relax + \hbox{}\thispagestyle{empty}\newpage + \if@twocolumn\hbox{}\newpage\fi + \fi\fi} +\def\pltx@cleartooddpage{\clearpage\if@twoside + \ifodd\c@page\else + \hbox{}\thispagestyle{empty}\newpage + \if@twocolumn\hbox{}\newpage\fi + \fi\fi} +\def\pltx@cleartoevenpage{\clearpage\if@twoside + \ifodd\c@page + \hbox{}\thispagestyle{empty}\newpage + \if@twocolumn\hbox{}\newpage\fi + \fi\fi} +% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\cleardoublepage} +% [2017-02-24] コミュニティ版\pLaTeX の標準クラス2017/02/15に合わせて, +% reportとbookクラスの場合に|\cleardoublepage|を再定義します。 +% \begin{macrocode} +%<*book|report> +\if@openleft + \let\cleardoublepage\pltx@cleartoleftpage +\else\if@openright + \let\cleardoublepage\pltx@cleartorightpage +\fi\fi +% +% \end{macrocode} +% \end{macro} +% % \section{ページスタイル}\label{sec:pagestyle} % % ページスタイルとして,\LaTeXe (欧文版)の標準クラス @@ -2726,7 +2822,7 @@ \begingroup \@svsechd \endgroup \unskip \@tempskipa #1\relax - \hskip -\@tempskipa\@inhibitglue + \hskip -\@tempskipa\ltjfakeparbegin \else \clubpenalty \@clubpenalty \everypar{}% @@ -2905,11 +3001,7 @@ % \begin{macrocode} %<*book> \newcommand\frontmatter{% - \if@openright - \cleardoublepage - \else - \clearpage - \fi + \pltx@cleartooddpage \@mainmatterfalse \pagenumbering{roman}} % \end{macrocode} @@ -2919,13 +3011,18 @@ % % ページ番号を算用数字にし,章番号を付けるようにします。 % +% [2017-03-05] |\frontmatter| と |\mainmatter| の2つの命令は, +% 改丁または改ページした後で |\pagenumbering{...}| でノンブルを1に +% リセットします。長い間 |\frontmatter| は \texttt{openany} のときに +% 単なる改ページとしていましたが,これではノンブルをリセットする際に +% 偶奇逆転が起こる場合がありました。\texttt{openany} かどうかに依らず +% 奇数ページまで繰るように修正することで,問題を解消しました。 +% 実は,\LaTeX の標準クラスでは1998年に修正されていた問題です +% (コミュニティ版\pLaTeX の標準クラス2017/03/05も参照)。 +% % \begin{macrocode} \newcommand\mainmatter{% -% \if@openright - \cleardoublepage -% \else -% \clearpage -% \fi + \pltx@cleartooddpage \@mainmattertrue \pagenumbering{arabic}} % \end{macrocode} @@ -2937,11 +3034,13 @@ % % \begin{macrocode} \newcommand\backmatter{% - \if@openright + \if@openleft + \cleardoublepage + \else\if@openright \cleardoublepage \else \clearpage - \fi + \fi\fi \@mainmatterfalse} % % \end{macrocode} @@ -2991,11 +3090,13 @@ % \begin{macrocode} %<*book|report> \newcommand\part{% - \if@openright + \if@openleft + \cleardoublepage + \else\if@openright \cleardoublepage \else \clearpage - \fi + \fi\fi \thispagestyle{empty}% 欧文用標準スタイルでは plain \if@twocolumn \onecolumn @@ -3111,11 +3212,11 @@ %<*book|report> \def\@endpart{\vfil\newpage \if@twoside - \if@openright %% added (2016/12/13) - \null - \thispagestyle{empty}% - \newpage - \fi %% added (2016/12/13) + \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, 2017/02/24) \fi \if@restonecol \twocolumn @@ -3136,7 +3237,8 @@ % \begin{macrocode} %<*book|report> \newcommand{\chapter}{% - \if@openright\cleardoublepage\else\clearpage\fi + \if@openleft\cleardoublepage\else + \if@openright\cleardoublepage\else\clearpage\fi\fi \plainifnotempty % 元: \thispagestyle{plain} \global\@topnum\z@ \if@english \@afterindentfalse \else \@afterindenttrue \fi @@ -3814,16 +3916,24 @@ % % タイトルを独立のページに出力するのに使われます。 % +% [2017-02-24] コミュニティ版\pLaTeX の標準クラス2017/02/15に合わせて, +% bookクラスでタイトルを必ず奇数ページに送るようにしました。といっても, +% 横組クラスしかありませんでしたので,従来の挙動は何も変わっていません。 +% また,book以外の場合のページ番号のリセットもコミュニティ版\pLaTeX の +% 標準クラス2017/02/15に合わせましたが,こちらも片面印刷あるいは +% 独立のタイトルページを作らないクラスばかりでしたので,従来の挙動は +% 何も変わらずに済みました。 +% % \begin{macrocode} \newenvironment{titlepage}{% -% \cleardoublepage +% \pltx@cleartooddpage %% 2017-02-24 \if@twocolumn \@restonecoltrue\onecolumn \else \@restonecolfalse\newpage \fi \thispagestyle{empty}% - \setcounter{page}\@ne + \ifodd\c@page\setcounter{page}\@ne\else\setcounter{page}\z@\fi }% {\if@restonecol\twocolumn \else \newpage \fi \if@twoside\else @@ -5078,10 +5188,13 @@ % する機能がありますが,|\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 @@ -5124,7 +5237,7 @@ \else \clubpenalty \@clubpenalty \everypar{}% - \fi\@inhibitglue}% + \fi\ltjfakeparbegin}% \if@noitemarg \@noitemargfalse \if@nmbrlist @@ -5157,14 +5270,14 @@ % % [2016-12-05 LTJ] 本家[2016-11-29],lltjcore.styでの変更に追従させます. % +% [2017-02-18 LTJ] lltjcore.sty側で戻したのを忘れていました. % \begin{macrocode} \def\@gnewline #1{% \ifvmode \@nolnerr \else -% \unskip \reserved@e {\reserved@f#1}\nobreak \hfil \break \hskip\z@ -% \unskip \reserved@e {\reserved@f#1}\nobreak \hfil \break \null - \inhibitglue \ignorespaces + \unskip \reserved@e {\reserved@f#1}\nobreak \hfil \break \null + \inhibitglue\ignorespaces \fi} % \end{macrocode} % @@ -5511,13 +5624,19 @@ % \paragraph{ページ設定} % % ページ設定の初期化です。 +% |stfloats|パッケージがシステムにインストールされている場合は、このパッケージを使って +% \pLaTeX の標準時と同じようにボトムフロートの下に脚注が組まれるようにします。 % +% [2017-02-19] \pLaTeX とLua\TeX-jaの|\@makecol|が違うことを +% 考慮していませんでした。 % \begin{macrocode} %
\if@slide \pagestyle{empty} \else \pagestyle{plain} \fi %\if@report \pagestyle{plain} \else \pagestyle{headings} \fi %\pagestyle{plain} %\pagestyle{headings} \pagenumbering{arabic} +\fnfixbottomtrue % 2017-02-19 +\IfFileExists{stfloats.sty}{\RequirePackage{stfloats}\fnbelowfloat}{} \if@twocolumn \twocolumn \sloppy