diff options
author | Karl Berry <karl@freefriends.org> | 2017-10-21 21:37:58 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2017-10-21 21:37:58 +0000 |
commit | 8c965e5ca448a84cc51fea64d297cdcf00c4a1f2 (patch) | |
tree | d3c78624c4f615f9b84604ce7cde3380559d269b /Master/texmf-dist/source/latex/bxjscls | |
parent | 10375f38cec7e121a602f2d39f212169ffbfe4bf (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.dtx | 363 |
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} |