X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=doc%2Fluatexja.dtx;h=ed82e4c8717647597fb302de3696e4efefbe9494;hb=4a6671843cfa3c55146fd48f76d8f1332ca9cfd0;hp=16abb20ed31d79dcdc226ca962242e689a131505;hpb=6d37298f0b6f694b18cd2f7fcd67f74f52b7b96c;p=luatex-ja%2Fluatexja.git diff --git a/doc/luatexja.dtx b/doc/luatexja.dtx index 16abb20..ed82e4c 100644 --- a/doc/luatexja.dtx +++ b/doc/luatexja.dtx @@ -1,9 +1,9 @@ %<*!showexpl> %#! lualatex -shell-escape -% \documentclass[a4paper,titlepage]{article} -% \documentclass[a4paper,titlepage]{ltjsarticle} -% \documentclass[a4paper,titlepage]{ltjsarticle} +%\documentclass[a4paper,titlepage]{article} +%\documentclass[a4paper,titlepage]{ltjsarticle} +%\documentclass[a4paper,titlepage]{ltjsarticle} %%%%%%%% \makeatletter @@ -26,14 +26,17 @@ %<*en> \usepackage[margin=25mm,footskip=6mm]{geometry} +\usepackage{luatexja-adjust}\ltjdisableadjust \parskip=\smallskipamount % %<*ja> \usepackage[textwidth=45\zw, lines=45, footskip=6mm]{geometry} +\usepackage{luatexja-adjust} \advance\leftmargini-1\zw\advance\leftmarginii-1\zw % %<*zh> \usepackage[textwidth=45\zw, lines=45, footskip=6mm]{geometry} +\usepackage{luatexja-adjust}\ltjdisableadjust \advance\leftmargini-1\zw\advance\leftmarginii-1\zw \def\postpartname{编} \DeclareYokoKanjiEncoding{ZH}{}{} @@ -145,8 +148,8 @@ \DeclareRobustCommand\eTeX{\ensuremath{\varepsilon}-\kern-.125em\TeX} \DeclareRobustCommand\LuaTeX{Lua\TeX} \DeclareRobustCommand\pdfTeX{pdf\TeX} -\DeclareRobustCommand\pTeX{p\kern-.05em\TeX} -\DeclareRobustCommand\upTeX{up\kern-.05em\TeX} +\DeclareRobustCommand\pTeX{p\kern-.15em\TeX} +\DeclareRobustCommand\upTeX{up\kern-.15em\TeX} \DeclareRobustCommand\pLaTeX{p\kern-.05em\LaTeX} \DeclareRobustCommand\pLaTeXe{p\kern-.05em\LaTeXe} \DeclareRobustCommand\epTeX{\ensuremath{\varepsilon}-\kern-.125em\pTeX} @@ -369,12 +372,12 @@ The followings are major changes from \pTeX: %<*en> \item The insertion process of glues/kerns between two Japanese characters and between a Japanese character and other characters - (we refer these glues/kerns as \textbf{JAglue}) is rewritten from + (we refer glues/kerns of both kinds as \textbf{JAglue}) is rewritten from scratch. % %<*ja> -\item 2つの和文文字の間,和文文字と欧文文字の間に入るグルー/カーン - (\textbf{JAglue}と呼ぶ)の挿入処理が0から書き直されている. +\item 2つの和文文字の間や,和文文字と欧文文字の間に入るグルー/カーン + (両者をあわせて\textbf{JAglue}と呼ぶ)の挿入処理が0から書き直されている. % %<*zh> \item 插在日文字符和其他字符言之间的胶/出格(我们将此称为\textbf{JAglue})是重新实现的。 @@ -1532,25 +1535,25 @@ Use bold gothic as bold mincho. % \item[90jis] %<*en> -Use 90JIS glyphs if possible. +Use fonts with 90JIS glyphs if possible. % %<*ja> -出来る限り90JISの字形を使う. +出来る限り90JISの字形を採用しているフォントを使う. % \item[jis2004] %<*en> -Use JIS2004 glyphs if possible. +Use fonts with JIS2004 glyphs if possible. % %<*ja> -出来る限りJIS2004の字形を使う. +出来る限りJIS2004の字形を採用しているフォントを使う. % \item[jis] %<*en> -Use the JFM \texttt{jfm-jis.lua}, instead of the default JFM of -\LuaTeX-ja, \texttt{jfm-ujis.lua}. +Use the JFM \texttt{jfm-jis.lua}, instead of \texttt{jfm-ujis.lua}, which is the default JFM of +\LuaTeX-ja. % %<*ja> -用いるJFMを\texttt{jfm-jis.lua}とする.このオプションがない時は +用いるJFMを(JISフォントメトリック類似の)\texttt{jfm-jis.lua}にする.このオプションがない時は \LuaTeX-ja標準の\texttt{jfm-ujis.lua}が用いられる. % \end{list} @@ -1618,7 +1621,6 @@ as a substitute for \textit{rounded gothic}. Settings for Hiragino fonts: % %<*ja> -モリサワ・ヒラギノ用の設定はそのようなことは行っていない. まずヒラギノフォントから: % % これらは持っているわけではないので,フォント名が @@ -2120,7 +2122,7 @@ This range consist of the following Unicode ranges, \emph{except characters in t \item \texttt{U+0180}--\texttt{U+024F}: ラテン文字拡張B \item \texttt{U+0250}--\texttt{U+02AF}: IPA拡張(国際音声記号) \item \texttt{U+02B0}--\texttt{U+02FF}: 前進を伴う修飾文字 -\item \texttt{U+0300}--\texttt{U+036F}: ダイアクリティカルマーク(合成可能) +\item \texttt{U+0300}--\texttt{U+036F}: 合成可能な識別記号 \item \texttt{U+1E00}--\texttt{U+1EFF}: ラテン文字拡張追加 % %<*zh> @@ -2140,7 +2142,7 @@ This range consist of the following Unicode ranges, \emph{except characters in t fonts) has some of these characters. % %<*ja> -\item[範囲2${}^{\text{J}}$] ギリシャ文字とキリル文字.JIS~X~0208(したがって多くの +\item[範囲2${}^{\text{J}}$] ギリシャ文字とキリル文字.JIS~X~0208(したがってほとんどの 和文フォント)はこれらの文字を持つ. % %<*zh> @@ -2857,9 +2859,9 @@ JFMの名前を指定する.もし以前に指定されたJFMが読み込ま \toprule &\tt jfm-ujis.lua&\tt jfm-jis.lua&\tt jfm-min.lua\\ \midrule -%Example~1\footnotemark -%例1\footnotemark -%例1\footnotemark +%Example~1\cite{min10} +%例1\cite{min10} +%例1\cite{min10} &\r{ujis}&\r{jis}&\r{min}\\ %Example~2 %例2 @@ -2871,8 +2873,6 @@ Bounding Box&\t{ujis}&\t{jis}&\t{min}\\ \end{center} \ltjsetparameter{jacharrange={-3}} \end{table} -\footnotetext{from: 乙部厳己, min10フォントについて. -\texttt{http://argent.shinshu-u.ac.jp/\~{\ }otobe/tex/files/min10.pdf}.} %\paragraph{Note: kern feature} %\paragraph{注意:kern feature} @@ -3380,7 +3380,27 @@ Furthermore, the glyph is shifted according to values of fields \item[kern={\{[$j$]=, ...\}}] -\item[glue={\{[$j$]=\{, , \}, ...\}}] +\item[glue={\{[$j$]=\{, , , []\}, ...\}}] +%<*ja> +文字クラス$i$の文字と$j$の文字の間に挿入されるkernやglueの量を指定する. + + は\texttt{luatexja-adjust.sty} による優先順位付き + 行長調整(\ref{ssec-adj}節)が有効なときのみ意味を持つ. +このフィールドは省略可能であり,行調整処理におけるこのglueの優先 + 度を$-2$から$+2$の間の整数で指定する.の省略時の値 + は0であり,範囲外の値が指定されたときの動作は未定義である). + +% + +\item[end\_stretch=] +\item[end\_shrink=] +%<*ja> +これらのフィールドは省略可能である. +優先順位付き行長調整が有効であり,かつ現在の文字クラスの文字が行 + 末に来た時に,行長を詰める調整・伸ばす調整のた + めにこの文字と行末の間に挿入可能なカーンの大きさを指定する. +% + \end{list} %<*ja> @@ -4480,7 +4500,9 @@ See Subsections~\ref{ssec-jfont} and \ref{ssec-psft} for details. これら3つのキーはそれぞれ \verb+\jfont+ プリミティブに対する \texttt{cid}, \texttt{jfm}, \texttt{jfmvar}キーとそれぞれ対応する. \texttt{CID} は下の \texttt{NoEmbed} と合わせて用いられたときのみ有効である. -詳細は\ref{ssec-jfont}節と\ref{ssec-psft}節を参照. +\verb+\jfont+ プリミティブに対する +\texttt{cid}, \texttt{jfm}, \texttt{jfmvar}キーの詳細は\ref{ssec-jfont}節 + と\ref{ssec-psft}節を参照. % \item[NoEmbed] @@ -4573,6 +4595,83 @@ JFMの\texttt{chars}テーブルのエントリとして \verb+'AJ1-xxx'+ の形 使えるようになる.これはAdobe-Japan1におけるCID番号が \verb+xxx+ の文字を表す. % +\subsection{\texttt{luatexja-adjust.sty}} +\label{ssec-adj} +\begin{figure}[t] +\def\sq{% + \hbox to 1\zw{\hss\fboxsep=-.5\fboxrule\fbox{% +  \hskip\dimexpr-.5\zw-.2pt\vrule width.4pt height.08\zw depth.12\zw% + \hskip\dimexpr.5\zw-.2pt\relax}\hss}} +\def\sb{\hbox to 1\zw{\hss\fboxsep=-.5\fboxrule\fbox{% + ■\hskip\dimexpr-.5\zw-.2pt\vrule width.4pt height.08\zw depth.12\zw% + \hskip\dimexpr.5\zw-.2pt\relax}\hss}} +\newbox\gridbox +\def\outbox#1{{\Large% + \ltjsetparameter{kanjiskip=0pt plus .2\zw minus .2\zw}% + \setbox\gridbox=\hbox to 20\zw{\sq\sq\sq\sq\sb\sq\sq\sq\sq\sb\sq\sq\sq\sq\sb\sq\sq\sq\sq\sb}% + \hbox{\textcolor{cyan!50!white}{\copy\gridbox}\hskip-20\zw% + \vbox{\hsize=20\zw\noindent\leftskip0pt\rightskip0pt\parfillskip0pt#1}\vrule}% +}} + +{\centering +\begin{tabular}{lc} +\toprule +no adjustment&\outbox{以上の原理は,「包除原理」とよく呼ばれるが\hskip-.5\zw\null}\\ +without priority&% +\ltjdisableadjust +\outbox{以上の原理は,「包除原理」とよく呼ばれるが}% +\ltjenableadjust\\ +with priority&% +\outbox{以上の原理は,「包除原理」とよく呼ばれるが} +%\ltjdisableadjust +\\ +\bottomrule +\end{tabular}\par} +\smallskip + +Note: the value of +\Param{kanjiskip} is 0\,pt${}^{+1/5\,\mathrm{em}}_{-1/5\,\mathrm{em}}$ in this figure, +for making the difference obvious. +%\caption{行長調整}\label{fig-adj} +%\caption{Line adjustment}\label{fig-adj} +\end{figure} + + +%<*en> +... +% +%<*ja> +\pTeX では,行長調整において優先度の概念が存在しなかったため,図 +\ref{fig-adj}上段における半角分の半端は,図\ref{fig-adj}中段のように,鍵 +括弧周辺の空白と和文間空白(\Param{kanjiskip})の両方によって負担される.し +かし,「日本語組版処理の要件」\cite{jlreq}やJIS~X~4051~\cite{x4051}におい +ては,このような状況では半端は鍵括弧周辺の空白のみで負担し,その他の和文 +文字はベタ組で組まれる(図\ref{fig-adj}下段)ことになっている.この追加 +パッケージは\cite{jlreq}や\cite{x4051}における規定のような,優先順位付き +の行長調整を提供する.詳細な仕様については\ref{sec-adjspec}を参照. + + +\texttt{luatexja-adjust.sty}は,以下の命令を提供する.これらはすべてグローバルに効力を発揮する. + +\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw} +\item[\char92ltjdisableadjust] +優先順位付きの行長調整を無効化する. + +\item[\char92ltjenableadjust] +優先順位付きの行長調整を有効化する. + +\item[優先度設定……] + +\end{list} + + + + + +% + + + %\part{Implementations} %\part{実装} \label{part-imp} @@ -5278,7 +5377,7 @@ u %\subsection{概要} %\subsection{概要} -\LuaTeX-jaにおける和文処理グルーの挿入方法は,\pTeX のそれとは全く異なる. +\LuaTeX-jaにおける \textbf{JAglue} の挿入方法は,\pTeX のそれとは全く異なる. \pTeX では次のような仕様であった: \begin{itemize} \item JFMグルーの挿入は,和文文字を表すトークンを元に水平リストに(文字を表す)を @@ -5921,43 +6020,122 @@ $\mathit{Nq}.\mathit{tail}$は無意味なので, \section{psft} +%\section{Patch for the \Pkg{listings} package} +%\section{\Pkg{listings} パッケージへの対応} + +%<*en> +It is well-known that the \Pkg{listings} package outputs weird results +for Japanese input. +The \Pkg{listings} package makes most of letters active and assigns +output command for each letter \cite{listings}. +But Japanese characters are not included in these activated letters. +For \pTeX{} series, there is no method to make Japanese characters active; +a patch \Pkg{jlisting.sty} \cite{jlisting} resolves the problem forcibly. +% %<*ja> -\section{\Pkg{listings} パッケージへの対応} \Pkg{listings} パッケージが,そのままでは日本語をまともに出力できないこと -はよく知られている,きちんと整形して出力するために,\Pkg{listings}パッケー +はよく知られている.きちんと整形して出力するために,\Pkg{listings}パッケー ジは内部で「ほとんどの文字」をアクティブにし,各文字に対してその文字の出 -力命令を割り当てている (\cite{listings}). +力命令を割り当てている \cite{listings}. しかし,そこでアクティブにする文字の中に,和文文 -字がないためである.p\TeX 系列では,和文文字をアクティブにする手法がなく, +字がないためである.\pTeX 系列では,和文文字をアクティブにする手法がなく, \Pkg{jlisting.sty} というパッチ\cite{jlisting}を用いることで無理やり解決していた. +% +%<*en> +In \LuaTeX-ja, the problem is resolved by using \verb+process_input_buffer+ callback. +The callback function inserts the output command before each letter above U+0080. +This method can omits the process to make all Japanese characters active +(most of the activated characters are not used in many cases). +% +%<*ja> \LuaTeX-jaでは,\verb+process_input_buffer+ コールバックを利用することで, 「各行に出現するU+0080以降の文字に対して,それらの出力命令を前置する」という方法をとっている. これにより,(入力には使用されていないかもしれない)和文文字をもすべてアクティブ化する手間もなく, 見通しが良い実装になっている. +% +%<*en> +If \Pkg{listings.sty} and \LuaTeX-ja were loaded, +then the patch \Pkg{lltjp-listings.sty} is loaded automatically at \verb+\begin{document}+. +% +%<*ja> \LuaTeX-ja で利用される \Pkg{listings} パッケージへのパッチ \Pkg{lltjp-listings.sty} は, \Pkg{listings.sty} と\LuaTeX-jaを読み込んでおけば, \verb+\begin{document}+ の箇所において自動的に読み込まれるので,通常はあまり 意識する必要はない. +% + +%\paragraph{Class of characters} +%\paragraph{文字種} -\paragraph{文字種} +%<*en> +Roughly speaking, the \Pkg{listings} package processes input as follows: +% +%<*ja> \Pkg{listings} パッケージの内部では,大雑把に言うと +% \begin{enumerate} +%<*en> +\item Collects \textit{letters} and \textit{digits}, which can be used for the name of identifiers. +% +%<*ja> \item 識別子として使える文字 (``letter'',~``digit'') たちを 集める. +% + +%<*en> +\item When reading an \textit{other}, outputs the collected string (with modification, if needed). +% +%<*ja> \item letterでもdigitでもない文字が現れた時に,収集した文字列を(必要なら修飾して)出力する. +% + +%<*en> +\item Collects \textit{others}. +% +%<*ja> \item 今度は逆に,letterでない文字たちをletterが現れるまで集める. +% + +%<*en> +\item When reading a \textit{letter} or a \textit{digit}, outputs the collected string. +% +%<*ja> \item letterが出現したら集めた文字列を出力する. +% + +%<*en> +\item Turns back to 1. +% +%<*ja> \item 1.に戻る. +% \end{enumerate} +%<*en> +By the above process, line breaks inside of an identifier is blocked. +A flag \verb+\lst@ifletter+ shows whether the last character can be used +for the name of identifiers or not. +% +%<*ja> という処理が行われている.これにより,識別子の途中では行分割が行われないようになっている. 直前の文字が識別子として使えるか否かは \verb+\lst@ifletter+ というフラグに格納されている. +% +%<*en> +For Japanese characters, line breaks are permitted on both sides +except for parentheses, dashes, etc. +To process Japanese characters, +\Pkg{lltjp-listings.sty} introduces a new flag \verb+\lst@kanji+, which indicates +whether the last character is Japanese character or not. +For illustration, we introduce the following classes of character: +% +%<*ja> さて,日本語の処理である.殆どの和文文字の前後では行分割が可能であるが,その一方で 括弧類や音引きなどでは禁則処理が必要なことから,\Pkg{lltjp-listings.sty} では, 直前が和文文字であるかを示すフラグ \verb+\lst@kanji+ を新たに導入した. 以降,説明のために以下のように文字を分類する: +% \begin{center} \small \begin{tabular}{lccccc} @@ -5965,23 +6143,50 @@ $\mathit{Nq}.\mathit{tail}$は無意味なので, &Letter&Other&Kanji&Open&Close\\\midrule \verb+\lst@ifletter+&T&F&T&F&T\\ \verb+\lst@ifkanji+&F&F&T&T&F\\ -意図&識別子中の文字&その他欧文文字&殆どの和文文字&開き括弧類&閉じ括弧類\\ +%Meaning&identifier char&other alphabet&most of Japanese char&open paren&close paren\\ +%意図&識別子中の文字&その他欧文文字&殆どの和文文字&開き括弧類&閉じ括弧類\\ \bottomrule \end{tabular} \end{center} +%<*en> +Note that \textit{digits} in the \Pkg{listings} package can be Letter or +Other according to circumstances. +% +%<*ja> なお,本来の\Pkg{listings} パッケージでの分類``digit''は, 出現状況によって,上の表のLetterとOtherのどちらにもなりうる. また,KanjiとCloseは \verb+\lst@ifletter+ と \verb+\lst@ifkanji+ の値が一致しているが, これは間違いではない. +% +%<*en> +For example, let us consider the case an Open comes after a Letter. +Since an Open represents Japanese open parenthesis, +it is preferred to be permitted to insert line break after the Letter. +Therefore, the collected string is output in this case. +The following table summarizes $5\times 5=25$ cases: +% +%<*ja> 例えば,Letterの直後にOpenが来た場合を考える. 文字種Openは和文開き括弧類を想定しているので,Letterの直後では行分割が可能であることが望ましい. そのため,この場合では,すでに収集されている文字列を出力することで行分割を許容するようにした. 同じように,$5\times 5=25$通り全てについて書くと,次のようになる: +% \begin{center} \small \begin{tabular}{llccccc} \toprule +%<*en> +&&\multicolumn{4}{c}{Next}\\\cmidrule(lr){3-7} +&&\hbox to 4em{\hss Letter\hss}&\hbox to 4em{\hss Other\hss} +&\hbox to 4em{\hss Kanji\hss}&\hbox to 4em{\hss Open\hss}&Close\\\midrule +&Letter&collects&\multicolumn{3}{c}{\hrulefill \ outputs\ \hrulefill}&collects\\ +&Other&outputs&collects&\multicolumn{2}{c}{\hrulefill \ outputs\ \hrulefill}&collects\\ +Last&Kanji&\multicolumn{4}{c}{\hrulefill \ outputs\ \hrulefill}&collects\\ +&Open&\multicolumn{5}{c}{\hrulefill \ collects\ \hrulefill}\\ +&Close&\multicolumn{4}{c}{\hrulefill \ outputs\ \hrulefill}&collects\\ +% +%<*ja> &&\multicolumn{4}{c}{後ろ側の文字}\\\cmidrule(lr){3-7} &&\hbox to 4em{\hss Letter\hss}&\hbox to 4em{\hss Other\hss} &\hbox to 4em{\hss Kanji\hss}&\hbox to 4em{\hss Open\hss}&Close\\\midrule @@ -5990,74 +6195,212 @@ $\mathit{Nq}.\mathit{tail}$は無意味なので, 文&Kanji&\multicolumn{4}{c}{\hrulefill \ 出力\ \hrulefill}&収集\\ 字&Open&\multicolumn{5}{c}{\hrulefill \ 収集\ \hrulefill}\\ 種&Close&\multicolumn{4}{c}{\hrulefill \ 出力\ \hrulefill}&収集\\ +% \bottomrule \end{tabular} \end{center} -上の表において, +%In the above table, +%上の表において, \begin{itemize} -\item 「出力」は,それまでに集めた文字列を出力(≒ここで行分割可能)を意味する. -\item 「収集」は,後側の文字を,現在収集された文字列に追加(行分割不可)を意味する. +%\item ``outputs'' means to output the collected string (i.e., line breaking is permitted there). +%\item 「出力」は,それまでに集めた文字列を出力(≒ここで行分割可能)を意味する. + +%\item ``collects'' means to append the next character to the collected string (i.e., line breaking is prohibited there). +%\item 「収集」は,後側の文字を,現在収集された文字列に追加(行分割不可)を意味する. \end{itemize} -\paragraph{和文文字扱いとなる文字} +%\paragraph{Classification of characters} +%\paragraph{和文文字扱いとなる文字} + +%<*en> +Characters are classified according to \Param{jacharrange} parameter (see Section \ref{ssec-setrange}): +% +%<*ja> \Pkg{listings} パッケージにおいて和文文字と扱われる (前に述べたKanji, Open,あるいは「閉じ括弧類」分類)か否かは, 通常の\textbf{JAchar}/\textbf{Alchar}の範囲の設定(\ref{ssec-setrange}節)に従って行われる: +% \begin{itemize} -\item (U+0080以降の)\textbf{ALchar}は,すべてLetter扱いである. -\item (U+0080以降の)\textbf{JAchar}については,以下の順序に従って文字種を決める: +%\item \textbf{ALchars} above U+0080 are Letter. +%\item (U+0080以降の)\textbf{ALchar}は,すべてLetter扱いである. + +%\item \textbf{JAchars} are classified in the order as follows: +%\item (U+0080以降の)\textbf{JAchar}については,以下の順序に従って文字種を決める: \begin{enumerate} -\item \Param{prebreakpenalty} が0以上の文字はOpen扱いである. -\item \Param{postbreakpenalty} が0以上の文字はClose扱いである. -\item 上の2条件のどちらにも当てはまらなかった文字は,Kanji扱いである. +%\item Characters whose \Param{prebreakpenalty} is greater than or equal to 0 are Open. +%\item \Param{prebreakpenalty} が0以上の文字はOpen扱いである. + +%\item Characters whose \Param{postbreakpenalty} is greater than or equal to 0 are Close. +%\item \Param{postbreakpenalty} が0以上の文字はClose扱いである. + +%\item Characters that don't satisfy the above two conditions are Kanji. +%\item 上の2条件のどちらにも当てはまらなかった文字は,Kanji扱いである. \end{enumerate} +\end{itemize} + +%<*en> +The width of halfwidth kana (U+FF61--U+FF9F) is same as the width of \textbf{ALchar}; the width of the other \textbf{JAchars} is double the width of \textbf{ALchar}. +% +%<*ja> なお,半角カナ(U+FF61--U+FF9F)以外の\textbf{JAchar}は欧文文字2文字分の幅をとるものとみなされる. 半角カナは欧文文字1文字分の幅となる. -\end{itemize} +% +%<*en> +The classification process is executed every time a character appears in +listing environments. +% +%<*ja> これらの文字種決定は,実際に \texttt{lstlisting} 環境などの内部で文字が出てくるたびに行われる. +% + +%<*ja> +\section{和文の行長補正方法} +\label{sec-adjspec} +\texttt{luatexja-adjust.sty} で提供される優先順位付きの行長調整の詳細を述 +べる.大まかに述べると,次のようになる. +\begin{itemize} +\item 通常の\TeX の行分割方法に従って,段落を行分割する.この段階では,行 + 長に半端が出た場合,その半端分は\Param{xkanjiskip}, + \Param{kanjiskip},JFMグルーの全てで(優先順位なく)負担される. +\item その後,\texttt{post\_linebreak\_filter} callbackを使い,\textbf{段 + 落中の各行ごとに},行末文字の位置を調整したり,優先度付きの行長調整 + を実現するためにグルーの伸縮度を調整する. +\texttt{luatexja-adjust.sty} の作用は,このcallbackを追加するだけであり, + この章の残りではcallbackでの処理について解説する. +\end{itemize} + +\paragraph{準備:合計伸縮量の計算} +グルーの伸縮度(\texttt{plus} や \texttt{minus} で指定されている値)には, +有限値の他に,\texttt{fi},\texttt{fil},\texttt{fill},\texttt{filll}と +いう4つの無限大レベル(後ろの方ほど大きい)があり,行の調整に +\texttt{fi} などの\textbf{無限大レベルの伸縮度が用いられている場合は,そ +の行に対しての処理を中止}する. + +よって,以降,問題にしている行の行長調整は伸縮度が有限長のグルーを用いて +行われているとして良い.まず,段落中の行中のグルーを +\begin{itemize} +\item 下のどれにも該当しないグルー +\item 和欧文間空白(\Param{xkanjiskip}) +\item JFMグルー(優先度別にまとめられる) +\item 和文間空白(\Param{kanjiskip}) +\end{itemize} +の$1+1+5+1=8$つに類別し,それぞれの種別ごとに許容されている伸縮度の合計を計算する. +また,行長と自然長との差の絶対値を計算し,それを\textit{total}とおく. + +\subsection{行末文字の位置調整} +まず,行末が和文文字であった場合,それを動かすことによって,\textbf{JAglue} が負担する調整量を +少なくしようとする. % + %<*en> -\section{Patch for the \Pkg{listings} package} +\section{Advanced line-adjustment for Japanese characters} \dots % + + + \begin{thebibliography}{99} \addcontentsline{toc}{section}{\refname} \bibitem{texbytopic} Victor Eijkhout, \emph{\TeX\ by Topic, A \TeX nician's Reference}, Addison-Wesley, 1992. \bibitem{listings} C.\ Heinz, B.\ Moses. The \textsf{Listings} Package. -\bibitem{jlisting} Thor Watanabe. Listings\ -\ MyTeXpert.\newblock +\bibitem{jlisting} Thor Watanabe. Listings\ -\ MyTeXpert. \newblock \url{http://mytexpert.sourceforge.jp/index.php?Listings} +\bibitem{min10} 乙部厳己,min10フォントについて. +\url{http://argent.shinshu-u.ac.jp/~otobe/tex/files/min10.pdf} +\bibitem{jlreq} W3C Japanese Layout Task Force~(ed), Requirements for Japanese Text Layout (W3C Working Group Note), 2011, 2012. \newblock +\url{http://www.w3.org/TR/jlreq/}% +% \\日本語訳の書籍版:W3C日本語組版タスクフォース(編),『W3C技術ノート 日本語組版処理の要件』,東京電機大学出版局,2012. +\bibitem{x4051} 日本工業規格(Japanese Industrial Standard) JIS~X~4051, +日本語文書の組版方法(Formatting rules for Japanese documents), 1993, 1995, 2004. \end{thebibliography} \newpage \appendix -%<*ja> -\section{\LuaTeX-jaにおけるJIS~X~0213非漢字のcatcode} +%\section{The category code of non-kanji characters defined in JIS~X~0213} +%\section{\LuaTeX-jaにおけるJIS~X~0213非漢字のcatcode} + +%<*en> +In these tables, the default catcode (\LuaTeX-ja) and kcatcode ((u)\pTeX) of non-kanji +characters defined in JIS~X~0213 from row 1 to row 13 is summarized. +Each character is printed as follows: +% +%<*ja> ここでは,JIS~X~0213の非漢字部分(第1区〜第13区)のうち, どの文字が(u)\pTeX や\LuaTeX-jaで制御綴内に使用可能かを表にしてまとめる. 各文字は +% \begin{center} \tt\fboxsep=1pt\fbox{\hbox to \zw{\gt あ\hss}}\,\scriptsize LUP \end{center} +%<*ja> のように表示しており,各文字は次の意味を持っている. -この表の生成は,JIS X 0208の範囲内の文字については\verb+\jis+命令を使って行なっている. +この表の生成は,JIS~X~0208の範囲内の文字については\verb+\jis+命令を使って行なっている. +% +%<*en> +The tables are generated by using \verb+\jis+ command for characters included in +JIS~X~0208. +Each character in the tables means: +% \begin{itemize} +%<*en> +\item The background of a character regarded as \textbf{ALchar} in \LuaTeX-ja + is colored light blue. +% +%<*ja> \item 背景が薄く青く塗られている文字は, \LuaTeX-ja の標準で\textbf{ALchar}として認識されている文字である. +% + +%<*en> +\item The first letter {\tt L} means that the character is available for + the name of a control sequence in \XeTeX{} and \LuaTeX-ja (its catcode is 11). +% +%<*ja> \item 1文字目の {\tt L} は,\XeTeX や\LuaTeX-jaにおいてこの文字が制御綴内に 使用可能(catcodeが11)であることを表している. +% + +%<*en> +\item The second letter {\tt U} means that the character is available for + the name of a control sequence in \upTeX{} (its kcatcode is 16 or 17). + \upTeX{} regards these characters as Japanese character. +% +%<*ja> \item 2文字目の{\tt U} は,\upTeX においてこの文字が制御綴内に使用可能(kcatcodeは16,~17)であることを 表している.この範囲内では,\upTeX は標準で全文字を和文文字として扱うようである. +% + +%<*en> +\item The third letter {\tt P} means that the character is available for + the name of a control sequence in \pTeX{} (its kcatcode is 16 or 17). +% +%<*ja> \item 3文字目の {\tt P} は,\pTeX においてこの文字が制御綴内に使用可能(kcatcodeは16,~17)であることを 表している. +% + +%<*en> +\item If the third letter is {\tt -} (or the character is printed in red), + the character is not included in JIS~X~0208. + Therefore, you can consider the character is not available. +% +%<*ja> \item 3文字目が{\tt -}となっているもの(本体の文字も赤身がかっている)は, JIS~X~0208にないため使用不能と考えて良いものである. +% + +%<*en> +\item The kana for bidakuon in row 4 and 5 are omitted. +% +%<*ja> \item 第4区と第5区にある,鼻濁音の仮名については省略した. +% \end{itemize} @@ -6383,7 +6726,9 @@ JIS~X~0208にないため使用不能と考えて良いものである. } \def\test#1{{% -\subsection*{第#1区}\tt\small\fboxsep=1pt\centering\tabcolsep=0.25\zw +%\subsection*{Row #1} +%\subsection*{第#1区} +\tt\small\fboxsep=1pt\centering\tabcolsep=0.25\zw \begin{tabular}{ccccccccccccccccc}\toprule&"0&"1&"2&"3&"4&"5&"6&"7&"8&"9&"A&"B&"C&"D&"E&"F\\ \out{#1}{2}\out{#1}{3}\out{#1}{4}\out{#1}{5}\out{#1}{6}\out{#1}{7}\bottomrule \end{tabular}\par}\medskip} @@ -6391,8 +6736,6 @@ JIS~X~0208にないため使用不能と考えて良いものである. \test{1}\test{2}\test{3}\test{4}\test{5}\test{6}\test{7}\test{8} \test{9}\test{10}\test{11}\test{12}\test{13} -% - \section{Package versions used in this document} This document was typeset using the following packages: