summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/luatex/luatexja/ltjclasses.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2017-02-21 00:35:20 +0000
committerKarl Berry <karl@freefriends.org>2017-02-21 00:35:20 +0000
commit3bbc63d38cf997ca6f9ca5700f4f9f98b014e0d9 (patch)
treef97d4d0a3999b87a34cfee47958c778979bf8eaa /Master/texmf-dist/source/luatex/luatexja/ltjclasses.dtx
parent6e8dfd310421201e3ac8847d1e8b8fa98e81c4d8 (diff)
luatexja (19feb17)
git-svn-id: svn://tug.org/texlive/trunk@43283 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/luatex/luatexja/ltjclasses.dtx')
-rw-r--r--Master/texmf-dist/source/luatex/luatexja/ltjclasses.dtx279
1 files changed, 260 insertions, 19 deletions
diff --git a/Master/texmf-dist/source/luatex/luatexja/ltjclasses.dtx b/Master/texmf-dist/source/luatex/luatexja/ltjclasses.dtx
index e4afbbf29dc..495a3a658d6 100644
--- a/Master/texmf-dist/source/luatex/luatexja/ltjclasses.dtx
+++ b/Master/texmf-dist/source/luatex/luatexja/ltjclasses.dtx
@@ -4,6 +4,8 @@
% Original: jclasses.dtx
%
% Copyright 1995-2001 ASCII Corporation.
+% Copyright (c) 2010 ASCII MEDIA WORKS
+% Copyright (c) 2016-2017 Japanese TeX Development Community
%
% This file is part of the pLaTeX2e system.
% -----------------------------------------
@@ -91,6 +93,18 @@
% twoside and openright (sync with classes.dtx v1.4b)}
% \changes{v1.7c-ltj-12}{2017/01/17}{|\stockwidth|,~|\stockheight|をトンボオプション指定時にのみ定義
% (aminophenさん,ありがとうございます).}
+% \changes{v1.7c}{2016/12/18}{奇妙なarticleガードとコードを削除して
+% ドキュメントを追加}
+% \changes{v1.7d}{2017/02/15}{\cs{if@openleft}スイッチ追加}
+% \changes{v1.7d}{2017/02/15}{openleftオプション追加}
+% \changes{v1.7d}{2017/02/15}{\cs{cleardoublepage}の代用となる命令群を追加}
+% \changes{v1.7d}{2017/02/15}{bookクラスでtitlepageを必ず奇数ページ
+% に送るように変更}
+% \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さん,ありがとうございます).}
% \fi
%
% \iffalse
@@ -120,7 +134,7 @@
%<11pt&bk>\ProvidesFile{ltjtbk11.clo}
%<12pt&bk>\ProvidesFile{ltjtbk12.clo}
%</tate>
- [2017/01/17 v1.7c-ltj-12
+ [2017/02/19 v1.7d-ltj-13
%<article|report|book> Standard LuaLaTeX-ja class]
%<10pt|11pt|12pt> Standard LuaLaTeX-ja file (size option)]
%<*driver>
@@ -230,7 +244,8 @@
% \end{macro}
%
% \begin{macro}{\if@openright}
-% chapterレベルを奇数ページからはじめるかどうかのスイッチです。
+% chapterレベルを右ページからはじめるかどうかのスイッチです。
+% 横組では奇数ページ、縦組では偶数ページから始まることになります。
% reportクラスのデフォルトは、``no''です。
% bookクラスのデフォルトは、``yes''です。
% \begin{macrocode}
@@ -238,6 +253,17 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\if@openleft}
+% chapterレベルを左ページからはじめるかどうかのスイッチです。
+% 日本語\TeX{}開発コミュニティ版で新たに追加されました。
+% 横組では偶数ページ、縦組では奇数ページから始まることになります。
+% reportクラスとbookクラスの両方で、デフォルトは``no''です。
+% \changes{v1.7d}{2017/02/15}{\cs{if@openleft}スイッチ追加}
+% \begin{macrocode}
+%<!article>\newif\if@openleft
+% \end{macrocode}
+% \end{macro}
+%
% \changes{v1.0c}{1995/12/25}{Macro \cs{if@openbib} removed}
%
% \begin{macro}{\if@mainmatter}
@@ -441,12 +467,15 @@
% \subsection{右左起こしオプション}
% chapterを右ページあるいは左ページから
% はじめるかどうかを指定するオプションです。
+% |openleft|オプションは日本語\TeX{}開発コミュニティによって追加されました。
+% \changes{v1.7d}{2017/02/15}{openleftオプション追加}
% \begin{macrocode}
%<!article>\if@compatibility
%<book>\@openrighttrue
%<!article>\else
-%<!article>\DeclareOption{openright}{\@openrighttrue}
-%<!article>\DeclareOption{openany}{\@openrightfalse}
+%<!article>\DeclareOption{openright}{\@openrighttrue\@openleftfalse}
+%<!article>\DeclareOption{openleft}{\@openlefttrue\@openrightfalse}
+%<!article>\DeclareOption{openany}{\@openrightfalse\@openleftfalse}
%<!article>\fi
% \end{macrocode}
%
@@ -1736,6 +1765,92 @@
% \end{macro}
%
%
+% \section{改ページ(日本語\TeX{}開発コミュニティ版のみ)}\label{sec:cleardoublepage}
+%
+% \begin{macro}{\pltx@cleartorightpage}
+% \begin{macro}{\pltx@cleartoleftpage}
+% \begin{macro}{\pltx@cleartooddpage}
+% \begin{macro}{\pltx@cleartoevenpage}
+% |\cleardoublepage|命令は、\LaTeX{}カーネルでは「奇数ページになるまでページを
+% 繰る命令」として定義されています。しかしp\LaTeX{}カーネルでは、アスキーの方針
+% により「横組では奇数ページになるまで、縦組では偶数ページになるまでページを
+% 繰る命令」に再定義されています。すなわち、p\LaTeX{}では縦組でも横組でも
+% 右ページになるまでページを繰ることになります。
+%
+% p\LaTeX{}標準クラスのbookは、横組も縦組も|openright|がデフォルトになっていて、
+% これは従来p\LaTeX{}カーネルで定義された|\cleardoublepage|を利用していました。
+% しかし、縦組で奇数ページ始まりの文書を作りたい場合もあるでしょうから、
+% コミュニティ版クラスでは以下の(非ユーザ向け)命令を追加します。
+% \begin{enumerate}
+% \item|\pltx@cleartorightpage|:右ページになるまでページを繰る命令
+% \item|\pltx@cleartoleftpage|:左ページになるまでページを繰る命令
+% \item|\pltx@cleartooddpage|:奇数ページになるまでページを繰る命令
+% \item|\pltx@cleartoevenpage|:偶数ページになるまでページを繰る命令
+% \end{enumerate}
+% \changes{v1.7d}{2017/02/15}{\cs{cleardoublepage}の代用となる命令群を追加}
+% \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
+ \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
+ \fi\fi}
+% \end{macrocode}
+%
+% |\pltx@cleartooddpage|は\LaTeX{}の|\cleardoublepage|に似ていますが、
+% 上の2つに合わせるため|\thispagestyle{empty}|を追加してあります。
+% \begin{macrocode}
+\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}
+% そしてreportとbookクラスの場合は、ユーザ向け命令である|\cleardoublepage|を、
+% |openright|オプションが指定されている場合は|\pltx@cleartorightpage|に、
+% |openleft|オプションが指定されている場合は|\pltx@cleartoleftpage|に、
+% それぞれ|\let|します。|openany|の場合はp\LaTeX{}カーネルの定義のままです。
+% \begin{macrocode}
+%<*!article>
+\if@openleft
+ \let\cleardoublepage\pltx@cleartoleftpage
+\else\if@openright
+ \let\cleardoublepage\pltx@cleartorightpage
+\fi\fi
+%</!article>
+% \end{macrocode}
+% \end{macro}
+%
+%
%
% \section{ページスタイル}\label{sec:pagestyle}
% つぎの6種類のページスタイルを使用できます。
@@ -2047,7 +2162,7 @@
%
% \section{文書コマンド}
%
-% \subsubsection{表題}
+% \subsection{表題}
%
% \begin{macro}{\title}
% \begin{macro}{\author}
@@ -2076,6 +2191,84 @@
% 右起こしページ用のページパラメータでは誤った結果になります。
% 二段組スタイルでも一段組のページが作られます。
%
+% \noindent\emph{日本語\TeX{}開発コミュニティによる変更}:
+% 上にあるのはアスキー版の説明です。改めてアスキー版の挙動を整理すると、
+% 以下のようになります。
+% \begin{enumerate}
+% \item アスキー版では、タイトルページの番号を必ず1にリセットしていましたが、
+% これは正しくありません。これは、タイトルページが奇数ページ目か偶数ページ目
+% かにかかわらず、レイアウトだけ奇数ページ用が適用されてしまうからです。
+% さらに、タイトルの次のページも偶数のページ番号を持ってしまうため、両面印刷
+% で奇数ページと偶数ページが交互に出なくなるという問題もあります。
+% \item アスキー版bookクラスは、タイトルページを必ず|\cleardoublepage|で始めて
+% いました。p\LaTeX{}カーネルでの|\cleardoublepage|の定義から、縦組の既定では
+% タイトルが偶数ページ目に出ることになります。これ自体が正しくないと断定する
+% ことはできませんが、タイトルのページ番号を1にリセットすることと合わさって、
+% 偶数ページに送ったタイトルに奇数ページ用レイアウトが適用されてしまうという
+% 結果は正しくありません。
+% \end{enumerate}
+% そこで、コミュニティ版ではタイトルのレイアウトが必ず奇数ページ用になるという
+% 挙動を支持し、bookクラスではタイトルページを奇数ページ目に送ることにしました。
+% これでタイトルページが表紙らしく見えるようになります。また、reportクラスの
+% ようなタイトルが成り行きに従って出る場合には
+% \begin{itemize}
+% \item 奇数ページ目に出る場合、ページ番号を1(奇数)にリセット
+% \item 偶数ページ目に出る場合、ページ番号を0(偶数)にリセット
+% \end{itemize}
+% としました。
+%
+% 一つめの例を考えます。
+%\begin{verbatim}
+% \documentclass{tbook}
+% \title{タイトル}\author{著者}
+% \begin{document}
+% \maketitle
+% \chapter{チャプター}
+% \end{document}
+%\end{verbatim}
+% アスキー版tbookクラスでの結果は
+%\begin{verbatim}
+% 1ページ目:空白(ページ番号1は非表示)
+% 2ページ目:タイトル(奇数レイアウト、ページ番号1は非表示)
+% 3ページ目:チャプター(偶数レイアウト、ページ番号2)
+%\end{verbatim}
+% ですが、仮に最初の空白ページさえなければ
+%\begin{verbatim}
+% 1ページ目:タイトルすなわち表紙(奇数レイアウト、ページ番号1は非表示)
+% 2ページ目:チャプター(偶数レイアウト、ページ番号2)
+%\end{verbatim}
+% とみなせるため、コミュニティ版では空白ページを発生させないようにしました。
+%
+% 二つめの例を考えます。
+%\begin{verbatim}
+% \documentclass{tbook}
+% \title{タイトル}\author{著者}
+% \begin{document}
+% テスト文章
+% \maketitle
+% \chapter{チャプター}
+% \end{document}
+%\end{verbatim}
+% アスキー版tbookクラスでの結果は
+%\begin{verbatim}
+% 1ページ目:テスト文章(奇数レイアウト、ページ番号1)
+% 2ページ目:タイトル(奇数レイアウト、ページ番号1は非表示)
+% 3ページ目:チャプター(偶数レイアウト、ページ番号2)
+%\end{verbatim}
+% ですが、これでは奇数と偶数のページ番号が交互になっていないので正しく
+% ありません。そこで、コミュニティ版では
+%\begin{verbatim}
+% 1ページ目:テスト文章(奇数レイアウト、ページ番号1)
+% 2ページ目:空白ページ(ページ番号2は非表示)
+% 3ページ目:タイトル(奇数レイアウト、ページ番号1は非表示)
+% 4ページ目:チャプター(偶数レイアウト、ページ番号2)
+%\end{verbatim}
+% と直しました。
+%
+% なお、p\LaTeX~2.09互換モードはアスキー版のまま、すなわち「ページ番号をゼロに
+% 設定」としてあります。これは、横組の右起こしの挙動としては誤りですが、縦組の
+% 右起こしの挙動としては一応正しくなっているといえます。
+%
% 最初に互換モードの定義を作ります。
% \begin{macrocode}
\if@compatibility
@@ -2092,18 +2285,22 @@
% \end{macrocode}
%
% そして、\LaTeX{}ネイティブのための定義です。
++% \changes{v1.7d}{2017/02/15}{bookクラスでtitlepageを必ず奇数ページ
+% に送るように変更}
+% \changes{v1.7d}{2017/02/15}{titlepageのページ番号を奇数ならば1に、
+% 偶数ならば0にリセットするように変更}
% \begin{macrocode}
\else
\newenvironment{titlepage}
{%
-%<book> \cleardoublepage
+%<book> \pltx@cleartooddpage %% 2017/02/15
\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse\newpage
\fi
\thispagestyle{empty}%
- \setcounter{page}\@ne
+ \ifodd\c@page\setcounter{page}\@ne\else\setcounter{page}\z@\fi %% 2017/02/15
}%
{\if@restonecol\twocolumn \else \newpage \fi
% \end{macrocode}
@@ -2128,10 +2325,14 @@
% 縦組のときは、|\thanks|コマンドを|\p@thanks|に|\let|します。
% このコマンドは|\footnotetext|を使わず、直接、文字を|\@thanks|に格納
% していきます。
+%
+% 著者名の脇に表示される合印は直立した数字、注釈側は横に寝た数字となっていまし
+% たが、不自然なので|\hbox{\yoko ...}|を追加し、両方とも直立するようにしました。
+% \changes{v1.7d}{2017/02/15}{縦組クラスの所属表示の番号を直立にした}
% \begin{macrocode}
\def\p@thanks#1{\footnotemark
\protected@xdef\@thanks{\@thanks
- \protect{\noindent$\m@th^\thefootnote$~#1\protect\par}}}
+ \protect{\noindent\hbox{\yoko$\m@th^\thefootnote$}#1\protect\par}}}
% \end{macrocode}
% \end{macro}
%
@@ -2257,7 +2458,7 @@
% \end{macrocode}
% \end{macro}
%
-% \subsubsection{概要}
+% \subsection{概要}
%
% \begin{environment}{abstract}
% 要約文のための環境です。bookクラスでは使えません。
@@ -2294,7 +2495,7 @@
%
% \subsection{章見出し}
%
-% \subsection{マークコマンド}
+% \subsubsection{マークコマンド}
%
% \begin{macro}{\chaptermark}
% \begin{macro}{\sectionmark}
@@ -2470,13 +2671,16 @@
% \begin{macrocode}
%<*book>
\newcommand{\frontmatter}{%
- \if@openright \cleardoublepage \else \clearpage \fi
+ \if@openleft \cleardoublepage \else
+ \if@openright \cleardoublepage \else \clearpage \fi \fi
\@mainmatterfalse\pagenumbering{roman}}
\newcommand{\mainmatter}{%
- \if@openright \cleardoublepage \else \clearpage \fi
+ \if@openleft \cleardoublepage \else
+ \if@openright \cleardoublepage \else \clearpage \fi \fi
\@mainmattertrue\pagenumbering{arabic}}
\newcommand{\backmatter}{%
- \if@openright \cleardoublepage \else \clearpage \fi
+ \if@openleft \cleardoublepage \else
+ \if@openright \cleardoublepage \else \clearpage \fi \fi
\@mainmatterfalse}
%</book>
% \end{macrocode}
@@ -2568,7 +2772,8 @@
% \begin{macrocode}
%<*report|book>
\newcommand{\part}{%
- \if@openright \cleardoublepage \else \clearpage \fi
+ \if@openleft \cleardoublepage \else
+ \if@openright \cleardoublepage \else \clearpage \fi \fi
\thispagestyle{empty}%
\if@twocolumn\onecolumn\@tempswatrue\else\@tempswafalse\fi
\null\vfil
@@ -2672,9 +2877,11 @@
%<*report|book>
\def\@endpart{\vfil\newpage
\if@twoside
- \if@openright %% added (2016/12/18)
+ \if@openleft %% \if@openleft added (2017/02/15)
+ \null\thispagestyle{empty}\newpage
+ \else\if@openright %% \if@openright added (2016/12/18)
\null\thispagestyle{empty}\newpage
- \fi %% added (2016/12/18)
+ \fi\fi %% added (2016/12/18, 2017/02/15)
\fi
% \end{macrocode}
% 二段組文書のとき、スイッチを二段組モードに戻す必要があります。
@@ -2694,6 +2901,10 @@
% なお、縦組の場合でも右ページからはじまるように、
% フォーマットファイルで|\clerdoublepage|が定義されています。
%
+% \emph{日本語\TeX{}開発コミュニティによる補足}:コミュニティ版の実装では、
+% |openright|と|openleft|の場合に|\cleardoublepage|をクラスファイルの中で
+% 再々定義しています。\ref{sec:cleardoublepage}を参照してください。
+%
% 章見出しが出力されるページのスタイルは、\pstyle{jpl@in}になります。
% \pstyle{jpl@in}は、\pstyle{headnomble}か\pstyle{footnomble}のいずれかです。
% 詳細は、第\ref{sec:pagestyle}節を参照してください。
@@ -2703,7 +2914,8 @@
% \begin{macrocode}
%<*report|book>
\newcommand{\chapter}{%
- \if@openright\cleardoublepage\else\clearpage\fi
+ \if@openleft \cleardoublepage \else
+ \if@openright \cleardoublepage \else \clearpage \fi \fi
\thispagestyle{jpl@in}%
\global\@topnum\z@
\@afterindenttrue
@@ -2715,6 +2927,12 @@
% このマクロは、章見出しに番号を付けるときに呼び出されます。
% \Lcount{secnumdepth}が$-1$よりも大きく、
% |\@mainmatter|が真(bookクラスの場合)のときに、番号を出力します。
+%
+% \emph{日本語\TeX{}開発コミュニティによる補足}:本家\LaTeX{}の
+% \file{classes}では、二段組のときチャプタータイトルは一段組に戻され
+% ますが、アスキーによる\file{jclasses}では二段組のままにされています。
+% したがって、チャプタータイトルより高い位置に右カラムの始点が来るという
+% 挙動になっていますが、コミュニティ版でもアスキー版の挙動を維持しています。
% \begin{macrocode}
\def\@chapter[#1]#2{%
\ifnum \c@secnumdepth >\m@ne
@@ -2765,11 +2983,14 @@
%
% \begin{macro}{\@schapter}
% このマクロは、章見出しに番号を付けないときに呼び出されます。
+%
+% \emph{日本語\TeX{}開発コミュニティによる補足}:やはり二段組でチャプター
+ タイトルより高い位置に右カラムの始点が来るという挙動を維持してあります。
+% \changes{v1.7c}{2016/12/18}{奇妙なarticleガードとコードを削除して
+% ドキュメントを追加}
% \begin{macrocode}
\def\@schapter#1{%
-%<article> \if@twocolumn\@topnewpage[\@makeschapterhead{#1}]\else
\@makeschapterhead{#1}\@afterheading
-%<article> \fi
}
% \end{macrocode}
% \end{macro}
@@ -4296,14 +4517,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}
%<book>\pagestyle{headings}
%<!book>\pagestyle{plain}
\pagenumbering{arabic}
\raggedbottom
+\fnfixbottomtrue % 2017-02-19
+\IfFileExists{stfloats.sty}{\RequirePackage{stfloats}\fnbelowfloat}{}
\if@twocolumn
\twocolumn
\sloppy
@@ -4334,6 +4561,20 @@
%</article|report|book>
% \end{macrocode}
%
+% \section{各種パッケージへの対応}
+% もともと縦組での利用を想定されていないいくつかのパッケージについて、
+% 補正するためのコードを記述しておきます。
+% この節のコードは|filehook|パッケージ(Lua\TeX-ja読み込み時に自動でロードされます)
+% の機能を用いています。
+%
+% \subsection{\texttt{ftnright}パッケージ}
+% 脚注番号の書式が|ftnright|パッケージによって勝手に書き換えられるので、
+% パッケージ読み込み前に予め退避しておき、読み込み後に復帰させます。
+% \changes{v1.7d}{2017/02/19}{コード追加}
+% \begin{macrocode}
+\AtBeginOfPackageFile*{ftnright}{\let\ltjt@orig@@makefntext=\@makefntext}
+\AtEndOfPackageFile*{ftnright}{\let\@makefntext=\ltjt@orig@@makefntext}
+% \end{macrocode}
%
%
% \Finale