diff options
author | Karl Berry <karl@freefriends.org> | 2014-05-05 22:06:34 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2014-05-05 22:06:34 +0000 |
commit | c282c4699b5c50d0d050bb1d7f5187a47eebc94e (patch) | |
tree | 247a127065821c008bc8fee600c1e130e2d0ecd5 /Master/texmf-dist/doc/luatex | |
parent | c2e26b130cd3c16ddba1e50bd65f8ff334ba8acc (diff) |
luatexja (4may14)
git-svn-id: svn://tug.org/texlive/trunk@33863 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/luatex')
-rw-r--r-- | Master/texmf-dist/doc/luatex/luatexja/README | 8 | ||||
-rw-r--r-- | Master/texmf-dist/doc/luatex/luatexja/jfm-ujisc33.lua | 135 | ||||
-rw-r--r-- | Master/texmf-dist/doc/luatex/luatexja/luatexja-en.pdf | bin | 340132 -> 362167 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf | bin | 706092 -> 727474 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/luatex/luatexja/luatexja-ruby.pdf | bin | 0 -> 324385 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/luatex/luatexja/luatexja-ruby.tex | 806 | ||||
-rw-r--r-- | Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx | 291 |
7 files changed, 1176 insertions, 64 deletions
diff --git a/Master/texmf-dist/doc/luatex/luatexja/README b/Master/texmf-dist/doc/luatex/luatexja/README index 8cd4cbe045a..3668aeb2158 100644 --- a/Master/texmf-dist/doc/luatex/luatexja/README +++ b/Master/texmf-dist/doc/luatex/luatexja/README @@ -1,4 +1,4 @@ -The LuaTeX-ja Package 20140324.0 +The LuaTeX-ja Package 20140504.0 -------------------------------- Copyright (c) 2011--2014 The LuaTeX-ja project License: modified BSD (see COPYING) @@ -33,9 +33,9 @@ Installation 2. If you must/want to install manually: a. Download the source archive from CTAN, - or tagged as 20140324.0 in the Git repository by + or tagged as 20140504.0 in the Git repository by <http://git.sourceforge.jp/view?p=luatex-ja/luatexja.git - ;a=snapshot;h=refs/tags/20140324.0;sf=tgz> + ;a=snapshot;h=refs/tags/20140504.0;sf=tgz> b1. Extract the archive and process following three files by LuaLaTeX to generate classes for Japanese typesetting: @@ -80,4 +80,4 @@ Notes * src/*.{ins.dtx} and src/ltj-kinsoku_make.tex are not needed in regular use. -Last commit date: Mon Mar 24 09:20:06 2014 +0900 +Last commit date: Sun May 4 06:31:45 2014 +0900 diff --git a/Master/texmf-dist/doc/luatex/luatexja/jfm-ujisc33.lua b/Master/texmf-dist/doc/luatex/luatexja/jfm-ujisc33.lua new file mode 100644 index 00000000000..7879f58c3b7 --- /dev/null +++ b/Master/texmf-dist/doc/luatex/luatexja/jfm-ujisc33.lua @@ -0,0 +1,135 @@ +luatexja.jfont.define_jfm { + dir = 'yoko', + zw = 1.0, zh = 1.0, + + [0] = { + align = 'left', left = 0.0, down = 0.0, + width = 1.0*0.67, height = 0.88, depth = 0.12, italic=0.0, + glue = { + [1] = { 0.5*0.67 , 0.0, 0.5 }, + [3] = { 0.25*0.67, 0.0, 0.25 } + } + }, + + [1] = { -- 開き括弧類 + chars = { + '‘', '“', '〈', '《', '「', '『', '【', '〔', '〖', + '〘', '〝', '(', '[', '{', '⦅' + }, + align = 'right', left = 0.0, down = 0.0, + width = 0.5*0.67, height = 0.88, depth = 0.12, italic=0.0, + glue = { + [3] = { 0.25*0.67, 0.0, 0.25 } + } + }, + + [2] = { -- 閉じ括弧類 + chars = { + '’', '”', '、', '〉', '》', '」', '』', '】', '〕', + '〗', '〙', '〟', ')', ',', ']', '}', '⦆' + }, + align = 'left', left = 0.0, down = 0.0, + width = 0.5*0.67, height = 0.88, depth = 0.12, italic=0.0, + glue = { + [0] = { 0.5*0.67 , 0.0, 0.5 }, + [1] = { 0.5*0.67 , 0.0, 0.5 }, + [3] = { 0.25*0.67, 0.0, 0.25 }, + [5] = { 0.5*0.67 , 0.0, 0.5 }, + [6] = { 0.5*0.67 , 0.0, 0.5 }, + [7] = { 0.5*0.67 , 0.0, 0.5 } + } + }, + + [3] = { -- 中点類 + chars = {'・', ':', ';'}, + align = 'middle', left = 0.0, down = 0.0, + width = 0.5*0.67, height = 0.88, depth = 0.12, italic=0.0, + glue = { + [0] = { 0.25*0.67, 0.0, 0.25 }, + [1] = { 0.25*0.67, 0.0, 0.25 }, + [2] = { 0.25*0.67, 0.0, 0.25 }, + [3] = { 0.5*0.67 , 0.0, 0.5 }, + [4] = { 0.25*0.67, 0.0, 0.25 }, + [5] = { 0.25*0.67, 0.0, 0.25 }, + [6] = { 0.25*0.67, 0.0, 0.25 }, + [7] = { 0.25*0.67, 0.0, 0.25 } + } + }, + + [4] = { -- 句点類 + chars = {'。', '.'}, + align = 'left', left = 0.0, down = 0.0, + width = 0.5*0.67, height = 0.88, depth = 0.12, italic=0.0, + glue = { + [0] = { 0.5*0.67 , 0.0, 0.0 }, + [1] = { 0.5*0.67 , 0.0, 0.0 }, + [3] = { 0.75*0.67, 0.0, 0.25 }, + [5] = { 0.5*0.67 , 0.0, 0.0 }, + [6] = { 0.5*0.67 , 0.0, 0.0 }, + [7] = { 0.5*0.67 , 0.0, 0.0 } + } + }, + + [5] = { -- ダッシュ + chars = { '―', '‥', '…' }, + align = 'left', left = 0.0, down = 0.0, + width = 1.0*0.67, height = 0.88, depth = 0.12, italic=0.0, + glue = { + [1] = { 0.5*0.67 , 0.0, 0.5 }, + [3] = { 0.25*0.67, 0.0, 0.25 } + }, + kern = { + [5] = 0.0 + } + }, + + [6] = { -- 感嘆符・疑問符 + chars = { '?', '!' }, + align = 'left', left = 0.0, down = 0.0, + width = 1.0, height = 0.88, depth = 0.12, italic=0.0, + glue = { + [0] = { 0.5*0.67 , 0.0, 0.5 }, + [1] = { 0.5*0.67 , 0.0, 0.5 }, + [3] = { 0.25*0.67, 0.0, 0.25 }, + [7] = { 0.5*0.67 , 0.0, 0.5 }, + }, + kern = { + [5] = 0.0 + } + }, + + [7] = { -- 半角カナ + chars = { + '。', '「', '」', '、', '・', 'ヲ', 'ァ', 'ィ', 'ゥ', + 'ェ', 'ォ', 'ャ', 'ュ', 'ョ', 'ッ', 'ー', 'ア', 'イ', + 'ウ', 'エ', 'オ', 'カ', 'キ', 'ク', 'ケ', 'コ', 'サ', + 'シ', 'ス', 'セ', 'ソ', 'タ', 'チ', 'ツ', 'テ', 'ト', + 'ナ', 'ニ', 'ヌ', 'ネ', 'ノ', 'ハ', 'ヒ', 'フ', 'ヘ', + 'ホ', 'マ', 'ミ', 'ム', 'メ', 'モ', 'ヤ', 'ユ', 'ヨ', + 'ラ', 'リ', 'ル', 'レ', 'ロ', 'ワ', 'ン', '゙', '゚', + "AJ1-516", "AJ1-517", "AJ1-518", "AJ1-519", "AJ1-520", "AJ1-521", "AJ1-522", + "AJ1-523", "AJ1-524", "AJ1-525", "AJ1-526", "AJ1-527", "AJ1-528", "AJ1-529", + "AJ1-530", "AJ1-531", "AJ1-532", "AJ1-533", "AJ1-534", "AJ1-535", "AJ1-536", + "AJ1-537", "AJ1-538", "AJ1-539", "AJ1-540", "AJ1-541", "AJ1-542", "AJ1-543", + "AJ1-544", "AJ1-545", "AJ1-546", "AJ1-547", "AJ1-548", "AJ1-549", "AJ1-550", + "AJ1-551", "AJ1-552", "AJ1-553", "AJ1-554", "AJ1-555", "AJ1-556", "AJ1-557", + "AJ1-558", "AJ1-559", "AJ1-560", "AJ1-561", "AJ1-562", "AJ1-563", "AJ1-564", + "AJ1-565", "AJ1-566", "AJ1-567", "AJ1-568", "AJ1-569", "AJ1-570", "AJ1-571", + "AJ1-572", "AJ1-573", "AJ1-574", "AJ1-575", "AJ1-576", "AJ1-577", "AJ1-578", + "AJ1-579", "AJ1-580", "AJ1-581", "AJ1-582", "AJ1-583", "AJ1-584", "AJ1-585", + "AJ1-586", "AJ1-587", "AJ1-588", "AJ1-589", "AJ1-590", "AJ1-591", "AJ1-592", + "AJ1-593", "AJ1-594", "AJ1-595", "AJ1-596", "AJ1-597", "AJ1-598", + }, + align = 'left', left = 0.0, down = 0.0, + width = 0.5*0.67, height = 0.88, depth = 0.12, italic=0.0, + glue = { + [1] = { 0.5*0.67 , 0.0, 0.5 }, + [3] = { 0.25*0.67, 0.0, 0.25 } + } + }, + + [99] = { -- box末尾 + chars = {'boxbdd', 'parbdd'}, + }, + +}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/luatex/luatexja/luatexja-en.pdf b/Master/texmf-dist/doc/luatex/luatexja/luatexja-en.pdf Binary files differindex 3f87190f0ae..4c398d686a5 100644 --- a/Master/texmf-dist/doc/luatex/luatexja/luatexja-en.pdf +++ b/Master/texmf-dist/doc/luatex/luatexja/luatexja-en.pdf diff --git a/Master/texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf b/Master/texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf Binary files differindex 938ebdff1c6..187b498f942 100644 --- a/Master/texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf +++ b/Master/texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf diff --git a/Master/texmf-dist/doc/luatex/luatexja/luatexja-ruby.pdf b/Master/texmf-dist/doc/luatex/luatexja/luatexja-ruby.pdf Binary files differnew file mode 100644 index 00000000000..aee015b9256 --- /dev/null +++ b/Master/texmf-dist/doc/luatex/luatexja/luatexja-ruby.pdf diff --git a/Master/texmf-dist/doc/luatex/luatexja/luatexja-ruby.tex b/Master/texmf-dist/doc/luatex/luatexja/luatexja-ruby.tex new file mode 100644 index 00000000000..86167b031c4 --- /dev/null +++ b/Master/texmf-dist/doc/luatex/luatexja/luatexja-ruby.tex @@ -0,0 +1,806 @@ +%#! luajitlatex +%%% a test of ruby. +\documentclass[a4paper,10pt]{ltjsarticle} +\usepackage{luatexja-otf,amsmath} +\usepackage[match]{luatexja-fontspec} +\usepackage[kozuka-pr6n]{luatexja-preset}\normalsize +\def\emph#1{\textbf{\textgt{#1}}} +\def\headfont{\normalfont\bfseries\gtfamily} +\setmonojfont{KozGoPr6N-Regular.otf} + +\usepackage[textwidth=45\zw, lines=45, footskip=6mm]{geometry} +\advance\leftmargini-1\zw\advance\leftmarginii-1\zw + + +\usepackage{luatexja-ruby,showexpl,booktabs} +\lstset{ + preset=\normalsize, basicstyle=\small\ttfamily, basewidth=0.5em, + explpreset={numberstyle=\tiny, numbers=left, numbersep=1em, columns=fixed}, +} +\makeatletter\let\SX@Info=\relax\makeatother +\fboxsep=0mm + +\usepackage{hyperref,bookmark,xcolor} +\hypersetup{% + unicode, + colorlinks, + allbordercolors=1 1 1, + allcolors=blue, + pdftitle={luatexja-ruby.sty} +} + +\def\Node#1#2{\,\vcenter{\hbox{\fboxsep=1pt\fbox{\vbox{\small\halign{\hfil##\hfil\cr + #1\mathstrut\cr\noalign{\hrule height.4pt}\strut#2\cr}}}}\,}} +\def\LuaTeX{Lua\TeX} + +% 三分ルビ用 +\DeclareFontShape{JY3}{mc}{mc}{n}{<-> [0.92487] + KozMinPr6N-Regular:extend=0.67;jfm=ujisc33}{} + +\title{\texttt{luatexja-ruby.sty}} +\begin{document} +\catcode`\<=13 +\def<#1>{{\normalfont\rm\itshape$\langle$#1\/$\rangle$}} +%\fontsize{13.19873}{15}\selectfont% + +\maketitle + +\begin{abstract} +\texttt{luatexja-ruby.sty} は,\LuaTeX-jaの機能を利用してルビの組版処理を行う追加パッケージである. +\LuaTeX, \LuaTeX-jaの内部処理に割り込むことにより,熟語ルビ中の行分割や, +行頭形・行中形・行末形の自動検出,また進入許容量の自動設定などを可能とした. +\end{abstract} + +\tableofcontents + +\newpage +\section{\ltjruby{利|用|方|法}{り|よう|ほう|ほう}} +パッケージ読み込みは,\verb+\usepackage{luatexja-ruby}+ で良く, +必要ならば自動的に\LuaTeX-ja本体を読み込む. +plain \LuaTeX でのロードはまだサポートしておらず, +\LaTeXe のみサポートしている. + +\subsection{\ltjruby{用|語}{よう|ご}} +「進入(intrusion)」「突出(protrusion)」という用語は, +\href{http://zrbabbler.sp.land.to/pxrubrica.html}{\texttt{pxrubrica}\ パッケージ}% +での用法に準ずる. + +\begin{quotation} +進入あり:と\ltjruby{暁}{あかつき}の + +進入なし:{\setkeys[ltj]{ruby}{mode=0}と\ltjruby{暁}{あかつき}の} + +突出あり:{\setkeys[ltj]{ruby}{stretch={1}{2}{1}}\ltjruby{聴衆}{ちようしゆう}} + +突出なし:{\setkeys[ltj]{ruby}{stretch={0}{2}{0}}\ltjruby{聴衆}{ちようしゆう}} +\end{quotation} + +\subsection{\ruby{命|令}{めい|れい}} +\paragraph{\tt\textbackslash ltjruby} +ルビ出力用命令の本体.\verb+\ruby+ という別名を定義している. +\begin{quote} +\tt \textbackslash ltjruby[<option>]\{親|文|字\}\{おや|も|じ\} +\end{quote} +のように使用する. +第2・第3引数内の「\verb+|+」はグループの区切りを表す.詳細は\ref{ssec:grp}\nobreak 小節を参照. + +<option>には以下の内容をkey-valueリストで指定可能である: +\begin{description} +\def\makelabel#1{\tt#1} +\item[pre=<real>] 前進入許容量をルビ全角単位で指定. +負の長さを指定した場合は,ルビの状況や直前の文字に応じた自動指定を意味する. +既定値は負(つまり,自動指定). + +\item[post=<real>] 同様に,後進入許容量を指定する.既定値は負(自動指定). + +\item[mode] 進入処理のモードを表すbit vector.下位2\,bitは,\texttt{pre}や +\texttt{post}が負である場合にしか効力を発揮しない.既定値は$(0001)_2 = 1$. +\begin{description} + \item[bit 0] 進入を無効にするならば0,有効にするならば1. + \item[bit 1] 前進入許容量$B$と後進入許容量$A$が異なった場合, +そのまま処理する場合は0,小さい方に揃えるならば1. + \item[bit 2--3] ルビ文字の突出量$x$から実際の前進入量$b$,後進入量$a$の計算方法を指定する. +親文字の文字数が$k+1$,親文字の前に入る空白量・間の空白量・後ろの空白量の比が$p:q:r$のとき, +\begin{description} + \item[00] $b=\min\{B, xp/[p+kq+r]\}$, \ $a=\min\{A, xr/[p+kq+r]\}$ + \item[01] $b=\min(B, x)$, \ $a=\min[A, \max(x-b,0)]$ + \item[10] $a=\min(A, x)$, \ $b=\min[B, \max(x-a,0)]$ + \item[11] $M=\min(B,A)$とおく.もし$x\le 2M$ならば$b=a=x/2$.そうでなければ +\[ + b=\min\left(B, M + \frac{(x-2M)p}{p+kp+r}\right),\qquad + a=\min\left(A, M + \frac{(x-2M)r}{p+kp+r}\right) +\] +\end{description} + +組み方の具体例を実際に示す.例示のため,平仮名にはルビが1字まで,「立」にはルビを +0.5字分までかけてよいことにしている. +\begin{description} +\item[00]{\setkeys[ltj]{ruby}{mode=1}% +\ltjsetparameter{rubypreintrusion={`立,0.5}, rubypostintrusion={`立,0.5}}% +は\ltjruby{美}{うつく}しい + \quad は\ltjruby{聴衆}{ちようしゆう}と\quad +は\ltjruby{暁}{あかつき}立\quad +は\ltjruby{聴衆}{ちようしゆう}立\par} +\item[01]{\setkeys[ltj]{ruby}{mode=5}% +\ltjsetparameter{rubypreintrusion={`立,0.5}, rubypostintrusion={`立,0.5}}% +は\ltjruby{美}{うつく}しい + \quad は\ltjruby{聴衆}{ちようしゆう}と\quad +は\ltjruby{暁}{あかつき}立\quad +は\ltjruby{聴衆}{ちようしゆう}立\par} +\item[10]{\setkeys[ltj]{ruby}{mode=9}% +\ltjsetparameter{rubypreintrusion={`立,0.5}, rubypostintrusion={`立,0.5}}% +は\ltjruby{美}{うつく}しい + \quad は\ltjruby{聴衆}{ちようしゆう}と\quad +は\ltjruby{暁}{あかつき}立\quad +は\ltjruby{聴衆}{ちようしゆう}立\par} +\item[11]{\setkeys[ltj]{ruby}{mode=13}% +\ltjsetparameter{rubypreintrusion={`立,0.5}, rubypostintrusion={`立,0.5}}% +は\ltjruby{美}{うつく}しい\quad +は\ltjruby{聴衆}{ちようしゆう}と\quad +は\ltjruby{暁}{あかつき}立\quad +は\ltjruby{聴衆}{ちようしゆう}立\par} +\end{description} + +\end{description} +\item[stretchruby=\{<left>\}\{<middle>\}\{<right>\}] 親文字の合計長が +ルビ文字の合計長より長い時に,ルビ文字の前・間・後に入れる空白の割合であり, +それぞれ0--7の自然数で指定する. +既定値は\ \verb+{1}{2}{1}+ である. +<left>はルビ文字の先頭までの空き量,<middle>はルビ文字間の空き量,<right>はルビ文字の末尾からの +空き量(の比)を表す.以下が例である. +\begin{LTXexample}[width=0.3\textwidth, preset=\Large] +\ltjruby[stretchruby=123,maxmargin=2]% + {◯◯◯◯}{◆◆} +\end{LTXexample} +\item[stretch=\{<left>\}\{<middle>\}\{<right>\}] +行中形でルビ文字の方が長い場合,親文字の前・中・後に入れる空白の割合. +既定値は\ \verb+{1}{2}{1}+ である.それ以外の代表的な値としては,例えば次のようなものがある. +\begin{description} +\item[親文字均等割禁止] \verb+{1}{0}{1}+\ など<middle>を0にした値 +\item[前突出禁止] \verb+{0}{1}{1}+ +\item[後突出禁止] \verb+{1}{1}{0}+ +\end{description} + +\item[stretchbol=\{<left>\}\{<middle>\}\{<right>\}] 行頭形〜. +既定値は\ \verb+{0}{1}{1}+ である. +\item[stretcheol=\{<left>\}\{<middle>\}\{<right>\}] 行末形〜. +既定値は\ \verb+{1}{1}{0}+ である. + +\item[maxmargin=<real>] 親文字の方がルビより長い時に,ルビの先頭と親文字の先頭,及び +ルビ末尾と親文字の末尾の間に許される最大の空白量.\textbf{親文字全角単位}で指定し,既定値は0.5. + +\medskip +\item[size=<real>] ルビ文字の親文字に対する大きさ.既定値は0.5. +\item[intergap=<real>] ルビ文字と親文字との空きを親文字全角単位で指定.既定値は0. +\item[rubysmash=<bool>] ルビの高さを0にするか.既定値は偽.次が例である. +\begin{LTXexample}[width=0.3\textwidth, preset=\Large] +\ \vrule width 0pt height 2\zw depth 1\zw +\frame{\ltjruby[rubysmash=false]{本}{ほん}}\ +\frame{\ltjruby[rubysmash=true]{本}{ほん}}\ +\frame{\ltjruby[rubysmash=false,intergap=0.2] + {本}{ほん}}\ +\frame{\ltjruby[rubysmash=true,intergap=0.2] + {本}{ほん}}\ +\frame{\ltjruby[rubysmash=false,intergap=-1.5] + {本}{ほん}} +\end{LTXexample} + + +\item[kenten=<command>]各文字につく圏点の出力命令を指定する.既定値は「\verb+\ltjalchar`•+」 +であり,\texttt{U+2022} (Bullet)を\textbf{ALchar}として出力することを指定している. + +\item[fontcmd=<command>]ルビ用のフォント切り替え命令を指定する. +このキーの内容が実行された後に\ \verb+\fontsize...\selectfont+\ が実行されるので, +このキーの指定では最後に\ \verb+\selectfont+ を加える必要はない. + +この \texttt{fontcmd} キーの内容は多くの回数実行される. +例えば,\texttt{luatexja-fontspec}パッケージを用いてOpenTypeフォントを用いる場合, +\begin{lstlisting} + fontcmd=\addjfontfeatures{Style=Ruby} +\end{lstlisting} +のようにしてルビ用字形を用いることが可能だが,現在の実装ではタイプセットに時間がかかるようになる. + + +\end{description} + +\medskip +次の2つは,以上で説明した複数のオプションを一度に設定するためのものである. +普通はこの2つのうちいずれかを設定するだけで足りるだろう. + +\begin{description} +\def\makelabel#1{\tt#1} +\item[naka] 以下のオプションを同時に設定する.主に中付きルビを組むときに用いる. +\begin{verbatim} +mode=1, stretch={1}{2}{1}, stretchruby={1}{2}{1} +\end{verbatim} +\item[kata] 同様に,肩付きルビ用に,次を設定する. +\begin{verbatim} +mode=9, stretch={1}{2}{1}, stretchruby={0}{0}{1} +\end{verbatim} +\end{description} + +\paragraph{\tt\textbackslash ltjsetruby\{<option>\}} +<option>の既定値を指定する.\texttt{luatexja-ruby} 読み込み時の値は +各項目の所で既に説明してあるが,次のようになっている. +\begin{verbatim} + pre=-1, post=-1, mode=1, + stretchruby={1}{2}{1}, stretch = {1}{2}{1}, + stretchbol={0}{1}{1}, stretcheol={1}{1}{0}, + maxmargin=0.5, size=0.5, intergap=0, rubysmash=false, + kenten=\ltjalchar`•, fontcmd=\relax +\end{verbatim} + +\paragraph{\texttt{\textbackslash ltjsetparamater} に追加されるキー} +\begin{description} +\item[\textsf{\mdseries rubypreintrusion}\tt =\{<chr\_code>, <pre\_int>\}] +文字<chr\_code> に,その\textbf{直後}のルビによって掛けられるルビ文字列の最大長をルビ全角単位で指定. +\item[\textsf{\mdseries rubypostintrusion}\tt =\{<chr\_code>, <post\_int>\}] +文字<chr\_code> に,その\textbf{直前}のルビによって掛けられるルビ文字列の最大長をルビ全角単位で指定. +\end{description} +既定値は,\textsf{rubypreintrusion},~\textsf{rubypostintrusion}とも +以下の文字に対しては1,その他の文字については0である: +\begin{quote} + 平仮名(\texttt{U+3040}--\texttt{U+309F}),カギ括弧「」,読点「,」「、」,中黒「・」 +\end{quote} +また,ここでは「文字コード$-1$の文字」は,「段落開始の \verb+\parindent+」を表す% +\footnote{通常の\LuaTeX-jaにおける指定では文中数式境界を表していることに注意.}. +この「文字」に対する\textsf{rubypreintrusion}の値も1である. + +\paragraph{\texttt{\textbackslash ltjkenten}} +圏点を出力する命令で,\verb+\kenten+ という別名を定義している. +\begin{quote} + \tt \textbackslash ltjkenten[<option>]\{親文字\} +\end{quote} +のように使用する.複数文字に圏点をつける場合でも,\verb+\ltjruby+ のように「\texttt{|}」を使って +文字を区切る\textbf{必要はない}ことに注意してほしい. + +圏点として出力される文字は \texttt{kenten} キーによって指定し, +圏点自身の大きさは(ルビと同様に)\texttt{size} キーで指定する. + +\subsection{グループの\ruby{指|定}{し|てい}} +\label{ssec:grp} +\begin{quote} +\tt \textbackslash ltjruby[<option>]\{親|文|字\}\{おや|も|じ\} +\end{quote} +のように,\verb+\ltjruby+\ の第2・第3引数内の「\verb+|+」はグループの区切りを表す. +グループの数は両者で一致しなければならず, +\verb+\ltjruby{紋章}{もん|しよう}+ のようには\emph{できない}. + +1グループのみのルビ(単純グループルビ)はグループルビとして組まれる.そのため, +もしモノルビを使いたければ,面倒でも +\begin{LTXexample}[width=0.4\textwidth, preset=\Large] +の\ltjruby{紋}{もん}\ltjruby{章}{しよう}が +\end{LTXexample} +のように,複数回使用すること. +また,全てのグループにおいて「ルビ文字列の長さは親文字列以下」であれば, +単純グループルビの並びとして扱われる.すなわち,次の2行は全くの等価となる. +\begin{verbatim} +\ltjruby{普|通|車}{ふ|つう|しや} +\ltjruby{普}{ふ}\ltjruby{通}{つう}\ltjruby{車}{しや} +\end{verbatim} + +\newpage +複数グループかつ上記の条件を満たさない場合は, +所謂「可動グループルビ」であり,ルビの前後や各グループの切れ目で行分割が可能となる. +例えば +\begin{verbatim} +…の\ltjruby{表|現|力}{ひよう|げん|りよく}は… +\end{verbatim} +という入力からは得られる組版結果は,次のいずれかになる. +\begin{center} + \begin{tabular}{ll} + \toprule + 改行なし(行中形)&\Large …の\ltjruby{表|現|力}{ひよう|げん|りよく}は…\\ + 直前で改行&\Large \vrule \ltjruby[stretch=011]{表|現|力}{ひよう|げん|りよく}は…\\ +&\Large …の\ltjruby[stretch=110]{表}{ひよう} + \vrule\ltjruby[stretch=011]{現|力}{げん|りよく}は…\\ +&\Large …の\ltjruby[stretch=110]{表|現}{ひよう|げん} + \vrule\ltjruby[stretch=011]{力}{りよく}は…\\ + 直後に改行&\Large …の\ltjruby[stretch=110]{表|現|力}{ひよう|げん|りよく}\vrule\\ +\bottomrule + \end{tabular} +\end{center} +\begin{itemize} + \item これらの行分割によってペナルティは発生しない. + \item 上記の例で見られるように, +2ブロック以上をまとめて組むときは,全体を1つのグループルビのように組版する(JIS~X~4051と同様). +『日本語組版処理の要件』では, +附属書Fに「熟語の構成,さらにその熟語の前後にくる文字の種類を考慮して配置する方法」として +別の方法を解説しているが,こちらの方法は現時点ではサポートしていないので, +面倒でも手動で \texttt{pre}, \texttt{post} などを使って頑張って欲しい. + \item 実装方法の都合により,ルビの直前・直後・途中で2箇所以上の改行が起きる場合,例えば +\begin{center} + \begin{tabular}{lll} + \toprule + \Large …の\ltjruby[stretch=110]{表}{ひよう} + \vrule\ltjruby[stretch=010]{現|力}{げん|りよく}\vrule& +\Large \vrule\ltjruby[stretch=010]{表|現}{ひよう|げん} + \vrule\ltjruby[stretch=011]{力}{りよく}は…& +\Large \vrule\ltjruby[stretch=010]{表|現|力}{ひよう|げん|りよく}\vrule\\ +\bottomrule + \end{tabular} +\end{center} +などの組み方は\emph{想定していない}. +\end{itemize} + +\newpage + +\section{\ruby{注|意|点}{ちゆう|い|てん}} +\begin{description} +\item[ルビ文字のはみ出し] +「日本語組版処理の要件」の図3.82のように, +ルビ文字のはみ出しが繋がらないようにする処理について述べる. + +例えば, +\begin{LTXexample}[preset=\Large,width=0.3\textwidth] +\ltjruby{陵}{りよう}と\ltjruby{陵}{みささぎ}\\ +\ltjruby{陵}{りよう}と\ltjruby[pre=1]{陵}{みささぎ} +\end{LTXexample} +において,1行目右側の「\ltjruby{陵}{みささぎ}」のルビが前の「と」にかかる量は次のように決まる: +\begin{enumerate} +\item 1回目の実行では,行分割前に「\ltjruby{陵}{りよう}」の後側進入量は前もって知ることはでき + ない.なので,「\ltjruby{陵}{りよう}」は行中形で組まれるものとして +「\ltjruby{陵}{みささぎ}」前側進入許容量は +\[ + \underbrace{0.5\,\mathrm{zw}}_{\text{元々の許容量}} +-\underbrace{0.25\,\mathrm{zw}}_{\text{前のルビの後側進入量(行中形)}}=0.25\,\mathrm{zw} +\] +となる.行分割後,「\ltjruby{陵}{りよう}」の実際の後側進入量は +auxファイルに記述される. +\item 2回目以降の実行では,auxファイルに保存された「\ltjruby{陵}{りよう}」の後側進入量 +を用いて,「\ltjruby{陵}{みささぎ}」前側進入許容量を次のように計算する: +\[ + \underbrace{0.5\,\mathrm{zw}}_{\text{元々の許容量}} +-\underbrace{0.25\,\mathrm{zw}}_{\text{前のルビの後側進入量 (from aux)}}=0.25\,\mathrm{zw}. +\] +\end{enumerate} +auxファイルに保存する際,各 \verb+\ltjruby+ 命令の呼び出しを識別するキーが必要になるが, +そのキーとしては単純に「何個目の \verb+\ltjruby+ 命令か」である. + +なお,以上の処理は,1行目と2行目を比較すれば分かるように, +「\ltjruby{陵}{みささぎ}」の\emph{前進入許容量指定(\texttt{pre})が自動}になっている場合のみ +実施される. + +\item[段落末尾のルビ] +段落がルビで終わった場合,そのルビが行末形で組まれることはない. +これは,段落の「本当の」末尾には \verb+\penalty10000\parfillskip+ があるためで, +ルビ処理用に作った最後のグルー(\ref{sec:impl}\nobreak 節の説明では$g_2$)が消去されないことによる. + +\verb+\parfillskip+ の長さ(や,場合によっては \verb+\rightskip+)を実測し, +それによって処理を変えるのも可能だが,そのようなことはしなかった. +段落がルビで終わることは普通ない(最低でも句点が続くだろう)と思うからである. + + + +\item[段落先頭のルビ] +同様に,段落先頭のルビは行頭形にはならない. +\texttt{pre}が負(つまり,自動指定)のとき,段落最初の \verb+\parindent+ 部分への +進入は可能である.\verb+\parindent+ 部分への進入許容量は +「文字$-1$」に対する\textsf{rubypreintrusion}(既定値は1,ルビ全角単位)と +\ \verb+\parindent+ の長さのうち小さい方である. +\begin{LTXexample}[preset=\Large,width=0.4\textwidth] +\parindent1\zw\noindent 012345\par +\ltjruby{陵}{みささぎ}は……\par +\ltjruby{承}{うけたまわ}り……\par +\parindent0.25\zw\ltjruby{陵}{みささぎ}は…… +\end{LTXexample} + + +\end{description} + +\newpage +\section{\ruby{実|装}{じつ|そう}について} +\label{sec:impl} +次の例で実装の大まかな方法を説明する. +\begin{LTXexample}[preset=\Large] +……を\ltjruby{流|暢}{りゆう|ちよう}に…… +\end{LTXexample} + +\begin{enumerate} +\item \verb|\ltjruby|コマンド自体は,一旦次のnode listを値とするwhatsit~$W$を作って, +現在の水平リストへと挿入する(必要ならば\verb|\leavevmode|も実行): +\[ + \Node{whatsit $w$}{value: 2}\longrightarrow + \Node{hlist $s_1$}{「りゆう」}\longrightarrow + \Node{hlist $p_1$}{「流」}\longrightarrow + \Node{hlist $s_2$}{「ちよう」}\longrightarrow + \Node{hlist $p_2$}{「暢」} +\] +ここで,最初の$w$の値2は,ルビが2つのパーツ「\ltjruby{流}{りゆう}」「\ltjruby{暢}{ちよう}」からなっていることを +表している.この値を$\mathit{cmp}$とおこう. +$s_i$達の中の文字は既にルビの大きさである. +\item \LuaTeX-jaの和文処理グルー挿入処理において, +このwhatsit~$W$はまとめて +「先頭が『流』,最後が『暢』であるようなhboxを \verb|\unhbox| で展開したもの」と扱われる. +言い換えれば,ルビ部分を無視した単なる「流暢」という和文文字の並びとして扱われる\footnote{「流」「暢」の間のグルーは既に入っている,と扱われる.}. +次のサンプルを参照 +\begin{LTXexample}[preset=\Large] +\leavevmode\hbox{.}A\\ +%↑xkanjiskip +\ltjruby{.}{}A +%↑2分 +\end{LTXexample} +\item 和文処理グルーの挿入が終わった後で,可動グループルビのためのノードの挿入に入る. +\begin{enumerate} +\item $W$の前後に$2\mathit{cmp}+1=5$個のノードが挿入され,$W$の周辺は次のようなノード列になる. +\begin{align*} + (\text{other nodes})&\longrightarrow + \Node{glue $g_0$}{}\longrightarrow \Node{whatsit~$W$}{元からある}\longrightarrow \Node{rule $r_1$}{} +\\&\longrightarrow + \Node{glue $g_1$}{}\longrightarrow \Node{rule $r_2$}{}\longrightarrow + \Node{glue $g_2$}{}\longrightarrow (\text{other nodes}) +\end{align*} + +\item このようにノードを挿入する目的は,\TeX の行分割処理自体に影響を加えずに可動グループルビ +を実現させることにある. +\begin{gather*} + (\text{other nodes})\longrightarrow + \Node{glue $g_0$}{}\longrightarrow \Node{whatsit~$W$}{元からある}\longrightarrow \Node{rule $r_1$}{}\\ +\noalign{\hrulefill 行の境目\hrulefill} +\Node{rule $r_2$}{}\longrightarrow + \Node{glue $g_2$}{}\longrightarrow (\text{other nodes}) +\end{gather*} +のようになったとしたら,「\ltjruby{流}{りゆう}」「\ltjruby{暢}{ちよう}」の間で行分割が起きた,ということがわかり, +$g_i$,~$r_i$達のノードを適切に置き換えればよい(後で詳しく説明する). + +\begin{figure}\centering\small +\begin{tabular}{cllll} +\toprule +\multicolumn{1}{c}{\bf ノード}&\multicolumn{1}{c}{\bf 組み方}&\multicolumn{1}{c}{\bf サンプル}% +&\multicolumn{1}{c}{\bf 対応するノード並び}\\ +\midrule +$n_1$&行末1グループ& +\Large +\fbox{を}{\color{blue!50!black}\gt\ltjruby[pre=1,mode=5,stretch=110]{流}{りゆう}}\vrule +& +$g_0\rightarrow W\rightarrow r_1$\\ +$n_2$&行末2グループ& +\Large +\fbox{を}{\color{blue!50!black}\gt\ltjruby[pre=1,mode=1,stretch=110]{流|暢}{りゆう|ちよう}}\vrule +& +$g_0\rightarrow W\rightarrow r_1\rightarrow g_2 \rightarrow r_2$\\ +$n_3$&行頭1グループ& +\Large +\vrule{\color{blue!50!black}\gt\ltjruby[post=1,mode=1,stretch=011]{暢}{ちよう}}\fbox{に} +& +$r_2\rightarrow g_2$\\ +$n_4$&行頭2グループ& +\Large +\vrule{\color{blue!50!black}\gt\ltjruby[post=1,mode=1,stretch=011]{流|暢}{りゆう|ちよう}}\fbox{に} +& +$W\rightarrow r_1\rightarrow g_2 \rightarrow r_2\rightarrow g_2$\\ +$n_5$&行中& +\Large +\fbox{を}{\color{blue!50!black}\gt\ltjruby[post=0.5,pre=0.5,mode=1]{流|暢}{りゆう|ちよう}}\fbox{に} +& +$g_0\rightarrow W\rightarrow r_1\rightarrow g_2 \rightarrow r_2\rightarrow g_2$\\ + +\bottomrule +\end{tabular} +\caption{ルビの組み方と対応するノード並び} +\label{fig:node} +\end{figure} + +\item なお,$r_i$達の高さ・深さは組み上がった後のそれである. +$g_i$,~$r_i$達の幅は,図\nobreak\ref{fig:node}に示したような対応に沿って算出する. +例えばこの場合,行中形$n_5$に対して +\[ + g_0+r_1+g_2+r_2+g_2 = 3\,\mathrm{zw}-(0.25\,\mathrm{zw}\times 2)=2.5\,\mathrm{zw} +\] +という方程式が立つ(zwは親文字全角の幅,進入量込). +$n_1$から$n_5$まで計5本の方程式が立つが,これらはGau\ss の消去法で解くことができて +$g_i$,~$r_i$達の幅が求まる. +\item また,ルビ処理を統括しているwhatsit~$W$の値も +\[ + \Node{whatsit $w$}{value: 2}\longrightarrow + \Node{vlist $n_1$}{末1}\longrightarrow + \Node{vlist $n_2$}{末2}\longrightarrow + \Node{vlist $n_3$}{頭1}\longrightarrow + \Node{vlist $n_4$}{頭2}\longrightarrow + \Node{vlist $n_5$}{中} +\] +に置き換えておく. + +\end{enumerate} + +\item \LuaTeX の行分割処理を普通に行う. +\item 行分割の結果に従って,$g_i$,~$r_i$達を適切に置換する. + +例えば行分割の結果 +\begin{gather*} + (\text{other nodes})\longrightarrow + \Node{glue $g_0$}{}\longrightarrow \Node{whatsit~$W$}{元からある}\longrightarrow \Node{rule $r_1$}{} + \tag{行A}\\ +\noalign{\hrulefill 行の境目\hrulefill} +\Node{rule $r_2$}{}\longrightarrow + \Node{glue $g_2$}{}\longrightarrow (\text{other nodes})\tag{行B} +\end{gather*} +のようになったとしよう. +\begin{enumerate} +\item 処理は段落の上の行から順番に行われる.行Aの処理がまわってきたとしよう. + +\item 行Aの先頭から順番に眺めていく.すると「whatsit~$W$由来」のノード,$g_0$,~$W$,~$r_1$が見つかり, +行Aはここで終わっている. + +まず,行Aのhboxの中身からwhatsit~$W$を消去(リストから取り除くだけで,$W$のメモリを解放するわけではない)する. +$g_0$,~($W$,)~$r_1$というノードの並びは,「行末1グループ」$n_1$に対応しているので, +$g_0$,~$r_1$を行Aから除去・メモリ解放し,代わりに$n_1$を行Aの中身に追加する. + +\item 次に行Bの処理にうつる.行Aでルビの処理は完了していない(2グループのルビなのにまだ1グループしか使っていない)ので, +「whatsit~$W$由来」のノードがいくつか行B内に残っているはずである. + +案の定,$r_2$,~$g_2$というノード列が見つかった.これは「行頭1グループ」$n_3$に対応しているので, +$r_2$,~$g_2$を行Bから除去・メモリ解放し,代わりに$n_3$を行Bの中身に挿入する. + +\item これで2グループとも使い切ったことになるので, +隔離しておいた$W$を,(使われなかった$n_2$,~$n_4$,~$n_5$などと共に)メモリ解放する.結果として +次のようになった: +\begin{gather*} + (\text{other nodes})\longrightarrow + \Node{vlist $n_1$}{末1}\tag{行A}\\ +\noalign{\hrulefill 行の境目\hrulefill} +\Node{vlist $n_3$}{頭1}\longrightarrow (\text{other nodes})\tag{行B} +\end{gather*} +\end{enumerate} +\end{enumerate} + +\newpage +\section{いくつかの例} +\def\rubytest{\ruby{黄金橋}{ゴールデンゲートブリッジ}\relax} + +\setbox0=\vbox{\hsize=22\zw% +ああああ\rubytest いうえおかきくけこ +あ\rubytest いうえおかきくけこ +あ\rubytest いうえおかきくけこ +あ\rubytest いうえおかきくけこ +あ\rubytest いうえおかきくけこ +あ\rubytest いうえおかきくけこ} +%\directlua{ltj.ext_show_node_list(tex.box[0], '? ', print)} +\fbox{\box0} + +\def\rubytest{\ruby{国府津}{こうづ}\relax} +% グループルビ + +\setbox0=\vbox{\hsize=18\zw% +あ\rubytest いうえおかきくけこ +あ\rubytest いうえおかきくけこ +あ\rubytest いうえおかきくけこ +あ\rubytest いうえおかきくけこ +あ\rubytest いうえおかきくけこ +あ\rubytest いうえおかきくけこ} +%\directlua{ltj.ext_show_node_list(tex.box[0], '? ', print)} +\fbox{\box0} + +\def\rubytest{\ruby{●●|◆}{◆◆◆◆◆◆|●●●}\relax} +\setbox0=\vbox{\hsize=19\zw% +あ\rubytest いうえおかきくけこ +あ\rubytest いうえおかきくけこ +あ\rubytest いうえおかきくけこ +あ\rubytest いうえおかきくけこイ +あ\rubytest いうえおかきくけこ +あ\rubytest いうえおかきくけこウ +あ\rubytest いうえおかきくけこエ +あ\rubytest いうえおかきくけこ +あ\rubytest いうえおかきくけこ +あ\rubytest いうえおかきくけこ} +%\directlua{ltj.ext_show_node_list(tex.box[0], '? ', print)} +\fbox{\box0} + +\def\rubytest{\ruby{●●|□}{◆◆◆|●●●}\relax} +\setbox0=\vbox{\hsize=19\zw% +あ\rubytest いうえおかきくけこ +あ\rubytest いうえおかきくけこ +あ\rubytest いうえおかきくけこ +あ\rubytest いうえおかきくけこイ +あ\rubytest いうえおかきくけこ +あ\rubytest いうえおかきくけこウ +あ\rubytest いうえおかきくけこエ +あ\rubytest いうえおかきくけこ +あ\rubytest いうえおかきくけこ +あ\rubytest いうえおかきくけこ} +%\directlua{ltj.ext_show_node_list(tex.box[0], '? ', print)} +\fbox{\box0} + +\def\rubytest{\ruby{異|様}{い|よう}\relax} +\setbox0=\vbox{\hsize=19\zw% +あ\rubytest いうえくけ +あ\rubytest いうえくけこ +あ\rubytest いうえくけこ +あ\rubytest いうえくけこイ +あ\rubytest いうえおかきくけこ} +%\directlua{ltj.ext_show_node_list(tex.box[0], '? ', print)} +\fbox{\box0} + +\def\rubytest{\ruby{□|■|□}{■■|□□□|■■}\relax} + +\setbox0=\vbox{\hsize=23\zw% +あ\rubytest いうえおかきくけこうえおかきくけこ +あ\rubytest いうえおかきくけこうえおかきくけこ +あ\rubytest いう□おかきくけこうえおかきくけこ +あ\rubytest いう□おかきくけこうえおかきくけこ +あ\rubytest いう□おかきくけこうえおかきくけこ +あ\rubytest いうえおかきくけこ} +\fbox{\box0} + +\begin{description} +\def\sample{又\ruby{承}{うけたまわ}る\quad \ruby{疎}{そ}\quad は\ruby{俄}{にわか}勉強 + \quad 後\ruby{俄}{にわか}勉強\quad は\ruby{暁}{あかつき}に + は\ruby{俄}{にわか}に + \quad \ruby{休|憩|中}{きゆう|けい|ちゆう}かつ\ruby{視|聴|中}{し|ちよう|ちゆう}} +\item[標準] \sample +\item[肩つき] {\ltjsetruby{kata}\sample} +\end{description} + +\newpage +\begin{LTXexample}[pos=t] +{\ltjsetruby{stretch=101}% 親文字均等割り禁止 + \ruby{休|憩|中}{きゆう|けい|ちゆう}かつ\ruby{視|聴|中}{し|ちよう|ちゆう}% +}\quad +\textgt{\ruby{勉|強}{べん|きよう}と% + \ruby[fontcmd=\mcfamily]{勉|強}{べん|きよう}}\quad% ルビは明朝体 +\ruby{コギト・エルゴ・スム}{Cogito ergo sum}\quad % 欧文空白は伸長しない +\ruby[size=1]{Cogito ergo sum}{コギト・エルゴ・スム}% 欧文空白は伸長しない +\end{LTXexample} + +\newpage +\section{『日本語組版処理の要件』20120403の例} + +\newcommand*{\噂}{\CID{7642}} +\newcommand*{\倦}{\CID{7674}} +%================================== 横組 +\paragraph{3.3.1節}\ +\begin{LTXexample}[pos=t] +\obeylines +3.49 \ruby{君|子}{くん|し}は\ruby{和}{わ}して\ruby{同}{どう}ぜず +3.50 \ruby{人}{ひと}に\ruby{誨}{おし}えて\ruby{\倦}{う}まず +% モノルビ.面倒でも複数回の実行が必要 +3.51 \ruby{鬼}{き}\ruby{門}{もん}の\ruby{方}{ほう}\ruby{角}{がく}を% + \ruby{凝}{ぎょう}\ruby{視}{し}する +% 熟語ルビ +3.52 \ruby{鬼|門}{き|もん}の\ruby{方|角}{ほう|がく}を\ruby{凝|視}{ぎよう|し}する +3.53 \ruby{茅場町}{かやばちよう}\quad\ruby{茅|場}{かや|ば}\ruby{町}{ちよう} +% 熟字訓 +3.54 \ruby{紫陽花}{あじさい}\quad\ruby{坩堝}{るつぼ}\quad\ruby{田舎}{いなか} +% グループルビ +3.55 \ruby{模型}{モデル}\quad\ruby{顧客}{クライアント}\quad% + \ruby{境界面}{インターフエース}\quad\ruby{避難所}{アジール} +3.56 \ruby{編集者}{editor}\quad \ruby{editor}{エデイター} +\end{LTXexample} + +\paragraph{3.3.3節}\ +\begin{LTXexample}[pos=t] +\obeylines +3.58 に\ruby{幟}{のぼり}を\quad に\ruby[kata]{幟}{のぼり}を\quad% + \ruby{韋}{い}\ruby{編}{へん}\ruby{三}{さん}\ruby{絶}{ぜつ} +% 三分ルビ.JY3/mc/mc は本文書のプリアンブルで独自に定義 +3.59 に\ruby[fontcmd=\kanjifamily{mc}\kanjiseries{mc}]{幟}{のぼり}を +% ルビ文字を小さくする +3.60 {\Large% + \ruby{韋}{い}\ruby{編}{へん}\ruby{三}{さん}\ruby{絶}{ぜつ}\quad% 比較用 + \ltjsetruby{size=0.375}% 0.5 -> 0.375 + \ruby{韋}{い}\ruby{編}{へん}\ruby{三}{さん}\ruby{絶}{ぜつ}} +\end{LTXexample} + +\paragraph{3.3.4節} +3.61図(両側ルビ)は未サポートにより省略 + +\newpage +\paragraph{3.3.5節 モノルビ}\ +\begin{LTXexample}[pos=t] +\obeylines +3.62 の\ruby{葯}{やく}に +3.63 版面の\ruby{地}{ち}に\quad 版面の\ruby[kata]{地}{ち}に +% 横組肩つきはしないが,現状では縦組未サポートだし,仕方ないね +3.65 の\ruby{砦}{とりで}に +{\ltjsetruby{kata}% +3.66上 の\ruby{旬}{しゆん}に\quad 後\ruby{旬}{しゆん}に +3.66下 の\ruby{旬}{しゆん}又\quad 後\ruby{旬}{しゆん}又} +\end{LTXexample} + + +\paragraph{3.3.6節 グループルビ}\ +\begin{LTXexample}[pos=t] +\obeylines +3.67 は\ruby{冊子体}{コーデツクス}と +3.68 \ruby{模型}{モデル}\quad \ruby{利用許諾}{ライセンス} +% 両端を揃える流儀 +3.69 {\ltjsetruby{stretchruby=010}% + \ruby{模型}{モデル}\quad \ruby{利用許諾}{ライセンス}} +% ルビが極端に短い場合 +3.70 \ruby{なげきの聖母像}{ピエタ}\quad% ルビ全角まで許容 + \ruby[maxmargin=0.75]{なげきの聖母像}{ピエタ}% ルビ全角1.5倍まで +% ルビが長い場合 +3.71 \ruby{顧客}{クライアント}\quad \ruby{境界面}{インターフエース} +3.72 {\ltjsetruby{stretch=010, stretchbol=010, stretcheol=010}% はみ出さない流儀 + \ruby{顧客}{クライアント}\quad \ruby{境界面}{インターフエース}} +\end{LTXexample} + +\newpage +\paragraph{3.3.7節 熟語ルビ}\ +\begin{LTXexample}[pos=t] +\obeylines +3.73 \ruby{杞|憂}{き|ゆう}\quad \ruby{畏|怖}{い|ふ}\quad% + \ruby[kata]{杞|憂}{き|ゆう}\quad \ruby[kata]{畏|怖}{い|ふ} +3.74 の\ruby{流|儀}{りゆう|ぎ}を\quad の\ruby{無|常}{む|じよう}を\quad% + の\ruby{成|就}{じよう|じゆ}を\quad の\ruby{紋|章}{もん|しよう}を\quad% + の\ruby{象|徴}{しよう|ちよう}を +% 熟語の構成を考慮した方法は現行ではできない. +% 行分割はできるのだが,「他の漢字にルビ全角までかかって良い」は難しい. +3.75 {\ltjsetruby{kata}% + の\ruby{流|儀}{りゆう|ぎ}を\quad の\ruby{無|常}{む|じよう}を\quad% + の\ruby{成|就}{じよう|じゆ}を\quad の\ruby{紋|章}{もん|しよう}を\quad% + の\ruby{象|徴}{しよう|ちよう}を} +% モノルビ配置.望ましくない +3.76× の\ruby{流}{りゆう}\ruby{儀}{ぎ}を\quad の\ruby{無}{む}\ruby{常}{じよう}を\quad% + +要調整 3.77\ {\ltjsetruby{stretchbol=121, stretcheol=121}% 行頭・行末揃えず + \hbox{\vrule\vbox{\hsize=10\zw ああああああああの% + \ruby{流|儀}{りゆう|ぎ}がある.}\vrule}\textbf{←なぜ改行できない}\quad% + \hbox{\vrule\vbox{\hsize=5\zw ……等の\ruby{無|常}{む|じよう}を}\vrule}} +\end{LTXexample} + +\paragraph{3.3.8節 ルビはみ出し}\ +\begin{LTXexample}[pos=t] +\obeylines +3.78 \ruby{人}{ひと}は\ruby{死}{し}して\ruby{名}{な}を\ruby{残}{のこ}す +% 現在の自動設定の仕様では「脚」の前が四分だけ「要件」の例より空く +3.79 漢字の部首には\ruby{偏}{へん}・\ruby{冠}{かんむり}・\ruby{脚}{きやく}・% + \ruby{旁}{つくり}がある +3.79 漢字の部首には\ruby{偏}{へん},\ruby{冠}{かんむり},\ruby{脚}{きやく},% + \ruby{旁}{つくり}がある +\end{LTXexample} +\begin{LTXexample}[pos=t] +\obeylines +% もちろん手動で進入量を指定すれば話は別 +3.79 漢字の部首には\ruby{偏}{へん}・\ruby{冠}{かんむり}・\ruby[pre=1]{脚}{きやく}・% + \ruby{旁}{つくり}がある +3.79 漢字の部首には\ruby{偏}{へん},\ruby{冠}{かんむり},\ruby[pre=1]{脚}{きやく},% + \ruby{旁}{つくり}がある +3.79 この\ruby{\噂}{うわさ}の好きな人は\ruby{懐}{ふところ}ぐあいもよく、\ruby{檜}{ひのき}を +3.80 漢字の部首には「\ruby{偏}{へん}」「\ruby{冠}{かんむり}」「\ruby{脚}{きやく}」% +「\ruby{旁}{つくり}」がある +3.80 この\ruby{\噂}{うわさ}好きな人は\ruby{懐}{ふところ}具合もよく、\ruby{檜}{ひのき}材を +3.81× に\ruby{暁}{あかつき}の\kern-1\zw の\ruby{趣}{おもむき}を +3.82 に\ruby{暁}{あかつき}の\ruby{趣}{おもむき}を + +% 漢字にルビを2分まで掛けても良い流儀 +{% + \ltjsetparameter{rubypostintrusion={`好,0.5}} + \ltjsetparameter{rubypostintrusion={`具,0.5}} + \ltjsetparameter{rubypostintrusion={`材,0.5}} +3.83 この\ruby{\噂}{うわさ}の好きな人は\ruby{懐}{ふところ}ぐあいもよく、\ruby{檜}{ひのき}を +3.83 この\ruby{\噂}{うわさ}好きな人は\ruby{懐}{ふところ}具合もよく、\ruby{檜}{ひのき}材を +} +% 平仮名にもルビを掛けない流儀 +{\catcode`\<12% + \makeatletter\count@="3040\loop\relax\ifnum \count@<"30A0% + \ltjsetparameter{rubypreintrusion={\the\count@,0}, % + rubypostintrusion={\the\count@,0}}% + \advance\count@1 \repeat +3.84 この\ruby{\噂}{うわさ}の好きな人は\ruby{懐}{ふところ}ぐあいもよく、\ruby{檜}{ひのき}を +3.84 この\ruby{\噂}{うわさ}好きな人は\ruby{懐}{ふところ}具合もよく、\ruby{檜}{ひのき}材を +} +\end{LTXexample} +\begin{LTXexample}[pos=t] +\obeylines +3.85\ {\ltjsetruby{stretchbol=121, stretcheol=121}% 行頭・行末揃えず +\hbox{\vrule\vbox{\hsize=15\zw + \hskip9.5\zw……の\ruby{徑}{こみち}を……% +\hskip9\zw……の\ruby{徑}{こみち}を……}\vrule}} +3.86\ \hbox{\vrule\vbox{\hsize=15\zw + \hskip10\zw……の\ruby{徑}{こみち}を……% +\hskip9\zw……の\ruby{徑}{こみち}を……}\vrule} +3.87\ \hbox{\vrule\vbox{\hsize=15\zw + \hskip8\zw……共\ruby{飾り}{アクセサリー}等……% +\hskip9\zw……共\ruby{飾り}{アクセサリー}等……}\vrule} +\end{LTXexample} + + +\paragraph{圏点の例(常用漢字表前書きより)} +この表は,法令,公⽤⽂書,新聞,雑誌,放送など,⼀般の社会⽣活におい% +て\kenten[kenten=﹅]{現代の国語を書き表す}場合の\kenten{漢字使⽤の⽬安を⽰す}ものである。 + +\subparagraph{「﹅」の大きさを親文字の0.33倍にした例} +この表は,法令,公⽤⽂書,新聞,雑誌,放送など,⼀般の社会⽣活におい% +て\kenten[size=0.33, kenten=﹅]{現代の国語を書き表す}場合の\kenten{漢字使⽤の⽬安を⽰す}ものである。 +\end{document} diff --git a/Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx b/Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx index aa9e92dcc73..ed343fefb84 100644 --- a/Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx +++ b/Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx @@ -47,7 +47,7 @@ %</ja> \usepackage{amsmath,array,tikz,pict2e,multienum,float} -\usepackage{booktabs,multicol} +\usepackage{booktabs,multicol,luatexja-ruby} %%%%%%%% listings @@ -108,7 +108,9 @@ \usepackage{luatexja-otf} %<ja>\usepackage{lmodern} \directlua{luatexja.otf.enable_ivs()} +\usepackage[match]{luatexja-fontspec} \usepackage[kozuka-pr6n]{luatexja-preset} +\setmonojfont{KozGoPr6N-Regular.otf} %<*ja> \def\emph#1{\textbf{\textgt{#1}}} \def\headfont{\normalfont\bfseries\gtfamily} @@ -121,11 +123,6 @@ \setmathfont{xits-math.otf} \frenchspacing %</en> -\DeclareRobustCommand\ttfamily - {\not@math@alphabet\ttfamily\mathtt - \romanfamily\ttdefault\ttjfam\selectfont} -\newjfontfamily\ttjfam{KozGoPr6N-Regular.otf} - %%%%%%%% logo \usepackage{metalogo} @@ -183,6 +180,7 @@ \catcode`\<=13 \def<#1>{{\normalfont\rm\itshape$\langle$#1\/$\rangle$}} +\let\LARG=< \maketitle \tableofcontents @@ -932,7 +930,7 @@ Okumura), namely, \Pkg{ltjclasses} and \Pkg{ltjsclasses}. 日本語文書を組版するためには,\texttt{article.cls}, \texttt{book.cls}といった 欧文用のクラスファイルではなく,和文用のクラスファイルを用いた方がよい. 現時点では,\Pkg{jclasses}(\pLaTeX の標準クラス)と\Pkg{jsclasses} -(奥村晴彦氏によるクラスファイル)に対応するものとして,\Pkg{ltjclasses}, +(奥村晴彦氏による「\pLaTeXe 新ドキュメントクラス」)に対応するものとして,\Pkg{ltjclasses}, \Pkg{ltjsclasses}がそれぞれ用意されている. %</ja> @@ -940,7 +938,7 @@ Okumura), namely, \Pkg{ltjclasses} and \Pkg{ltjsclasses}. %<ja>\section{フォントの変更} \subsection{plain \TeX~and~\LaTeXe} -\label{ssub-chgfnt} +\label{ssec-chgfnt} \paragraph{plain \TeX} %<*en> @@ -1014,7 +1012,7 @@ auto select&\verb+\fontencoding+&\verb+\fontfamily+&---&---&\verb+\usefont+\\ alphabetic fonts to \texttt{T1}. \verb+\fontfamily+ also changes the current Japanese font family, the current alphabetic font family, \emph{or both}. - For the detail, see Subsection~\ref{ssub-nfsspat}. + For the detail, see Subsection~\ref{ssec-nfsspat}. %</en> %<*ja> ここで,\verb+\fontencoding{+<encoding>\verb+}+ は,引数により和文側か欧文 @@ -1023,7 +1021,7 @@ auto select&\verb+\fontencoding+&\verb+\fontfamily+&---&---&\verb+\usefont+\\ \texttt{JY3}に変更し,\verb+\fontencoding{T1}+ は欧文フォント側を \texttt{T1}へと変更する.\verb+\fontfamily+ も引数により和文側,欧文 側,\emph{あるいは両方}のフォントファミリを変更する.詳細は - \ref{ssub-nfsspat}節を参照すること. + \ref{ssec-nfsspat}節を参照すること. %</ja> %<*en> @@ -1046,7 +1044,7 @@ auto select&\verb+\fontencoding+&\verb+\fontfamily+&---&---&\verb+\usefont+\\ %<*ja> 仮名書体を使う場合など,複数の和文フォントを組み合わせて使いたい場合は \ref{ssec-altfont}節の \verb+\ltjdeclarealtfont+ と,その\LaTeX 版の\ -\verb+\DeclareAlternateKanjiFont+(\ref{ssub-nfsspat}節)を参照せよ. +\verb+\DeclareAlternateKanjiFont+(\ref{ssec-nfsspat}節)を参照せよ. %</ja> \end{itemize} @@ -1114,13 +1112,21 @@ this chapter. For the method, please see Subsection~\ref{ssec-math}. \label{ssec-fontspec} %<*en> To coexist with the \Pkg{fontspec} package, it is needed to load -\Pkg{luatexja-fontspec} package in the preamble. This additional -package automatically loads \Pkg{luatexja} and \Pkg{fontspec} +\Pkg{luatexja-fontspec} package in the preamble, as follows: +\begin{quote} +\ttfamily \textbackslash usepackage[<options>]\{luatexja-fontspec\} +\end{quote} +This \Pkg{luatexja-fontspec} package +automatically loads \Pkg{luatexja} and \Pkg{fontspec} package, if needed. %</en> %<*ja> -\Pkg{fontspec}パッケージと同様の機能を和文フォントに対しても用いるためには, -\Pkg{luatexja-fontspec}パッケージをプリアンブルで読み込む必要がある.このパッケージ +\Pkg{fontspec}パッケージと同様の機能を和文フォントに対しても用いる場合, +\Pkg{luatexja-fontspec}パッケージを読み込む: +\begin{quote} +\ttfamily \textbackslash usepackage[<options>]\{luatexja-fontspec\} +\end{quote} +このパッケージ は必要ならば自動で\Pkg{luatexja}パッケージと\Pkg{fontspec}パッケージを読み込む. %</ja> @@ -1132,20 +1138,21 @@ counterparts of original commands in the \Pkg{fontspec} package: \Pkg{luatexja-fontspec}パッケージでは,以下の7つのコマンドを\Pkg{fontspec} パッケージの元のコマンドに対応するものとして定義している: %</ja> - %<*en> \begin{center}\small \begin{tabular}{ccccc} \toprule Japanese fonts -&\verb+\jfontspec+&\verb+\setmainjfont+&\verb+\setsansjfont+&\verb+\newjfontfamily+\\ +&\verb+\jfontspec+&\verb+\setmainjfont+&\verb+\setsansjfont+&\verb+\setmonojfont+$^*$\\ alphabetic fonts -&\verb+\fontspec+&\verb+\setmainfont+&\verb+\setsansfont+&\verb+\newfontfamily+\\ +&\verb+\fontspec+&\verb+\setmainfont+&\verb+\setsansfont+&\verb+\setmonofont+\\ \midrule Japanese fonts -&\verb+\newjfontface+&\verb+\defaultjfontfeatures+&\verb+\addjfontfeatures+\\ +&\verb+\newjfontfamily+&\verb+\newjfontface+ +&\verb+\defaultjfontfeatures+&\verb+\addjfontfeatures+\\ alphabetic fonts -&\verb+\newfontface+&\verb+\defaultfontfeatures+&\verb+\addfontfeatures+\\ +&\verb+\newfontfamily+&\verb+\newfontface+ +&\verb+\defaultfontfeatures+&\verb+\addfontfeatures+\\ \bottomrule \end{tabular} \end{center} @@ -1172,31 +1179,54 @@ alphabetic fonts \end{tabular} \end{center} %</ja> -\begin{LTXexample}[width=0.4\textwidth] -\fontspec[Numbers=OldStyle]{LMSans10-Regular} -\jfontspec[CJKShape=NLC]{KozMinPr6N-Regular} -JIS~X~0213:2004→辻 +%<*en> +The package option of \Pkg{luatexja-fontspec} are the followings: +\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw} + \item[match] If this option is specified, usual family-changing commands such as +\verb+\rmfamily+,~\verb+\textrm+, \verb+\sffamily+,~\dots\ also change Japanese font family. -\jfontspec[CJKShape=JIS1990]{KozMinPr6N-Regular} -JIS~X~0208:1990→辻 -\end{LTXexample} +Note that \emph{\texttt{\textup{\textbackslash setmonojfont}} is defined +if and only if this \texttt{\textup{match}} option is specified}. -%<*en> -Note that there is no command named \verb+\setmonojfont+, since it is -popular for Japanese fonts that nearly all Japanese glyphs have same + \item[pass=<opts>] +Specify options <opts> which will be passed to the \Pkg{fontspec} package. +\end{list} +The reason that \verb+\setmonojfont+ is not defined by default is that +it is popular for Japanese fonts that nearly all Japanese glyphs have same widths. Also note that kerning information in a font is not used -(that is, \texttt{kern} feature is set off) by default in these seven commands. +(that is, \texttt{kern} feature is set off) by default in these seven (or~eight) commands. This is because of the compatibility with previous versions of \LuaTeX-ja (see \ref{para-kern}). %</en> %<*ja> -和文フォントについては全ての和文文字のグリフがほぼ等幅であるのが普通であるため, -\verb+\setmonojfont+ コマンドは存在しないことに注意.また,これらの和文用の7つのコマ -ンドではフォント内のペアカーニング情報は標準では使用されない, +\Pkg{luatexja-fontspec} パッケージのオプションは以下の通りである: +\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw} + \item[match] このオプションが指定されると,「\pLaTeXe 新ドキュメントクラス」のように\ +\verb+\rmfamily+, \verb+\textrm{...}+, \verb+\sffamily+ 等が +欧文フォントだけでなく和文フォントも変更するようになる. + +\emph{なお,{\tt \textbackslash setmonojfont} はこの \texttt{match} オプションが +指定された時のみ定義される.}この命令は標準の「タイプライタ体に対応する和文フォント」を指定する. + + \item[pass=<opts>] +\Pkg{fontspec} パッケージに渡すオプション <opts> を指定する. +\end{list} +標準で \verb+\setmonojfont+ コマンドが定義されないのは, +和文フォントではほぼ全ての和文文字のグリフが等幅であるのが伝統的であったことによる. +また,これらの和文用のコマンドではフォント内のペアカーニング情報は標準では使用されない, 言い換えれば \texttt{kern} featureは標準では無効化となっている. これは以前のバージョンの\LuaTeX-jaとの互換性のためである(\ref{para-kern}節を参照). %</ja> +\begin{LTXexample}[width=0.4\textwidth] +\fontspec[Numbers=OldStyle]{LMSans10-Regular} +\jfontspec[CJKShape=NLC]{KozMinPr6N-Regular} +JIS~X~0213:2004→辻 + +\jfontspec[CJKShape=JIS1990]{KozMinPr6N-Regular} +JIS~X~0208:1990→辻 +\end{LTXexample} + %<en>\subsection{Presets} %<ja>\subsection{プリセット設定} \label{ssec-preset} @@ -1615,7 +1645,7 @@ If you want to use these functions, load \Pkg{luatexja-otf} package. これら3オプションについては, \Pkg{luatexja-preset} パッケージにプリセットを使う時に一緒に指定するか, -あるいは対応する内容を\ref{ssub-chgfnt}節,\ref{ssub-nfsspat}節 (NFSS2) や +あるいは対応する内容を\ref{ssec-chgfnt}節,\ref{ssec-nfsspat}節 (NFSS2) や \ref{ssec-fontspec}節 (\Pkg{fontspec}) の方法で手動で指定する必要がある. %</ja> @@ -2637,7 +2667,7 @@ because of the compatibility with previous versions of \LuaTeX-ja. 図\ref{fig:kern-jfm}を参照. \begin{itemize} \item \emph{\texttt{\textbackslash jfont} や, -NFSS2用の命令(\ref{ssub-chgfnt}節,\ref{ssub-nfsspat}節)における指定では +NFSS2用の命令(\ref{ssec-chgfnt}節,\ref{ssec-nfsspat}節)における指定では カーニング情報は標準で使用する}ことになっているようである. 言い換えれば,カーニング情報を使用しない設定にするには,面倒でも \begin{verbatim} @@ -4265,30 +4295,19 @@ are typeset by \verb+\piyo+. %<en>\subsection{Patch for NFSS2} %<ja>\subsection{NFSS2へのパッチ} -\label{ssub-nfsspat} +\label{ssec-nfsspat} \begin{figure}[!tb] -\begin{lstlisting}[numberstyle=\tiny, numbers=left, numbersep=1em] +\begin{LTXexample}[pos=b] \DeclareKanjiFamily{JY3}{edm}{} -\DeclareFontShape{JY3}{edm}{m}{n} {<-> s*KozMinPr6N-Regular:jfm=ujis;-kern}{} -\DeclareFontShape{JY3}{edm}{m}{green}{<-> s*KozMinPr6N-Regular:jfm=ujis;-kern;color=007F00}{} -\DeclareFontShape{JY3}{edm}{m}{blue} {<-> s*KozMinPr6N-Regular:jfm=ujis;-kern;color=0000FF}{} +\DeclareFontShape{JY3}{edm}{m}{n} {<-> s*KozMinPr6N-Regular:jfm=ujis;}{} +\DeclareFontShape{JY3}{edm}{m}{green}{<-> s*KozMinPr6N-Regular:jfm=ujis;color=007F00}{} +\DeclareFontShape{JY3}{edm}{m}{blue} {<-> s*KozMinPr6N-Regular:jfm=ujis;color=0000FF}{} \DeclareAlternateKanjiFont{JY3}{edm}{m}{n}{JY3}{edm}{m}{green}{"4E00-"67FF,{-2}-{-2}} \DeclareAlternateKanjiFont{JY3}{edm}{m}{n}{JY3}{edm}{m}{blue}{ "6800-"9FFF} {\kanjifamily{edm}\selectfont 日本国民は、正当に選挙された国会における代表者を通じて行動し、……} -\end{lstlisting} -\begin{quote} -\DeclareKanjiFamily{JY3}{edm}{} -\DeclareFontShape{JY3}{edm}{m}{n} {<-> s*KozMinPr6N-Regular:jfm=ujis;-kern}{} -\DeclareFontShape{JY3}{edm}{m}{green}{<-> s*KozMinPr6N-Regular:jfm=ujis;-kern;color=007F00}{} -\DeclareFontShape{JY3}{edm}{m}{blue} {<-> s*KozMinPr6N-Regular:jfm=ujis;-kern;color=0000FF}{} -\DeclareAlternateKanjiFont{JY3}{edm}{m}{n}{JY3}{edm}{m}{green}{"4E00-"67FF,{-2}-{-2}} -\DeclareAlternateKanjiFont{JY3}{edm}{m}{n}{JY3}{edm}{m}{blue}{ "6800-"9FFF} - -{\kanjifamily{edm}\selectfont -日本国民は、正当に選挙された国会における代表者を通じて行動し、……} -\end{quote} +\end{LTXexample} %<ja>\caption{\texttt{\textbackslash DeclareAlternateKanjiFont} の使用例} %<en>\caption{An example of \texttt{\textbackslash DeclareAlternateKanjiFont}} \label{fig:altkanji} @@ -4298,13 +4317,13 @@ are typeset by \verb+\piyo+. Japanese patch for NFSS2 in \LuaTeX-ja is based on \texttt{plfonts.dtx} which plays the same role in \pLaTeXe. We will describe -commands which are not described in Subsection~\ref{ssub-chgfnt}. +commands which are not described in Subsection~\ref{ssec-chgfnt}. %</en> %<*ja> \LuaTeX-jaのNFSS2への日本語パッチは \pLaTeXe で同様の役割を果たす \texttt{plfonts.dtx} をベースに, 和文エンコーディングの管理等をLuaで書きなおしたものである. -ここでは\ref{ssub-chgfnt}節で述べていなかった命令について +ここでは\ref{ssec-chgfnt}節で述べていなかった命令について 記述しておく. %</ja> @@ -4542,7 +4561,7 @@ In this case, the default family for font substitution is used for \item[DeclareAlternateKanjiFont\{<base-encoding>\}\{<base-family>\}\{<base-series>\}\{<base-shape>\}\\ \null\hfill\{<alt-encoding>\}\{<alt-family>\}\{<alt-series>\}\{<alt-shape>\}\{<range>\}] %<*ja> -\ref{ssec-altfont}節の +\ref{ssec-altfont}節の\ \verb+\ltjdeclarealtfont+ と同様に,前半の4引数の和文フォント(基底フォント)のうち<range>中の文字を 第5--第8引数の和文フォントを使って組むように指示する.使用例を図\ref{fig:altkanji}に載せた. @@ -4620,6 +4639,7 @@ by \verb+\input+. \verb+\input+ で読み込み可能である. %</ja> \subsection{\texttt{luatexja-fontspec.sty}} +\label{ssec-fontspec2} %<*en> As described in Subsection~\ref{ssec-fontspec}, this optional package provides the counterparts for several commands defined in the @@ -4666,6 +4686,60 @@ will not be embedded in the output PDF file. See Subsection~\ref{ssec-psft}. これを指定することで,PDFに埋め込まれない「名前だけ」のフォントを指定することが できる.\ref{ssec-psft}節を参照. %</ja> + + +\begin{figure}[!tb] +\begin{LTXexample}[pos=b] +\jfontspec[ + AltFont={ + {Range="4E00-"67FF, Color=007F00}, + {Range="6800-"9EFF, Color=0000FF}, + {Range="3040-"306F, Font=KozGoPr6N-Regular}, + } +]{KozMinPr6N-Regular} +日本国民は、正当に選挙された国会における代表者を通じて行動し、われらとわれらの子孫のために、 +諸国民との協和による成果と、わが国全土にわたつて自由のもたらす恵沢を確保し、…… +\end{LTXexample} +%<ja>\caption{\texttt{AltFont} の使用例} +%<en>\caption{An example of \texttt{AltFont}} +\label{fig:altkanji-fontspec} +\end{figure} + +\item[AltFont]\ + +%<*en> +As \verb+\ltjdeclarealtfont+~(Subsection~\ref{ssec-altfont}) and +\verb+\DeclareAlternateKanjiFont+~(Subsection~\ref{ssec-nfsspat}), +with this key, one can typeset some Japanese characters +by a different font and/or using different features. +The \texttt{AltFont} feature takes a comma-separated list of comma-separated lists, +as the following: +%</en> +%<*ja> +\ref{ssec-altfont}節の \verb+\ltjdeclarealtfont+ や, +\ref{ssec-nfsspat}節の \verb+\DeclareAlternateKanjiFont+ と同様に, +このキーを用いると一部の文字を異なったフォントやfont featureを使って組むことができる. +\texttt{AltFont} に指定する値は,次のように二重のコンマ区切りリストである: +%</ja> +\begin{lstlisting}[escapechar=\#] +AltFont = { + ... + { Range=#\LARG range>#, #\LARG features>#}, + { Range=#\LARG range>#, Font=#\LARG font~name>#, #\LARG features># }, + { Range=#\LARG range>#, Font=#\LARG font~name># }, + ... +} +\end{lstlisting} +%<*en> +Each sublist should have the \texttt{Range} key +(sublist which does not contain \texttt{Range} key is simply ignored). +A demonstrartion is shown in Figure~\ref{fig:altkanji-fontspec}. +%</en> +%<*ja> +各部分リストには \texttt{Range} キーが必須である(含まれない部分リストは +単純に無視される). +指定例は図\ref{fig:altkanji-fontspec}に示した. +%</ja> \end{list} %<*ja> @@ -4674,7 +4748,6 @@ will not be embedded in the output PDF file. See Subsection~\ref{ssec-psft}. %</ja> - \subsection{\texttt{luatexja-otf.sty}} \label{ssec-ltjotf} %<*en> @@ -4919,15 +4992,113 @@ for making the difference obvious. \item[\textsf{adjust}\,=<bool>] \verb+\ltjsetparameter+ で指定可能な追加パラメータであり, <bool>が\textit{true}なら \verb+\ltjenableadjust+ を, そうでなければ \verb+\ltjdisableadjust+ を実行する. - - \end{list} +%</ja> +\subsection{\texttt{luatexja-ruby.sty}} +%<*en> +This addon package provides functionality of ``ruby'' (\emph{furigana}) annotations +using callbacks of \LuaTeX-ja. +There is no detailed manual of \Pkg{luatexja-ruby.sty} in English. +(Japanese manual is another PDF file, \url{luatexja-ruby.pdf}.) +%</en> +%<*ja> +この追加パッケージは,\LuaTeX-jaの機能を利用したルビ(振り仮名)の組版機能を提供する. +前後の文字種に応じた前後への自動進入や, +行頭形・行中形・行末形の自動的な使い分けが特徴である. +ルビ組版に設定可能な項目や注意事項が多いため,本追加パッケージの詳細な説明は +使用例と共に \url{luatexja-ruby.pdf}\ という別ファイルに載せている. +この節では簡単な使用方法のみ述べる. +%</ja> +\begin{description} +%<*en> + \item[Group-ruby] +By default, ruby characters (the second argument of \verb+\ruby+) +are attached to base characters (the first argument), as one object. +This type of ruby is called \emph{group-ruby}. +%</en> +%<*ja> + \item[グループルビ] 標準ではグループルビの形で組まれる.第1引数に親文字, +第2引数にルビを記述する. +%</ja> +\begin{LTXexample}[width=0.3\textwidth] +東西線\ruby{妙典}{みようでん}駅は……\\ +東西線の\ruby{妙典}{みようでん}駅は……\\ +東西線の\ruby{妙典}{みようでん}という駅……\\ +東西線\ruby{葛西}{かさい}駅は…… +\end{LTXexample} +%<*en> +As the above example, ruby hangover is allowed on the Hiragana before/after +its base characters. +%</en> +%<ja> この例のように,標準では前後の平仮名にルビ全角までかかるようになっている. +%<*en> +\item[Mono-ruby] +To attach ruby characters to each base characters (\emph{mono-ruby}), +one should use \verb+\ruby+ multiple times: +%</en> +%<*ja> + \item[モノルビ] 親文字を1文字にするとモノルビとなる. +2文字以上の熟語をモノルビの形で組みたい場合は,面倒でも +その数だけ \verb+\ruby+ を書く必要がある. +%</ja> +\begin{LTXexample}[width=0.3\textwidth] +東西線の\ruby{妙}{みよう}\ruby{典}{でん}駅は…… +\end{LTXexample} +%<*en> + \item[Jukugo-ruby] +Vertical bar~\verb+|+ denotes a boundary of \emph{groups}. +%</en> +%<*ja> + \item[熟語ルビ] 引数内の縦棒 \verb+|+ はグループの区切りを表し, +複数グループのルビは熟語ルビとして組まれる. +\cite{x4051}にあるように, +どのグループでも「親文字」が対応するルビ以上の長さの場合は +各グループごとに,そうでないときは全体をまとめて1つのグループルビとして組まれる. +\cite{jlreq}で規定されている組み方とは異なるので注意. %</ja> +\begin{LTXexample} +\ruby{妙|典}{みよう|でん}\ +\ruby{葛|西}{か|さい}\ +\ruby{神楽|坂}{かぐら|ざか} +\end{LTXexample} +%<*en> +If there are multiple groups in one \verb+\ruby+ call, +A linebreak between two groups is allowed. +%</en> +%<ja> 複数ルビではグループとグループの間で改行が可能である. +\begin{LTXexample}[width=0.3\textwidth] +\vbox{\hsize=6\zw\noindent + \hbox to 2.5\zw{}\ruby{京|急|蒲|田}{けい|きゆう|かま|た} + \hbox to 2.5\zw{}\ruby{京|急|蒲|田}{けい|きゆう|かま|た} + \hbox to 3\zw{}\ruby{京|急|蒲|田}{けい|きゆう|かま|た} +} +\end{LTXexample} +\end{description} + +%<*en> +If the width of ruby characters are longer than that of base characters, +\verb+\ruby+ automatically selects the appropriate form +among the line-head form, the line-middle form, and the line-end form. +%</en> +%<*ja> +また,ルビ文字のほうが親文字よりも長い場合は,自動的に +行頭形・行中形・行末形のいずれか適切なものを選択する. +%</ja> +\begin{LTXexample}[width=0.3\textwidth] +\vbox{\hsize=8\zw\noindent +\null\kern3\zw ……を\ruby{承}{うけたまわ}る + \kern1\zw ……を\ruby{承}{うけたまわ}る\\ +\null\kern5\zw ……を\ruby{承}{うけたまわ}る +} +\end{LTXexample} + + + @@ -6567,7 +6738,7 @@ Consider the following input: 例えば次のような入力を考えよう: %</ja> \begin{verbatim*} -\begin{lstlisting}[escapechar=`\#] +\begin{lstlisting}[escapechar=\#] #\ほげ xぴよ# \end{lstlisting} \end{verbatim*} |