summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/bxjscls
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2017-10-21 21:37:58 +0000
committerKarl Berry <karl@freefriends.org>2017-10-21 21:37:58 +0000
commit8c965e5ca448a84cc51fea64d297cdcf00c4a1f2 (patch)
treed3c78624c4f615f9b84604ce7cde3380559d269b /Master/texmf-dist/source/latex/bxjscls
parent10375f38cec7e121a602f2d39f212169ffbfe4bf (diff)
bxjscls (21oct17)
git-svn-id: svn://tug.org/texlive/trunk@45566 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/bxjscls')
-rw-r--r--Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx363
1 files changed, 307 insertions, 56 deletions
diff --git a/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx b/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx
index 0e9f43cea11..d0a7daf8242 100644
--- a/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx
+++ b/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx
@@ -68,7 +68,9 @@
%<*driver>
\ProvidesFile{bxjscls.dtx}
%</driver>
- [2017/09/24 v1.6a BXJS document classes]
+ [2017/10/21 v1.7 BXJS document classes]
+% [2017/09/28 v1.6b BXJS document classes]
+% [2017/09/24 v1.6a BXJS document classes]
% [2017/09/09 v1.6 BXJS document classes]
% based on jsclasses [2017/09/03]
% [2017/07/07 v1.5d BXJS document classes]
@@ -1788,13 +1790,14 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\ifbxjs@xkanjiskip@cmd}
-% 〔スイッチ〕 |xkanjiskip-cmd| の指定値。
+% \begin{macro}{\ifbxjs@jaspace@cmd}
+% 〔スイッチ〕 |jaspace-cmd| の指定値。
% \begin{macrocode}
-\newif\ifbxjs@xkanjiskip@cmd \bxjs@xkanjiskip@cmdtrue
-\let\bxjs@kv@xkanjiskipcmd@true\bxjs@xkanjiskip@cmdtrue
-\let\bxjs@kv@xkanjiskipcmd@false\bxjs@xkanjiskip@cmdfalse
-\define@key{bxjs}{xkanjiskip-cmd}[true]{\bxjs@set@keyval{xkanjiskipcmd}{#1}{}}
+\newif\ifbxjs@jaspace@cmd \bxjs@jaspace@cmdtrue
+\let\bxjs@kv@jaspacecmd@true\bxjs@jaspace@cmdtrue
+\let\bxjs@kv@jaspacecmd@false\bxjs@jaspace@cmdfalse
+\define@key{bxjs}{jaspace-cmd}[true]{\bxjs@set@keyval{jaspacecmd}{#1}{}}
+\define@key{bxjs}{xkanjiskip-cmd}[true]{\bxjs@set@keyval{jaspacecmd}{#1}{}}
% \end{macrocode}
% \end{macro}
%
@@ -1808,6 +1811,24 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\bxjs@everyparhook}
+% |everyparhook| の指定値。
+% \begin{macrocode}
+\chardef\bxjs@everyparhook@none=0
+\chardef\bxjs@everyparhook@compat=1
+\chardef\bxjs@everyparhook@modern=2
+\if j\jsEngine
+ \let\bxjs@everyparhook\bxjs@everyparhook@compat
+\else
+ \let\bxjs@everyparhook\bxjs@everyparhook@modern
+\fi
+\def\bxjs@kv@everyparhook@none{\let\bxjs@everyparhook\bxjs@everyparhook@none}
+\def\bxjs@kv@everyparhook@compat{\let\bxjs@everyparhook\bxjs@everyparhook@compat}
+\def\bxjs@kv@everyparhook@modern{\let\bxjs@everyparhook\bxjs@everyparhook@modern}
+\define@key{bxjs}{everyparhook}{\bxjs@set@keyval{everyparhook}{#1}{}}
+% \end{macrocode}
+% \end{macro}
+%
% \end{ZRnote}
%
% \paragraph{オプションの実行}
@@ -4574,6 +4595,19 @@
% 前のアキがちょうどゼロの場合にもうまくいくように,多少変えてあります。
% |\everyparhook| も挿入しています。
%
+% \begin{ZRnote}
+% |\everyparhook| の挿入は |everyparhook=compat| の時のみ行う。
+% \begin{macro}{\bxjs@if@ceph}
+% |everyparhook=compat| である場合にのみ直後のトークンを実行する。
+% \begin{macrocode}
+\ifnum\bxjs@everyparhook=\bxjs@everyparhook@compat
+ \let\bxjs@if@ceph\@firstofone
+\else \let\bxjs@if@ceph\@gobble
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{ZRnote}
+%
% \begin{macrocode}
\def\@sect#1#2#3#4#5#6[#7]#8{%
\ifnum #2>\c@secnumdepth
@@ -4636,11 +4670,10 @@
\unskip
\@tempskipa #1\relax
\hskip -\@tempskipa
- \bxjs@ltj@inhibitglue
\else
\clubpenalty \@clubpenalty
- \everypar{\everyparhook}%
- \fi\everyparhook}%
+ \everypar\expandafter{\bxjs@if@ceph\everyparhook}%
+ \fi\bxjs@if@ceph\everyparhook}%
\else
\par \nobreak
\vskip \@tempskipa
@@ -4667,14 +4700,6 @@
\@xsect{#3}}
% \end{macrocode}
%
-% \begin{ZRnote}
-% 上記の定義中の |\bxjs@ltj@inhibitglue| は{Lua\TeX-ja}で
-% 用いられるフック。
-% \begin{macrocode}
-\let\bxjs@ltj@inhibitglue\@empty
-% \end{macrocode}
-% \end{ZRnote}
-%
% \paragraph{柱関係の命令}
%
% \begin{macro}{\chaptermark}
@@ -7170,7 +7195,9 @@
% これの初期値を先述の |\jsInhibitGlueAtParTop| とする。
% \begin{macrocode}
\def\everyparhook{\jsInhibitGlueAtParTop}
+\ifnum\bxjs@everyparhook=\bxjs@everyparhook@compat
\AtBeginDocument{\everypar{\everyparhook}}
+\fi
% \end{macrocode}
% \end{macro}
% \end{ZRnote}
@@ -7186,10 +7213,12 @@
% 高いので,専用の命令 |\jsc@ig@temp| に置き換えました(Issue \#54)。
%
% \begin{ZRnote}
-% \begin{macro}{\@inhibitglue}
-% JSクラスでの |\jsInhibitGlueAtParTop| の実装。
-% (これは{(u)\pTeX}専用である。)
+% 次の |\@inhibitglue| はJSクラスでの |\jsInhibitGlueAtParTop| の
+% 実装である。
+% エンジンが |(u)platex| の場合はこれを採用する。
+% \end{ZRnote}
% \begin{macrocode}
+\ifx j\jsEngine
\def\@inhibitglue{%
\futurelet\@let@token\@@inhibitglue}
\begingroup
@@ -7217,10 +7246,18 @@
\inhibitglue
\fi
\fi}
+\fi
% \end{macrocode}
-% \end{macro}
%
+% \begin{ZRnote}
+% ここからしばらく
+% 「(本物の)|\everypar| に追加した |\everyparhook| を保持する」
+% ためのパッチ処理が続く。
+% これは、|everyparhook=compat| の場合にのみ実行する。
% \end{ZRnote}
+% \begin{macrocode}
+\ifnum\bxjs@everyparhook=\bxjs@everyparhook@compat
+% \end{macrocode}
%
% これだけではいけないようです。あちこちに |\everypar| を初期化するコマンドが
% 隠されていました。
@@ -7293,7 +7330,6 @@
\clubpenalty \@clubpenalty
\everypar{\everyparhook}%
\fi
- \bxjs@ltj@inhibitglue
\everyparhook}%
\if@noitemarg
\@noitemargfalse
@@ -7335,6 +7371,13 @@
\fi\everyparhook}}
% \end{macrocode}
%
+% \begin{ZRnote}
+% 「|\everyparhook| 用のパッチ処理」はここまで。
+% \end{ZRnote}
+% \begin{macrocode}
+\fi
+% \end{macrocode}
+%
% |\@gnewline| についてはちょっと複雑な心境です。
% もともとのp\LaTeXe は段落の頭にグルーが入る方で統一されていました。
% しかし |\\| の直後にはグルーが入らず,不統一でした。
@@ -7344,7 +7387,13 @@
%
% しかし単に戻すだけでも駄目みたいなので,ここでも最後にグルーを消しておきます。
%
+% \begin{ZRnote}
+% \Note |luatexja| を読みこんだ場合に lltjcore.sty によって上書きされる
+% のを防ぐため遅延させる。
+% \end{ZRnote}
% \begin{macrocode}
+\ifnum\bxjs@everyparhook=\bxjs@everyparhook@none\else
+\AtEndOfPackage{%
\def\@gnewline #1{%
\ifvmode
\@nolnerr
@@ -7352,6 +7401,8 @@
\unskip \reserved@e {\reserved@f#1}\nobreak \hfil \break \null
\jsInhibitGlue \ignorespaces
\fi}
+}
+\fi
% \end{macrocode}
%
% \section{いろいろなロゴ}
@@ -8233,6 +8284,43 @@
\fi
% \end{macrocode}
%
+% \paragraph{段落頭でのグルー挿入禁止}
+%
+% \begin{macro}{\bxjs@check@everyparhook}
+% 本体開始時において |\everyparhook| を検査して、
+% “結局何もしない”ことになっている場合は、
+% 副作用を完全に無くすために |\everyparhook| を空にする。
+% \begin{macrocode}
+\@onlypreamble\bxjs@check@everyparhook
+\def\bxjs@check@everyparhook{%
+ \ifx\jsInhibitGlueAtParTop\@empty
+ \def\bxjs@tmpa{\jsInhibitGlueAtParTop}%
+ \ifx\everyparhook\bxjs@tmpa
+ \let\everyparhook\@empty
+ \fi
+ \fi}
+\AtBeginDocument{\bxjs@check@everyparhook}
+% \end{macrocode}
+% \end{macro}
+%
+% |everyparhook=modern| の場合の、|\everyparhook| の有効化の実装。
+% \Note 本体開始時ではなく最初から有効化していることに注意。
+% \begin{macrocode}
+\ifnum\bxjs@everyparhook=\bxjs@everyparhook@modern
+% \end{macrocode}
+% まず |\everypar| を“乗っ取る”処理を行う。
+% \begin{macrocode}
+ \let\bxjs@everypar\everypar
+ \newtoks\everypar
+ \everypar\bxjs@everypar
+% \end{macrocode}
+% そして本物の |\everypar| では、最後で常に |\everyparhook| が実行される
+% ようにする。
+% \begin{macrocode}
+ \bxjs@everypar{\the\expandafter\everypar\everyparhook}%
+\fi
+% \end{macrocode}
+%
% \paragraph{fancyhdr対策}
% |fancyhdr| オプションの値が |true| であり、
% かつ |fancyhdr| が使用された場合に以下の対策を行う。
@@ -8312,6 +8400,54 @@
\global\let\bxjs@pagestyle@hook\relax}
% \end{macrocode}
%
+% \paragraph{和文空白命令}
+% \begin{macrocode}
+\ifbxjs@jaspace@cmd
+% \end{macrocode}
+%
+% \begin{macro}{\jaenspace}
+% 半角幅の水平空き。
+% \begin{macrocode}
+ \def\jaenspace{\hskip.5\jsZw\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jathinspace}
+% 和欧文間空白を入れるユーザ命令。
+% \Note minimalではダミー定義。
+% \begin{macrocode}
+ \def\jathinspace{\hskip\z@skip}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\_}
+% 全角空白文字1つからなる名前の制御綴。
+% |\zwspace| と等価になる。
+% \begin{macrocode}
+ \def\ {\zwspace}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jaspace}
+% |jlreq| クラスと互換の命令。
+% \begin{macrocode}
+ \DeclareRobustCommand*{\jaspace}[1]{%
+ \expandafter\ifx\csname bxjs@jaspace@@#1\endcsname\relax
+ \ClassError\bxjs@clsname
+ {Unknown jaspace: #1}{\@eha}%
+ \else
+ \csname bxjs@jaspace@@#1\endcsname
+ \fi}
+ \def\bxjs@jaspace@@zenkaku{\hskip 1\jsZw\relax}
+ \def\bxjs@jaspace@@nibu{\hskip .5\jsZw\relax}
+ \def\bxjs@jaspace@@shibu{\hskip .25\jsZw\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\fi
+% \end{macrocode}
+%
% 終わり。
% \begin{macrocode}
\fi
@@ -8801,6 +8937,39 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\jsCheckHyperrefUnicode}
+% 「|hyperref| の |unicode| オプションの値を検証する」ための
+% 本体開始時のフック。
+% \begin{macrocode}
+\@onlypreamble\jsCheckHyperrefUnicode
+\let\jsCheckHyperrefUnicode\@empty
+\AtBeginDocument{\jsCheckHyperrefUnicode}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@check@hyperref@unicode}
+% |hyperref| の |unicode| オプションの値を本体開始時に検証する。
+% \begin{macrocode}
+\@onlypreamble\bxjs@check@hyperref@unicode
+\def\bxjs@check@hyperref@unicode#1{%
+ \g@addto@macro\jsCheckHyperrefUnicode{%
+ \@tempswafalse
+ \begingroup
+ \expandafter\ifx\csname ifHy@unicode\endcsname\relax
+ \aftergroup\@tempswatrue \fi
+ \expandafter\ifx\csname ifHy@unicode\expandafter\endcsname
+ \csname if#1\endcsname
+ \aftergroup\@tempswatrue \fi
+ \endgroup
+ \if@tempswa\else
+ \ClassError\bxjs@clsname
+ {The value of hyperref 'unicode' key is not suitable\MessageBreak
+ for the present engine (must be #1)}%
+ {\@ehc}%
+ \fi}}
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\bxjs@urgent@special}
% DVIのなるべく早い位置にspecialを出力する。
% \begin{macrocode}
@@ -8879,16 +9048,10 @@
\fi
% \end{macrocode}
%
-% 和欧文間空白の命令 |\>| の実装。
+% 和欧文間空白の命令 |\jathinspace| の実装。
% \begin{macrocode}
-\ifbxjs@xkanjiskip@cmd
- \def\bxjs@put@xkanjiskip{%
- \relax\ifmmode \mskip\medmuskip
- \else \hskip\xkanjiskip
- \fi}
- \ifjsWitheTeX \protected\def\>{\bxjs@put@xkanjiskip}
- \else \def\>{\protect\bxjs@put@xkanjiskip}
- \fi
+\ifbxjs@jaspace@cmd
+ \def\jathinspace{\hskip\xkanjiskip}
\fi
% \end{macrocode}
%
@@ -8970,7 +9133,7 @@
% |unicode| にしてはいけない。
% \begin{macrocode}
\ifbxjs@hyperref@enc
- \bxjs@fix@hyperref@unicode{false}
+ \bxjs@check@hyperref@unicode{false}
\fi
% \end{macrocode}
%
@@ -9034,10 +9197,14 @@
% オプション(プリセット指定)に渡す。
% (|auto| ならば |\bxjs@get@kanjiEmbed| を実行する。)
% スケール値(|\jsScale|)の反映は bxcjkjatype の側で行われる。
+% \Note Pandocモードでは |autotilde| を指定しない。
% \begin{macrocode}
\bxjs@adjust@jafont{f}
\edef\bxjs@tmpa{\bxjs@catopt\bxjs@tmpa\bxjs@jp@font}
-\edef\bxjs@tmpa{\bxjs@catopt\bxjs@tmpa{whole,autotilde}}
+\edef\bxjs@tmpa{\bxjs@catopt\bxjs@tmpa{whole}}
+\def\bxjs@tmpb{pandoc}\ifx\bxjs@tmpb\bxjs@jadriver\else
+ \edef\bxjs@tmpa{\bxjs@catopt\bxjs@tmpa{autotilde}}
+\fi
\edef\bxjs@next{%
\noexpand\RequirePackage[\bxjs@tmpa]{bxcjkjatype}[2013/10/15]% v0.2c
}\bxjs@next
@@ -9119,11 +9286,10 @@
\CJKforced{#1}}
% \end{macrocode}
%
-% |\>| は |bxcjkjatype| で定義されているが、保護付のマクロに変換する。
+% 和欧文間空白の命令 |\jathinspace| の実装。
% \begin{macrocode}
-\ifbxjs@xkanjiskip@cmd
- \protected\def\>{%
- \relax\ifmmode \mskip\medmuskip \else \CJKecglue\ignorespaces \fi}
+\ifbxjs@jaspace@cmd
+ \protected\def\jathinspace{\CJKecglue}
\fi
% \end{macrocode}
%
@@ -9213,8 +9379,19 @@
% 近いものが得られるらしい。
%
% 従って、|\jsInhibitGlueAtParTop| は結局何もしないことにする。
+%
+% 強制改行直後のグルー禁止処理、のような怪しげな何か。
+%
% \begin{macrocode}
-\let\jsInhibitGlueAtParTop\@empty
+\AtEndOfPackage{%
+\def\@gnewline #1{%
+ \ifvmode \@nolnerr
+ \else
+ \unskip \reserved@e {\reserved@f#1}\nobreak \hfil \break \null
+ \nobreak \hskip-1sp\hskip1sp\relax
+ \ignorespaces
+ \fi}
+}
% \end{macrocode}
%
% \paragraph{共通命令の実装}
@@ -9255,12 +9432,10 @@
#1}
% \end{macrocode}
%
-% |\>| は |zxjatype| で定義されているが、standardの仕様に合わせて変更する。
-% \Note 元は |\ignorespaces| でなく |\relax|(|\scan_stop:|)だった。
+% |\jathinspace| の実装。
% \begin{macrocode}
-\ifbxjs@xkanjiskip@cmd
- \protected\def\>{%
- \relax\ifmmode \mskip\medmuskip \else \CJKecglue\ignorespaces \fi}
+\ifbxjs@jaspace@cmd
+ \protected\def\jathinspace{\CJKecglue}
\fi
% \end{macrocode}
%
@@ -9375,20 +9550,53 @@
%
% \paragraph{段落頭でのグルー挿入禁止}
%
+% 基本的に現状の |ltjs*| クラスの処理に合わせる。
+% \Note |\jsInhibitGlueAtParTop| は使わない。
+%
+% \begin{macro}{\ltjfakeparbegin}
+% 現在の{\LuaTeX-ja}で定義されているマクロで、
+% 段落中で段落冒頭用の処理を発動する。
+% 未定義である場合にに備えて同等のものを用意する。
% \begin{macrocode}
-\protected\def\@inhibitglue{%
- \directlua{%
- luatexja.jfmglue.create_beginpar_node()}}
-\let\bxjs@ltj@inhibitglue\@inhibitglue
-\let\@@inhibitglue\@undefined
+\ifx\ltjfakeparbegin\@undefined
+ \protected\def\ltjfakeparbegin{%
+ \ifhmode
+ \relax\directlua{%
+ luatexja.jfmglue.create_beginpar_node()}}
+ \fi}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% |ltjs*| クラスの定義と同等になるようにパッチを当てる。
+% \begin{macrocode}
+\unless\ifnum\bxjs@everyparhook=\bxjs@everyparhook@none
+\begingroup
+ \let\%\@percentchar \def\@#1{[[\detokenize{#1}]]}
+ \@gobble\if\def\bxjs@tmpa{\@{\everypar{}\fi}}
+ \ifnum\bxjs@everyparhook=\bxjs@everyparhook@compat
+ \@gobble\if\def\bxjs@tmpa{\@{\everypar{\everyparhook}\fi}}\fi
+ \directlua{
+ local function patchcmd(cs, code, from, to)
+ tex.sprint(code:gsub(from:gsub("\%W", "\%\%\%0"), "\%0"..to)
+ :gsub("macro:", \@\gdef..cs, 1):gsub("->", "{", 1).."}")
+ end
+ patchcmd(\@\@xsect, [[\meaning\@xsect]],
+ \@{\hskip-\@tempskipa}, \@\ltjfakeparbegin)
+ patchcmd(\@\@item, [[\meaning\@item]],
+ \bxjs@tmpa, \@\ltjfakeparbegin)}
+\endgroup
+\fi
% \end{macrocode}
%
% \paragraph{hyperref対策}
%
% |unicode| にするべき。
+% \Note 1.6c版より、固定ではなく既定設定+検証に切り替えた。
% \begin{macrocode}
\ifbxjs@hyperref@enc
- \bxjs@fix@hyperref@unicode{true}
+ \PassOptionsToPackage{unicode}{hyperref}
+ \bxjs@check@hyperref@unicode{true}
\fi
% \end{macrocode}
%
@@ -9415,13 +9623,11 @@
\ltjjachar`#1\relax}
% \end{macrocode}
%
-% |\>| の実装。
+% |\jathinspace| の実装。
% \begin{macrocode}
-\ifbxjs@xkanjiskip@cmd
- \protected\def\>{%
- \relax\ifmmode \mskip\medmuskip
- \else \hskip\ltjgetparameter{xkanjiskip}\ignorespaces
- \fi}
+\ifbxjs@jaspace@cmd
+ \protected\def\jathinspace{%
+ \hskip\ltjgetparameter{xkanjiskip}\relax}
\fi
% \end{macrocode}
%
@@ -9472,6 +9678,24 @@
% \end{macro}
% \end{macro}
%
+% \paragraph{和文空白命令}
+% \begin{macro}{\>}
+% 非数式中では |\jathinspace| と等価になるように再定義する。
+% \Note 数式中では従来通り(|\:| と等価)。
+% \begin{macrocode}
+\ifbxjs@jaspace@cmd
+ \bxjs@protected\def\bxjs@choice@jathinspace{%
+ \relax\ifmmode \mskip\medmuskip
+ \else \jathinspace\ignorespaces
+ \fi}
+ \jsAtEndOfClass{%
+ \ifjsWitheTeX \let\>\bxjs@choice@jathinspace
+ \else \def\>{\protect\bxjs@choice@jathinspace}%
+ \fi}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
% \paragraph{和文・和欧文間空白の初期値}
%
% \begin{macrocode}
@@ -9725,6 +9949,33 @@
% \end{macrocode}
%
%^^A----------------
+%\subsection{全角空白文字}
+%
+% \begin{macrocode}
+\ifnum0\if x\jsEngine1\fi\if l\jsEngine1\fi>\z@
+ \catcode"3000=\active
+ \begingroup \catcode`\!=7
+ \protected\gdef!!!!3000{\zwspace}
+ \endgroup
+\else\ifx\DeclareUnicodeCharacter\@undefined\else
+ \DeclareUnicodeCharacter{3000}{\bxjs@zsp@char}
+ \bxjs@protected\def\bxjs@zsp@char{\zwspace}
+\fi\fi
+% \end{macrocode}
+%
+%^^A----------------
+% \paragraph{hyperref対策}
+%
+% |hyperref| の |unicode| オプションの固定を行う。
+% \begin{macrocode}
+\if j\jsEngine
+ \bxjs@fix@hyperref@unicode{false}
+\else
+ \bxjs@fix@hyperref@unicode{true}
+\fi
+% \end{macrocode}
+%
+%^^A----------------
% \subsection{完了}
% おしまい。
% \begin{macrocode}