From 274530355cd8be6472559c87f6e1a2b34e54970e Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 10 Apr 2017 21:39:50 +0000 Subject: pxrubrica (10apr17) git-svn-id: svn://tug.org/texlive/trunk@43733 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/platex/pxrubrica/LICENSE | 5 +- Master/texmf-dist/doc/platex/pxrubrica/README | 53 --- Master/texmf-dist/doc/platex/pxrubrica/README-ja | 51 --- .../texmf-dist/doc/platex/pxrubrica/README-ja.md | 59 +++ Master/texmf-dist/doc/platex/pxrubrica/README.md | 61 +++ .../doc/platex/pxrubrica/pxrubrica-en.pdf | Bin 31606 -> 51988 bytes .../doc/platex/pxrubrica/pxrubrica-en.tex | 6 +- .../texmf-dist/doc/platex/pxrubrica/pxrubrica.pdf | Bin 338400 -> 349513 bytes .../source/platex/pxrubrica/pxrubrica.dtx | 504 +++++++++++++++++---- .../texmf-dist/tex/platex/pxrubrica/pxrubrica.sty | 301 +++++++++--- 10 files changed, 776 insertions(+), 264 deletions(-) delete mode 100644 Master/texmf-dist/doc/platex/pxrubrica/README delete mode 100644 Master/texmf-dist/doc/platex/pxrubrica/README-ja create mode 100644 Master/texmf-dist/doc/platex/pxrubrica/README-ja.md create mode 100644 Master/texmf-dist/doc/platex/pxrubrica/README.md (limited to 'Master') diff --git a/Master/texmf-dist/doc/platex/pxrubrica/LICENSE b/Master/texmf-dist/doc/platex/pxrubrica/LICENSE index e1ac82a8bb1..8ada757fbc8 100644 --- a/Master/texmf-dist/doc/platex/pxrubrica/LICENSE +++ b/Master/texmf-dist/doc/platex/pxrubrica/LICENSE @@ -1,9 +1,6 @@ -本ソフトウェアは MIT ライセンスの下で配布されます。著作権は作者である -「八登崇之(別名 ZR)」に属します。また本ソフトウェアは無保証です。 - The MIT License -Copyright (c) 2009-2011 Takayuki YATO (a.k.a. "ZR") +Copyright (c) 2017 Takayuki YATO (aka. "ZR") Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Master/texmf-dist/doc/platex/pxrubrica/README b/Master/texmf-dist/doc/platex/pxrubrica/README deleted file mode 100644 index 6ff8db331d1..00000000000 --- a/Master/texmf-dist/doc/platex/pxrubrica/README +++ /dev/null @@ -1,53 +0,0 @@ -PXrubrica Package -================= - -LaTeX: Ruby annotations according to JIS X 4051 - -This package provides function to add ruby annotation (furigana) that -follows the style conventional in Japanese typography, as described in -the W3C technical note “Requirements for Japanese Text Layout” ([JLREQ]) -and the JIS specification JIS X 4051. - -[JLREQ]: - -### SYSTEM REQUIREMENTS - - * TeX format: LaTeX. - * TeX engine: pTeX and its derivatives. - * DVI driver: Anything that supports pTeX DVI. - -### CONTENT - - * `pxrubrica.pdf`: the manual in Japanese - * `pxrubrica.dtx`: DocStrip source file - * `pxrubrica.ins`: DocStrip installer file - * `pxrubrica-en.pdf`: the brief manual in English - * `pxrubrica-en.tex`: the brief manual in English (source) - * `sample/*.tex`: sample documents - -### INSTALLATION - -If the archive does not contain the packge file (`*.sty`), then you -must run the command to create it: - - ptex -kanji=jis pxrubrica.ins - -Then move the files as follows (in a system compliant to TDS 1.1): - - - `*.sty` → $TEXMF/tex/platex/pxrubrica/ - - `*.dtx`/`*.ins` → $TEXMF/source/platex/pxrubrica/ - - `*.pdf`/`*.tex` → $TEXMF/doc/platex/pxrubrica/ - -And rehash your TEXMF trees if necessary. - -Revision History ----------------- - - * Version 1.0a <2014/12/23> - - Bug hix. - * Version 1.0 <2012/04/30> - - First public release. - --------------------- -Takayuki YATO (aka. "ZR") -http://zrbabbler.sp.land.to/ diff --git a/Master/texmf-dist/doc/platex/pxrubrica/README-ja b/Master/texmf-dist/doc/platex/pxrubrica/README-ja deleted file mode 100644 index 78c50c75cc3..00000000000 --- a/Master/texmf-dist/doc/platex/pxrubrica/README-ja +++ /dev/null @@ -1,51 +0,0 @@ -PXrubrica パッケージ -==================== - -LaTeX: 日本の慣習に従ったルビ(振り仮名)出力 - -JIS 規格「JIS X 4051」および W3C 技術ノート「[日本語組版処理の要件]」 -で述べられているような、日本において一般的な様式に従ってルビを付ける -機能を提供する。 - -[日本語組版処理の要件]: - -### 前提環境 - - * フォーマット: LaTeX - * エンジン: pTeX (派生エンジン含む) - * DVI ウェア: pTeX 対応のもの - -### 構成物 - - * `pxrubrica.pdf`: 説明書 - * `pxrubrica.dtx`: DocStrip ソースファイル - * `pxrubrica.ins`: DocStrip インストーラファイル - * `pxrubrica-en.pdf`: 英語版の説明書 - * `pxrubrica-en.tex`: 英語版の説明書(ソース) - * `sample/*.tex`: サンプル文書 - -### インストール - -アーカイブにパッケージファイル(`*.sty`)が含まれていない場合は、 -以下のコマンドを実行して生成する。 - - ptex -kanji=jis pxrubrica.ins - -その後、各ファイルを次の場所に移動する。 -(TDS 1.1 に従ったシステムの場合。) - - - `*.sty` → $TEXMF/tex/platex/pxrubrica/ - - `*.dtx`/`*.ins` → $TEXMF/source/platex/pxrubrica/ - - `*.pdf`/`*.tex` → $TEXMF/doc/platex/pxrubrica/ - -更新履歴 --------- - - * Version 1.0a <2014/12/23> - - バグ修正 - * Version 1.0 <2012/04/30> - - 最初の公開版 - --------------------- -Takayuki YATO (aka. "ZR") -http://zrbabbler.sp.land.to/ diff --git a/Master/texmf-dist/doc/platex/pxrubrica/README-ja.md b/Master/texmf-dist/doc/platex/pxrubrica/README-ja.md new file mode 100644 index 00000000000..608f5f72201 --- /dev/null +++ b/Master/texmf-dist/doc/platex/pxrubrica/README-ja.md @@ -0,0 +1,59 @@ +PXrubrica パッケージ +==================== + +LaTeX: 日本の慣習に従ったルビ(振り仮名)出力 + +JIS 規格「JIS X 4051」および W3C 技術ノート「[日本語組版処理の要件]」 +で述べられているような、日本において一般的な様式に従ってルビを付ける +機能を提供する。 + +[日本語組版処理の要件]: + +### 前提環境 + + * フォーマット: LaTeX + * エンジン: pTeX/upTeX/LuaTeX/XeTeX + * DVI ウェア: pTeX 対応のもの + +### 構成物 + + * `pxrubrica.pdf`: 説明書 + * `pxrubrica.dtx`: DocStrip ソースファイル + * `pxrubrica.ins`: DocStrip インストーラファイル + * `pxrubrica-en.pdf`: 英語版の説明書 + * `pxrubrica-en.tex`: 英語版の説明書(ソース) + * `sample/*.tex`: サンプル文書 + +### インストール + +アーカイブにパッケージファイル(`*.sty`)が含まれていない場合は、 +以下のコマンドを実行して生成する。 + + ptex -kanji=jis pxrubrica.ins + +その後、各ファイルを次の場所に移動する。 +(TDS 1.1 に従ったシステムの場合。) + + - `*.sty` → $TEXMF/tex/platex/pxrubrica/ + - `*.dtx`/`*.ins` → $TEXMF/source/platex/pxrubrica/ + - `*.pdf`/`*.tex` → $TEXMF/doc/platex/pxrubrica/ + +### ライセンス + +MITライセンスの下で配布される。 + +更新履歴 +-------- + + * Version 1.1 〈2017/04/10〉 + - XeTeX/LuaTeX のサポート。 + - 両側ルビの処理を改良。 + - バグ修正 + * Version 1.0a 〈2014/12/23〉 + - バグ修正 + * Version 1.0 〈2012/04/30〉 + - 最初の公開版 + +-------------------- +Takayuki YATO (aka. "ZR") +http://zrbabbler.sp.land.to/ diff --git a/Master/texmf-dist/doc/platex/pxrubrica/README.md b/Master/texmf-dist/doc/platex/pxrubrica/README.md new file mode 100644 index 00000000000..26bbf82cdb5 --- /dev/null +++ b/Master/texmf-dist/doc/platex/pxrubrica/README.md @@ -0,0 +1,61 @@ +PXrubrica Package +================= + +LaTeX: Ruby annotations according to JIS X 4051 + +This package provides function to add ruby annotation (furigana) that +follows the style conventional in Japanese typography, as described in +the W3C technical note “Requirements for Japanese Text Layout” ([JLREQ]) +and the JIS specification JIS X 4051. + +[JLREQ]: + +### SYSTEM REQUIREMENTS + + * TeX format: LaTeX. + * TeX engine: pTeX and its derivatives. + * DVI driver: Anything that supports pTeX DVI. + +### CONTENT + + * `pxrubrica.pdf`: the manual in Japanese + * `pxrubrica.dtx`: DocStrip source file + * `pxrubrica.ins`: DocStrip installer file + * `pxrubrica-en.pdf`: the brief manual in English + * `pxrubrica-en.tex`: the brief manual in English (source) + * `sample/*.tex`: sample documents + +### INSTALLATION + +If the archive does not contain the packge file (`*.sty`), then you +must run the command to create it: + + ptex -kanji=jis pxrubrica.ins + +Then move the files as follows (in a system compliant to TDS 1.1): + + - `*.sty` → $TEXMF/tex/platex/pxrubrica/ + - `*.dtx`/`*.ins` → $TEXMF/source/platex/pxrubrica/ + - `*.pdf`/`*.tex` → $TEXMF/doc/platex/pxrubrica/ + +And rehash your TEXMF trees if necessary. + +### LICENSE + +This package is distributed under the MIT License. + +Revision History +---------------- + + * Version 1.1 〈2017/04/10〉 + - Support for XeTeX/LuaTeX. + - Improve the process of two-side ruby. + - Bug fix. + * Version 1.0a <2014/12/23> + - Bug hix. + * Version 1.0 <2012/04/30> + - First public release. + +-------------------- +Takayuki YATO (aka. "ZR") +http://zrbabbler.sp.land.to/ diff --git a/Master/texmf-dist/doc/platex/pxrubrica/pxrubrica-en.pdf b/Master/texmf-dist/doc/platex/pxrubrica/pxrubrica-en.pdf index 3d0d643d9e4..4875cba8b71 100644 Binary files a/Master/texmf-dist/doc/platex/pxrubrica/pxrubrica-en.pdf and b/Master/texmf-dist/doc/platex/pxrubrica/pxrubrica-en.pdf differ diff --git a/Master/texmf-dist/doc/platex/pxrubrica/pxrubrica-en.tex b/Master/texmf-dist/doc/platex/pxrubrica/pxrubrica-en.tex index f2578d55095..7fc0b4e725d 100644 --- a/Master/texmf-dist/doc/platex/pxrubrica/pxrubrica-en.tex +++ b/Master/texmf-dist/doc/platex/pxrubrica/pxrubrica-en.tex @@ -8,14 +8,14 @@ \newcommand*{\Eg}{E.\,g.\mbox{}} \newcommand*{\eg}{e.\,g.\mbox{}} \newcommand*{\ie}{i.\,e.\mbox{}} -\newcommand*{\myfileversion}{1.0} -\newcommand*{\myfiledate}{2011/09/04} +\newcommand*{\myfileversion}{1.1} +\newcommand*{\myfiledate}{2017/04/10} \newsavebox{\myexample} \begin{document} \title{The \PKN{pxrubrica} package} \author{Takayuki YATO\quad (aka ``ZR'')} -\date{\myfileversion \quad[\myfiledate]} +\date{v\myfileversion \quad[\myfiledate]} \maketitle \setstretch{1.5} diff --git a/Master/texmf-dist/doc/platex/pxrubrica/pxrubrica.pdf b/Master/texmf-dist/doc/platex/pxrubrica/pxrubrica.pdf index 2e361aa33c2..f945cbde71d 100644 Binary files a/Master/texmf-dist/doc/platex/pxrubrica/pxrubrica.pdf and b/Master/texmf-dist/doc/platex/pxrubrica/pxrubrica.pdf differ diff --git a/Master/texmf-dist/source/platex/pxrubrica/pxrubrica.dtx b/Master/texmf-dist/source/platex/pxrubrica/pxrubrica.dtx index e76781e85be..c2c286306e3 100644 --- a/Master/texmf-dist/source/platex/pxrubrica/pxrubrica.dtx +++ b/Master/texmf-dist/source/platex/pxrubrica/pxrubrica.dtx @@ -1,23 +1,16 @@ % ^^A -*- japanese-latex -*- % \iffalse meta-comment % +% This is file 'pxrubrica.dtx'. +% +% Copyright (c) 2017 Takayuki YATO (aka. "ZR") +% GitHub: https://github.com/zr-tex8r +% Twitter: @zr_tex8r +% +% This package is distributed under the MIT License. +% % \fi % \CheckSum{0} -%% \CharacterTable -%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -%% Digits \0\1\2\3\4\5\6\7\8\9 -%% Exclamation \! Double quote \" Hash (number) \# -%% Dollar \$ Percent \% Ampersand \& -%% Acute accent \' Left paren \( Right paren \) -%% Asterisk \* Plus \+ Comma \, -%% Minus \- Point \. Solidus \/ -%% Colon \: Semicolon \; Less than \< -%% Equals \= Greater than \> Question mark \? -%% Commercial at \@ Left bracket \[ Backslash \\ -%% Right bracket \] Circumflex \^ Underscore \_ -%% Grave accent \` Left brace \{ Vertical bar \| -%% Right brace \} Tilde \~} % % \iffalse % @@ -27,7 +20,7 @@ %<*driver> \ProvidesFile{pxrubrica.dtx} % - [2014/12/23 v1.0a PX Japanese-style ruby] + [2017/04/10 v1.1 PX Japanese-style ruby] %<*driver> \documentclass{jsarticle} \usepackage{doc} @@ -51,6 +44,10 @@ \newcommand*{\pad}{\hspace{0pt plus 10pt}\linebreak[0]} \newcommand*{\Means}{$B!'(B\ } \newcommand*{\Note}{\par\noindent $B"((B\ } +\providecommand*{\pTeX}{p\TeX} +\providecommand*{\upTeX}{u\pTeX} +\providecommand*{\XeTeX}{XeTeX} +\providecommand*{\LuaTeX}{Lua\TeX} \inhibitxspcode`$B!?(B=0 \begin{document} \DocInput{pxrubrica.dtx} @@ -716,6 +713,19 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\pxrr@warn@load@order} +% Unicode {\TeX}$BMQ$NF|K\8lAHHG%Q%C%1!<%8!J(BLua{\TeX}-ja$BEy!K$O(B +% $B$3$N%Q%C%1!<%8$h$jA0$KFI$_9~$`$Y$-$@$,!"8e$GFI$_9~$^$l$F$$$k(B +% $B$3$H$,H=L@$7$?>l9g!#(B +% \begin{macrocode} +\def\pxrr@warn@load@order#1{% + \pxrr@warn{% + This package should be loaded after '#1'% + }% +} +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\pxrr@interror} % $BFbIt%(%i!o$OM-8z$@$,!"0BA4%b!<%I$G$OL58z$K$J$k!#(B +% \begin{macrocode} +\chardef\pxrr@revensp=1 +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\pxrr@fullsize} % $B>.=q$-J8;zJQ49$N@_Dj!#(B % 0 = $BL58z!((B1 = $BM-8z!#(B @@ -1638,7 +1684,7 @@ % \end{macro} % % \begin{macro}{\ifpxrr@in@ptex} -% $B%(%s%8%s$,(B {p\TeX} $B7O!J(B{up\TeX} $B7O$r4^$`!K$G$"$k$+!#(B +% $B%(%s%8%s$,(B{\pTeX}$B7O!J(B{\upTeX}$B7O$r4^$`!K$G$"$k$+!#(B % |\kansuji| $B$N%W%j%_%F%#%V%F%9%H$GH=Dj$9$k!#(B % \begin{macrocode} \pxrr@ifprimitive\kansuji{% @@ -1650,7 +1696,7 @@ % \end{macro} % % \begin{macro}{\ifpxrr@in@uptex} -% $B%(%s%8%s$,(B {up\TeX} $B7O$G$"$k$+!#(B +% $B%(%s%8%s$,(B{\upTeX}$B7O$G$"$k$+!#(B % |\enablecjktoken| $B$N%W%j%_%F%#%V%F%9%H$GH=Dj$9$k!#(B % \begin{macrocode} \pxrr@ifprimitive\enablecjktoken{% @@ -1662,7 +1708,7 @@ % \end{macro} % % \begin{macro}{\ifpxrr@in@xetex} -% $B%(%s%8%s$,(B {XeTeX} $B7O$G$"$k$+!#(B +% $B%(%s%8%s$,(B{\XeTeX}$B7O$G$"$k$+!#(B % |\XeTeXrevision| $B$N%W%j%_%F%#%V%F%9%H$GH=Dj$9$k!#(B % \begin{macrocode} \pxrr@ifprimitive\XeTeXrevision{% @@ -1673,16 +1719,82 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\ifpxrr@in@xecjk} +% \PKN{xeCJK}$B%Q%C%1!<%8$,;HMQ$5$l$F$$$k$+!#(B +% \begin{macrocode} +\@ifpackageloaded{xeCJK}{% + \pxrr@csletcs{ifpxrr@in@xecjk}{iftrue}% +}{% + \pxrr@csletcs{ifpxrr@in@xecjk}{iffalse}% +% \end{macrocode} +% $B$3$3$GL$FI9~$G$+$D%W%j%"%s%V%kKvHx$GFI$_9~$^$l$F$$$k>l9g$O7Y9p$9$k!#(B +% \begin{macrocode} + \AtBeginDocument{% + \@ifpackageloaded{xeCJK}{% + \pxrr@warn@load@order{xeCJK}% + }{}% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ifpxrr@in@luatex} +% $B%(%s%8%s$,(B{\LuaTeX}$B7O$G$"$k$+!#(B +% |\luatexrevision| $B$N%W%j%_%F%#%V%F%9%H$GH=Dj$9$k!#(B +% \begin{macrocode} +\pxrr@ifprimitive\luatexrevision{% + \pxrr@csletcs{ifpxrr@in@luatex}{iftrue}% +}{% + \pxrr@csletcs{ifpxrr@in@luatex}{iffalse}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ifpxrr@in@luatexja} +% \PKN{LuaTeX-ja}$B%Q%C%1!<%8$,;HMQ$5$l$F$$$k$+!#(B +% \begin{macrocode} +\@ifpackageloaded{luatexja-core}{% + \pxrr@csletcs{ifpxrr@in@luatexja}{iftrue}% +}{% + \pxrr@csletcs{ifpxrr@in@luatexja}{iffalse}% + \AtBeginDocument{% + \@ifpackageloaded{luatexja-core}{% + \pxrr@warn@load@order{LuaTeX-ja}% + }{}% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\ifpxrr@in@xetex +\else\ifpxrr@in@luatex +\else\ifpxrr@in@ptex +\else + \pxrr@ifprimitive\pdftexrevision{% + \pxrr@warn{% + The engine in use seems to be pdfTeX,\MessageBreak + so safe mode is turned on% + }% + \AtEndOfPackage{% + \rubysafemode + }% + } +\fi\fi\fi +% \end{macrocode} +% % \begin{macro}{\ifpxrr@in@unicode} % $B!VOBJ8!WFbIt%3!<%I$,(BUnicode$B$G$"$k$+!#(B % \begin{macrocode} \ifpxrr@in@xetex \pxrr@csletcs{ifpxrr@in@unicode}{iftrue}% +\else\ifpxrr@in@luatex + \pxrr@csletcs{ifpxrr@in@unicode}{iftrue}% \else\ifpxrr@in@uptex \pxrr@csletcs{ifpxrr@in@unicode}{iftrue}% \else \pxrr@csletcs{ifpxrr@in@unicode}{iffalse}% -\fi\fi +\fi\fi\fi % \end{macrocode} % \end{macro} % @@ -1737,21 +1849,36 @@ % \begin{macro}{\pxrr@get@jchar@token} % |\pxrr@get@jchar@token\CS{|\jmeta{$B@0?t(B}|}|\Means % $BFbItJ8;z%3!<%I$,(B\jmeta{$B@0?t(B}$B$G$"$kOBJ8J8;z$N%H!<%/%s$rF@$k!#(B +% +% {\pTeX}$B7O$N>l9g!#(B|\kansuji| $B%H%j%C%/$rMxMQ$9$k!#(B % \begin{macrocode} -\def\pxrr@get@jchar@token#1#2{% - \begingroup - \kansujichar\@ne=#2\relax - \xdef\pxrr@x@gtempa{\kansuji\@ne}% - \endgroup - \let#1\pxrr@x@gtempa -} -\ifpxrr@in@unicode\else - \ifpxrr@in@ptex\else - \def\pxrr@get@jchar@token#1#2{% - \def#1{?}% - } - \fi -\fi +\ifpxrr@in@ptex + \def\pxrr@get@jchar@token#1#2{% + \begingroup + \kansujichar\@ne=#2\relax + \xdef\pxrr@x@gtempa{\kansuji\@ne}% + \endgroup + \let#1\pxrr@x@gtempa + } +% \end{macrocode} +% Unicode$BBP1~(B{\TeX}$B$N>l9g!#(B|\lowercase| $B%H%j%C%/$rMxMQ$9$k!#(B +% \begin{macrocode} +\else\ifpxrr@in@unicode + \def\pxrr@get@jchar@token#1#2{% + \begingroup + \lccode`\?=#2\relax + \lowercase{\xdef\pxrr@x@gtempa{?}}% + \endgroup + \let#1\pxrr@x@gtempa + } +% \end{macrocode} +% $B$=$l0J30$G$O%@%_!l9g!#(B % \begin{macrocode} \ifpxrr@in@ptex \def\pxrr@get@iiskip#1{% @@ -1791,17 +1920,36 @@ \fi }% } +% \end{macrocode} +% +% \PKN{LuaTeX-ja}$B;HMQ$N>l9g!#(B +% \begin{macrocode} +\else\ifpxrr@in@luatexja + \def\pxrr@get@iiskip#1{% + \edef#1{% + \ifnum\ltjgetparameter{autospacing}=\@ne + \ltjgetparameter{kanjiskip}% + \else \pxrr@zeropt + \fi + }% + } +% \end{macrocode} +% +% $B$=$l0J30$N>l9g$O%<%m$H$9$k!#(B +% \begin{macrocode} \else \def\pxrr@get@iiskip#1{% \let#1\pxrr@zeropt } -\fi +\fi\fi % \end{macrocode} % \end{macro} % % \begin{macro}{\pxrr@get@iaiskip} % |\pxrr@get@iaiskip\CS|\Means % $B8=:_$Nl9g!#(B % \begin{macrocode} \ifpxrr@in@ptex \def\pxrr@get@iaiskip#1{% @@ -1821,29 +1969,118 @@ \fi }% } -\else +% \end{macrocode} +% +% \PKN{LuaTeX-ja}$B;HMQ$N>l9g!#(B +% \begin{macrocode} +\else\ifpxrr@in@luatexja \def\pxrr@get@iaiskip#1{% - \let#1\pxrr@zeropt + \edef#1{% + \ifnum\ltjgetparameter{autoxspacing}=\@ne + \ltjgetparameter{xkanjiskip}% + \else \pxrr@zeropt + \fi + }% } -\fi +% \end{macrocode} +% +% $B$=$l0J30$N>l9g$Ol9g!"(B|1zw| $B$G$h$$!#(B % \begin{macrocode} \ifpxrr@in@ptex \def\pxrr@get@zwidth#1{% \@tempdima=1zw\relax \edef#1{\the\@tempdima}% } +% \end{macrocode} +% +% |\zw| $B$,Dj5A$5$l$F$$$k>l9g$O(B |1\zw| $B$H$9$k!#(B +% \begin{macrocode} +\else\if\ifx\zw\@undefined T\else F\fi F% if defined + \def\pxrr@get@zwidth#1{% + \@tempdima=1\zw\relax + \edef#1{\the\@tempdima}% + } +% \end{macrocode} +% +% |\jsZw| $B$,Dj5A$5$l$F$$$k>l9g$O(B |1\jsZw| $B$H$9$k!#(B +% \begin{macrocode} +\else\if\ifx\jsZw\@undefined T\else F\fi F% if defined + \def\pxrr@get@zwidth#1{% + \@tempdima=1\jsZw\relax + \edef#1{\the\@tempdima}% + } +% \end{macrocode} +% +% $B$=$l0J30$G!"(B|\pxrr@x@K| $B$,M-8z$J>l9g$O\@cclv + \def\pxrr@get@zwidth#1{% + \setbox\tw@\hbox{\pxrr@x@K}% + \@tempdima\wd\tw@ + \ifdim\@tempdima>\z@\else \@tempdima\f@size\p@ \fi + \edef#1{\the\@tempdima}% + } +% \end{macrocode} +% +% $B$=$l0J30$N>l9g$OMW5a%5%$%:$HEy$7$$$H$9$k!#(B +% \begin{macrocode} \else \def\pxrr@get@zwidth#1{% - \@tempdima=1em\relax + \@tempdima\f@size\p@\relax \edef#1{\the\@tempdima}% } -\fi +\fi\fi\fi\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\pxrr@get@prebreakpenalty} +% |\pxrr@get@prebreakpenalty\CS{|\jmeta{$BJ8;z(B}|}|\Means +% $BJ8;z$NA06XB'%Z%J%k%F%#CM$r@0?t%l%8%9%?$KBeF~$9$k!#(B +% +% {\pTeX}$B$N>l9g!"(B|\prebreakpenalty| $B$r;H$&!#(B +% \begin{macrocode} +\ifpxrr@in@ptex + \def\pxrr@get@prebreakpenalty#1#2{% + #1=\prebreakpenalty`#2\relax + } +% \end{macrocode} +% +% \PKN{LuaTeX-ja}$B;HMQ;~$O!"(Bprebreakpenalty $B%W%m%Q%F%#$rFI$_=P$9!#(B +% \begin{macrocode} +\else\ifpxrr@in@luatexja + \def\pxrr@get@prebreakpenalty#1#2{% + #1=\ltjgetparameter{prebreakpenalty}{`#2}\relax + } +% \end{macrocode} +% +% $B$=$l0J30$N>l9g$O%<%m$H$7$F07$&!#(B +% \begin{macrocode} +\else + \def\pxrr@get@prebreakpenalty#1#2{% + #1=\z@ + } +\fi\fi % \end{macrocode} % \end{macro} % @@ -1944,6 +2181,7 @@ % \begin{macrocode} \newcommand*\rubyuseaghost{% \pxrr@aghosttrue + \pxrr@setup@aghost } \newcommand*\rubynouseaghost{% \pxrr@aghostfalse @@ -1980,6 +2218,20 @@ % \end{macro} % \end{macro} % +% \begin{macro}{\rubysafemode} +% \begin{macro}{\rubynosafemode} +% $BBP1~$9$k%9%$%C%A$r@_Dj$9$k!#(B +% \begin{macrocode} +\newcommand*\rubysafemode{% + \pxrr@safe@modetrue +} +\newcommand*\rubynosafemode{% + \pxrr@safe@modefalse +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% % \begin{macro}{\rubystretchprop} % \begin{macro}{\rubystretchprophead} % \begin{macro}{\rubystretchpropend} @@ -2074,6 +2326,11 @@ \pxrr@bfintrfalse \pxrr@afintrfalse % \end{macrocode} +% $BL@<(%U%i%0$r56$K$9$k!#(B +% \begin{macrocode} + \pxrr@mode@givenfalse + \pxrr@athead@givenfalse +% \end{macrocode} % $BM-8B>uBV5!3#$r3+;O$5$;$k!#(B % $BF~NO$NKvHx$K(B |@| $B$r2C$($F$$$k!#(B % |\pxrr@end| $B$O%(%i!<;~$NC&=P$KMQ$$$k!#(B @@ -2263,21 +2520,27 @@ } \def\pxrr@po@PR@c{% \chardef\pxrr@athead\z@ + \pxrr@athead@giventrue } \def\pxrr@po@PR@h{% \chardef\pxrr@athead\@ne + \pxrr@athead@giventrue } \def\pxrr@po@PR@H{% \chardef\pxrr@athead\tw@ + \pxrr@athead@giventrue } \def\pxrr@po@PR@m{% \let\pxrr@mode=m% + \pxrr@mode@giventrue } \def\pxrr@po@PR@g{% \let\pxrr@mode=g% + \pxrr@mode@giventrue } \def\pxrr@po@PR@j{% \let\pxrr@mode=j% + \pxrr@mode@giventrue } \def\pxrr@po@PR@P{% \chardef\pxrr@side\z@ @@ -2368,26 +2631,27 @@ \pxrr@fatal@bad@intr \fi % \end{macrocode} -% $B%b%N%k%S!J(B|m|$B!K!&=O8l%k%S!J(B|j|$B!K$K4X$9$k8!::!#(B +% $B2$J8%k%S$G$O%b%N%k%S!J(B|m|$B!K!&=O8l%k%S!J(B|j|$B!K$O;XDjIT2D$J$N$G!"(B +% $B%0%k!<%W%k%S$KJQ99$9$k!#(B +% $B$3$N;~$KL@<(;XDj$G$"$k>l9g$O7Y9p$r=P$9!#(B % \begin{macrocode} \if g\pxrr@mode\else -% \end{macrocode} -% $B2$J8%k%S$G$OIT2D$J$N$G%0%k!<%W%k%S$KJQ99$9$k!#(B -% \begin{macrocode} \ifpxrr@abody \let\pxrr@mode=g\relax + \ifpxrr@mode@given + \pxrr@warn@must@group + \fi \fi + \fi % \end{macrocode} -% $BN>B&%k%S$G$OIT2D$J$N$G%0%k!<%W%k%S$KJQ99$9$k!#(B +% $BN>B&%k%S$G$O%b%N%k%S!J(B|m|$B!K!&=O8l%k%S!J(B|j|$B!K$O;XDjIT2D$J$N$G!"(B +% $B%0%k!<%W%k%S$KJQ99$9$k!#(B +% $B$3$N;~$KL@<(;XDj$G$"$k>l9g$O7Y9p$r=P$9!#(B % \begin{macrocode} + \if g\pxrr@mode\else \ifnum\pxrr@side=\tw@ \let\pxrr@mode=g\relax - \fi -% \end{macrocode} -% $B0J>e$N(B2$B$D$N>l9g$K$D$$$F!"L@<(;XDj$G$"$l$P7Y9p$r=P$9!#(B -% \begin{macrocode} - \if g\pxrr@mode - \if g\pxrr@d@mode + \ifpxrr@mode@given \pxrr@warn@must@group \fi \fi @@ -2400,19 +2664,19 @@ % $B2#AH$_$G$OIT2D$J$N$GCfIU$-$KJQ99$9$k!#(B % \begin{macrocode} \ifpxrr@in@tate\else - \pxrr@athead\z@ + \chardef\pxrr@athead\z@ \fi % \end{macrocode} % $B%0%k!<%W%k%S$G$OIT2D$J$N$GCfIU$-$KJQ99$9$k!#(B % \begin{macrocode} \if g\pxrr@mode - \pxrr@athead\z@ + \chardef\pxrr@athead\z@ \fi % \end{macrocode} % $B0J>e$N(B2$B$D$N>l9g$K$D$$$F!"L@<(;XDj$G$"$l$P7Y9p$r=P$9!#(B % \begin{macrocode} \ifnum\pxrr@athead=\z@ - \ifnum\pxrr@d@athead>\z@ + \ifpxrr@athead@given \pxrr@warn@bad@athead \fi \fi @@ -2875,24 +3139,26 @@ % % \begin{macro}{\pxrr@compose@block} % |\pxrr@compose@block{|\jmeta{$B%Q%?!<%s(B}|}{|^^A -%r \jmeta{$B?FJ8;z%V%m%C%/(B}|}{|\jmeta{$B%k%SJ8;z%V%m%C%/(B}|}|\Means +% \jmeta{$B?FJ8;z%V%m%C%/(B}|}{|\jmeta{$B%k%SJ8;z%V%m%C%/(B}|}|\Means % 1$B$D$N%V%m%C%/$NAHHG=hM}!#(B % \jmeta{$B%Q%?!<%s(B}$B$O(B |\pxrr@evenspace| $B$HF1$80UL#!#(B % $BFM=P$,$"$k$+$r(B |\ifpxrr@protr| $B$KJV$7!"A0$H8e$NFM=P$NNL$r(B % $B$=$l$>$l(B |\pxrr@bspace| $B$H(B |\pxrr@aspace| $B$KJV$9!#(B % \begin{macrocode} -\def\pxrr@compose@block{% +\def\pxrr@compose@block#1#2#3{% % \end{macrocode} % $BK\BN$NA0$K2C9)=hM}$r2pF~$5$;$k!#(B +% \Note |\pxrr@compose@block@pre| $B$O(B2$B$D$N%k%S0z?t$rB&%k%SBP1~$N$?$a!"%k%SMQ0z?t$,(B2$B$D$"$k!#(B % \begin{macrocode} \def\pxrr@compose@block@pre{% % \end{macrocode} @@ -3064,27 +3333,48 @@ \pxrr@ifnum{\pxrr@fullsize>\z@}{% \pxrr@compose@block@pre@a }{% - \pxrr@compose@block@pre@c + \pxrr@compose@block@pre@d }% } -\def\pxrr@compose@block@pre@a#1#2#3{% - \def\pxrr@compose@block@tempa{#3}% +% {$B%Q%?!<%s(B}{$B?FJ8;z(B}{$B%k%S(B1}{$B%k%S(B2} +\def\pxrr@compose@block@pre@a#1#2#3#4{% + \def\pxrr@compose@block@tempa{#4}% \pxrr@transform@kana\pxrr@compose@block@tempa \expandafter\pxrr@compose@block@pre@b - \expandafter{\pxrr@compose@block@tempa}{#1}{#2}% + \expandafter{\pxrr@compose@block@tempa}{#1}{#2}{#3}% +} +% {$B%k%S(B2}{$B%Q%?!<%s(B}{$B?FJ8;z(B}{$B%k%S(B1} +\def\pxrr@compose@block@pre@b#1#2#3#4{% + \def\pxrr@compose@block@tempa{#4}% + \pxrr@transform@kana\pxrr@compose@block@tempa + \expandafter\pxrr@compose@block@pre@c + \expandafter{\pxrr@compose@block@tempa}{#1}{#2}{#3}% } -\def\pxrr@compose@block@pre@b#1#2#3{% - \pxrr@compose@block@pre@c{#2}{#3}{#1}% +% {$B%k%S(B1}{$B%k%S(B2}{$B%Q%?!<%s(B}{$B?FJ8;z(B} +\def\pxrr@compose@block@pre@c#1#2#3#4{% + \pxrr@compose@block@pre@d{#3}{#4}{#1}{#2}% } -\def\pxrr@compose@block@pre@c{% +\def\pxrr@compose@block@pre@d{% \pxrr@ifnum{\pxrr@evensp=\z@}{% - \pxrr@compose@block@pre@d + \pxrr@compose@block@pre@e + }{% + \pxrr@compose@block@pre@f + }% +} +% {$B%Q%?!<%s(B}{$B?FJ8;z(B} +\def\pxrr@compose@block@pre@e#1#2{% + \pxrr@compose@block@pre@f{#1}{{#2}}% +} +\def\pxrr@compose@block@pre@f{% + \pxrr@ifnum{\pxrr@revensp=\z@}{% + \pxrr@compose@block@pre@g }{% \pxrr@compose@block@do }% } -\def\pxrr@compose@block@pre@d#1#2{% - \pxrr@compose@block@do{#1}{{#2}}% +% {$B%Q%?!<%s(B}{$B?FJ8;z(B}{$B%k%S(B1}{$B%k%S(B2} +\def\pxrr@compose@block@pre@g#1#2#3#4{% + \pxrr@compose@block@do{#1}{#2}{{#3}}{{#4}}% } % \end{macrocode} % \end{macro} @@ -3261,7 +3551,7 @@ \pxrr@check@kinsoku@c#1#1% } \def\pxrr@check@kinsoku@c#1{% - \pxrr@cntr\prebreakpenalty`#1\relax + \pxrr@get@prebreakpenalty\pxrr@cntr{#1}% \pxrr@tempb } % \end{macrocode} @@ -3435,11 +3725,12 @@ \hskip-\pxrr@intr@amount\relax \fi % \end{macrocode} -% $BCJMnKAF,$G$J$$>l9g!"%Z%J%k%F%#!";z4V6u$-$N%0%k!=!"?JF~MQ$N%0%k!=$r(B +% $BCJMnKAF,$G$J$$>l9g!";z4V6u$-$N%0%k!=!"?JF~MQ$N%0%k!=$r(B % $B=gHV$KF~$l$k!#(B +% \Note $B%Z%J%k%F%#$O(B |\pxrr@put@head@penalty| $B$G4{$KF~$l$F$$$k!#(B % \begin{macrocode} \else - \penalty\pxrr@auto@penalty\relax +% \penalty\pxrr@auto@penalty\relax \hskip-\pxrr@intr@amount\relax \hskip\pxrr@auto@icspace\relax \fi @@ -3448,6 +3739,27 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\pxrr@put@head@penalty} +% $BA0B&$KJd=u;XDj$GDj$a$i$l$?CM$N%Z%J%k%F%#$rCV$/!#(B +% $B8=:_0LCV$K4{$K%Z%J%k%F%#$,$"$k>l9g$O9g;;$9$k!#(B +% \begin{macrocode} +\def\pxrr@put@head@penalty{% + \ifpxrr@ghost\else \ifpxrr@par@head\else + \ifpxrr@abody + \pxrr@intrude@setauto@a + \else + \pxrr@intrude@setauto@j + \fi + \ifnum\pxrr@auto@penalty=\z@\else + \pxrr@cnta\lastpenalty \unpenalty + \advance\pxrr@cnta\pxrr@auto@penalty\relax + \penalty\pxrr@cnta + \fi + \fi\fi +} +% \end{macrocode} +% \end{macro} +% % \subsubsection{$B8eB&?JF~=hM}(B} % % \begin{macro}{\pxrr@intrude@end} @@ -3673,6 +3985,9 @@ \ifpxrrDebug \pxrr@debug@show@input \fi + \ifpxrr@safe@mode + \pxrr@setup@safe@mode + \fi % \end{macrocode} % $BF~NO8!::$r9T$$!"%Q%9$7$?>l9g$OAHHG=hM}$K?J$`!#(B % \begin{macrocode} @@ -3722,6 +4037,9 @@ \ifpxrrDebug \pxrr@debug@show@input \fi + \ifpxrr@safe@mode + \pxrr@setup@safe@mode + \fi % \end{macrocode} % $BF~NO8!::$r9T$$!"%Q%9$7$?>l9g$OAHHG=hM}$K?J$`!#(B % \begin{macrocode} @@ -3737,6 +4055,18 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\pxrr@setup@safe@mode} +% $B0BA4%b!<%IMQ$N@_Dj!#(B +% \begin{macrocode} +\def\pxrr@setup@safe@mode{% + \let\pxrr@mode=g% + \chardef\pxrr@evensp\z@ + \chardef\pxrr@revensp\z@ + \chardef\pxrr@fullsize\z@ +} +% \end{macrocode} +% \end{macro} +% % \subsubsection{$BF~NO8!::(B} % % $B%0%k!<%W!&J8;z$N8D?t$N8!::$r9T$& Question mark \? -%% Commercial at \@ Left bracket \[ Backslash \\ -%% Right bracket \] Circumflex \^ Underscore \_ -%% Grave accent \` Left brace \{ Vertical bar \| -%% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{pxrubrica} - [2014/12/23 v1.0a PX Japanese-style ruby] + [2017/04/10 v1.1 PX Japanese-style ruby] \RequirePackage{keyval} \def\pxrr@pkgname{pxrubrica} \def\pxrr@error{% @@ -104,6 +89,11 @@ Feature of movable group ruby is disabled% }\pxrr@eh@fatal } +\def\pxrr@warn@load@order#1{% + \pxrr@warn{% + This package should be loaded after '#1'% + }% +} \def\pxrr@interror#1{% \pxrr@fatal@error{INTERNAL ERROR (#1)}% \pxrr@eh@fatal @@ -129,7 +119,8 @@ \newif\ifpxrr@aghost \pxrr@aghostfalse \def\pxrr@inter@gap{0} \newif\ifpxrr@edge@adjust \pxrr@edge@adjustfalse -\newif\ifpxrr@break@jukugo \pxrr@edge@adjustfalse +\newif\ifpxrr@break@jukugo \pxrr@break@jukugofalse +\newif\ifpxrr@safe@mode \pxrr@safe@modefalse \newif\ifpxrr@d@bprotr \pxrr@d@bprotrtrue \newif\ifpxrr@d@aprotr \pxrr@d@aprotrtrue \def\pxrr@d@bintr{} @@ -150,10 +141,14 @@ \newif\ifpxrr@bfintr \pxrr@bfintrfalse \newif\ifpxrr@afintr \pxrr@afintrfalse \chardef\pxrr@athead=0 +\newif\ifpxrr@athead@given \pxrr@athead@givenfalse \let\pxrr@mode=\@undefined +\newif\ifpxrr@mode@given \pxrr@mode@givenfalse +\newif\ifpxrr@afintr \pxrr@afintrfalse \newif\ifpxrr@abody \chardef\pxrr@side=0 \chardef\pxrr@evensp=1 +\chardef\pxrr@revensp=1 \chardef\pxrr@fullsize=1 \newif\ifpxrr@ok \newcount\pxrr@cnta @@ -435,13 +430,54 @@ }{% \pxrr@csletcs{ifpxrr@in@xetex}{iffalse}% } +\@ifpackageloaded{xeCJK}{% + \pxrr@csletcs{ifpxrr@in@xecjk}{iftrue}% +}{% + \pxrr@csletcs{ifpxrr@in@xecjk}{iffalse}% + \AtBeginDocument{% + \@ifpackageloaded{xeCJK}{% + \pxrr@warn@load@order{xeCJK}% + }{}% + }% +} +\pxrr@ifprimitive\luatexrevision{% + \pxrr@csletcs{ifpxrr@in@luatex}{iftrue}% +}{% + \pxrr@csletcs{ifpxrr@in@luatex}{iffalse}% +} +\@ifpackageloaded{luatexja-core}{% + \pxrr@csletcs{ifpxrr@in@luatexja}{iftrue}% +}{% + \pxrr@csletcs{ifpxrr@in@luatexja}{iffalse}% + \AtBeginDocument{% + \@ifpackageloaded{luatexja-core}{% + \pxrr@warn@load@order{LuaTeX-ja}% + }{}% + }% +} +\ifpxrr@in@xetex +\else\ifpxrr@in@luatex +\else\ifpxrr@in@ptex +\else + \pxrr@ifprimitive\pdftexrevision{% + \pxrr@warn{% + The engine in use seems to be pdfTeX,\MessageBreak + so safe mode is turned on% + }% + \AtEndOfPackage{% + \rubysafemode + }% + } +\fi\fi\fi \ifpxrr@in@xetex \pxrr@csletcs{ifpxrr@in@unicode}{iftrue}% +\else\ifpxrr@in@luatex + \pxrr@csletcs{ifpxrr@in@unicode}{iftrue}% \else\ifpxrr@in@uptex \pxrr@csletcs{ifpxrr@in@unicode}{iftrue}% \else \pxrr@csletcs{ifpxrr@in@unicode}{iffalse}% -\fi\fi +\fi\fi\fi \def\pxrr@jc#1{% \pxrr@jc@a#1\pxrr@nil } @@ -468,20 +504,27 @@ \else \pxrr@csletcs{ifpxrr@in@tate}{iffalse} \fi -\def\pxrr@get@jchar@token#1#2{% - \begingroup - \kansujichar\@ne=#2\relax - \xdef\pxrr@x@gtempa{\kansuji\@ne}% - \endgroup - \let#1\pxrr@x@gtempa -} -\ifpxrr@in@unicode\else - \ifpxrr@in@ptex\else - \def\pxrr@get@jchar@token#1#2{% - \def#1{?}% - } - \fi -\fi +\ifpxrr@in@ptex + \def\pxrr@get@jchar@token#1#2{% + \begingroup + \kansujichar\@ne=#2\relax + \xdef\pxrr@x@gtempa{\kansuji\@ne}% + \endgroup + \let#1\pxrr@x@gtempa + } +\else\ifpxrr@in@unicode + \def\pxrr@get@jchar@token#1#2{% + \begingroup + \lccode`\?=#2\relax + \lowercase{\xdef\pxrr@x@gtempa{?}}% + \endgroup + \let#1\pxrr@x@gtempa + } +\else + \def\pxrr@get@jchar@token#1#2{% + \def#1{?}% + } +\fi\fi \pxrr@jchardef\pxrr@x@K=\pxrr@jc{306C:4E00} \ifpxrr@in@ptex \def\pxrr@get@iiskip#1{% @@ -501,11 +544,20 @@ \fi }% } +\else\ifpxrr@in@luatexja + \def\pxrr@get@iiskip#1{% + \edef#1{% + \ifnum\ltjgetparameter{autospacing}=\@ne + \ltjgetparameter{kanjiskip}% + \else \pxrr@zeropt + \fi + }% + } \else \def\pxrr@get@iiskip#1{% \let#1\pxrr@zeropt } -\fi +\fi\fi \ifpxrr@in@ptex \def\pxrr@get@iaiskip#1{% \pxrr@x@swafalse @@ -524,22 +576,68 @@ \fi }% } -\else +\else\ifpxrr@in@luatexja \def\pxrr@get@iaiskip#1{% - \let#1\pxrr@zeropt + \edef#1{% + \ifnum\ltjgetparameter{autoxspacing}=\@ne + \ltjgetparameter{xkanjiskip}% + \else \pxrr@zeropt + \fi + }% } -\fi +\else + \def\pxrr@get@iaiskip#1{% + \begingroup + \setbox\z@\hbox{M\pxrr@x@K}% + \setbox\tw@\hbox{M\vrule\@width\z@\relax\pxrr@x@K}% + \@tempdima\wd\z@ \advance\@tempdima-\wd\tw@ + \@tempdimb\@tempdima \divide\@tempdimb\thr@@ + \xdef\pxrr@x@gtempa{\the\@tempdima\space minus \the\@tempdimb}% + \endgroup + \let#1=\pxrr@x@gtempa + }% +\fi\fi \ifpxrr@in@ptex \def\pxrr@get@zwidth#1{% \@tempdima=1zw\relax \edef#1{\the\@tempdima}% } +\else\if\ifx\zw\@undefined T\else F\fi F% if defined + \def\pxrr@get@zwidth#1{% + \@tempdima=1\zw\relax + \edef#1{\the\@tempdima}% + } +\else\if\ifx\jsZw\@undefined T\else F\fi F% if defined + \def\pxrr@get@zwidth#1{% + \@tempdima=1\jsZw\relax + \edef#1{\the\@tempdima}% + } +\else\ifnum\pxrr@x@K>\@cclv + \def\pxrr@get@zwidth#1{% + \setbox\tw@\hbox{\pxrr@x@K}% + \@tempdima\wd\tw@ + \ifdim\@tempdima>\z@\else \@tempdima\f@size\p@ \fi + \edef#1{\the\@tempdima}% + } \else \def\pxrr@get@zwidth#1{% - \@tempdima=1em\relax + \@tempdima\f@size\p@\relax \edef#1{\the\@tempdima}% } -\fi +\fi\fi\fi\fi +\ifpxrr@in@ptex + \def\pxrr@get@prebreakpenalty#1#2{% + #1=\prebreakpenalty`#2\relax + } +\else\ifpxrr@in@luatexja + \def\pxrr@get@prebreakpenalty#1#2{% + #1=\ltjgetparameter{prebreakpenalty}{`#2}\relax + } +\else + \def\pxrr@get@prebreakpenalty#1#2{% + #1=\z@ + } +\fi\fi \newif\ifpxrr@in@setup \pxrr@in@setupfalse \newcommand*\rubysetup[1]{% \pxrr@in@setuptrue @@ -585,6 +683,7 @@ } \newcommand*\rubyuseaghost{% \pxrr@aghosttrue + \pxrr@setup@aghost } \newcommand*\rubynouseaghost{% \pxrr@aghostfalse @@ -601,6 +700,12 @@ \newcommand*\rubynobreakjukugo{% \pxrr@break@jukugofalse } +\newcommand*\rubysafemode{% + \pxrr@safe@modetrue +} +\newcommand*\rubynosafemode{% + \pxrr@safe@modefalse +} \newcommand*\rubystretchprop[3]{% \edef\pxrr@sprop@x{#1}% \edef\pxrr@sprop@y{#2}% @@ -645,6 +750,8 @@ \pxrr@anobrfalse \pxrr@bfintrfalse \pxrr@afintrfalse + \pxrr@mode@givenfalse + \pxrr@athead@givenfalse \def\pxrr@po@FS{bi}% \expandafter\pxrr@parse@option@loop\pxrr@tempa @\pxrr@end } @@ -793,21 +900,27 @@ } \def\pxrr@po@PR@c{% \chardef\pxrr@athead\z@ + \pxrr@athead@giventrue } \def\pxrr@po@PR@h{% \chardef\pxrr@athead\@ne + \pxrr@athead@giventrue } \def\pxrr@po@PR@H{% \chardef\pxrr@athead\tw@ + \pxrr@athead@giventrue } \def\pxrr@po@PR@m{% \let\pxrr@mode=m% + \pxrr@mode@giventrue } \def\pxrr@po@PR@g{% \let\pxrr@mode=g% + \pxrr@mode@giventrue } \def\pxrr@po@PR@j{% \let\pxrr@mode=j% + \pxrr@mode@giventrue } \def\pxrr@po@PR@P{% \chardef\pxrr@side\z@ @@ -880,25 +993,28 @@ \if g\pxrr@mode\else \ifpxrr@abody \let\pxrr@mode=g\relax + \ifpxrr@mode@given + \pxrr@warn@must@group + \fi \fi + \fi + \if g\pxrr@mode\else \ifnum\pxrr@side=\tw@ \let\pxrr@mode=g\relax - \fi - \if g\pxrr@mode - \if g\pxrr@d@mode + \ifpxrr@mode@given \pxrr@warn@must@group \fi \fi \fi \ifnum\pxrr@athead>\z@ \ifpxrr@in@tate\else - \pxrr@athead\z@ + \chardef\pxrr@athead\z@ \fi \if g\pxrr@mode - \pxrr@athead\z@ + \chardef\pxrr@athead\z@ \fi \ifnum\pxrr@athead=\z@ - \ifnum\pxrr@d@athead>\z@ + \ifpxrr@athead@given \pxrr@warn@bad@athead \fi \fi @@ -1135,11 +1251,11 @@ \newif\ifpxrr@protr \newif\ifpxrr@any@protr \def\pxrr@epsilon{0.01pt} -\def\pxrr@compose@block{% +\def\pxrr@compose@block#1#2#3{% \let\pxrr@compose@block@do\pxrr@compose@oneside@block@do - \pxrr@compose@block@pre + \pxrr@compose@block@pre{#1}{#2}{#3}{}% } -\def\pxrr@compose@oneside@block@do#1#2#3{% +\def\pxrr@compose@oneside@block@do#1#2#3#4{% \setbox\pxrr@boxa\pxrr@hbox{#2}% \setbox\pxrr@boxr\pxrr@hbox{% \pxrr@use@ruby@font @@ -1257,27 +1373,43 @@ \pxrr@ifnum{\pxrr@fullsize>\z@}{% \pxrr@compose@block@pre@a }{% - \pxrr@compose@block@pre@c + \pxrr@compose@block@pre@d }% } -\def\pxrr@compose@block@pre@a#1#2#3{% - \def\pxrr@compose@block@tempa{#3}% +\def\pxrr@compose@block@pre@a#1#2#3#4{% + \def\pxrr@compose@block@tempa{#4}% \pxrr@transform@kana\pxrr@compose@block@tempa \expandafter\pxrr@compose@block@pre@b - \expandafter{\pxrr@compose@block@tempa}{#1}{#2}% + \expandafter{\pxrr@compose@block@tempa}{#1}{#2}{#3}% } -\def\pxrr@compose@block@pre@b#1#2#3{% - \pxrr@compose@block@pre@c{#2}{#3}{#1}% +\def\pxrr@compose@block@pre@b#1#2#3#4{% + \def\pxrr@compose@block@tempa{#4}% + \pxrr@transform@kana\pxrr@compose@block@tempa + \expandafter\pxrr@compose@block@pre@c + \expandafter{\pxrr@compose@block@tempa}{#1}{#2}{#3}% } -\def\pxrr@compose@block@pre@c{% +\def\pxrr@compose@block@pre@c#1#2#3#4{% + \pxrr@compose@block@pre@d{#3}{#4}{#1}{#2}% +} +\def\pxrr@compose@block@pre@d{% \pxrr@ifnum{\pxrr@evensp=\z@}{% - \pxrr@compose@block@pre@d + \pxrr@compose@block@pre@e + }{% + \pxrr@compose@block@pre@f + }% +} +\def\pxrr@compose@block@pre@e#1#2{% + \pxrr@compose@block@pre@f{#1}{{#2}}% +} +\def\pxrr@compose@block@pre@f{% + \pxrr@ifnum{\pxrr@revensp=\z@}{% + \pxrr@compose@block@pre@g }{% \pxrr@compose@block@do }% } -\def\pxrr@compose@block@pre@d#1#2{% - \pxrr@compose@block@do{#1}{{#2}}% +\def\pxrr@compose@block@pre@g#1#2#3#4{% + \pxrr@compose@block@do{#1}{#2}{{#3}}{{#4}}% } \def\pxrr@add@protect#1{% \expandafter\pxrr@add@protect@a @@ -1345,7 +1477,7 @@ \pxrr@check@kinsoku@c#1#1% } \def\pxrr@check@kinsoku@c#1{% - \pxrr@cntr\prebreakpenalty`#1\relax + \pxrr@get@prebreakpenalty\pxrr@cntr{#1}% \pxrr@tempb } \def\pxrr@tempa#1#2\pxrr@nil{% @@ -1416,12 +1548,25 @@ \hskip-\pxrr@intr@amount\relax \fi \else - \penalty\pxrr@auto@penalty\relax \hskip-\pxrr@intr@amount\relax \hskip\pxrr@auto@icspace\relax \fi \fi } +\def\pxrr@put@head@penalty{% + \ifpxrr@ghost\else \ifpxrr@par@head\else + \ifpxrr@abody + \pxrr@intrude@setauto@a + \else + \pxrr@intrude@setauto@j + \fi + \ifnum\pxrr@auto@penalty=\z@\else + \pxrr@cnta\lastpenalty \unpenalty + \advance\pxrr@cnta\pxrr@auto@penalty\relax + \penalty\pxrr@cnta + \fi + \fi\fi +} \def\pxrr@intrude@end{% \ifpxrr@ghost\else \let\pxrr@intr@amount\pxrr@aspace @@ -1530,6 +1675,9 @@ \ifpxrrDebug \pxrr@debug@show@input \fi + \ifpxrr@safe@mode + \pxrr@setup@safe@mode + \fi \pxrr@if@alive{% \if g\pxrr@mode \pxrr@ruby@check@g @@ -1555,12 +1703,21 @@ \ifpxrrDebug \pxrr@debug@show@input \fi + \ifpxrr@safe@mode + \pxrr@setup@safe@mode + \fi \pxrr@if@alive{% \pxrr@ruby@check@tg \pxrr@if@alive{\pxrr@ruby@main@tg}% }% \pxrr@ruby@exit } +\def\pxrr@setup@safe@mode{% + \let\pxrr@mode=g% + \chardef\pxrr@evensp\z@ + \chardef\pxrr@revensp\z@ + \chardef\pxrr@fullsize\z@ +} \def\pxrr@ruby@check@g{% \ifnum\pxrr@body@count=\pxrr@ruby@count\relax \ifnum\pxrr@body@count=\@ne\else @@ -1624,6 +1781,7 @@ \pxrr@zip@list\pxrr@body@list\pxrr@ruby@list \let\pxrr@whole@list\pxrr@res \pxrr@check@par@head + \pxrr@put@head@penalty \pxrr@any@protrfalse \ifpxrrDebug \pxrr@debug@show@recomp @@ -1705,6 +1863,7 @@ \pxrr@zip@list\pxrr@body@list\pxrr@ruby@list \let\pxrr@whole@list\pxrr@res \pxrr@check@par@head + \pxrr@put@head@penalty \ifpxrrDebug \pxrr@debug@show@recomp \fi @@ -1727,6 +1886,7 @@ } \def\pxrr@ruby@main@tg{% \pxrr@check@par@head + \pxrr@put@head@penalty \let\pxrr@locate@sing@\pxrr@locate@inner \ifpxrr@aprotr\else \let\pxrr@locate@sing@\pxrr@locate@end @@ -1754,23 +1914,24 @@ \kern-\wd\pxrr@boxa \fi } -\ifpxrr@aghost +\def\pxrr@setup@aghost{% + \global\let\pxrr@setup@aghost\relax \IfFileExists{t1lmr.fd}{% \begingroup - \fontsize{2.5}{0}\usefont{T1}{lmr}{m}{n} + \fontsize{2.5}{0}\usefont{T1}{lmr}{m}{n}% \endgroup - \pxrr@letcs\pxrr@aghostfont{T1/lmr/m/n/2.5}% - \chardef\pxrr@aghostchar=23 % compwordmark - \def\pxrr@aghost{{\pxrr@aghostfont\pxrr@aghostchar}}% - \xspcode\pxrr@aghostchar=3 % + \global\pxrr@letcs\pxrr@aghostfont{T1/lmr/m/n/2.5}% + \global\chardef\pxrr@aghostchar=23 % compwordmark + \gdef\pxrr@aghost{{\pxrr@aghostfont\pxrr@aghostchar}}% + \global\xspcode\pxrr@aghostchar=3 % }{%else - \oxrr@warn{Ghost embedding for \string\aruby\space + \pxrr@warn{Ghost embedding for \string\aruby\space is disabled,\MessageBreak since package lmodern is missing}% - \pxrr@aghostfalse - \let\pxrr@aghosttrue\relax + \global\pxrr@aghostfalse + \global\let\pxrr@aghosttrue\relax }% -\fi +} \def\pxrr@aprologue{% \ifpxrr@aghost \pxrr@aghost @@ -1832,6 +1993,8 @@ pxrr@aintr = \pxrr@aintr^^J% pxrr@athead = \the\pxrr@athead^^J% pxrr@mode = \meaning\pxrr@mode^^J% + ifpxrr@athead@given = \meaning\ifpxrr@athead@given^^J% + ifpxrr@mode@given = \meaning\ifpxrr@mode@given^^J% pxrr@body@list = \meaning\pxrr@body@list^^J% pxrr@body@count = \@nameuse{pxrr@body@count}^^J% pxrr@ruby@list = \meaning\pxrr@ruby@list^^J% -- cgit v1.2.3