X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=doc%2Fluatexja.dtx;h=0f95747b7d6aabb22297d9f946bf43c8d4c5a47f;hb=f702bd7ffe06f376115615e94ecd2527aa8cf34c;hp=9ddbee0e7a82857a96c971f8c5c45137fd037c43;hpb=cdf699d8291fe43b3850058cea776cbbb387876f;p=luatex-ja%2Fluatexja.git diff --git a/doc/luatexja.dtx b/doc/luatexja.dtx index 9ddbee0..0f95747 100644 --- a/doc/luatexja.dtx +++ b/doc/luatexja.dtx @@ -16,10 +16,36 @@ \makeatletter %%%%%%%% \directlua{if jit then jit.on() end} +\usepackage{metalogo,amsmath,array,tikz,pict2e,multienum,float} +\usepackage{booktabs,multicol,luatexja-ruby} +\usepackage[all]{xy} +\usepackage{lltjext,alltt} + +%%%%%%%% fonts +\usepackage{luatexja-otf} +\directlua{luatexja.otf.enable_ivs()} +\usepackage[match]{luatexja-fontspec} +\usepackage[kozuka-pr6n]{luatexja-preset} +\usepackage{unicode-math} +\setmainfont[Ligatures=TeX]{Linux Libertine O} +\setmonofont[Scale=MatchLowercase, ItalicFont=lmmono10-italic.otf, + BoldFont=lmmonolt10-bold.otf, BoldItalicFont=lmmonolt10-boldoblique.otf +]{lmmono10-regular.otf} +\setmonojfont{KozGoPr6N-Regular.otf} +\setmathfont[Scale=MatchLowercase]{xits-math.otf} +\setsansfont[Scale=MatchLowercase,Ligatures=TeX]{Linux Biolinum O} + +\setLaTeXa{\scshape a} +%<*ja> +\def\emph#1{\textbf{\textgt{#1}}} +\def\headfont{\normalfont\bfseries\gtfamily}\normalsize +% %<*en> +\frenchspacing \usepackage[margin=25mm,lmargin=30mm,rmargin=30mm,footskip=6mm]{geometry} \usepackage{luatexja-adjust}\ltjdisableadjust \parskip=\smallskipamount +\makeatletter \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% {3.25ex \@plus1ex \@minus.2ex}% {-1em}% @@ -31,11 +57,6 @@ \advance\leftmargini-1\zw\advance\leftmarginii-1\zw % -\usepackage{amsmath,array,tikz,pict2e,multienum,float} -\usepackage{booktabs,multicol,luatexja-ruby} -\usepackage[all]{xy} -\usepackage{lltjext,alltt} - %%%%%%%% listings %%%%%%%% IVS @@ -58,6 +79,7 @@ explpreset={numberstyle=\tiny, numbers=left, numbersep=1em, columns=fixed} } % Suppress output from showexpl to stdout. +\makeatletter \let\SX@Info\relax %%%%%%%% colors @@ -104,26 +126,6 @@ %\newtheorem{defn}{Definition} %\newtheorem{defn}{定義} -%%%%%%%% fonts -\usepackage{luatexja-otf} -%\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} -\usepackage{amssymb} -% -%<*en> -\usepackage{unicode-math} -\setmainfont[Ligatures=TeX]{TeX Gyre Termes} -\setsansfont[Scale=0.95,Ligatures=TeX]{TeX Gyre Heros} -\setmathfont{xits-math.otf} -\frenchspacing -% - %%%%%%%% logo \usepackage{metalogo} \DeclareRobustCommand\eTeX{\ensuremath{\varepsilon}-\kern-.125em\TeX} @@ -133,13 +135,14 @@ \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} +\DeclareRobustCommand\epTeX{\ensuremath{\varepsilon}-\pTeX} %%%%%%%% other macros -\newlist{cslist}{description}{1} +\newlist{cslist}{description}{2} \setlist[cslist]{% style=nextline,font=\mdseries\ttfamily, before*=\def\<{\char`\<}\def\>{\char`\>}\def\{{\char`\{}\def\}{\char`\}}, + topsep=\medskipamount, % leftmargin=2\zw, % leftmargin=2em, } @@ -157,7 +160,8 @@ \vskip\belowcaptionskip} \def\_{\leavevmode \kern .06em\vbox {\hrule \@width .333em}} -\def\cs#1{\texttt{\upshape\textbackslash #1}} +\def\cs#1{\texttt{\upshape + \texorpdfstring{\textbackslash\ltjsetparameter{autoxspacing=false}#1}{\textbackslash#1}}} %%%%%%%% \makeatother @@ -170,9 +174,9 @@ width:\hfill\ #2\cr height:\hfill\ #3\cr depth:\hfill\ #4\cr }}}}}\,} -\protected\def\Param#1{\hyperlink{fld:#1}{\textsf{#1}}} % parameter name -\protected\def\DParam#1{\hypertarget{fld:#1}{\textsf{#1}}} % parameter name (definition) -\protected\def\Pkg#1{\underline{\smash{\texttt{#1}}}} % packages/classes +\protected\def\Param#1{\hyperlink{fld:#1}{\underline{\smash{\textsf{#1}}}}} % parameter name +\protected\def\DParam#1{\hypertarget{fld:#1}{\underline{\smash{\textsf{#1}}}}} % parameter name (definition) +\protected\def\Pkg#1{\textsf{#1}} % packages/classes \begin{document} @@ -269,19 +273,22 @@ scripts for appropriate callbacks. が始まったパッケージである. % -%\subsection{Major Changes from \pTeX} +%\subsection{Major changes from \pTeX} %\subsection{\pTeX からの主な変更点} \label{ssec:chgptex} %<*en> The \LuaTeX-ja package is under much influence of \pTeX\ engine. The initial target of development was to implement features of \pTeX. However, -\emph{\LuaTeX-ja is not a just porting of \pTeX; unnatural +implementing all feature of \pTeX\ is impossible, +since all process of \LuaTeX-ja must be implemented only by Lua and \TeX\ macros. +Hence \emph{\LuaTeX-ja is not a just porting of \pTeX; unnatural specifications/behaviors of \pTeX\ were not adopted}. % %<*ja> \LuaTeX-jaは,\pTeX に多大な影響を受けている.初期の開発目標は,\pTeX の機 -能をLuaコードにより実装することであった.しかし,開発が進むにつれ,\pTeX +能をLuaコードにより実装することであった.しかし,(\pTeX はエンジン拡張であったのに対し) +\LuaTeX-jaはLuaコードと\TeX マクロを用いて全てを実装していなければならないため,\pTeX の完全な移植は不可能であり,また\pTeX における実装がいささか不可解になっ ているような状況も発見された.そのため,\emph{\LuaTeX-jaは,もはや \pTeX の完全な移植は目標とはしない.\pTeX における不自然な仕様・挙動があ @@ -289,80 +296,81 @@ specifications/behaviors of \pTeX\ were not adopted}. % %<*en> -The followings are major changes from \pTeX: +The followings are major changes from \pTeX. +For more detailed information, see Part~\ref{part-imp} or other sections of this manual. % %<*ja> 以下は \pTeX からの主な変更点である. +より詳細については第\ref{part-imp}部など本文書の残りを参照. % -\begin{itemize} %<*en> -\item \emph{\LuaTeX-ja does all process only with Lua and \TeX\ macros}, -while \pTeX\ is an engine extension of \TeX82. -This means that several features of \pTeX\ are not completely implemented -in \LuaTeX-ja. -% -%<*ja> -\item \pTeX はエンジン拡張であったのに対し, -\emph{\LuaTeX-jaはLuaコードと\TeX マクロを用いて全てを実装している}. -そのため,\pTeX のいくつかの機能は\LuaTeX-ja に(そのままの形では)実装していない. -% -\begin{itemize} -%<*en> - \item \pTeX\ addes several primitives, such as \cs{kanjiskip}, +\paragraph{Command names} \pTeX\ addes several primitives, such as \cs{kanjiskip}, \cs{prebreakpenalty},~and,~\cs{ifydir}. They can be used as follows: % %<*ja> - \item 例えば\pTeX で追加された次のようなプリミティブ +\paragraph{命令の名称} 例えば\pTeX で追加された次のようなプリミティブ % \begin{verbatim} \kanjiskip=10pt \dimen0=kanjiskip +\tbaselineshift=0.1zw +\dimen0=\tbaselineshift \prebreakpenalty`ぁ=100 \ifydir ... \fi \end{verbatim} -% However, we cannot use them under \LuaTeX-ja. +% However, we cannot use them under \LuaTeX-ja. % Instead of them, we have to write as the following. % は\LuaTeX-jaには存在しない.\LuaTeX-jaでは以下のように記述することになる. \begin{verbatim} -\ltjsetparameter{kanjiskip} \dimen0=\ltjgetparameter{kanjiskip} +\ltjsetparameter{kanjiskip=10pt} \dimen0=\ltjgetparameter{kanjiskip} +\ltjsetparameter{talbaselineshift=0.1\zw} +\dimen0=\ltjgetparameter{talbaselineshift} \ltjsetparameter{prebreakpenalty={`ぁ,100}} \ifnum\ltjgetparemeter{direction}=4 ... \fi \end{verbatim} +%<*en> +Note that \pTeX\ adds new two useful units, namely \texttt{zw}~and~\texttt{zh}. +As shown above, they are changed by \cs{zw}~and~\cs{zh} respectively, in \LuaTeX-ja. +% +%<*ja> +特に注意してほしいのは,\pTeX で追加された \texttt{zw} と \texttt{zh} という単位は +\LuaTeX-ja では使用できず,\cs{zw}, \cs{zh} と制御綴の形にしないといけないという点である. +% %<*en> -\item In \pTeX, a line break after Japanese character is ignored (and +\paragraph{Linebreak after a Japanese character} +In \pTeX, a line break after Japanese character is ignored (and doesn't yield a space), since line breaks (in source files) are permitted almost everywhere in Japanese texts. However, \LuaTeX-ja doesn't have this feature completely, because of a specification of \LuaTeX. For the detail, see Section~\ref{sec-lbreak}. % %<*ja> -\item 日本語の文書中では改行はほとんどどこでも許されるので,\pTeX では和文文字 +\paragraph{和文文字直後の改行} +日本語の文書中では改行はほとんどどこでも許されるので,\pTeX では和文文字 直後の改行は無視される(スペースが入らない)ようになっていた.しかし, \LuaTeX-ja では \LuaTeX の仕様のためにこの機能は完全には実装されていない. 詳しくは\ref{sec-lbreak}章を参照. % -\end{itemize} - - - %<*en> -\item The insertion process of glues/kerns between two Japanese +\paragraph{Spaces related to Japanese characters} +The insertion process of glues/kerns between two Japanese characters and between a Japanese character and other characters (we refer glues/kerns of both kinds as \textbf{JAglue}) is rewritten from scratch. % %<*ja> -\item 2つの和文文字の間や,和文文字と欧文文字の間に入るグルー/カーン +\paragraph{和文関連の空白} +2つの和文文字の間や,和文文字と欧文文字の間に入るグルー/カーン (両者をあわせて\textbf{JAglue}と呼ぶ)の挿入処理が0から書き直されている. % \begin{itemize} %<*en> -\item As \LuaTeX's internal ligature handling is ``node-based'' +\item As \LuaTeX's internal ligature handling is \emph{node-based} (\textit{e.g.}, \verb+of{}fice+ doesn't prevent ligatures), the - insertion process of \textbf{JAglue} is now ``node-based''. + insertion process of \textbf{JAglue} is now \emph{node-based}. % %<*ja> \item \LuaTeX の内部での合字の扱いは「ノード」を単位として行われるようになっている(例えば, @@ -402,7 +410,6 @@ in \LuaTeX-ja. ちょ\hbox{}っと \end{lstlisting} - %<*en> \item In the process, two Japanese fonts which only differ in their ``real'' fonts are identified. @@ -413,26 +420,62 @@ in \LuaTeX-ja. % \end{itemize} +%<*en> +\paragraph{Directions} +From version~20150420.0, \LuaTeX-ja supports vertical writing. +We implement this feature by using callbacks of \LuaTeX; so it must \emph{not} be confused +with $\Omega$-style direction support of \LuaTeX\ itself. +Due to implementation, the dimension returned by \cs{wd},~\cs{ht}, or~\cs{dp} depends +on the content of the register \emph{only}. This is major difference with \pTeX. +% %<*ja> -\item ****版からは,不安定ながらも\LuaTeX-ja における縦組みをサポートしている. -\LuaTeX のコールバックの制限などにより,特に異なった組方向のボックスを扱う場合には -仕様が異なるので注意. +\paragraph{組方向} +20150420.0版からは,不安定ながらも\LuaTeX-ja における縦組みをサポートしている. +なお,\LuaTeX 本体も$\Omega$流の組方向をサポートしているが,それとは全くの別物であること +に注意してほしい. +特に,異なった組方向のボックスを扱う場合には +\cs{wd}, \cs{ht}, \cs{dp}等の仕様が\pTeX と異なるので注意.詳細は第\ref{sec-direction}章を参照. % %<*en> -\item Japanese characters in discretionary break (\cs{discretionary}) is not supported. +\paragraph{\cs{discretionary}} +Japanese characters in discretionary break (\cs{discretionary}) is not supported. % %<*ja> -\item \cs{discretionary} 内に直接和文文字を記述することはサポートされない.和文文字をどう +\paragraph{\cs{discretionary}} + \cs{discretionary} 内に直接和文文字を記述することは,\pTeX においても想定されていなかった + 感があるが.\LuaTeX-jaにおいても想定していない.和文文字をどう しても使いたい場合は \cs{hbox} で括ること. % -\end{itemize} %<*en> -For detailed information, see Part~\ref{part-imp}. +\paragraph{Greek and Cyrillic letters, and ISO~8859-1 symbols} +By default, \LuaTeX-ja uses Japanese fonts to typeset Greek and Cyrillic letters, + To change this behavior, + put \verb!\ltjsetparameter{jacharrange={-2,-3}}! in the preamble. + For the detailed description, see Subsection~\ref{ssec-setrange}. + +From this version, characters which belongs both ISO~8859-1 and JIS~X~0208, + such as \P~and~\S, are now typeset in alphabetic fonts. This means that + without the \cs{fontspec} (and~\Pkg{luatexja-fontspec}) package, these characters are not typeset correctly. % %<*ja> -詳細については第\ref{part-imp}部を参照. +\paragraph{ギリシャ文字・キリル文字とISO~8859-1の記号} +標準では,\LuaTeX-jaはギリシャ文字やキリル文字を和文フォントを使っ + て組む.ギリシャ語などを本格的に組むなどこの状況が望ましくない場合, + プリアンブルに +\begin{lstlisting} + \ltjsetparameter{jacharrange={-2,-3}} +\end{lstlisting} + を入れると + 上記種類の文字は欧文フォントを用いて組まれるようになる. + 詳しい説明は\ref{ssec-setrange}節を参照してほしい. + +また,\P,~\S といったISO~8859-1の上位領域とJIS~X~0208の共通部分の文字は + 本バージョンから標準で欧文扱いとなり,\emph{ソース中に直接記述しても + \Pkg{fontspec}パッケージ(および\Pkg{luatexja-fontspec}パッケージ)非読み込みの状態では出力されなくなった}. + 和文扱いで出力するには \verb+\ltjjachar`§+ のように \cs{ltjjachar} 命令 + を使えばよい. % %\subsection{Notations} @@ -451,12 +494,12 @@ In this document, the following terms and notations are used: (see Subsection~\ref{ssec-setrange}). % %<*ja> -\item 文字は次の2種類に分けられる.この類別はユーザが後から変更可能である +\item 文字は次の2種類に分けられる.この類別は固定されているものではなく,ユーザが後から変更可能である (\ref{ssec-setrange}節を参照). % \begin{itemize} %<*en> -\item \textbf{JAchar}: standing for characters which used in Japanese typesetting, +\item \textbf{JAchar}: standing for characters which is used in Japanese typesetting, such as Hiragana,~Katakana, Kanji, and~other Japanese punctuation marks. % %<*ja> @@ -477,21 +520,21 @@ and \emph{Japanese fonts} for fonts used in \textbf{JAchar}. \textbf{JAchar}の出力に用いられるフォントを\emph{和文フォント}と呼ぶ. % %<*en> -\item A word in a sans-serif font (like \Param{prebreakpenalty}) +\item A word in a sans-serif font with underline (like \Param{prebreakpenalty}) means an internal parameter for Japanese typesetting, and it is used as a key in \cs{ltjsetparameter} command. % %<*ja> -\item サンセリフ体で書かれた語(例:\Param{prebreakpenalty})は日本語組版用の +\item 下線つきローマン体で書かれた語(例:\Param{prebreakpenalty})は日本語組版用の パラメータを表し,これらは \cs{ltjsetparameter} 命令のキーとして 用いられる. % %<*en> -\item A word in typewriter font with underline (like \Pkg{fontspec}) +\item A word in a sens-serif font without underline (like \Pkg{fontspec}) means a package or a class of \LaTeX. % %<*ja> -\item 下線付きタイプライタ体の語(例:\Pkg{fontspec})は\LaTeX の +\item 下線なしサンセリフ体の語(例:\Pkg{fontspec})は\LaTeX の パッケージやクラスを表す. % %<*en> @@ -503,28 +546,28 @@ and \emph{Japanese fonts} for fonts used in \textbf{JAchar}. % \end{itemize} -%\subsection{About the Project} +%\subsection{About the project} %\subsection{プロジェクトについて} %\paragraph{Project Wiki} Project Wiki is under construction. %\paragraph{プロジェクトWiki} プロジェクトWikiは構築中である. %<*en> \begin{itemize} -\item \url{http://sourceforge.jp/projects/luatex-ja/wiki/FrontPage%28en%29} (English) -\item \url{http://sourceforge.jp/projects/luatex-ja/wiki/FrontPage} (Japanese) -\item \url{http://sourceforge.jp/projects/luatex-ja/wiki/FrontPage%28zh%29} (Chinese) +\item \url{https://osdn.jp/projects/luatex-ja/wiki/FrontPage%28en%29} (English) +\item \url{https://osdn.jp/projects/luatex-ja/wiki/FrontPage} (Japanese) +\item \url{https://osdn.jp/projects/luatex-ja/wiki/FrontPage%28zh%29} (Chinese) \end{itemize} % %<*ja> \begin{itemize} -\item \url{http://sourceforge.jp/projects/luatex-ja/wiki/FrontPage}(日本語) -\item \url{http://sourceforge.jp/projects/luatex-ja/wiki/FrontPage%28en%29}(英語) -\item \url{http://sourceforge.jp/projects/luatex-ja/wiki/FrontPage%28zh%29}(中国語) +\item \url{https://osdn.jp/projects/luatex-ja/wiki/FrontPage}(日本語) +\item \url{https://osdn.jp/projects/luatex-ja/wiki/FrontPage%28en%29}(英語) +\item \url{https://osdn.jp/projects/luatex-ja/wiki/FrontPage%28zh%29}(中国語) \end{itemize} % -%This project is hosted by SourceForge.JP. -%本プロジェクトはSourceForge.JPのサービスを用いて運営されている. +%This project is hosted by OSDN. +%本プロジェクトはOSDNのサービスを用いて運営されている. %\paragraph{Members}\ %\paragraph{開発メンバー}\ @@ -555,23 +598,24 @@ and \emph{Japanese fonts} for fonts used in \textbf{JAchar}. %\subsection{インストール} %The following packages are needed for the \LuaTeX-ja\ package. -%\LuaTeX-jaパッケージには,次のパッケージ類が必要である. +%\LuaTeX-jaパッケージの動作には次のパッケージ類が必要である. \begin{itemize} -\item \LuaTeX\ snapshot rev~5024 (or later) +\item \LuaTeX\ beta-0.80.0 (or later) \item \Pkg{luaotfload} v2.5 (or later) \item \Pkg{adobemapping} (Adobe cmap and pdfmapping files) \item \Pkg{everysel} (if you want to use \LuaTeX-ja with \LaTeXe) -%\item \emph{IPAex fonts(\url{http://ipafont.ipa.go.jp/})} +\item \Pkg{fontspec} v2.4 +%\item \emph{IPAex fonts} (\url{http://ipafont.ipa.go.jp/}) %\item \emph{IPAexフォント(\url{http://ipafont.ipa.go.jp/})} \end{itemize} +%In summary, this version of \LuaTeX-ja no longer supports \TeX~Live~2014 (or older version). +%<*ja> +要約すると,本バージョンの\LuaTeX-jaは\TeX~Live~2014以前では動作しない\footnote{% + もっとも,自分で\LuaTeX のバイナリをSubversionリポジトリからビルドしていれば話は別である. +}. +% %<*en> -\emph{This version of \LuaTeX-ja no longer supports \TeX~Live~2013 (or older version). -If you want to use this version with \TeX~Live~2014, you have to build a development -version of \LuaTeX\ from its source.} - -\medskip - Now \LuaTeX-ja is available from CTAN (in the \texttt{macros/luatex/generic/luatexja} directory), and the following distributions: @@ -583,11 +627,6 @@ the following distributions: IPAex fonts are also available in these distributions. % %<*ja> -\emph{本バージョンの\LuaTeX-jaは\TeX~Live~2013以前では動作しない.\TeX~Live~2014で -用いたい場合は,自力で\LuaTeX 開発版をソースからビルドする必要がある.} - -\medskip - 現在,\LuaTeX-jaはCTAN (\texttt{macros/luatex/generic/luatexja})に収録されている他, 以下のディストリビューションにも収録されている: \begin{itemize} @@ -625,11 +664,11 @@ W32\TeX においてはIPAexフォントは \texttt{luatexja.tar.xz} 内にあ \begin{itemize} \item Clone the Git repository: \begin{lstlisting} -$ git clone git://git.sourceforge.jp/gitroot/luatex-ja/luatexja.git +$ git clone git://git.osdn.jp/gitroot/luatex-ja/luatexja.git \end{lstlisting} \item Download the \texttt{tar.gz} archive of HEAD in the \texttt{master} branch from \begin{flushleft} -\url{http://git.sourceforge.jp/view?p=luatex-ja/luatexja.git;a=snapshot;h=HEAD;sf=tgz}. +\url{http://git.osdn.jp/view?p=luatex-ja/luatexja.git;a=snapshot;h=HEAD;sf=tgz}. \end{flushleft} \end{itemize} @@ -643,15 +682,15 @@ the forefront of development is not the \texttt{master} branch. \begin{itemize} \item Gitリポジトリをクローンする: \begin{lstlisting} -$ git clone git://git.sourceforge.jp/gitroot/luatex-ja/luatexja.git +$ git clone git://git.osdn.jp/gitroot/luatex-ja/luatexja.git \end{lstlisting} -\item \texttt{master}ブランチのスナップショット(\texttt{tar.gz}形式)をダウンロードする. +\item \texttt{master} ブランチのスナップショット(\texttt{tar.gz} 形式)をダウンロードする. \begin{flushleft} -\url{http://git.sourceforge.jp/view?p=luatex-ja/luatexja.git;a=snapshot;h=HEAD;sf=tgz}. +\url{http://git.osdn.jp/view?p=luatex-ja/luatexja.git;a=snapshot;h=HEAD;sf=tgz}. \end{flushleft} \end{itemize} -\texttt{master}ブランチ(従って,CTAN内のアーカイブも)はたまにしか更新されないことに注意. -主な開発は\texttt{master}の外で行われ,比較的まとまってきたらそれを\texttt{master}に +\texttt{master} ブランチ(従って,CTAN内のアーカイブも)はたまにしか更新されないことに注意. +主な開発は\texttt{master}の外で行われ,比較的まとまってきたらそれを \texttt{master} に 反映させることにしている. % @@ -661,8 +700,8 @@ But only the contents in \texttt{src/} are needed to work \LuaTeX-ja. % %<*ja> \item 「Gitリポジトリをクローン」以外の方法でアーカイブを取得したならば,それを展開する. - \texttt{src/}をはじめとしたいくつかのディレクトリができるが, - 動作には\texttt{src/}以下の内容だけで十分. + \texttt{src/} をはじめとしたいくつかのディレクトリができるが, + 動作には \texttt{src/} 以下の内容だけで十分. % %<*en> @@ -684,9 +723,11 @@ $ lualatex ltjltxdoc.ins $ luatex ltj-kinsoku_make.tex \end{lstlisting} %<*en> -Note that \texttt{*.\{dtx,ins\}} and \texttt{ltj-kinsoku\_make.tex} are not needed in regular use. +\emph{Do not forget The last line (processing \texttt{ltj-kinsoku\_make.tex})}. +\texttt{*.\{dtx,ins\}} and \texttt{ltj-kinsoku\_make.tex} used here are not needed in regular use. % %<*ja> +\emph{最後の \texttt{ltj-kinsoku\_make.tex} の実行を忘れないように注意}. ここで使用した \texttt{*.\{dtx,ins\}} と \texttt{ltj-kinsoku\_make.tex} は 通常の使用にあたっては必要ない. % @@ -700,7 +741,7 @@ Note that \texttt{*.\{dtx,ins\}} and \texttt{ltj-kinsoku\_make.tex} are not need instead copying is also good. % %<*ja> -\item \texttt{src}の中身を自分の\texttt{TEXMF}ツリーにコピーする. +\item \texttt{src} の中身を自分の \texttt{TEXMF} ツリーにコピーする. 場所の例としては,例えば \begin{quote} \texttt{TEXMF/tex/luatex/luatexja/} @@ -713,16 +754,22 @@ Note that \texttt{*.\{dtx,ins\}} and \texttt{ltj-kinsoku\_make.tex} are not need \item If \texttt{mktexlsr} is needed to update the file name database, make it so. % %<*ja> -\item 必要があれば,\texttt{mktexlsr}を実行する. +\item 必要があれば,\texttt{mktexlsr} を実行する. % \end{enumerate} -%\subsection{Cautions} -%\subsection{注意点} - +%<*en> +\subsection{Cautions} +For changes from \pTeX, see Subsection~\ref{ssec:chgptex}. +% +%<*ja> +\subsection{注意点} +\pTeX からの変更点として,\ref{ssec:chgptex}節も熟読するのが望ましい. +ここでは一般的な注意点を述べる. +% \begin{itemize} %<*en> -\item The encoding of your source file must be UTF-8. No other +\item The encoding of your source file must be UTF-8. Other encodings, such as EUC-JP or Shift-JIS, are not supported. % %<*ja> @@ -740,9 +787,10 @@ about 30\% faster than \LuaTeX, but not always. LuaJIT\TeX を用いると\LuaTeX のだいたい1.3倍の速度で動くようであるが, IPA mj明朝などの大きいフォントを用いた場合には\LuaTeX よりも遅くなることもある. % + \item% %<*en> -\textbf{Note for MiK\TeX\ users}\quad +\textbf{(Outdated) note for MiK\TeX\ users}\quad \LuaTeX-ja requires that several CMap files% \footnote{\texttt{UniJIS2004-UTF32-\{H,V\}} and \texttt{Adobe-Japan1-UCS2}.} must be found from \LuaTeX. @@ -755,7 +803,7 @@ so you will encounter an error like the following: \LuaTeX-jaが動作するためには,\emph{導入・更新後の初回起動時に} \texttt{UniJIS2004-UTF32-\{H,V\}}, \texttt{Adobe-Japan1-UCS2}という3つのCMapが \LuaTeX によって見つけられることが必要である. -しかしMiK\TeX ではそのようになっていないので,次のエラーが発生するだろう: +しかし古いバージョンのMiK\TeX ではそのようになっていないので,次のエラーが発生するだろう: % \begin{lstlisting} ! LuaTeX error ...iles (x86)/MiKTeX 2.9/tex/luatex/luatexja/ltj-rmlgbm.lua @@ -764,16 +812,17 @@ bad argument #1 to 'open' (string expected, got nil) %<*en> If so, please execute a batch file which is written on -\href{http://sourceforge.jp/projects/luatex-ja/wiki/FrontPage%28en%29}{ the Project Wiki (English)}. +\href{https://osdn.jp/projects/luatex-ja/wiki/FrontPage%28en%29}{ the Project Wiki (English)}. This batch file creates a temporary directory, copy CMaps in it, -run \LuaTeX-ja in this directory, and finally delete the temporary directory. +run a test file which loads \LuaTeX-ja in this directory, +and finally delete the temporary directory. % %<*ja> そのような場合には, -\href{http://sourceforge.jp/projects/luatex-ja/wiki/FrontPage%28en%29}{% +\href{https://osdn.jp/projects/luatex-ja/wiki/FrontPage%28en%29}{% プロジェクトWiki英語版トップページ}中に書かれているバッチファイルを 実行して欲しい.このバッチファイルは,作業用ディレクトリにCMap達を -コピーし,その中で\LuaTeX-ja の初回起動を行い,作業用ディレクトリを消す作業をしている. +コピーし,その中で\LuaTeX-jaの初回起動を行い,作業用ディレクトリを消す作業をしている. % \end{itemize} @@ -797,7 +846,7 @@ run \LuaTeX-ja in this directory, and finally delete the temporary directory. \begin{tabular}{cccccc} \toprule \textbf{direction}& -\textbf{classification}&\textbf{font name}&\bf `10\,pt'&\bf`7\,pt'&\bf`5\,pt'\\\midrule +\textbf{classification}&\textbf{font name}&\bf ``10\,pt''&\bf``7\,pt''&\bf``5\,pt''\\\midrule \smash{\raisebox{-1ex}{\emph{yoko} (horizontal)}}& \emph{mincho}&IPAex Mincho&\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\ &\emph{gothic}&IPAex Gothic&\cs{tengt} &\cs{sevengt} &\cs{fivegt}\\ @@ -814,7 +863,7 @@ run \LuaTeX-ja in this directory, and finally delete the temporary directory. \begin{center}\small \begin{tabular}{cccccc} \toprule -\emph{組方向}&\emph{字体}&\emph{フォント名}&\bf `10\,pt'&\bf`7\,pt'&\bf`5\,pt'\\\midrule +\emph{組方向}&\emph{字体}&\emph{フォント名}&\bf ``10\,pt''&\bf``7\,pt''&\bf``5\,pt''\\\midrule \smash{\raisebox{-1ex}{横組}}& 明朝体&IPAex明朝&\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\ &ゴシック体&IPAexゴシック&\cs{tengt} &\cs{sevengt} &\cs{fivegt}\\ @@ -952,9 +1001,25 @@ Note that the bold series in both family are same as the medium series of \emph{ また,どちらのファミリでもイタリック体・スラント体は定義されない. % - %\item Japanese characters in math mode are typeset by the font family \texttt{mc}. %\item 数式モード中の和文文字は明朝体(\texttt{mc})で出力される. + +%<*en> +\item If you use the \Pkg{beamer} class with the default font theme (which uses sans serif + fonts) and with \LuaTeX-ja, you might want to change default Japanese fonts to + \emph{gothic} family. The following line changes the default Japanese font family + to \emph{gothic}: +% +%<*ja> +\item \Pkg{beamer}クラスを既定のフォント設定で使う場合,既定欧文フォントがサンセリフなの + で,既定和文フォントもゴシック体にしたいと思うかもしれない.その場合はプリアンブルに +次を書けばよい: +% +\begin{lstlisting} + \renewcommand{\kanjifamilydefault}{\gtdefault} +\end{lstlisting} + + \end{itemize} %<*en> @@ -974,7 +1039,7 @@ Okumura), namely, \Pkg{ltjclasses}\footnote{% しかしながら,上記の設定は日本語の文書にとって十分とは言えない. 日本語文書を組版するためには,\texttt{article.cls}, \texttt{book.cls}といった 欧文用のクラスファイルではなく,和文用のクラスファイルを用いた方がよい. -現時点では,\Pkg{jclasses}(\pLaTeX の標準クラス)と\Pkg{jsclasses} +現時点では,\Pkg{jclasses}(\pLaTeX の標準クラス)と\Pkg{jsclasses}% (奥村晴彦氏による「\pLaTeXe 新ドキュメントクラス」)に対応するものとして, \Pkg{ltjclasses}\footnote{% 横組用は \texttt{ltjarticle.cls},~\texttt{ltjbook.cls}, \texttt{ltjreport.cls} であり, @@ -994,11 +1059,43 @@ Okumura), namely, \Pkg{ltjclasses}\footnote{% 脚注とボトムフロートの順序は\LaTeX 通りとした.もし\pLaTeX の出力順序が好みならば, \Pkg{stfloats}パッケージを利用して \begin{lstlisting} - \usepackage{stfloats} \fnbelowfloat + \usepackage{stfloats}\fnbelowfloat \end{lstlisting} のようにすればよい.\Pkg{footmisc}パッケージを \texttt{bottom}\ オプションを指定して 読み込むという方法もあるが,それだとボトムフロートと脚注の間が開いてしまう. % +%%% ↑は英訳しない + +%<*en> +\paragraph{\Pkg{geometry} package and classes for vertical writing} +It is well-known that the \Pkg{geometry} package produces the following error, when classes for +vertical writing is used: +% +%<*ja> +\paragraph{縦組での\Pkg{geometry}パッケージ} +\pLaTeX の縦組用標準クラスファイルでは\Pkg{geometry}パッケージを利用することは出来ず, +% +\begin{lstlisting} +! Incompatible direction list can't be unboxed. +\@begindvi ->\unvbox \@begindvibox + \global \let \@begindvi \@empty +\end{lstlisting} +%<*en> +Now, \LuaTeX-ja automatically applies the patch \Pkg{lltjp-geometry} to the +\Pkg{geometry} package, when the direction of the document is \emph{tate} (vertical +writing). +This patch \Pkg{lltjp-geometry} also can be used in \pLaTeX; for the detail, please refer +\url{lltjp-geometry.pdf}~(Japanese). +% +%<*ja> +というようなエラーが発生することが知られている. +\LuaTeX-jaでは, \texttt{ltjtarticle.cls} といった縦組クラスの下でも +\Pkg{geometry}パッケージが利用できるようにパッチ\Pkg{lltjp-geometry}パッケージを自動的に当てている. + +なお,\Pkg{lltjp-geometry}パッケージは\pTeX 系列でも明示的に読み込むことによって +使用可能である.詳細や注意事項は \url{lltjp-geometry.pdf} を参照のこと. +% + %\section{Changing Fonts} %\section{フォントの変更} @@ -1022,18 +1119,16 @@ plain \TeX で和文フォントを変更するためには, For \LaTeXe, \LuaTeX-ja adopted most of the font selection system of \pLaTeXe\ (in \texttt{plfonts.dtx}). % %<*ja> -\LaTeXe については,\LuaTeX-jaではフォント選択システムを\pLaTeXe\ (\texttt{plfonts.dtx}) -の大部分をそのまま採用している. +\LaTeX で用いる際には,\pLaTeXe\ (\texttt{plfonts.dtx})用のフォント選択機構の大部分を流用している. % \begin{itemize} %<*en> -\item Commands \cs{fontfamily}, \cs{fontseries}, - \cs{fontshape}, and \cs{selectfont} can be used to change +\item Commands \cs{fontfamily}, \cs{fontseries}, and \cs{fontshape} can be used to change attributes of Japanese fonts. % %<*ja> -\item \cs{fontfamily}, \cs{fontseries}, \cs{fontshape}, そして - \cs{selectfont} が和文フォントの属性を変更するために使用できる. +\item 和文フォントの属性を変更するには,\cs{fontfamily}, \cs{fontseries}, \cs{fontshape} を使用する. + もちろん,それらを実際に反映させるには手動で \cs{selectfont} を実行する必要がある. % %<*en> @@ -1075,7 +1170,7 @@ auto select&\cs{fontencoding}&\cs{fontfamily}&---&---&\cs{usefont}\\ \verb+\fontencoding{+\verb+}+ changes the encoding of alphabetic fonts or Japanese fonts depending on the argument. For example, \verb+\fontencoding{JY3}+ changes the encoding of Japanese fonts to - \texttt{JY3},and \verb+\fontencoding{T1}+ changes the encoding of + \texttt{JY3}, and \verb+\fontencoding{T1}+ changes the encoding of alphabetic fonts to \texttt{T1}. \cs{fontfamily} also changes the current Japanese font family, the current alphabetic font family, \emph{or both}. @@ -1094,14 +1189,16 @@ auto select&\cs{fontencoding}&\cs{fontfamily}&---&---&\cs{usefont}\\ %<*en> \item For defining a Japanese font family, use \cs{DeclareKanjiFamily} instead of - \cs{DeclareFontFamily}. However, in the present implementation, - using \cs{DeclareFontFamily} doesn't cause any problem. + \cs{DeclareFontFamily}. (In previous version of \LuaTeX-ja, + using \cs{DeclareFontFamily} didn't cause any problem. But this no longer applies + the current version.) \item Defining a Japanese font shape can be done by usual \cs{DeclareFontShape}: % %<*ja> \item 和文フォントファミリの定義には \cs{DeclareFontFamily} の - 代わりに \cs{DeclareKanjiFamily} を用いる.しかし,現在の - 実装では \cs{DeclareFontFamily} を用いても問題は生じない. + 代わりに \cs{DeclareKanjiFamily} を用いる.以前の + 実装では \cs{DeclareFontFamily} を用いても問題は生じなかったが,現在の実装では + そうはいかない. \item 和文フォントのシェイプを定義するには,通常の \cs{DeclareFontShape} を使えば良い: % \begin{lstlisting} @@ -1113,6 +1210,7 @@ auto select&\cs{fontencoding}&\cs{fontfamily}&---&---&\cs{usefont}\\ \ref{ssec-altfont}節の \cs{ltjdeclarealtfont} と,その\LaTeX 版の\ \cs{DeclareAlternateKanjiFont}(\ref{ssec-nfsspat}節)を参照せよ. % + \end{itemize} %<*en> @@ -1174,31 +1272,36 @@ this chapter. For the method, please see Subsection~\ref{ssec-math}. 記述しない.この方法については\ref{ssec-math}節を参照のこと. % - -\subsection{fontspec} +%\subsection{\Pkg{luatexja-fontspec} package} +%\subsection{\Pkg{luatexja-fontspec}パッケージ} \label{ssec-fontspec} %<*en> -To coexist with the \Pkg{fontspec} package, it is needed to load -\Pkg{luatexja-fontspec} package in the preamble, as follows: +To use the functionality of the \Pkg{fontspec} package to Japanese fonts, +it is needed to load the \Pkg{luatexja-fontspec} package in the preamble, as follows: \begin{quote} \ttfamily \textbackslash usepackage[]\{luatexja-fontspec\} \end{quote} This \Pkg{luatexja-fontspec} package automatically loads \Pkg{luatexja} and \Pkg{fontspec} -package, if needed. +packages, if needed. % %<*ja> -\Pkg{fontspec}パッケージと同様の機能を和文フォントに対しても用いる場合, -\Pkg{luatexja-fontspec}パッケージを読み込む: +\Pkg{fontspec}パッケージは,\LuaTeX・\XeTeX において +TrueType・OpenTypeフォントを容易に扱うためのパッケージであり,このパッケージを読み込んでお +けばUnicodeによる各種記号の直接入力もできるようになる. +\LuaTeX-jaでは和文と欧文を区別しているため,\Pkg{fontspec}パッケージの機能は欧文フォントに +対してのみ有効なものとなっている. + +\LuaTeX-ja上において,\Pkg{fontspec}パッケージと同様の機能を和文フォントに対しても用いる場 +合は\Pkg{luatexja-fontspec}パッケージを読み込む: \begin{quote} \ttfamily \textbackslash usepackage[]\{luatexja-fontspec\} \end{quote} -このパッケージ -は必要ならば自動で\Pkg{luatexja}パッケージと\Pkg{fontspec}パッケージを読み込む. +このパッケージは自動で\Pkg{luatexja}パッケージと\Pkg{fontspec}パッケージを読み込む. % %<*en> -In \Pkg{luatexja-fontspec} package, the following seven~commands are defined as +In the \Pkg{luatexja-fontspec} package, the following seven~commands are defined as counterparts of original commands in the \Pkg{fontspec} package: % %<*ja> @@ -1246,75 +1349,138 @@ alphabetic fonts \end{tabular} \end{center} % -%<*en> -The package option of \Pkg{luatexja-fontspec} are the followings: + +% The package option of \Pkg{luatexja-fontspec} are the followings: +% \Pkg{luatexja-fontspec} パッケージのオプションは以下の通りである: \begin{cslist} \item[match] +%<*en> If this option is specified, usual family-changing commands such as \cs{rmfamily},~\cs{textrm}, \cs{sffamily},~\dots\ also change Japanese font family. Note that \emph{\cs{setmonojfont} is defined if and only if this \texttt{\textup{match}} option is specified}. - - \item[pass=] -Specify options which will be passed to the \Pkg{fontspec} package. -\end{cslist} -The reason that \cs{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 (or~eight) commands. -This is because of the compatibility with previous versions of \LuaTeX-ja -(see \ref{para-kern}). % + %<*ja> -\Pkg{luatexja-fontspec} パッケージのオプションは以下の通りである: -\begin{cslist} - \item[match] このオプションが指定されると,「\pLaTeXe 新ドキュメントクラス」のように\ \cs{rmfamily}, \verb+\textrm{...}+, \cs{sffamily} 等が 欧文フォントだけでなく和文フォントも変更するようになる. \emph{なお,\cs{setmonojfont} はこの \texttt{match} オプションが 指定された時のみ定義される.}この命令は標準の「タイプライタ体に対応する和文フォント」を指定する. +% \item[pass=] -\Pkg{fontspec} パッケージに渡すオプション を指定する. +% \emph{(Obsoleted)}\ Specify options which will be passed to the \Pkg{fontspec} package. +% \Pkg{fontspec} パッケージに渡すオプション を指定する.本オプションは時代遅れである. + +\item[scale=] +%<*en> +Override the ratio of the font size of Japanese fonts to that of alphabetic fonts. +The default value is calculated automatically (for~example, about~0.924865 when + the \Pkg{ltjsarticle} class is used). +% +%<*ja> +欧文に対する和文の比率は,標準では \Pkg{luatexja-fontspec}読み込み時の和欧文比率から +自動計算される(例えば,\Pkg{ltjsarticle}クラス使用時には和文は欧文の約0.924865倍となる)が, +それを手動で上書きするときに使用する. +% \end{cslist} + +%<*en> +All other options listed above are simply passed to the \Pkg{fontspec} package. +This means that two lines below are equivalent, for example. +% +%<*ja> +上記にないオプションは全て \Pkg{fontspec} パッケージに渡される. +例えば,下の2行は同じ意味になる: +% +\begin{lstlisting} +\usepackage[no-math]{fontspec}\usepackage{luatexja-fontspec} +\usepackage[no-math]{luatexja-fontspec} +\end{lstlisting} + + +%<*en> +The reason that \cs{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 (or~eight) commands. +This is because of the compatibility with previous versions of \LuaTeX-ja +(see \ref{para-kern}). + +Below is an example of \cs{jfontspec}. +% +%<*ja> 標準で \cs{setmonojfont} コマンドが定義されないのは, 和文フォントではほぼ全ての和文文字のグリフが等幅であるのが伝統的であったことによる. また,これらの和文用のコマンドではフォント内のペアカーニング情報は標準では使用されない, 言い換えれば \texttt{kern} featureは標準では無効化となっている. これは以前のバージョンの\LuaTeX-jaとの互換性のためである(\ref{para-kern}節を参照). + +以下に\cs{jfontspec}の使用例を示す. % \begin{LTXexample}[width=0.4\textwidth] -\fontspec[Numbers=OldStyle]{LMSans10-Regular} \jfontspec[CJKShape=NLC]{KozMinPr6N-Regular} -JIS~X~0213:2004→辻 - +JIS~X~0213:2004→辻\par \jfontspec[CJKShape=JIS1990]{KozMinPr6N-Regular} JIS~X~0208:1990→辻 \end{LTXexample} -%\subsection{Presets} -%\subsection{プリセット設定} +%\subsection{Presets of Japanese fonts} +%\subsection{和文フォントのプリセット設定} \label{ssec-preset} %<*en> -To use standard Japanese font settings easily, one can load \Pkg{luatexja-preset} -package with several options. This package provides functions in a part of -\Pkg{japanese-otf} package and a part of \Pkg{PXchfon} package by Takayuki Yato, -and loads \Pkg{luatexja-fontspec}, hence \Pkg{fontspec} internally. +One can load the \Pkg{luatexja-preset} +package to use several ``presets'' of Japanese fonts. +This package provides functions in a part of +\Pkg{japanese-otf} package and a part of \Pkg{PXchfon} package by Takayuki Yato. -If you need to pass some options to \Pkg{fontspec}, load \Pkg{fontspec} manually -before \Pkg{luatexja-preset}: +One can specified other options other than listed in this subsection. +These are simply passed to the \Pkg{luatexja-fontspec}\footnote{if \texttt{nfssonly} option is +\emph{not} specified; in this case these options are simply ignored.}. +For example, the line~5 in below example is eqivalent to lines 1--3. % %<*ja> よく使われている和文フォント設定を一行で指定できるようにしたのが \Pkg{luatexja-preset}パッケージである.このパッケージは, \Pkg{otf}パッケージの一部機能と八登崇之氏による\Pkg{PXchfon}パッケージの一部機能とを -合わせたような格好をしており,内部で\Pkg{luatexja-fontspec},従って -\Pkg{fontspec}を読み込んでいる. +合わせたような格好をしている. + +オプションとして,本節にないものも指定することができるが,それらは +\Pkg{luatexja-fontspec}パッケージに渡される\footnote{\texttt{nfssonly} オプションが +指定されていた場合は,\Pkg{luatexja-fontspec}パッケージは読み込まれないので単純に無視され +る.}.例えば,下の1--3行目は5行目のように一行にまとめることができる. +% +\begin{lstlisting} +\usepackage[no-math]{fontspec} +\usepackage[match]{luatexja-fontspec} +\usepackage[kozuka-pr6n]{luatexja-preset} +%%-------- +\usepackage[no-math,match,kozuka-pr6n]{luatexja-preset} +\end{lstlisting} + +%\paragraph{General options} +%\paragraph{一般的なオプション} +\begin{cslist}[before*=] + +\item[fontspec] +%<*en> +With this option, Japanese fonts are selected using functionality of +the \Pkg{luatexja-fontspec} package. This means that the \Pkg{fontspec} package is + automatically loaded by this package. +\emph{This option is enabled by default.} + +If you need to pass some options to \Pkg{fontspec}, you can load \Pkg{fontspec} manually +before \Pkg{luatexja-preset}: +% +%<*ja> +\Pkg{luatexja-fontspec}パッケージの機能を用いて和文フォントを選択する. +これは,\Pkg{fontspec}パッケージが自動で読み込まれることを意味する. +\emph{このオプションは標準で有効になっている.} もし\Pkg{fontspec}パッケージに何らかのオプションを渡す必要がある \footnote{例えば,数式フォントまで置換されてしまい,\cs{mathit}によってギリシャ文字の @@ -1326,9 +1492,40 @@ before \Pkg{luatexja-preset}: \usepackage[...]{luatexja-preset} \end{lstlisting} -%\paragraph{General options} -%\paragraph{一般的なオプション} -\begin{cslist}[before*=] +\item[nfssonly] +%<*en> +With this option, selecting Japanese fonts won't be performed using the functionality of + the \Pkg{fontspec} package, but only standard NFSS2 (hence without + \cs{addjfontfeatures} etc.). +This option is ignored when \Pkg{luatexja-fontspec} package is loaded. + +When this option is specified, \Pkg{fontspec}~and~\Pkg{luatexja-fontspec} are +\emph{not} loaded by default. Nevertheless, +the package\Pkg{fontspec} can coexist with the option, as the following: +\begin{lstlisting} +\usepackage{fontspec} +\usepackage[hiragino-pron,nfssonly]{luatexja-preset} +\end{lstlisting} +In this case, one can use \cs{setmainfont} etc.\ to select \emph{alphabetic} fonts. +% +%<*ja> +\LaTeX 標準のフォント選択機構(NFSS2)を用いて +\texttt{ltjpm}(明朝),\texttt{ltjpg}(ゴシック),それに後に述べる \texttt{deluxe} オプ + ションが指定された場合には \texttt{ltjpmg}(丸ゴシック)という +3つの和文フォントファミリを定義し,これらを用いる. + +本オプション指定時には\Pkg{fontspec}・\Pkg{luatexja-fontspec}パッケージは +自動では読み込まれない,しかし, +\begin{lstlisting} +\usepackage{fontspec} +\usepackage[hiragino-pron,nfssonly]{luatexja-preset} +\end{lstlisting} +のようにすれば,このオプションを指定すれば +欧文フォントを\Pkg{fontspec}パッケージの機能を使って指定することができる. +一方, +パッケージ読み込み時に既に\Pkg{luatexja-fontspec}パッケージが読み込まれて + いる場合は \texttt{nfssonly} オプションは無視される. +% \item[nodeluxe] %<*en> @@ -1338,7 +1535,7 @@ This means that \verb+\mcfamily\bfseries+, \verb+\gtfamily\bfseries+ and \emph{This option is enabled by default.} % %<*ja> -\LaTeXe 環境下での標準設定のように,明朝体・ゴシック体を各1ウェイトで使用する. +\LaTeXe 環境下の標準設定のように,明朝体・ゴシック体を各1ウェイトで使用する. より具体的に言うと,この設定の下では \ \verb+\mcfamily\bfseries+, \verb+\gtfamily\bfseries+, \verb+\gtfamily\mdseries+はみな同じフォントとなる. @@ -1352,23 +1549,32 @@ Use \textit{mincho} with two weights (medium~and~bold), because \textit{rounded gothic} is called \textit{maru gothic} (丸ゴシック) in Japanese.}. The heavy weight of \textit{gothic} can be used by ``changing the family'' \cs{gtebfamily}, or \verb+\textgteb{...}+. -This is because \Pkg{fontspec} package can handle only medium (\cs{mdseries}) and +This is because the \Pkg{fontspec} package can handle only medium (\cs{mdseries}) and bold (\cs{bfseries}). % %<*ja> 明朝体2ウェイト・ゴシック体3ウェイトと, 丸ゴシック体 (\cs{mgfamily}, \verb+\textmg{...}+) を使用可能とする. -ゴシック体は細字・太字・極太の3ウェイトがあるが, -極太ゴシック体はファミリの切り替え (\cs{gtebfamily}, \verb+\textgteb{...}+) % -で実現している.\Pkg{fontspec}では通常 (\cs{mdseries}) と太字 (\cs{bfseries}) しか扱えないために -このような中途半端な実装になっている. +ゴシック体は中字・太字・極太の3ウェイトがあるが, +極太ゴシック体を使う場合, +\begin{itemize} + \item \cs{gtebfamily}, \verb+\textgteb{...}+ + \item \cs{ebseries} (周囲がゴシック体のとき,\texttt{nfssonly} オプション指定時のみ) +\end{itemize} +のいずれかを用いる.標準で \cs{ebseries} が準備されていないのは,バージョンが古い +\Pkg{fontspec}では中字(\cs{mdseries})と太字(\cs{bfseries})しか扱えなかった名残である. % \item[expert] %<*en> Use horizontal/vertical kana alternates, and define a command \cs{rubyfamily} to use kana characters designed for ruby. % -%横組・縦組専用仮名を用いる.また,\cs{rubyfamily} でルビ用仮名が使用可能となる. +%<*ja> +横組・縦組専用仮名を用いる.また,\cs{rubyfamily} でルビ用仮名が使用可能となる\footnote{% + \cs{rubyfamily}とはいいつつ,実際にはフォントファミリを切り替えるのではない(通常では + font featureの追加,\texttt{nfssonly} 指定時にはシェイプを \texttt{rb} に切り替え). +}. +% \item[bold] %Substitute bold series of \textit{gothic} for bold series of \textit{mincho}. %「明朝の太字」をゴシック体の太字によって代替する. @@ -1404,10 +1610,14 @@ We didn't taken account of when both \texttt{90jis} and \texttt{jis2004} are sp %<*en> Besides \texttt{morisawa-pro}~and~\texttt{morisawa-pr6n} presets, fonts are specified by font name, not by file name. +In following tables, starred fonts (e.g.~KozGo\dots-Regular) are used for medium series of \textit{gothic}, +\emph{if and only if \texttt{deluxe} option is specified}. % %<*ja> \texttt{morisawa-pro}, \texttt{morisawa-pr6n}以外はフォントの指定は (ファイル名でなく)フォント名で行われる. +以下の表において,*\,つきのフォント(e,g,~KozGo\dots-Regular)は,\emph{\texttt{deluxe}オプション指定時に} +ゴシック体中字として用いられるものを示している. % \begin{cslist}[style=standard] \item[kozuka-pro] Kozuka Pro (Adobe-Japan1-4) fonts. @@ -1450,17 +1660,6 @@ There is not rounded gothic family in Kozuka fonts. \end{tabular} \end{center} -%<*en> -In above table, starred fonts (KozGo\dots-Regular) are used for medium series of \textit{gothic}, -\emph{if and only if \texttt{deluxe} option is specified}. -% -%<*ja> -上の表において,*つきのフォント(KozGo\dots-Regular)は,\emph{\texttt{deluxe}オプション非指定時に} -ゴシック体細字として用いられる. -% - -%\medskip - \item[hiragino-pro] Hiragino Pro (Adobe-Japan1-5) fonts. % \\*[-\dimexpr\medskipamount+\baselineskip\relax] \item[hiragino-pron] Hiragino ProN (Adobe-Japan1-5, JIS04-savvy) fonts. @@ -1497,12 +1696,12 @@ Std/StdNフォントであり,その他はAdobe-Japan1-5対応である. \midrule %\textit{rounded gothic} %\gt 丸ゴシック -&&Hiragino~Maru~Gothic~ProN~W4&Hiragino~Maru~Gothic~ProN~W4\\ +&&Hiragino~Maru~Gothic~Pro~W4&Hiragino~Maru~Gothic~ProN~W4\\ \bottomrule \end{tabular} \end{center} -%\newpage +%\medskip \item[morisawa-pro] Morisawa Pro (Adobe-Japan1-4) fonts. % \\*[-\dimexpr\medskipamount+\baselineskip\relax] @@ -1562,18 +1761,46 @@ Std/StdNフォントであり,その他はAdobe-Japan1-5対応である. \end{tabular} \end{center} + \item[moga-mobo] MogaMincho, MogaGothic, and MoboGothic. +%These fonts can be downloaded from\\\hfill \url{http://yozvox.web.fc2.com/}. +%これらのフォントは \url{http://yozvox.web.fc2.com/} からダウンロードできる. + +\begin{center}\small +\begin{tabular}{clll} +\toprule +\bf family&\bf series&\bf default, \texttt{90jis}~option&\bf \texttt{jis2004} option\\ +\midrule + &medium&Moga90Mincho&MogaMincho\\ +%\smash{\raisebox{1.5ex}{\textit{mincho}}}% +%\smash{\raisebox{1.5ex}{\gt 明朝}}% + &bold&Moga90Mincho Bold&MogaMincho Bold\\ +\midrule + &&Moga90Gothic&MogaGothic\\ + &\smash{\raisebox{1.5ex}{medium}} + &Moga90Gothic&MogaGothic\\ +\cmidrule(l){2-4} +%\textit{gothic}% +%\gt ゴシック + &bold&Moga90Gothic Bold&MogaGothic Bold\\ + &heavy&Moga90Gothic Bold&MogaGothic Bold\\ +\midrule +%\textit{rounded gothic} +%\gt 丸ゴシック +&&Mobo90Gothic&MoboGothic\\ +\bottomrule +\end{tabular} +\end{center} + + \end{cslist} %\paragraph{Presets for single weight} %\paragraph{単ウェイト用プリセット一覧} %<*en> Next, we describe settings for using only single weight. -In four settings below, we use same fonts for medium and bold (and heavy) weights. -(Hence \verb+\mcfamily\bfseries+ and \verb+\mcfamily\mdseries+ yields same Japanese fonts, -even if \texttt{deluxe} option is also specified). % %<*ja> -次に,単ウェイト用の設定を述べる.この4設定では「細字」「太字」の区別はない. -また,丸ゴシック体はゴシック体と同じフォントを用いる. +次に,単ウェイト用の設定を述べる.この4設定では +明朝体太字・丸ゴシック体はゴシック体と同じフォントが用いられる. % \par\nobreak\medskip {\centering\small @@ -1632,11 +1859,11 @@ We can use HG~fonts bundled with Microsoft~Office for realizing multiple weights \multicolumn{3}{c}{HG Maru Gothic PRO}\\ % %<*ja> -\gtfamily 明朝体細字 +\gtfamily 明朝体中字 &IPA明朝&IPAex明朝&MS明朝\\\midrule \gtfamily 明朝体太字& \multicolumn{3}{c}{HG明朝E}\\\midrule -\gtfamily ゴシック体細字\\ +\gtfamily ゴシック体中字\\  単ウェイト時 &IPAゴシック&IPAexゴシック&MSゴシック\\  {\tt jis2004}指定時 @@ -1664,7 +1891,6 @@ are internally specified by: \end{description} % %<*ja> -\newpage なお,HG明朝E・HGゴシックE・HG創英角ゴシックUB・HG丸ゴシック体PROの4つについては,内部で \begin{description} \item[標準] フォント名(\texttt{HGMinchoE} など) @@ -1682,16 +1908,15 @@ are internally specified by: Under \pLaTeX, \Pkg{japanese-otf} package (developed by Shuzaburo Saito) is used for typesetting characters which is in Adobe-Japan1-6 CID but not in JIS~X~0208. Since this package is widely used, \LuaTeX-ja -supports some of functions in \Pkg{japanese-otf} package. -If you want to use these functions, load \Pkg{luatexja-otf} package. +supports some of functions in the \Pkg{japanese-otf} package, +as an external package \Pkg{luatexja-otf}. % %<*ja> \subsection{\cs{CID}, \cs{UTF}と\Pkg{otf}パッケージのマクロ} \pLaTeX では,JIS~X~0208にないAdobe-Japan1-6の文字を出力するために, 齋藤修三郎氏による\Pkg{otf}パッケージが用いられていた.このパッケージは 広く用いられているため,\LuaTeX-jaにおいても\Pkg{otf}パッケージの機能の -一部をサポートしている.これらの機能を用いるためには\Pkg{luatexja-otf}パッケージ -を読み込めばよい. +一部を(\Pkg{luatexja-otf}という別のパッケージとして)実装した. % \begin{LTXexample} @@ -1708,7 +1933,7 @@ If you want to use these functions, load \Pkg{luatexja-otf} package. %<*ja> \Pkg{otf}パッケージでは,それぞれ次のようなオプションが存在した: \begin{cslist} -\item[deluxe] 明朝体・ゴシック体各2ウェイトと,丸ゴシック体を扱えるようになる. +\item[deluxe] 明朝体・ゴシック体各3ウェイトと,丸ゴシック体を扱えるようになる. \item[expert] 仮名が横組・縦組専用のものに切り替わり,ルビ用仮名も \ \cs{rubyfamily}\ によって扱えるようになる. \item[bold] ゴシック体を標準で太いウェイトのものに設定する. @@ -1777,11 +2002,11 @@ Ryumin-Light, GothicBBB-Mediumという名前の非埋込フォントを用い % -%\section{Changing Parameters} +%\section{Changing Internal Parameters} %\section{パラメータの変更} %<*en> -There are many parameters in \LuaTeX-ja. And due to the behavior of \LuaTeX, +There are many internal parameters in \LuaTeX-ja. And due to the behavior of \LuaTeX, most of them are not stored as internal register of \TeX, but as an original storage system in \LuaTeX-ja. Hence, to assign or acquire those parameters, you have to use commands \cs{ltjsetparameter} and @@ -1794,8 +2019,8 @@ parameters, you have to use commands \cs{ltjsetparameter} and 用いる. % -%\subsection{Editing the Range of \textbf{JAchar}s} -%\subsection{\textbf{JAchar}の範囲の設定} +%\subsection{Range of \textbf{JAchar}s} +%\subsection{\textbf{JAchar}の範囲} \label{ssec-setrange} %<*en> @@ -1814,6 +2039,7 @@ and the character ``漢'' to the character range~100. \begin{lstlisting} \ltjdefcharrange{100}{"20000-"2FFFF,`漢} \end{lstlisting} + %<*en> A character can belong to only one character range. For example, whole SIP belong to the range~4 in the default setting of \LuaTeX-ja, @@ -1822,18 +2048,18 @@ removed from the range~4. % %<*ja> 各文字はただ一つの文字範囲に所属することができる. -例えば,SIPは全て\LuaTeX-jaのデフォルトでは4番の文字範囲に -属しているが,上記の指定を行えばSIPは100番に属すようになり,4番からは除かれる. +例えば,SIP内の文字は全て\LuaTeX-jaのデフォルトでは4番の文字範囲に +属しているが,上記の指定を行えばSIP内の文字は100番に属すようになり,4番からは除かれる. % %<*en> -The distinction between \textbf{ALchar} and \textbf{JAchar} is done for character ranges. +The distinction between \textbf{ALchar} and \textbf{JAchar} is performed by character ranges. This can be edited by setting the \textsf{jacharrange} parameter. -For example, this is just the default setting of \LuaTeX-ja, and +For example, the code below is just the default setting of \LuaTeX-ja, and it sets \begin{itemize} - \item a character which belongs character ranges 1,~4, and~5 is \textbf{ALchar}, - \item a character which belongs character ranges 2,~3, 6, 7, and~8 is \textbf{JAchar}. + \item a character which belongs character ranges 1,~4, 5, and~8 is \textbf{ALchar}, + \item a character which belongs character ranges 2,~3, 6, and~7 is \textbf{JAchar}. \end{itemize} % %<*ja> @@ -1841,12 +2067,12 @@ it sets これは\textsf{jacharrange}パラメータによって編集できる. 例えば,以下は\LuaTeX-jaの初期設定であり,次の内容を設定している: \begin{itemize} - \item 1番,4番,5番の文字範囲に属する文字は\textbf{ALchar}. - \item 2番,3番,6番,7番,8番の文字範囲に属する文字は\textbf{JAchar}. + \item 1番,4番,5番,8番の文字範囲に属する文字は\textbf{ALchar}. + \item 2番,3番,6番,7番の文字範囲に属する文字は\textbf{JAchar}. \end{itemize} % \begin{lstlisting} -\ltjsetparameter{jacharrange={-1, +2, +3, -4, -5, +6, +7, +8}} +\ltjsetparameter{jacharrange={-1, +2, +3, -4, -5, +6, +7, -8}} \end{lstlisting} %<*en> The argument to \textsf{jacharrange} parameter is a list of non-zero integer. @@ -1861,12 +2087,21 @@ and positive integer $+n$ means that ``\dots\ is a \textbf{JAchar}''. % %<*en> -\paragraph{Default setting} +Note that characters \texttt{U+0000}--\texttt{U+007F} are always treated as an +\textbf{ALchar} (this cannot be customized). +% +%<*ja> +なお,\texttt{U+0000}--\texttt{U+007F} は常に\textbf{ALchar}として扱われる(利用者が変更す +ることは出来ない). +% + +%<*en> +\paragraph{Default character ranges} \LuaTeX-ja predefines eight character ranges for convenience. They are determined from the following data: % %<*ja> -\paragraph{初期設定} +\paragraph{文字範囲の初期値} \LuaTeX-jaでは8つの文字範囲を予め定義しており, これらは以下のデータに基づいて決定している. % @@ -1884,24 +2119,26 @@ Now we describe these eight ranges. The superscript ``J'' or ``A'' after the number shows whether each character in the range is treated as \textbf{JAchar}s or not by default. These settings are similar to the \texttt{prefercjk} settings defined in \texttt{PXbase} bundle. -Any characters above \texttt{U+0080} which does not belong to +Any characters equal to or above \texttt{U+0080} which does not belong to these eight ranges belongs to the character range~217. % %<*ja> 以下ではこれら8つの文字範囲について記述する.添字のアルファベット「J」「A」 -は,その文字範囲内の文字が\textbf{JAchar}か\textbf{ALchar}かを表している.これらの設定は -\texttt{PXbase}バンドルで定義されている\texttt{prefercjk}と類似のものである. +は,その文字範囲内の文字が\textbf{JAchar}か\textbf{ALchar}かを表している.これらの初期設定は +\texttt{PXbase}バンドルで定義されている\texttt{prefercjk}と類似のものであるが, +8ビットフォント使用時のトラブルを防ぐために \texttt{U+0080}--\texttt{U+00FF} の文字は全部 +\textbf{ALchar}としている. なお,\texttt{U+0080} 以降でこれら8つの文字範囲に属さない文字は,217番の文字範囲に属することになっている. % \begin{description} %<*en> -\item[Range~8${}^{\text{J}}$] The intersection of the upper half of ISO~8859-1 +\item[Range~8${}^{\text{A}}$] The intersection of the upper half of ISO~8859-1 (Latin-1 Supplement) and JIS~X~0208 (a basic character set for Japanese). This character range consists of the following characters: % %<*ja> -\item[範囲8${}^{\text{J}}$] ISO~8859-1の上位領域(ラテン1補助)と +\item[範囲8${}^{\text{A}}$] ISO~8859-1の上位領域(ラテン1補助)と JIS~X~0208の共通部分.この文字範囲は 以下の文字で構成される: % @@ -1935,18 +2172,19 @@ This range consists of the following Unicode ranges, \emph{except characters in \item \texttt{U+0180}--\texttt{U+024F}: Latin Extended-B \item \texttt{U+0250}--\texttt{U+02AF}: IPA Extensions \item \texttt{U+02B0}--\texttt{U+02FF}: Spacing Modifier Letters -\item \texttt{U+0300}--\texttt{U+036F}: \\\null\hfill Combining Diacritical Marks -\item \texttt{U+1E00}--\texttt{U+1EFF}: \\\null\hfill Latin Extended Additional -\par\ +%\par\ +\item \texttt{U+0300}--\texttt{U+036F}: \\*\null\hfill Combining Diacritical Marks +\item \texttt{U+1E00}--\texttt{U+1EFF}: \\*\null\hfill Latin Extended Additional +%\par\ \end{itemize} \end{multicols} %<*en> -\item[Range~2${}^{\text{J}}$] Greek and Cyrillic letters. JIS~X~0208 (hence most of Japanese +\item[Range~2${}^{\text{\kern.1emJ}}$] Greek and Cyrillic letters. JIS~X~0208 (hence most of Japanese fonts) has some of these characters. % %<*ja> -\item[範囲2${}^{\text{J}}$] ギリシャ文字とキリル文字.JIS~X~0208(したがってほとんどの - 和文フォント)はこれらの文字を持つ. +\item[範囲2${}^{\text{\kern.1emJ}}$] ギリシャ文字とキリル文字.JIS~X~0208(したがってほとんどの + 和文フォント)には,これらの文字の一部が含まれている. % \begin{multicols}{2} \begin{itemize} @@ -1957,11 +2195,11 @@ This range consists of the following Unicode ranges, \emph{except characters in \end{itemize} \end{multicols} %<*en> -\item[Range~3${}^{\text{J}}$] Punctuations and Miscellaneous symbols. The block list is +\item[Range~3${}^{\text{\kern.1emJ}}$] Punctuations and Miscellaneous symbols. The block list is indicated in Table~\ref{table-rng3}. % %<*ja> -\item[範囲3${}^{\text{J}}$] 句読点と記号類.ブロックのリストは表\ref{table-rng3}% +\item[範囲3${}^{\text{\kern.1emJ}}$] 句読点と記号類.ブロックのリストは表\ref{table-rng3}% に示してある. % \begin{table}[!tb] @@ -2011,8 +2249,8 @@ This range consists of the following Unicode ranges, \emph{except characters in \end{lstlisting} %\item[Range~5${}^{\text{A}}$] Surrogates and Supplementary Private Use Areas. %\item[範囲5${}^{\text{A}}$] 代用符号と補助私用領域. -%\item[Range~6${}^{\text{J}}$] Characters used in Japanese. The block list is indicated in Table~\ref{table-rng6}. -%\item[範囲6${}^{\text{J}}$] 日本語で用いられる文字.ブロックのリストは表\ref{table-rng6}に示す. +%\item[Range~6${}^{\text{\kern.1emJ}}$] Characters used in Japanese. The block list is indicated in Table~\ref{table-rng6}. +%\item[範囲6${}^{\text{\kern.1emJ}}$] 日本語で用いられる文字.ブロックのリストは表\ref{table-rng6}に示す. \begin{table}[!tb] %\caption{Unicode blocks in predefined character range~6.}\medskip %\caption{文字範囲6に指定されているUnicodeブロック.} @@ -2040,11 +2278,11 @@ This range consists of the following Unicode ranges, \emph{except characters in \end{tabular} \end{table} %<*en> -\item[Range~7${}^{\text{J}}$] Characters used in CJK languages, but not included in Adobe-Japan1-6. +\item[Range~7${}^{\text{\kern.1emJ}}$] Characters used in CJK languages, but not included in Adobe-Japan1-6. The block list is indicated in Table~\ref{table-rng7}. % %<*ja> -\item[範囲7${}^{\text{J}}$] CJK言語で用いられる文字のうち,Adobe-Japan1-6に +\item[範囲7${}^{\text{\kern.1emJ}}$] CJK言語で用いられる文字のうち,Adobe-Japan1-6に 含まれていないもの. ブロックのリストは表\ref{table-rng7}に示す. % @@ -2071,6 +2309,59 @@ The block list is indicated in Table~\ref{table-rng7}. \end{table} \end{description} +%<*en> +\paragraph{Notes on \texttt{U+0080}--\texttt{U+00FF}} +You should treat characters in \\texttt{U+0080}--\texttt{U+00FF} as \textbf{ALchar}, +when you use traditional 8-bit fonts, such as the \Pkg{textcomp} package or the +\Pkg{marvosym} package. + +For example, the codepoint \cs{textparagraph} which is provided by the \Pkg{textcomp} +package is 182. This codepoint corresponds \P\ (\text{U+00B6}) in Unicode. +Similarly, \cs{Frowny} which is provided by the \Pkg{marvosym} package has +the same codepoint as \S\ (\text{U+00A7}). +Hence, as previous versions of \LuaTeX-ja, if these characters are treated as +\text{JAchar}s, then \cs{textparagraph} produces ``ltjjachar`¶'' (in a Japanese font), +and \cs{Frowny} produces ``\ltjjachar`§'' (in a Japanese font). + +To avoid such situations, the default setting of \LuaTeX-ja is changed in this release +so that all characters \texttt{U+0080}--\texttt{U+00FF} are treated as \textbf{ALchar}. + +If you want to output a character as \textbf{ALchar} and \textbf{JAchar} regardless the range +setting, you can use \cs{ltjalchar} and \cs{ltjjachar} respectively, as the following example. +\begin{LTXexample}[width=0.3\textwidth] +\gtfamily\large % default, ALchar, JAchar +¶, \ltjalchar`¶, \ltjjachar`¶\\ % default: ALchar +α, \ltjalchar`α, \ltjjachar`α % default: JAchar +\end{LTXexample} +% +%<*ja> +\paragraph{\texttt{U+0080}--\texttt{U+00FF}についての注意} +\LuaTeX-jaで,\Pkg{textcomp}パッケージや\Pkg{marvosym}パッケージ等,Unicodeフォントでなく +伝統的な8ビットフォントを用いる場合には注意が必要である. + +例えば,\Pkg{textcomp}パッケージの提供する \cs{textparagraph} は, +符号位置が182,つまり \texttt{0xB6} であり,Unicodeではこの符号位置では\P\ (\text{U+00B6}) に対応する. +また,\Pkg{marvosym}パッケージの提供する \cs{Frowny} も,符号位置は167,つまりUnicodeにおける +\S\ (\text{U+00A7}) と同じ符号位置にある. +即ち,以前のバージョンのように,「前節の文字範囲8内の文字は\textbf{JAchar}」という設定で +あったとすると,上記の \cs{textparagraph} は和文フォントで「\ltjjachar`¶」を出力し, +また \cs{Frowny} は和文フォントで「\ltjjachar`§」を出力することになる. + +このような事態を避けるために,本バージョンからは \texttt{U+0080}--\texttt{U+00FF} の範囲の +文字は全て\textbf{ALchar}となるように初期設定を変更している. +特に影響を受けるのが,JIS~X~0208の一部分である文字範囲8内の文字であり, +\emph{\Pkg{fontspec}パッケージを読み込んだりして欧文記号としてこれらの文字の出力環境を整え +ないと,ソース中に直接記述しても出力されない}ことになる. + +なお,文字範囲の設定に関わらず1つの文字を\textbf{ALchar}, \textbf{JAchar}で出力したい場合には, +以下の例のようにそれぞれ \cs{ltjalchar},~\cs{ltjjachar} に該当文字の文字コードを渡せばよい. +\begin{LTXexample}[width=0.3\textwidth] +\gtfamily\large % default, ALchar, JAchar +¶, \ltjalchar`¶, \ltjjachar`¶\\ % default: ALchar +α, \ltjalchar`α, \ltjjachar`α % default: JAchar +\end{LTXexample} +% + %\subsection{\Param{kanjiskip} and \Param{xkanjiskip}} %\subsection{\Param{kanjiskip}と\Param{xkanjiskip}} \label{subs-kskip} @@ -2080,11 +2371,11 @@ The block list is indicated in Table~\ref{table-rng7}. \begin{itemize} %<*en> \item Glues/kerns specified in JFM. If \cs{inhibitglue} is issued - around a Japanese character, this glue will not be inserted at the + around a \textbf{JAchar}, this glue will not be inserted at the place. % %<*ja> -\item JFMで指定されたグルー/カーン.もし \cs{inhibitglue} が和文文字の周りで +\item JFMで指定されたグルー/カーン.もし \cs{inhibitglue} が\textbf{JAchar}の周りで 発行されていれば,このグルーは挿入されない. % %<*en> @@ -2154,7 +2445,7 @@ JFMは「望ましい\Param{kanjiskip}の値」や \cs{ltjgetparameter} によって取得することはできないので注意が必要である. % -%\subsection{Insertion Setting of \Param{xkanjiskip}} +%\subsection{Insertion setting of \Param{xkanjiskip}} %\subsection{\Param{xkanjiskip} の挿入設定} %<*en> @@ -2250,7 +2541,7 @@ Japanese fonts&\Param{yjabaselineshift} % %<*ja> 和文フォントと欧文フォントを合わせるためには,時々どちらかのベースラインの移動が -必要になる.\pTeX ではこれは \cs{ybaselineshift} を設定することで +必要になる.\pTeX ではこれは \cs{ybaselineshift}(または\cs{tbaselineshift})を設定することで なされていた(\textbf{ALchar}のベースラインがその分だけ下がる).しかし,日本語が主ではない 文書に対しては,欧文フォントではなく和文フォントのベースラインを移動した方がよい. このため,\LuaTeX-jaでは欧文フォントのベースラインのシフト量 @@ -2277,7 +2568,7 @@ Here the horizontal line in the below example is the baseline of a line. 下の例において引かれている水平線がベースラインである. % \begin{LTXexample} -\vrule width 150pt height 0.4pt depth 0pt \hskip-120pt +\vrule width 150pt height 0.2pt depth 0.2pt \hskip-120pt \ltjsetparameter{yjabaselineshift=0pt, yalbaselineshift=0pt}abcあいう \ltjsetparameter{yjabaselineshift=5pt, yalbaselineshift=2pt}abcあいう \end{LTXexample} @@ -2292,29 +2583,33 @@ The following is an example (beware the value is not well tuned): 異なる文字を中心線に揃えることができる. 以下は一つの例である(値はあまり調整されていないことに注意): % -\begin{LTXexample} -xyz漢字 +\begin{LTXexample}[width=0.4\textwidth] +\vrule width 150pt height4.417pt depth-4.217pt% +\kern-150pt +\large xyz漢字 {\scriptsize - \ltjsetparameter{yjabaselineshift=-1pt, - yalbaselineshift=-1pt} - XYZひらがな -}abcかな + \ltjsetparameter{yjabaselineshift=-1.757pt, + yalbaselineshift=-1.757pt} + 漢字xyzあいう +}あいうabc \end{LTXexample} %<*en> Note that setting positive \Param{yalbaselineshift}~or~\Param{talbaselineshift} -parameters does not increase the depth of one-letter ``syllable'' $p$ of \textbf{Alchar}, if +parameters does not increase the depth of one-letter \emph{syllable} $p$ of \textbf{Alchar}, if its left-protrusion~(\cs{lpcode}) and right-protrusion~(\cs{rpcode}) are both non-zero. This is because \begin{itemize} -\item These two parameters are implemented by setting yoffset field of a +\item These two parameters are implemented by setting \texttt{yoffset} field of a glyph node, and this does not increase the depth of the glyph. \item To cope with the above situation, \LuaTeX-ja automatically supplies -a rule in every ``syllable''. -\item However, we cannot use this ``supplying a rule'' method if \dots +a rule in every syllable. +\item However, we cannot use this ``supplying a rule'' method if a syllable comprises just + one letter whose \cs{lpcode}~and~\cs{rpcode} are both non-zero. \end{itemize} -This problem does not apply for \Param{yjabaselineshift}~nor~\Param{tjabaselineshift}. +This problem does not apply for \Param{yjabaselineshift}~nor~\Param{tjabaselineshift}, +becuse a \emph{JAchar} is encapsulated by a horizontal box if needed. % %<*ja> なお,以下の場合には1文字の\textbf{ALchar}からなる「音節」の深さは増加しないことに注意. @@ -2323,6 +2618,7 @@ This problem does not apply for \Param{yjabaselineshift}~nor~\Param{tjabaselines \item 「音節」を構成する唯一の文字$p$の 左余白への突出量(\cs{lpcode}),右余白への突出量(\cs{rpcode})がどちらも非零である. \end{itemize} +\emph{JAchar}は必要に応じて1文字ずつボックスにカプセル化されるため, \Param{yjabaselineshift},~\Param{tjabaselineshift}パラメータについてはこのような問題は起こらない. % @@ -2352,20 +2648,20 @@ This problem does not apply for \Param{yjabaselineshift}~nor~\Param{tjabaselines \toprule \emph{入力}&\vspace*{\dimexpr-\origbaselineskip-\smallskipamount} \begin{lstlisting} -数式abc: $あa\hbox{い}$, $\int_0^x t\,dt=x^2\!/2$, +数式abc: $あa\hbox{い}$, $\int_0^x t\,dt=x^2/2$, $\Phi\vdash F(x)\ \hbox{for all}\ x\in A$ \end{lstlisting}\\ \noalign{\vskip-\origbaselineskip} \midrule \emph{\pTeX}& {\ltjsetparameter{yalbaselineshift=10pt}% -数式abc: $あa\lower10pt\hbox{い}$, $\int_0^x t\,dt=x^2\!/2$, +数式abc: $あa\lower10pt\hbox{い}$, $\int_0^x t\,dt=x^2/2$, $\Phi\vdash F(x)\ \lower10pt\hbox{for all}\ x\in A$ \par}\\ \midrule \emph{\LuaTeX-ja}& {\ltjsetparameter{yalbaselineshift=10pt}% -数式abc: $あa\hbox{い}$, $\int_0^x t\,dt=x^2\!/2$, +数式abc: $あa\hbox{い}$, $\int_0^x t\,dt=x^2/2$, $\Phi\vdash F(x)\ \hbox{for all}\ x\in A$ \par}\\ \noalign{\vskip-\origbaselineskip} @@ -2374,6 +2670,50 @@ $\Phi\vdash F(x)\ \hbox{for all}\ x\in A$ \end{table} % +%<*en> +\subsection{\emph{kinsoku} parameters and OpenType features} +Among parameters which related to Japanese word-wrapping process (\emph{kinsoku shori}), +\begin{quote} + \Param{jaxspmode},~\Param{alxspmode}, \Param{prebreakpenalty}, + \Param{postbreakpenalty}~and~\Param{kcatcode} +\end{quote} +are stored by each character codes. + +OpenType font features are ignored in these parameters. +For example, a fullwidth katakana ``ア'' on line~10 in the below input is replaced to +its halfwidth variant ``ア'', by \verb+hwid+ feature. +However, the penalty inserted after it is 10 which is the \Param{postbreakpenalty} of +``ア'', not 20. +% +%<*ja> +\subsection{禁則処理関連パラメータとOpenTypeのfont feature} +禁則処理や \Param{kanjiskip}, \Param{xkanjiskip} の挿入に関連したパラメータのうち +\begin{quote} + \Param{jaxspmode},~\Param{alxspmode}, \Param{prebreakpenalty}, + \Param{postbreakpenalty}, \Param{kcatcode} +\end{quote} +は,文字コードごとに設定する量である. + +\Pkg{fontspec}パッケージを使う(\ref{ssec-fontspec}節)場合など, +各種のOpenType featureを適用することもあると思うが,前段落に述べたパラメータ類は, +\emph{OpenType featureの適用前の文字コードによって適用される.} +例えば,以下の例において10行目の「ア」は,\verb+hwid+ featureの適用により半角カタカナの「ア」 +に置き換わる.しかし,その直後に挿入される \Param{postbreakpenalty}は,置換前の「ア」に対する値10である. +% + +\begin{LTXexample}[width=0.2\textwidth] +\ltjsetparameter{postbreakpenalty={`ア, 10}} +\ltjsetparameter{postbreakpenalty={`ア, 20}} + +\newcommand\showpostpena[1]{% + \leavevmode\setbox0=\hbox{#1\hbox{}}% + \unhbox0\setbox0=\lastbox\the\lastpenalty} + +\showpostpena{ア}, +\showpostpena{ア}, +{\addjfontfeatures{CharacterWidth=Half}\showpostpena{ア}} +\end{LTXexample} + \clearpage %\part{Reference} %\part{リファレンス} @@ -2463,7 +2803,7 @@ and \LuaTeX-ja can control these four kinds separately: \begin{itemize} \item \emph{Distinction between \textbf{JAchar} or \textbf{ALchar}} -is controlled by using the character range, see Subsection~\ref{ssec-setrange}. +is controlled by the character range, see Subsection~\ref{ssec-setrange}. \item \emph{Whether the character can be used in a control word} is controlled by setting \cs{catcode} to 11~(enabled) or 12~(disabled), as usual. @@ -2471,7 +2811,7 @@ is controlled by setting \cs{catcode} to 11~(enabled) or 12~(disabled), as usual \emph{Whether \Param{jcharwidowpenalty} can be inserted before the character} is controlled by the lowermost bit of the \Param{kcatcode} parameter. \item -\emph{Ignoring linebreak after a \textbf{JAchar}} is always ignored. +\emph{Linebreak after a \textbf{JAchar}} does not produce a space. \end{itemize} % %<*ja> @@ -2485,25 +2825,26 @@ is controlled by the lowermost bit of the \Param{kcatcode} parameter. \LuaTeX 自身の \cs{catcode} でよい \item[\Param{jcharwidowpenalty}が挿入可か] \Param{kcatcode}パラメータの最下位ビット - \item[直後の改行の無視] -日本語しか想定していないので\textbf{JAchar}については一律有効 + \item[直後の改行] +日本語しか想定していないので,\textbf{JAchar}直後の改行で半角スペースが挿入されることはない. \end{description} % %<*en> -Default setting of \cs{catcode} of \LuaTeX\ can be found -in \texttt{luatex-unicode-letters.tex}, -which is based on \texttt{unicode-letters.tex} (for \XeTeX). +Default setting of \cs{catcode} of Unicode characters are located in +\begin{description} + \item[plain \LuaTeX] \texttt{luatex-unicode-letters.tex}, which is based on \texttt{unicode-letters.tex} +(for \XeTeX). + \item[\LuaLaTeX] now included in \LaTeX\ kernel as~\texttt{unicode-letters.def}. +\end{description} However, the default setting of \cs{catcode} differs between \XeTeX\ and \LuaTeX, by the following reasons: \begin{itemize} - \item \texttt{luatex-unicode-letters.tex} is based on old \texttt{unicode-letters.tex}. - \item The latter half of \texttt{unicode-letters.tex} sets -\cs{catcode} of Kanji and kana characters to 11, -via setting \cs{XeTeXcharclass}. + \item (plain format) \texttt{luatex-unicode-letters.tex} is based on old \texttt{unicode-letters.tex}. + \item The latter half of \texttt{unicode-letters.tex}~and~\texttt{unicode-letters.def} +sets\cs{catcode} of Kanji and kana characters to 11, via setting \cs{XeTeXcharclass}. -However, this latter half is simply omitted in -\texttt{luatex-unicode-letters.tex}, hence +However, this latter half does not exist (plain case), or not executed (\LaTeX~case) in \LuaTeX, hence \cs{catcode} of Kanji and kana characters remains 12 in \LuaTeX. \end{itemize} In other words, Kanji nor kana characters cannot be used in @@ -2518,21 +2859,25 @@ for \LuaTeX, \emph{to match the \cs{catcode} setting with that of \XeTeX.} %<*ja> ネイティブにUnicode全部の文字を扱える\XeTeX や\LuaTeX では, 文字が制御綴内で使用できるかは通常の欧文文字と同じく \cs{catcode} -で指定することとなる.\XeTeX における \cs{catcode} の初期設定は\ -\texttt{unicode-letters.tex} 中に記述されており,\LuaTeX ではそれを +で指定することとなる.plain \XeTeX における \cs{catcode} の初期設定は\ +\texttt{unicode-letters.tex} 中に記述されており,plain \LuaTeX ではそれを 元にした \texttt{luatex-unicode-letters.tex} を用いている. +\LaTeX では \cs{catcode} の設定はカーネルに \texttt{unicode-letters.def} として統合され. +このファイルを\XeLaTeX, \LuaLaTeX の両方が用いている. + だが,\XeTeX における \cs{catcode} の初期設定と \LuaTeX におけるそれは一致していない: \begin{itemize} \item \texttt{luatex-unicode-letters.tex} の元になった\ \texttt{unicode-letters.tex} が古い - \item \texttt{unicode-letters.tex} の後半部では + \item \texttt{unicode-letters.tex} 後半部や \texttt{unicode-letters.def} 後半部では \cs{XeTeXcharclass} の設定を行なっており, それによって漢字や仮名の \cs{catcode} が11に設定されている. しかし,\texttt{luatex-unicode-letters.tex} ではこの「後半部」が -まるごと省略されており,漢字や仮名の \cs{catcode} は12のまま. +まるごと省略されており,また\LuaLaTeX でも \texttt{unicode-letters.def} 後半部は実行されな + い.従って漢字や仮名の \cs{catcode} は12のままになっている. \end{itemize} 言い換えると,\LuaTeX の初期状態では漢字や仮名を制御綴内に 使用することはできない. @@ -2557,7 +2902,7 @@ for \LuaTeX, \emph{to match the \cs{catcode} setting with that of \XeTeX.} %&\bf row&\bf col.&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-ja\\ %&\bf 区&\bf 点&\bf \pTeX&\bf \upTeX&\fontseries{b}\selectfont\LuaTeX-ja\\ \midrule -\D 3000&1&1&N&N&Y\\ +%\D 3000&1&1&N&N&Y\\ \D 30FB&1&6&N&Y&N\\ \D 309B&1&11&N&Y&N\\ \D 309C&1&12&N&Y&N\\ @@ -2565,16 +2910,18 @@ for \LuaTeX, \emph{to match the \cs{catcode} setting with that of \XeTeX.} \D FF3E&1&16&N&N&Y\\ \D FFE3&1&17&N&N&Y\\ \D FF3F&1&18&N&N&Y\\ -\D 30FD&1&19&N&Y&Y\\ -\D 30FE&1&20&N&Y&Y\\ -\D 309D&1&21&N&Y&Y\\ -\D 309E&1&22&N&Y&Y\\ +%\D 30FD&1&19&N&Y&Y\\ +%\D 30FE&1&20&N&Y&Y\\ +%\D 309D&1&21&N&Y&Y\\ +%\D 309E&1&22&N&Y&Y\\ \D 3003&1&23&N&N&Y\\ \D 4EDD&1&24&N&Y&Y\\ \D 3005&1&25&N&N&Y\\ \D 3006&1&26&N&N&Y\\ \D 3007&1&27&N&N&Y\\ \D 30FC&1&28&N&Y&Y\\ +\D FF0F&1&31&N&N&Y\\ +\D FF3C&1&32&N&N&Y\\ \bottomrule \end{tabular}\qquad \begin{tabular}{cccccc} @@ -2582,8 +2929,6 @@ for \LuaTeX, \emph{to match the \cs{catcode} setting with that of \XeTeX.} %&\bf row&\bf col.&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-ja\\ %&\bf 区&\bf 点&\bf \pTeX&\bf \upTeX&\fontseries{b}\selectfont\LuaTeX-ja\\ \midrule -\D FF0F&1&31&N&N&Y\\ -\D FF3C&1&32&N&N&Y\\ \D FF5C&1&35&N&N&Y\\ \D FF0B&1&60&N&N&Y\\ \D FF1D&1&65&N&N&Y\\ @@ -2601,20 +2946,17 @@ for \LuaTeX, \emph{to match the \cs{catcode} setting with that of \XeTeX.} %\multicolumn{3}{c}{$\vphantom{\D 3000}$\hbox{}Cyrillic letters (row 7)}&N&N&Y\\ %\multicolumn{3}{c}{$\vphantom{\D 3000}$\hbox{}ギリシャ文字(6区)}&Y&N&Y\\ %\multicolumn{3}{c}{$\vphantom{\D 3000}$\hbox{}キリル文字(7区)}&N&N&Y\\ -$\vphantom{\D 3000}$\\ \bottomrule \end{tabular}\hss}\par \end{table} %<*en> -\subsection{Non-kanji Characters in a Control Word} +\subsection{Non-kanji characters in a control word} Because the engine differ, so non-kanji JIS~X~0208 characters which can be used in a control word differ in \pTeX, in \upTeX,~and~in \LuaTeX-ja. Table~\ref{table-kcat-diff} shows the difference. Except for four characters ``・'',~``゛'', ``゜'',~``゠'', \LuaTeX-ja admits more characters in a control word than \upTeX. -\emph{Note that the ideographic space~\texttt{U+3000} can be used -in a control word in \LuaTeX-ja.} Difference becomes larger, if we consider non-kanji JIS~X~0213 characters. @@ -2628,12 +2970,10 @@ For the detail, see \url{https://github.com/h-kitagawa/kct}. 異なっているところだけを載せると,表\ref{table-kcat-diff}のようになる. 「・」「゛」「゜」「゠」を除けば,\LuaTeX-jaでは\upTeX より多くの文字が 制御綴に使用可能になっている. -\textbf{特に重要なのは,全角空白(\texttt{U+3000})が -\LuaTeX-jaでは制御綴中に使用可能であることである.} JIS~X~0213の範囲に広げると,差異はさらに大きくなる. 詳細については例えば \url{https://github.com/h-kitagawa/kct} 中の\ -\texttt{kct-uni-out.pdf} などを参照すること. +\texttt{kct-out.pdf} などを参照すること. % @@ -2676,7 +3016,7 @@ implemented vertical writing by rotating \texttt{TLT}-box by 90~degrees. %<*ja> \begin{tabular}{>{\bfseries}lcccc} \toprule -&横組&縦組 &\cs{dtou}「dtou方向」&「utod方向」\\ +&横組&縦組 &「dtou方向」&「utod方向」\\ \midrule 命令&\cs{yoko}&\cs{tate}&\cs{dtou}&\cs{utod}\\ 字送り方向&水平右向き(→)&垂直下向き(↓)&垂直上向き(↑)&垂直下向き(↓)\\ @@ -2811,7 +3151,7 @@ the direction inside the box and that outside the box differ. \put(0,0){\vector(1,0){5}} \put(2.5,-0.2){\makebox(0,0)[t]{$h_{\mathrm{T}}$}} \put(0,0){\vector(-1,0){2}}\put(-1,-0.2){\makebox(0,0)[t]{$d_{\mathrm{T}}$}} \put(0,0){\vector(0,-1){7}}\put(0.2,-3.5){\makebox(0,0)[l]{$w_{\mathrm{T}}$}} - \end{picture}}} + \end{picture}}}% } \def\DTOUeg{% \hbox{\smash{\begin{picture}(0,0)(-5,0) @@ -2822,7 +3162,7 @@ the direction inside the box and that outside the box differ. \put(0,0){\vector(-1,0){5}} \put(-2.5,0.3){\makebox(0,0)[b]{$h_{\mathrm{D}}$}} \put(0,0){\vector(1,0){2}}\put(1,0.3){\makebox(0,0)[b]{$d_{\mathrm{D}}$}} \put(0,0){\vector(0,1){7}}\put(-0.2,3.5){\makebox(0,0)[r]{$w_{\mathrm{D}}$}} - \end{picture}}} + \end{picture}}}% } \def\YOKOeg{% \hbox{\smash{\begin{picture}(0,0) @@ -2833,7 +3173,7 @@ the direction inside the box and that outside the box differ. \put(0,0){\vector(0,1){5}} \put(0.3,2.5){\makebox(0,0)[l]{$h_{\mathrm{Y}}$}} \put(0,0){\vector(0,-1){2}}\put(0.3,-1){\makebox(0,0)[l]{$d_{\mathrm{Y}}$}} \put(0,0){\vector(1,0){7}}\put(3.5,0.2){\makebox(0,0)[b]{$w_{\mathrm{Y}}$}} - \end{picture}}} + \end{picture}}}% } \begin{tabular}{ccc} \toprule @@ -2939,7 +3279,7 @@ the direction inside the box and that outside the box differ. \begin{align*} W_{\mathrm{Y}} &= h_{\mathrm{D}}+d_{\mathrm{D}},\\ H_{\mathrm{Y}} &= w_{\mathrm{D}},\\ - D_{\mathrm{Y}} &= 0\,pt + D_{\mathrm{Y}} &= 0\,\mathrm{pt} \end{align*}% }& \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4) @@ -3018,33 +3358,32 @@ To access box dimensions \emph{with respect to current direction}, one have to use the following commands instead of \cs{wd} wtc. \begin{cslist} - \item[\cs{ltjgetwd}\{\}\textrm{, }\cs{ltjgetht}\{\}\textrm{, }% - \cs{ltjgetdp}\{\}] + \item[\cs{ltjgetwd}\textrm{, }\cs{ltjgetht}\textrm{, }% + \cs{ltjgetdp}] These commands return \emph{an internal dimension} of \cs{box} with respect to the current direction. One can use these in \cs{dimexpr} primitive, as the followings. \begin{lstlisting} -\dimexpr 2\ltjgetwd{42}-3pt\relax, \the\ltjgetwd{1701} +\dimexpr 2\ltjgetwd42-3pt\relax, \the\ltjgetwd1701 \end{lstlisting} -By its implementaion, the argument must be grouped as \verb+\ltjgetwd{42}+, -if the argument consists of more than one token. +The following is an example. \begin{LTXexample}[width=0.3\textwidth] \parindent0pt \setbox32767=\hbox{\yoko よこぐみ} \fboxsep=0mm\fbox{\copy32767} \vbox{\hsize=20mm -\yoko YOKO \the\ltjgetwd{32767}, \\ - \the\ltjgetht{32767}, \\ \the\ltjgetdp{32767}.} +\yoko YOKO \the\ltjgetwd32767, \\ + \the\ltjgetht32767, \\ \the\ltjgetdp32767.} \vbox{\hsize=20mm\raggedleft -\tate TATE \the\ltjgetwd{32767}, \\ - \the\ltjgetht{32767}, \\ \the\ltjgetdp{32767}.} +\tate TATE \the\ltjgetwd32767, \\ + \the\ltjgetht32767, \\ \the\ltjgetdp32767.} \vbox{\hsize=20mm\raggedleft -\dtou DTOU \the\ltjgetwd{32767}, \\ - \the\ltjgetht{32767}, \\ \the\ltjgetdp{32767}.} +\dtou DTOU \the\ltjgetwd32767, \\ + \the\ltjgetht32767, \\ \the\ltjgetdp32767.} \end{LTXexample} \item[\cs{ltjsetwd}=\textrm{, }\cs{ltjsetht}=\textrm{, }% \cs{ltjsetdp}=] -These commands set the dimension of \cs{box}. Unlike \cs{ltjgetwd}, one does not need +These commands set the dimension of \cs{box}. One does not need to group the argument ; four calls of \cs{ltjsetwd} below have the same meaning. \begin{lstlisting} \ltjsetwd42 20pt, \ltjsetwd42=20pt, \ltjsetwd=42 20pt, \ltjsetwd=42=20pt @@ -3076,32 +3415,27 @@ These commands set the dimension of \cs{box}. Unlike \cs{ltjgetwd}, one doe \begin{cslist} - \item[\cs{ltjgetwd}\{\}\textrm{, }\cs{ltjgetht}\{\}\textrm{, }% - \cs{ltjgetdp}\{\}] + \item[\cs{ltjgetwd}\textrm{, }\cs{ltjgetht}\textrm{, }% + \cs{ltjgetdp}] 現在の組方向に応じたボックスの寸法の取得を行う.結果は内部長さであるため, \begin{lstlisting} -\dimexpr 2\ltjgetwd{42}-3pt\relax, \the\ltjgetwd{1701} +\dimexpr 2\ltjgetwd42-3pt\relax, \the\ltjgetwd1701 \end{lstlisting} -のように \cs{wd} の代わりとして扱うことができる.引数が1桁の場合は, -\cs{ltjgetwd3} のように引数をグループで括らなくても良いが,そうでない場合は -(通常の命令への引数のように)\verb+\ltjgetwd{42}+ とグループに括る必要がある% -\footnote{\cs{afterassignment} を利用して実装すればグループに括る必要がなくなるのでは,と思 - うかもしれないが,それでは本文中に書いた例のように \cs{dimexpr} 中で使用でき - なくなってしまう.}. +のように \cs{wd} の代わりとして扱うことができる. 使用例は以下の通りである. \begin{LTXexample}[width=0.3\textwidth] \parindent0pt \setbox32767=\hbox{\yoko よこぐみ} \fboxsep=0mm\fbox{\copy32767} \vbox{\hsize=20mm -\yoko YOKO \the\ltjgetwd{32767}, \\ - \the\ltjgetht{32767}, \\ \the\ltjgetdp{32767}.} +\yoko YOKO \the\ltjgetwd32767, \\ + \the\ltjgetht32767, \\ \the\ltjgetdp32767.} \vbox{\hsize=20mm\raggedleft -\tate TATE \the\ltjgetwd{32767}, \\ - \the\ltjgetht{32767}, \\ \the\ltjgetdp{32767}.} +\tate TATE \the\ltjgetwd32767, \\ + \the\ltjgetht32767, \\ \the\ltjgetdp32767.} \vbox{\hsize=20mm\raggedleft -\dtou DTOU \the\ltjgetwd{32767}, \\ - \the\ltjgetht{32767}, \\ \the\ltjgetdp{32767}.} +\dtou DTOU \the\ltjgetwd32767, \\ + \the\ltjgetht32767, \\ \the\ltjgetdp32767.} \end{LTXexample} \item[\cs{ltjsetwd}=\textrm{, }\cs{ltjsetht}=\textrm{, }% @@ -3122,7 +3456,7 @@ These commands set the dimension of \cs{box}. Unlike \cs{ltjgetwd}, one doe %<*en> \subsection{Getting current direction} The \Param{direction} parameter returns the current direction, and -the \Param{boxdir} parameter (with the argumant ) +the \Param{boxdir} parameter (with the argument ) returns the direction of a box register \cs{box}. The returned value of these parameters are a \emph{string}: \begin{center} @@ -3168,7 +3502,7 @@ Returned value&\texttt{4}&\texttt{3}&\texttt{1}&\texttt{11}&\texttt{0}\\ \end{center} \begin{LTXexample}[width=0.3\textwidth] -\leavevmode\def\DIR{\ltjgetparameter{ direction}} +\leavevmode\def\DIR{\ltjgetparameter{direction}} \hbox{\yoko\DIR}, \hbox{\tate\DIR}, \hbox{\dtou\DIR}, \hbox{\utod\DIR}, \hbox{\tate$\hbox{tate math: \DIR}$} @@ -3183,7 +3517,7 @@ Returned value&\texttt{4}&\texttt{3}&\texttt{1}&\texttt{11}&\texttt{0}\\ \ifnum\ltjgetparameter{boxdir}{200}=4 \end{lstlisting} のように行うことができる. -\cs{iftdir} は少々面倒であるが +\cs{iftdir} は少々面倒であるが,8で割った余りが3であるか否かを判断すれば良いから \begin{lstlisting} \ifnum\numexpr \ltjgetparameter{direction}-(\ltjgetparameter{direction}/8)*8=3 @@ -3502,8 +3836,8 @@ OpenType font featureと見かけ上同じような形式で指定できるも \paragraph{\texttt{extend} and \texttt{slant}} The following setting can be specified as OpenType font features: \begin{cslist}[style=standard] -\item[\cs{extend=}] expand the font horizontally by . -\item[\cs{slant=}] slant the font. +\item[\texttt{extend=}] expand the font horizontally by . +\item[\texttt{slant=}] slant the font. \end{cslist} Note that \LuaTeX-ja doesn't adjust JFMs by these \texttt{extend} and \texttt{slant} settings; you have to write new JFMs on purpose. @@ -3518,6 +3852,36 @@ letter-spacing and the width of italic correction are not correct: \S あいう\/ABC \end{LTXexample} +%<*ja> +\paragraph{\texttt{ltjksp} 指定} +\label{pg:ltjksp} +\LuaTeX-ja標準では, +JFM中における \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\ +\texttt{kanjiskip\_shrink}キー(\pageref{pg:ksp_nat}ページ)の使用によって, +「JFM由来のグルーの他に,\Param{kanjiskip}の自然長/伸び量/縮み量の一部が +同じ場所に挿入される」という状況が起こりうる. +この機能を無効化し,20150922.0版以前と同じような組版を得るためには +他のOpenType機能と同じように\ \texttt{-ltjksp}\ 指定を行えば良い. +\begin{LTXexample}[width=16\zw] +\leavevmode +\ltjsetparameter{kanjiskip=0pt plus 3\zw} +\vrule\hbox to 15\zw{あ「い」う,えお}\vrule + +\jfont\G=file:KozMinPr6N-Regular.otf% + :jfm=ujis;-ltjksp at 9.2487pt +\G\leavevmode% +\vrule\hbox to 15\zw{あ「い」う,えお}\vrule +\end{LTXexample} +なお, +\begin{lstlisting} + \jfont\G=file:KozMinPr6N-Regular.otf:jfm=ujis;-ltjksp;+ltjksp at 9.2487pt +\end{lstlisting} +のように \texttt{+ltjksp} 指定を行った場合は,\texttt{kanjiskip\_natural} など +3キーは再び有効化される.\texttt{-ltjksp}, \texttt{+ltjksp} を複数回指定した場合は, +最後に指定したものが有効となる. +% + + %\subsection{\cs{tfont}} %\subsection{\cs{tfont} 命令} @@ -3579,7 +3943,7 @@ letter-spacing and the width of italic correction are not correct: 但し,以下の例の3行目に示すように,明示的に \texttt{vert}, \texttt{vrt2}(のいずれか)の 有効・無効を指定した場合は別である. \begin{lstlisting} -\tfont\S=file:KozMinPr6N-Regular.otf:jfm=ujisv +\tfont\S=file:KozMinPr6N-Regular.otf:jfm=ujisv % vert and vrt2 are automatically activated \tfont\T=file:KozMinPr6N-Regular.otf:jfm=ujisv;-vert % vert and vrt2 are not activated \end{lstlisting} @@ -3703,7 +4067,7 @@ Please contact the LuaTeX-ja project team. ? \end{lstlisting} -%\subsection{Structure of a JFM File} +%\subsection{Structure of a JFM file} %\subsection{JFMファイルの構造} \label{ssec-jfm-str} %A JFM file is a Lua script which has only one function call: @@ -3847,20 +4211,48 @@ This field is a list of characters which are in this character %(必須) %<*en> +\begin{table}[t] + \centering +\begin{tabular}{llr} +\toprule +Direction of JFM&\textbf{\texttt{'yoko'} (horizontal)}&\multicolumn{1}{l}{\textbf{\texttt{'tate'} (vertical)}}\\ +\midrule +\texttt{width} field&the width of the ``real'' glyph&1.0~(full-width)\\ +\texttt{height} field&the height of the ``real'' glyph&0.5~(half-width)\\ +\texttt{depth} field&the depth of the ``real'' glyph&0.5~(half-width)\\ +\midrule +\texttt{italic} field&\multicolumn{2}{c}{0.0}\\ +\bottomrule +\end{tabular} +\caption{Default values of \texttt{width} field and other fields} +\label{tab-wid} +\end{table} Specify the width of characters in character class~$i$, the height, the depth and the amount of italic correction. All characters in character class~$i$ are regarded that its width, height, and depth are -as values of these fields. - -But there is one exception: \texttt{width} field can be \texttt{'prop'}. -This means that width of a character becomes that of its ``real'' glyph. +as values of these fields. The default values are shown in Table~\ref{tab-wid}. % %<*ja> +\begin{table}[t] + \centering +\begin{tabular}{llr} +\toprule +JFM書字方向&\emph{\texttt{'yoko'}(横組)}&\multicolumn{1}{l}{\emph{\texttt{'tate'}(縦組)}}\\ +\midrule +\texttt{width}&「実際のグリフ」の幅&1.0(全角)\\ +\texttt{height}&「実際のグリフ」の高さ&0.5(二分)\\ +\texttt{depth}&「実際のグリフ」の深さ&0.5(二分)\\ +\midrule +\texttt{italic}&\multicolumn{2}{c}{0.0}\\ +\bottomrule +\end{tabular} +\caption{\texttt{width} フィールド等の標準値} +\label{tab-wid} +\end{table} 文字クラス$i$に属する文字の幅,高さ,深さ,イタリック補正の量を指定する. 文字クラス$i$に属する全ての文字は,その幅,高さ,深さがこのフィールドで指定した -値であるものとして扱われる. - -例外として,\emph{\texttt{width} フィールドには数値以外に \texttt{'prop'} が指定可能である}. -この場合,文字の幅はその「実際の」グリフの幅となる.OpenTypeの \texttt{prop} featureと併用 +値であるものとして扱われる.省略時や,数でない値を指定した時には表\nobreak\ref{tab-wid}に + 示されている値を用いる.例えば,横組用JFMで \texttt{width} フィールドには数値以外の値を指 + 定した場合,文字の幅はその「実際の」グリフの幅となる.OpenTypeの \texttt{prop} featureと併用 すれば,これによってプロポーショナル組を行うことができる. % @@ -4084,62 +4476,122 @@ Furthermore, the glyph is shifted according to values of fields \label{fig-pos-tate} \end{figure} -\item[kern={\{[$j$]=, [$j'$]=\{, []\}, ...\}}] - -\item[glue={\{[$j$]=\{, , , [], []\}, ...\}}]\ +\item[kern={\{[$j$]=, [$j'$]=\{, [ratio=]\}, ...\}}] +\nopagebreak +\item[glue={\{[$j$]=\{, , , [ratio=, ...]\}, ...\}}]\leavevmode %<*ja> -文字クラス$i$の文字と$j$の文字の間に挿入されるkernやglueの量を指定する. - - は \Pkg{luatexja-adjust} による優先順位付き - 行長調整(\ref{ssec-adj}節)が有効なときのみ意味を持つ. -このフィールドは省略可能であり,行調整処理におけるこのglueの優先 - 度を$-2$から$+2$の間の整数で指定する.大きい値ほど「伸びやすく,縮みやすい」 - ことを意味する.省略時の値 - は0であり,範囲外の値が指定されたときの動作は未定義である. +文字クラス$i$の文字と$j$の文字の間に挿入されるカーンやグルーの量を指定する. -も省略可能フィールドであり,$-1$から$+1$の実数値をとる.省略時の値は0である. -\begin{itemize} -\item $-1$はこのグルーが「前の文字」由来であることを示す. -\item $+1$はこのグルーが「後の文字」由来であることを示す. -\item それ以外の値は,「前の文字」由来のグルーと「後の文字」由来の -グルーが混合されていることを示す. -\end{itemize} -なお,このフィールドの値は\Param{differentjfm}の値が +は,グルーの自然長のうちどれだけの割合が「後の文字」由来かを示す量で, +$0$から$+1$の実数値をとる.省略時の値は$0.5$である. +このフィールドの値は\Param{differentjfm}の値が \texttt{pleft},~\texttt{pright},~\texttt{paverage}の値のときのみ実際に用いられる. 例えば,\cite{x4051}では,句点と中点の間には, 句点由来の二分空きと中点由来の四分空きが挿入されるが,この場合には \begin{itemize} \item には$0.5+0.25=0.75$を指定する. -\item には次の値を指定する. -\[ - -1\cdot \frac{0.5}{0.5+0.25} + 1 \cdot \frac{0.25}{0.5+0.25} = -\frac13 -\] +\item には$0.25/(0.5+0.25)=1/3$を指定する. \end{itemize} % %<*en> \ -Specifies the width of kern or glue which will be inserted +Specifies the amount of kern or glue which will be inserted between characters in character class~$i$ and those in character class~$j$. - is an integer in $[-2,2]$ (treated as 0 if omitted), and this is -used only in line adjustment with priority by \Pkg{luatexja-adjust} -(see Subsection~\ref{ssec-adj}). Higher value means the glue is easy to shretch, -and is also easy to shrink. - - is also an optional value between $-1$ and 1. For example, + specifies how much the glue is originated in the ``right'' character. +It is a real number between 0 and 1, and treated as 0.5 if omitted. For example, The width of a glue between an ideographic full stop ``。'' and a fullwidth middle dot ``・'' is three-fourth of fullwidth, namely halfwidth from the ideographic full stop, and quarter-width from the fullwidth middle dot. In this case, -we specify to -\[ - -1\cdot \frac{0.5}{0.5+0.25} + 1 \cdot \frac{0.25}{0.5+0.25} = -\frac13. -\] +we specify to $0.25/(0.5+0.25)=1/3$. % +%<*ja> +グルーの指定においては,上記に加えて各 \texttt{[$j$]} の各サブテーブル内に +次のキーを指定できる, +\begin{cslist}[style=standard] +\item[priority=] + \Pkg{luatexja-adjust} による優先順位付き + 行長調整(\ref{ssec-adj}節)の際に使われる値であり, +行調整処理におけるこのglueの優先 + 度を$-2$から$+2$の間の整数で指定する.大きい値ほど「伸びやすく,縮みやすい」 + ことを意味する.省略時の値 + は0であり,範囲外の値が指定されたときの動作は未定義である. +\item[kanjiskip\_natural=\textrm{, }% + kanjiskip\_stretch=\textrm{, }kanjiskip\_shrink=]\leavevmode + \label{pg:ksp_nat} + +JFMによって本来挿入されるグルーの他に +\Param{kanjiskip}分の空白を自然長(\texttt{kanjiskip\_natural}),伸び量(\texttt{kanjiskip\_stretch}), +縮み量(\texttt{kanjiskip\_shrink})ごとに挿入する\footnote{本来\Param{xkanjiskip}が挿入される場所においては + \Param{xkanjiskip}分の空白を自然長・伸び量・縮み量ごとに.追加できる.}% +ための指定である.いずれも省略された場合のデフォルト値は0(追加しない)である. + +例えば,\LuaTeX-jaの横組標準JFMの \texttt{jfm-ujis.lua} では, +\begin{itemize} + \item 通常の文字「あ」と開き括弧類の間に入るグルーは,自然長・縮み量半角,伸び量0のグルー +となっているが,さらに\Param{kanjiskip}の伸び量に \texttt{kanjiskip\_stretch}(ここでは1)を掛け + た分だけ伸びることが許される. + \item 同様に,閉じ括弧類(全角コンマ「,」も含む)と通常の文字「う」「え」の間にも +自然長・縮み量半角,伸び量0のグルー +となっているが,さらに\Param{kanjiskip}の伸び量に \texttt{kanjiskip\_stretch}(ここでは1)を掛け + た分だけ伸びることが許される. +\end{itemize} +となっている.従って,以下のような組版結果を得る. + +\medskip +\begin{LTXexample}[width=16\zw] +\leavevmode +\ltjsetparameter{kanjiskip=0pt plus 3\zw} +\vrule\hbox to 15\zw{あ「い」う,えお}\vrule +\end{LTXexample} + +\end{cslist} +% +%<*en> +In case of glue, one can specify following additional keys in each \texttt{[$j$]} + subtable: +\begin{cslist}[style=standard] +\item[priority=] +An integer in $[-2,2]$ (treated as 0 if omitted), and this is +used only in line adjustment with priority by \Pkg{luatexja-adjust} +(see Subsection~\ref{ssec-adj}). Higher value means the glue is easy to stretch, +and is also easy to shrink. +\item[kanjiskip\_natural=\textrm{, }% + kanjiskip\_stretch=\textrm{, }kanjiskip\_shrink=]\leavevmode + +These keys specifies the amount of the natural width of \Param{kanjiskip} +(the stretch/shrink part, respectively) which will be inserted +in addition to the original JFM glue. Default values of them are all 0. + +As an example, in \texttt{jfm-ujis.lua}, the standard JFM in horizontal writing, we have +\begin{itemize} + \item Between an ordinal letter ``あ'' and an ideographic opening bracket, we have +a glue whose natural part and shrink part are both half-width, while its stretch part is + zero. However, this glue also can be stretched + as much as the stretch part of \Param{kanjiskip} times the value of + \texttt{kanjiskip\_stretch} key (1 in this case). + \item Between an ideographic closeing brackets (the ideographic comma ``,'' + is included) and an ordinal letter, we have the same glue. + Again, this glue also can be stretched + as much as the stretch part of \Param{kanjiskip} times the value of + \texttt{kanjiskip\_stretch} key (1 in this case). +\end{itemize} +Hence we have the following result: + +\medskip +\begin{LTXexample}[width=16\zw] +\leavevmode +\ltjsetparameter{kanjiskip=0pt plus 3\zw} +\vrule\hbox to 15\zw{あ「い」う,えお}\vrule +\end{LTXexample} + +\end{cslist} +% \item[end\_stretch=, end\_shrink=] %<*ja> @@ -4154,8 +4606,8 @@ we specify to %<*ja> \paragraph{文字クラスの決定} -文字からその文字の属する文字クラスを算出する過程は少々複雑である. -次の内容を一部に含んだ \texttt{jfm-test.lua} を用いて説明する. +文字からその文字の属する文字クラスを算出する過程について, +次の内容を含んだ \texttt{jfm-test.lua} を用いて説明する. % %<*en> \paragraph{Character to character classes} @@ -4199,17 +4651,17 @@ applying font features by \Pkg{luaotfload}}. \item JFMによれば,この「ヒ」のグリフの文字クラスは2000である. \item 以上により文字クラス2000とみなされるため,結果として「ヒ」の幅は半角だと認識される. \end{enumerate} -この例は,\emph{文字クラスの決定はfont featureの適用によるグリフ置換の後に行われる}ことを +この例は,\emph{文字クラスの決定はfont featureの適用によるグリフ置換の結果に基づく}ことを 示している. % %<*en> -However, ... -Consider the following input: +However, if the class determined by the glyph after application of features is zero, +\LuaTeX-ja adopts the class determined by the glyph \emph{before} application of features. +The following input is an example. % %<*ja> -但し,JFMによって決まる置換後のグリフの文字クラスが0である場合は, -状況は異なる. +但し,JFMによって決まる置換後のグリフの文字クラスが0である場合は,置換前の文字クラスを採用する. % \begin{LTXexample}[width=0.3\textwidth] \jfont\a=file:KozMinPr6N-Regular.otf:jfm=test;+vert @@ -4217,11 +4669,11 @@ Consider the following input: \end{LTXexample} %<*en> Here, the character class of the ideographic full stop ``。''~(\texttt{U+3002}) is determined -as following: +as follows: \begin{enumerate} \item As the case of ``ヒ'', the ideographic full stop ``。'' is converted to its vertical - form ``\char"FE12''~(\texttt{U+FE12}).%" -\item The character class of ``\char"FE12'' is \emph{zero}. + form ``\char"FE12''~(\texttt{U+FE12}) by \verb+vert+ feature.%" +\item The character class of ``\char"FE12'', according to the JFM is \emph{zero}. \item However, \LuaTeX-ja remembers that this ``\char"FE12'' is obtained from ``。'' by font features. The character class of ``。'' is \emph{non-zero value}, namely, 2000. \item Hence the ideographic full stop ``。'' in above belongs the character class~2000. @@ -4269,7 +4721,7 @@ The following is the list of imaginary characters: \item['jcharbdd'] %A boundary between \textbf{JAchar} and anything else (such as \textbf{ALchar}, kern, glue,\,\ldots). -%和文文字と「その他のもの」(欧文文字,glue,kern等)との境界. +%\textbf{JAchar}と「その他のもの」(欧文文字,glue,kern等)との境界. \item[$-1$] %The left/right boundary of an inline math formula. @@ -4335,7 +4787,7 @@ JFM側で一部の対処ができることにより,\Pkg{jsclasses}のよう % -%\subsection{Math Font Family} +%\subsection{Math font family} %\subsection{数式フォントファミリ} \label{ssec-math} @@ -4489,7 +4941,7 @@ For $i\in\omega$, \texttt{char\_type[$i$]} is information of characters whose cl \item \texttt{align} is a number which is determined from \texttt{align}~field in the JFM: \[ \begin{cases} - 0&\text{\texttt{'left'} and the default value}\\0.5&\text{\tt 'middle'}\\1&\text{\tt 'right'} + 0&\text{\texttt{'left'} (default)}\\0.5&\text{\tt 'middle'}\\1&\text{\tt 'right'} \end{cases} \] \item For $j\in \omega$, \texttt{[$j$]} stores a kern or a glue which will be inserted @@ -4549,7 +5001,7 @@ glueであれば,\texttt{[$j$]=\{false, , , \}} で \end{itemize} \item[ascent\textrm{, }descent] …… -\item[chars\_cbcache] +\item[chars\_cbcache] …… \end{cslist} % @@ -4627,7 +5079,7 @@ This callback is called when \LuaTeX-ja is trying to encapsule a その\textit{glyph\_node}をカプセル化しようとする際に呼び出される. % \begin{lstlisting}[numbers=left] -function ( shift_info,
jfont_info, char_class) +function (
shift_info,
jfont_info,
char_type) return
new_shift_info end \end{lstlisting} @@ -4666,7 +5118,7 @@ Then, the position of glyphs is shifted up by (和文OpenTypeフォントの標準値) \item 実フォント側の数値:$(\hbox{高さ})=28y$, $(\hbox{深さ})=5y$(和文TrueTypeフォントの標準値) \end{itemize} -となっていたとする.すると,実際の文字の出力位置は,以下の量だけ上にぜらされることとなる: +となっていたとする.すると,実際の文字の出力位置は,以下の量だけ上にずらされることとなる: % \[ \frac{88x}{88x+12x} (28y+5y) - 28y = \frac{26}{25}y= 1.04y. @@ -4689,8 +5141,8 @@ is the position of \verb+hpack_filter+ callback in the source of \LuaTeX, see Section~\ref{sec-para}. % %<*ja> -先に述べたように,\LuaTeX-jaのほとんどの内部パラメータにアクセスするには -\cs{ltjsetparameter} と \cs{ltjgetparameter} を用いる. +先に述べたように,\LuaTeX-jaの内部パラメータにアクセスするには +\cs{ltjsetparameter}(または \cs{ltjglobalsetparameter})と \cs{ltjgetparameter} を用いる. \LuaTeX-jaが\pTeX のような文法(例えば,\verb+\prebreakpenalty`)=10000+)を 採用しない理由の一つは,\LuaTeX のソースにおける \verb+hpack_filter+ コールバックの位置にある.\ref{sec-para}章を参照. @@ -4700,24 +5152,19 @@ of \LuaTeX, see Section~\ref{sec-para}. \cs{ltjsetparameter} and \cs{ltjglobalsetparameter} are commands for assigning parameters. These take one argument which is a \texttt{=} list. -The list of allowed keys are described in the next subsection. -The difference between -\cs{ltjsetparameter} and \cs{ltjglobalsetparameter} is only the +The difference between these two commands is the scope of assignment; \cs{ltjsetparameter} does a local assignment and \cs{ltjglobalsetparameter} does a global one. -They also obey the value of \cs{globaldefs}, -like other assignment. +They also obey the value of \cs{globaldefs}, like other assignments. % %<*ja> \cs{ltjsetparameter} と \cs{ltjglobalsetparameter} はパラメータを -指定するための命令である.これらは\texttt{=}のリストを -引数としてとる.許されるキーの一覧は次の節にある. -\cs{ltjsetparameter} と \cs{ltjglobalsetparameter} の違いはスコープの -違いのみで, -\cs{ltjsetparameter} はローカルな指定,\cs{ltjglobalsetparameter} は -グローバルな指定を行う. -これらは他のパラメータ指定と同様に \cs{globaldefs} の値に従う. +指定するための命令で,\texttt{=}のリストを +引数としてとる.両者の違いはスコープであり, +\cs{ltjsetparameter} はローカルな設定を行うのに対し, +\cs{ltjglobalsetparameter} はグローバルな設定を行う. +また,他のパラメータ指定と同様に \cs{globaldefs} の値にも従う. % %<*en> @@ -4728,7 +5175,7 @@ in \pTeX, and symbols beside each parameter has the following meaning: %<*ja> 以下は \cs{ltjsetparameter} に指定することができるパラメータの一覧である. [\cs{cs}]は\pTeX における対応物を示す. -また,それぞれのパラメータの右上にある記号には次の意味がある: +また,それぞれのパラメータの右上の記号には次の意味がある: % \begin{itemize} %<*en> @@ -4769,7 +5216,7 @@ At the present version, the lowermost bit of indicates (see the description of \Param{jcharwidowpenalty} above). % %<*ja> -文字コードがの文字が持つ付加的な属性値(attribute). +文字コードがの文字が持つ付加的な属性値. 現在のバージョンでは,の最下位ビットが,その文字が句読点と みなされるかどうかを表している(上の\Param{jcharwidowpenalty}の記述を参照). % @@ -4786,7 +5233,15 @@ At the present version, the lowermost bit of indicates \end{lstlisting} と,最大値の10000が標準で指定されている.他にも,小書きのカナなど,絶対禁止とい うわけではないができれば行頭にはきて欲しくない場合に,0と - 10000の間の値を指定するのも有用であろう. + 10000の間の値を指定するのも有用であろう. + +\pTeX では,\cs{prebreakpenalty}, \cs{postbreakpenalty}において, +\begin{itemize} +\item 一つの文字に対して,pre, postどちらか一つしか指定することができない% + \footnote{後から指定した方で上書きされる.} +\item pre, post合わせて256文字分の情報を格納することしかできない +\end{itemize} +という制限があったが,\LuaTeX-jaではこれらの制限は解消されている. % %<*en> Set a penalty which is inserted automatically before the character , @@ -4796,8 +5251,15 @@ with one of closing brackets ``〗'', so \LuaTeX-ja sets \ltjsetparameter{prebreakpenalty={`〙,10000}} \end{lstlisting} by default. -% +\pTeX\ has following restrictions on \cs{prebreakpenalty} and \cs{postbreakpenalty}, +but they don't exist in \LuaTeX-ja: +\begin{itemize} + \item Both \cs{prebreakpenalty} and \cs{postbreakpenalty} cannot be set +for the same character. + \item We can set \cs{prebreakpenalty} and \cs{postbreakpenalty} up to 256~characters. +\end{itemize} +% \item[\DParam{postbreakpenalty}\,=\{,\}$^\ast$] [\cs{postbreakpenalty}]\ @@ -4805,25 +5267,10 @@ by default. %<*ja> 文字コードの\textbf{JAchar}が行末にくることを抑止するために, この文字の後に挿入/追加されるペナルティの量を指定する. - -\pTeX では,\cs{prebreakpenalty}, \cs{postbreakpenalty}において, -\begin{itemize} -\item 一つの文字に対して,pre, postどちらか一つしか指定することができなかっ - た(後から指定した方で上書きされる). -\item pre, post合わせて256文字分の情報を格納することしかできなかった. -\end{itemize} -という制限があったが,\LuaTeX-jaではこれらの制限は解消されている. % %<*en> Set a penalty which is inserted automatically after the character , to prevent a line ends with this character. -\pTeX\ has following restrictions on \cs{prebreakpenalty} and \cs{postbreakpenalty}, -but they don't exist in \LuaTeX-ja: -\begin{itemize} - \item Both \cs{prebreakpenalty} and \cs{postbreakpenalty} cannot be set -for the same character. - \item We can set \cs{prebreakpenalty} and \cs{postbreakpenalty} up to 256~characters. -\end{itemize} % \item[\DParam{jatextfont}\,=\{,\}$^\ast$] @@ -4843,7 +5290,7 @@ for the same character. \item[\DParam{jaxspmode}\,=\{,\}$^\ast$]\ %<*en> -Setting whether inserting \Param{xkanjiskip} is allowed before/after a \textbf{JAchar} whose character code is . +Set whether inserting \Param{xkanjiskip} is allowed before/after a \textbf{JAchar} whose character code is . The followings are allowed for : % %<*ja> @@ -4871,7 +5318,7 @@ This parameter is similar to the \cs{inhibitxspcode} primitive of \pTeX, but not \item[\DParam{alxspmode}\,=\{,\}$^\ast$] [\cs{xspcode}]\ %<*en> -Setting whether inserting \Param{xkanjiskip} is allowed before/after a +Set whether inserting \Param{xkanjiskip} is allowed before/after a \textbf{ALchar} whose character code is . The followings are allowed for : % @@ -4908,6 +5355,13 @@ Note that parameters \Param{jaxspmode} and \Param{alxspmode} share a common tabl しかし,自然長が \cs{maxdimen} の場合は,例外的に和文フォントのJFM側で指定されている 値を採用(こちらはフォントサイズに比例)することになっている. % +%<*en> +The default glue which inserted between two \textbf{JAchar}s. +Changing current Japanese font does not alter this parameter, as \pTeX. + +If the natural width of this parameter is \cs{maxdimen}, \LuaTeX-ja uses +the value which is specified in the JFM for current Japanese font (See Subsection~\ref{ssec-jfm-str}). +% \item[\DParam{xkanjiskip}\,=$^\ast$] [\cs{xkanjiskip}]\ @@ -4916,6 +5370,14 @@ Note that parameters \Param{jaxspmode} and \Param{alxspmode} share a common tabl \Param{kanjiskip}と同じように,通常ではフォントサイズに比例して変わることはないが, 自然長が \cs{maxdimen} の場合が例外である. % +%<*en> +The default glue which inserted between a \textbf{JAchar} and an + \textbf{ALchar}. +Changing current font does not alter this parameter, as \pTeX. + +As \Param{kanjiskip}, if the natural width of this parameter is \cs{maxdimen}, \LuaTeX-ja uses +the value which is specified in the JFM for current Japanese font (See Subsection~\ref{ssec-jfm-str}). +% \item[\DParam{differentjfm}\,=$^\dagger$]\ @@ -4967,6 +5429,7 @@ the behavior of this assignment is undefined. \end{cslist} + \subsection{\cs{ltjgetparameter}} \label{ssec-getpar} %<*en> @@ -4986,8 +5449,8 @@ always takes a parameter name as first argument. %<*en> \emph{The return value of\/ \cs{ltjgetparameter} is -always a string}. This is outputted by \texttt{tex.write()}, so any -character other than space~``\texttt{\char32}''~(\texttt{U+0020}) has the category code +always a string}, which is outputted by \texttt{tex.write()}. +Hence any character other than space~``\texttt{\char32}''~(\texttt{U+0020}) has the category code 12~(other), while the space has 10~(space). % %<*ja> @@ -5019,7 +5482,7 @@ returns 1 or 0, not %<*ja> \verb+\ltjgetparameter{autospacing}+ と \verb+\ltjgetparameter{autoxspacing}+ は, \texttt{true}や\texttt{false}を返すの\emph{ではなく}, -1と0のいずれかを返すことに注意, +1か0のいずれかを返すことに注意, % \item @@ -5028,7 +5491,7 @@ If first argument is one of the following, an additional argument---a character code, for example---is needed. % %<*ja> -第1引数が次のいずれかの場合には,さらに文字コードを第二引数としてとる. +第1引数が次のいずれかの場合には,さらに文字コードを第2引数としてとる. % \begin{quote} \sffamily @@ -5137,14 +5600,138 @@ by the following: \verb+}}+\\\null\hfill\verb+% 0 if JAchar, 1 if ALchar+ \end{quote} +%<*en> +\item Because the returned value is string, the following conditionals do not work +if \Param{kanjiskip} (or~\Param{xkanjiskip}) has the stretch part or the shrink part. +\begin{lstlisting} +\ifdim\ltjgetparameter{kanjiskip}>\z@ ... \fi +\ifdim\ltjgetparameter{xkanjiskip}>\z@ ... \fi +\end{lstlisting} +The correct way is using a temporary register. +\begin{lstlisting} +\@tempskipa=\ltjgetparameter{kanjiskip} \ifdim\@tempskipa>\z@ ... \fi +\@tempskipa=\ltjgetparameter{xkanjiskip}\ifdim\@tempskipa>\z@ ... \fi +\end{lstlisting} +% +%<*ja> +\item 返り値が文字列であることから,\Param{kanjiskip}や\Param{xkanjiskip}を直接 +\ \cs{ifdim} を使って比較することは望ましくない.伸び量や縮み量を持っている時には, +次はエラーを発生させる: +\begin{lstlisting} +\ifdim\ltjgetparameter{kanjiskip}>\z@ ... \fi +\ifdim\ltjgetparameter{xkanjiskip}>\z@ ... \fi +\end{lstlisting} +レジスタに一旦代入するのが良い: +\begin{lstlisting} +\@tempskipa=\ltjgetparameter{kanjiskip} \ifdim\@tempskipa>\z@ ... \fi +\@tempskipa=\ltjgetparameter{xkanjiskip}\ifdim\@tempskipa>\z@ ... \fi +\end{lstlisting} +% + +\end{itemize} + +%<*ja> +\subsection{\cs{ltjsetparameter} の代替} +原則として各種内部パラメータの設定には \cs{ltjsetparameter} もしくは +\ \cs{ltjglobalsetparameter}\ を用いることになるが, +\cs{ltjsetparameter} の実行には時間がかかるという難点があり, +\LuaTeX-ja の内部ではより高速に実行できる別の形式を用いている. +\emph{本節は一般利用者むけの内容ではない.} + +\paragraph{\Param{kanjiskip}, \Param{xkanjiskip} の設定} +\pLaTeXe 新ドキュメントクラスでは, +\begin{lstlisting} +\def\@setfontsize#1#2#3{% + ... + \kanjiskip=0zw plus .1zw minus .01zw + \ifdim\xkanjiskip>\z@ + \if@slide \xkanjiskip=0.1em \else + \xkanjiskip=0.25em plus 0.15em minus 0.06em + \fi + \fi} +\end{lstlisting} +と,フォントサイズを変更するごとに \cs{kanjiskip}, \cs{xkanjiskip} を変更している. +この \cs{@setfontsize} は文書の中で多数回実行されるので. +\LuaTeX-ja 用に素直に書き換えた +\begin{lstlisting} + \ltjsetparameter{kanjiskip=0\zw plus .1\zw minus .01\zw} + \@tempskipa=\ltjgetparameter{xkanjiskip} + \ifdim\@tempskipa>\z@ + \if@slide + \ltjsetparameter{xkanjiskip=0.1em} + \else + \ltjsetparameter{xkanjiskip=0.25em plus 0.15em minus 0.06em} + \fi + \fi +\end{lstlisting} +としたのではタイプセットが遅くなってしまう. +そこで,\cs{ltjsetparameter} の中で +\begin{itemize} +\item \cs{globaldefs} の値を読み取る \cs{ltj@setpar@global} +\item \Param{kanjiskip} の設定を行う \cs{ltjsetkanjiskip} +\item \Param{xkanjiskip} の設定を行う \cs{ltjsetxkanjiskip} \end{itemize} +を独立させ,\Pkg{ltjsclasses}では, +\begin{lstlisting} + \ltj@setpar@global + \ltjsetkanjiskip{\z@ plus .1\zw minus .01\zw} + \@tempskipa=\ltjgetparameter{xkanjiskip} + \ifdim\@tempskipa>\z@ + \if@slide + \ltjsetxkanjiskip.1em + \else + \ltjsetxkanjiskip.25em plus .15em minus .06em + \fi + \fi +\end{lstlisting} +としている. +\cs{ltj@setpar@global}を直前に実行せず,単独で +\cs{ltjsetkanjiskip}, \cs{ltjsetxkanjiskip}を実行することは想定されていないので注意. + + + +\paragraph{ベースライン補正量の設定} +\pLaTeX の\Pkg{ascmac}パッケージでは,縦組の欧文ベースライン補正量の一時待避・復帰処理に +\ \cs{@saveybaselineshift}\ という寸法レジスタを用い +\begin{lstlisting} +\@savetbaselineshift\tbaselineshift\tbaselineshift\z@ +... +\tbaselineshift\@savetbaselineshift +\end{lstlisting} +という処理を行っている. +これを\LuaTeX-ja 用に \cs{ltjsetparameter} を使って書き直すと, +\begin{lstlisting} +\@savetbaselineshift\ltjgetparameter{talbaselineshift} +\ltjsetparameter{talbaselineshift=\z@} +... +\ltjsetparameter{talbaselineshift=\@savetbaselineshift} +\end{lstlisting} +となる. +さて,縦組の欧文ベースライン補正量\Param{talbaselineshift}は, +実際には \cs{ltj@tablshift} という属性レジスタに格納されている +(\ref{sec-para}\nobreak 節参照).属性レジスタは長さではなく整数値を格納する\footnote{% + 従って,\texttt{\textbackslash @savetbaselineshift=\textbackslash ltj@tablshift}\ + のように記述することはできない.属性レジスタを \cs{tbaselineshift} という名称にしなかっ + たのはそのためである. +}ものであり,\cs{ltj@tablshift} は補正量を sp 単位で保持することから, +上記のコードと同じ内容をより速い以下のコードで実現することができる. +\begin{lstlisting} +\@savetbaselineshift\ltj@tablshift sp% +\ltj@tablshift\z@ +... +\ltj@tablshift\@savetbaselineshift +\end{lstlisting} +この手法は \Pkg{ascmac} パッケージの\LuaTeX-ja対応パッチ \Pkg{lltjp-tascmac.sty} で +実際に用いられている.\Pkg{lltjp-tascmac.sty} は自動的に読み込まれるので, +ユーザは何も気にせず普通に \Pkg{ascmac} パッケージを \cs{usepackage} で読みこめば良い. +% %\section{Other Commands for plain \TeX\ and \LaTeXe} %\section{plainでも\LaTeX でも利用可能なその他の命令} -%\subsection{Commands for Compatibility with \pTeX} +%\subsection{Commands for compatibility with \pTeX} %\subsection{\pTeX 互換用命令} %<*en> @@ -5260,7 +5847,7 @@ With the help of this example, we remark the specification of \cs{inhibitglue}: Using \cs{ltjdeclarealtfont}, one can ``compose'' more than one Japanese fonts. This \cs{ltjdeclarealtfont} uses in the following form: \begin{quote} -\ttfamily \textbackslash ltjdeclarealtfont{} +\ttfamily \textbackslash ltjdeclarealtfont\{\} \end{quote} where ~and~ are defined by \cs{jfont}. Its meaning is @@ -5268,8 +5855,7 @@ Its meaning is If the current Japanese font is , characters which belong to is typeset by another Japanese font , instead of . \end{quote} - - is a comma-separated list of character codes, but also accepts negative integers: +Here is a comma-separated list of character codes, but also accepts negative integers: $-n$~($n≥1$) means that all characters of character classes~$n$, with respect to JFM used by . Note that characters which do not exist in are ignored. @@ -5293,7 +5879,7 @@ are typeset by \cs{piyo}. \cs{ltjdeclarealtfont} は以下の書式で使用する: \begin{quote} -\ttfamily \textbackslash ltjdeclarealtfont{} +\ttfamily \textbackslash ltjdeclarealtfont\{\} \end{quote} これは「現在の和文フォント」がであるとき, に属する文字はを用いて組版される,という意味である. @@ -5321,6 +5907,28 @@ are typeset by \cs{piyo}. マクロの都合による. % +%<*ja> +\subsection{\cs{ltjalchar} と \cs{ltjjachar}} +文字コードが$\text{}~(\geq 128=\mathtt{0x80})$の文字を +\ \cs{char} プリミティブを使い \cs{char} として出力させると, +その文字の属する文字範囲(\ref{ssec-setrange}節参照)によって +\textbf{ALchar}か\textbf{JAchar}か,つまり欧文フォントで出力されるか和文フォントで出力され +るかが決まる. + +文字範囲の設定を無視し,文字コードが$\text{}~(\geq 128=\mathtt{0x80})$の文字を強制的に +\textbf{ALchar}, \textbf{JAchar}で出力する命令がそれぞれ +\ \cs{ltjalchar},~\cs{ltjjachar} である.使用方法は \cs{char} と同じく +\ \cs{ltjalchar}, \cs{ltjjachar}とすればよい. +が127以下の場合は,\cs{ltjjachar} であっても\textbf{ALchar}として出力されること +に注意. + +以下は\ref{ssec-setrange}節に載せた例に,\cs{char} の動作を追加したものである. +\begin{LTXexample}[width=0.25\textwidth] +\gtfamily\large % default, ALchar, JAchar +¶, \char`¶, \ltjalchar`¶, \ltjjachar`¶\\ % default: ALchar +α, \char`α, \ltjalchar`α, \ltjjachar`α % default: JAchar +\end{LTXexample} +% %\section{Commands for \LaTeXe} @@ -5388,18 +5996,18 @@ but on the other hand \cs{zw}~and~\cs{zh} are specified by JFM. \item[\cs{DeclareTateKanjiEncoding}\{\}\{\}\{\}] %<*en> -In NFSS2 under \LuaTeX-ja, distinction between alphabetic font families - and Japanese font families are only made by their - encodings. For example, encodings OT1 and T1 are for - alphabetic font families, and a Japanese font family cannot +In NFSS2 under \LuaTeX-ja, distinction between alphabetic fonts + and Japanese fonts are only made by their + encodings. For example, encodings OT1 and T1 are encodings for + alphabetic fonts, and Japanese fonts cannot have these encodings. These command define a new encoding scheme for Japanese font families. % %<*ja> -\LuaTeX-jaのNFSS2においては,欧文フォントファミリと和文フォントファミリは +\LuaTeX-jaのNFSS2においては,欧文フォントと和文フォントは そのエンコーディングによってのみ区別される. -例えば,OT1とT1のエンコーディングは欧文フォントファミリに対するものであり, -和文フォントファミリはこれらのエンコーディングを持つことはできない. +例えば,OT1とT1のエンコーディングは欧文フォントのエンコーディングであり, +和文フォントはこれらのエンコーディングを持つことはできない. これらコマンドは横組用・縦組用和文フォントのための新しいエンコーディングを それぞれ定義する. % @@ -5416,7 +6024,7 @@ In NFSS2 under \LuaTeX-ja, distinction between alphabetic font families The above 3~commands are just the counterparts for \cs{DeclareFontEncodingDefaults} and~others. % %<*ja> -上記3つのコマンドはちょうど \cs{DeclareFontEncodingDefaults} などに対応するものである. +上記3つのコマンドはちょうどNFSS2 の \cs{DeclareFontEncodingDefaults} などに対応するものである. % \item[\cs{reDeclareMathAlphabet}\{\}\{\}\{\}] @@ -5448,12 +6056,12 @@ The above 3~commands are just the counterparts for \cs{DeclareFontEncodingDefaul \item[\cs{DeclareRelationFont}\{\}\{\}\{\}\{\}\\* \null\hfill\{\}\{\}\{\}\{\}] %<*en> -This command sets the ``accompanied'' alphabetic font family (given by the latter 4~arguments) -with respect to a Japanese font family given by the former 4~arguments. +This command sets the ``accompanied'' alphabetic font (given by the latter 4~arguments) +with respect to a Japanese font given by the former 4~arguments. % %<*ja> -いわゆる「従属欧文」を設定するための命令である.前半の4引数で表される和文フォントファミリに対して, -そのフォントに対応する「従属欧文」のフォントファミリを後半の4引数により与える. +いわゆる「従属欧文」を設定するための命令である.前半の4引数で表される和文フォントに対して, +そのフォントに対応する「従属欧文」のフォントを後半の4引数により与える. % \item[\cs{SetRelationFont}] %<*en> @@ -5476,7 +6084,7 @@ Like \cs{fontfamily}, \cs{selectfont} is required to take an effect. %<*ja> 現在の欧文フォントのエンコーディング/ファミリ/…… を, \cs{DeclareRelationFont} か \cs{SetRelationFont} で指定された -現在の和文フォントファミリに対応する「従属欧文」フォントファミリに変更する. +現在の和文フォントに対応する「従属欧文」フォントに変更する. \cs{fontfamily} のように,有効にするためには \cs{selectfont} が必要である. % @@ -5490,7 +6098,8 @@ to match the vertical center of ``M'' and that of ``あ'' in vertical typesetti + d_{\text{あ}} - d_{\text{M}}, \] where $h_{a}$~and~$d_{a}$ denote the height of ``$a$'' and the depth, respectively. -In \LuaTeX-ja, this \cs{adjustbaseline} does same task. +In \LuaTeX-ja, this \cs{adjustbaseline} does same task, namely setting the + \Param{talbaselineshift} parameter. % %<*ja> \pLaTeXe では,\cs{adjustbaseline} は縦組時に「M」と「あ」の中心線を一致させるために, @@ -5501,72 +6110,22 @@ In \LuaTeX-ja, this \cs{adjustbaseline} does same task. + d_{\text{あ}} - d_{\text{M}}, \] ここで,$h_{a}$,~$d_{a}$はそれぞれ「$a$」の高さ・深さを表す. -\LuaTeX-jaにおいても\cs{adjustbaseline} は同様の処理を行っている. +\LuaTeX-jaにおいても\cs{adjustbaseline} は同様に\Param{talbaselineshift}パラメータの調整処 + 理を行っている. + +同時に,これも\pLaTeXe の \cs{adjustbaseline} で行われていたが, +「漢」の寸法を元に,(本節の最初に述べた,小文字で始まる)\cs{cht}, \cs{cwd} といった長さ変数を設定する. % \item[\cs{fontfamily}\{\}] %<*en> As in \LaTeXe, this command changes current font family (alphabetic, Japanese,~\emph{or both}) -to . Which family will be changed is determined as follows: +to . See Subsection~\ref{ssec-fontfamilycmd} for detail. % %<*ja> 元々の\LaTeXe におけるものと同様に,このコマンドは現在のフォントファミリ(欧文, -和文,\emph{もしくは両方})をに変更する. -どのファミリが変更されるかは以下のようにして決定される: -% -\begin{itemize} -%<*en> -\item Let current encoding scheme for Japanese fonts be - . Current Japanese font family will be changed to - , if one of the following two conditions is met: -% -%<*ja> -\item 現在の和文フォントに対するエンコーディングがであるとしよう. - 現在の和文フォントファミリは,以下の2つの条件のうちの1つが満たされているときに - に変更される: -% -\begin{itemize} -%<*en> -\item The family under the encoding has been already defined by - \cs{DeclareKanijFamily}. -% -%<*ja> -\item エンコーディングにおけるファミリが -既に \cs{DeclareKanjiFamily} によって定義されている. -% -%<*en> -\item A font definition named \texttt{.fd} (the file name is - all lowercase) exists. -% -%<*ja> -\item フォント定義ファイル\texttt{.fd}(ファイル名は全て小文字)が存在する. -% -\end{itemize} -%<*en> -\item Let current encoding scheme for alphabetic fonts be - . For alphabetic font family, the criterion as above is used. -% -%<*ja> -\item 現在の欧文フォントに対するエンコーディングをとする. - 欧文フォントファミリに対しても,上記の基準が用いられる. -% -%<*en> -\item There is a case which none of the above applies, that is, the font - family named doesn't seem to be defined neither under the - encoding , nor under . -In this case, the default family for font substitution is used for - alphabetic and Japanese fonts. Note that current encoding will not - be set to , unlike the original implementation in \LaTeX. -% -%<*ja> -\item 上記のいずれもが適用されない,つまりがとの - どちらでも定義されないような場合がある. - この場合,代替フォントに用いられるデフォルトのフォントファミリが欧文フォントと - 和文フォントに用いられる.\LaTeX のオリジナルの実装とは異なり, - 現在のエンコーディングはには設定されないことに注意する. +和文,\emph{もしくは両方})をに変更する.詳細は\ref{ssec-fontfamilycmd}節を参照すること. % -\end{itemize}% -%\vspace{-\medskipamount} \begin{figure}[!tb] @@ -5643,21 +6202,187 @@ Avant Garde (OT1/pag/m/n) に変わっていることがわかる. \userelfont\selectfont あいうabc \end{LTXexample} +%\subsection{Detail of \cs{fontfamily} command} +%\subsection{\cs{fontfamily}コマンドの詳細} +\label{ssec-fontfamilycmd} +%<*en> +In this subsection, we describe when \cs{fontfamily} changes current +Japanese/alphabetic font family. Basically, current Japanese fotn family is changed to + if it is recognized as a Japanese font family, and similar with alphabetic font +family. There is a case that current Japanese/alphabetic font family are both changed to +, and another case that isn't recognized as a Japanese/alphabetic font +family either. + +\paragraph{Recognition as Japanese font family} +First, Whether Japanese font family will be changed is determined in following order. +This order is very similar to \cs{fontfamily} in \pLaTeXe, but we re-implemented in Lua. +We use an auxiliary list~$N_{\mathrm{J}}$. +% +%<*ja> +本節では,\cs{fontfamily} がいつ和文/欧文フォントファミリを変更するかについて解説 +する.基本的には,が和文フォントファミリだと認識されれば和文側が,欧文フォントファ +ミリだと認識されれば欧文側が変更される.どちらとも認識されれば和文・欧文の両方が変わるこ +とになるし,当然どちらとも認識されないこともある. + +\paragraph{和文フォントファミリとしての認識} +まず,が和文フォントファミリとして認識されるかは以下の順序で決定される. +これは\pLaTeXe の \cs{fontfamily} にとても似ているが,ここではLuaによって実装している. +補助的に「和文フォントファミリではないと認識された」ファミリを格納したリスト$N_{\mathrm{J}}$を用いる. +% +\begin{enumerate} +%<*en> +\item If the family~ has been defined already by \cs{DeclareKanjiFamily}, + is recognized as a Japanese font family. + Note that need not be defined under \emph{current} Japanese font encoding. +% +%<*ja> +\item ファミリが既に \cs{DeclareKanjiFamily} によって定義されている場合, + は和文フォントファミリであると認識される. + ここで,は現在の和文フォントエンコーディングで定義されていなくてもよい. +% +%<*en> +\item If the family~ has been listed in a list~$N_{\mathrm{J}}$, this means + that is not a Japanese font family. +% +%<*ja> +\item ファミリがリスト$N_{\mathrm{J}}$に既に含まれていれば,それは + が和文フォントファミリではないことを意味する. +% +%<*en> +\item If the \Pkg{luatexja-fontspec} package is loaded, we stop here, and is not + recognized as a Japanese font family. + + If the \Pkg{luatexja-fontspec} package is \emph{not} loaded, +now \LuaTeX-ja looks whether there exists a Japanese font encoding~ such that + a font definition named \texttt{.fd} (the file name is + all lowercase) exists. If so, is recognized as a Japanese font family (the font definition file won't be loaded here). + If not, is not a Japanese font family, and + is appended to the list~$N_{\mathrm{J}}$. +% +%<*ja> +\item もし\Pkg{luatexja-fontspec}パッケージが読み込まれていれば,ここで終了であり, +は和文フォントファミリとして認識されないことになる. + +もし\Pkg{luatexja-fontspec}パッケージが読み込まれていなければ,和文エンコーディングで +フォント定義ファイル\texttt{.fd}(ファイル名は全て小文字)が存在するようなも + のがあるかどうかを調べる. +存在すれば,は和文フォントファミリと認識される(フォント定義ファイルは読み込まれな + い). +存在しなければ,は和文フォントファミリでないと認識され,リスト$N_{\mathrm{J}}$にを追加することでそれを記憶する. + +% +\end{enumerate} + +%<*en> +\paragraph{Recognition as alphabetic font family} +Next, whether alphabetic font family will be changed is determined in following order. +We use auxiliary lists $F_{\mathrm{A}}$~and~$N_{\mathrm{A}}$, +% +%<*ja> +\paragraph{欧文フォントファミリとしての認識} +同様に,が和文フォントファミリとして認識されるかは以下の順序で決定される. +補助的に「欧文フォントファミリと既に認識された」ファミリのリスト$F_{\textrm{A}}$と, +「欧文フォントファミリではないと認識された」ファミリを格納したリスト$N_{\mathrm{A}}$を用いる. +% + +\begin{enumerate} +%<*en> +\item If the family~ has been listed in a list~$F_{\mathrm{A}}$, + is recognized as an alphabetic font family. +% +%<*ja> +\item ファミリがリスト$F_{\mathrm{A}}$に既に含まれていれば, + は欧文フォントファミリと認識される. +% +%<*en> +\item If the family~ has been listed in a list~$N_{\mathrm{A}}$, this means + that is not an alphabetic font family. +% +%<*ja> +\item ファミリがリスト$N_{\mathrm{A}}$に既に含まれていれば,それは + が欧文フォントファミリではないことを意味する. +% +%<*en> +\item If there exists an alphabetic font encoding such that the family~ has been + defined under it, is recognized as an alphabetic font family, and + to memorize this, is appended to the list~$F_{\mathrm{A}}$. +% +%<*ja> +\item ある欧文フォントエンコーディング下でファミリが定義されていれば, + は欧文フォントファミリと認識され,リスト$F_{\mathrm{A}}$にを追加することでこのことを記憶する. +% +%<*en> +\item Now \LuaTeX-ja looks whether there exists an alphabetic font encoding~ such that + a font definition named \texttt{.fd} (the file name is + all lowercase) exists. If so, current alphabetic font family will be changed to + ~(the font definition file won't be loaded here). + If not, current alphabetic font family won't be changed, and + is appended to the list~$N_{\mathrm{A}}$. +% +%<*ja> +\item 最終段階では,欧文エンコーディングで +フォント定義ファイル\texttt{.fd}(ファイル名は全て小文字)が存在するようなも + のがあるかどうかを調べる. +存在すれば,は欧文フォントファミリと認識される(フォント定義ファイルは読み込まれない). +存在しなければ,は欧文フォントファミリと認識されないので,リスト$N_{\mathrm{A}}$に + を追加してそのことを記憶する. +% +\end{enumerate} + +%<*en> +Also, each call of \cs{DeclareFontFamily} \emph{after} loading of \LuaTeX-ja makes +the second argument (family) is appended to the list~$F_{\mathrm{A}}$. +% +%<*ja> +また,\cs{DeclareFontFamily}が\LuaTeX-jaの読み込み後に実行された場合は, +第2引数(ファミリ名)が自動的に$F_{\mathrm{A}}$に追加される. +% + +%<*en> +The above order is very similar to \cs{fontfamily} in \pLaTeXe, but more complicated (clause~3.). +This is because \pLaTeXe\ is a \emph{format} however \LuaTeX-ja is not, +hence \LuaTeX-ja does not know calls of \cs{DeclareFontFamily} \emph{before} itself is +loaded. +% +%<*ja> +以上の方針は\pLaTeXe における \cs{fontfamily} にやはり類似しているが,3.が加わり若干複雑になっている. +それは\pLaTeXe がフォーマットであるのに対し\LuaTeX-jaはそうでないため, +\LuaTeX-jaは自身が読み込まれる前にどういう\cs{DeclareFontFamily}の呼び出しがあったか +把握できないからである. +% + +%\paragraph{Remarks} +%\paragraph{注意} +%<*en> +Of course, there is a case that is not recognized as a Japanese font family, nor +an alphabetic font family. +In this case, \LuaTeX-ja treats ``the argument is wrong'', so +set both current alphabetic and Japanese font family to , +to use the default family for font substitution. +% +%<*ja> +さて,引数によっては,「和文フォントファミリとも欧文フォントファミリも認識されなかった」 +という事態もあり得る. + この場合,引数は不正だった,ということになるので, +和文・欧文の両方のフォントファミリをに設定し,代用フォントが使われるに任せることにする. +% + + %<*en> -\section{Addons} +\section{Addon packages} \LuaTeX-ja has several addon packages. These addons are written as \LaTeX\ packages, but \Pkg{luatexja-otf} and~\Pkg{luatexja-adjust} can be loaded in plain \LuaTeX\ by \cs{input}. % %<*ja> -\section{拡張} +\section{拡張パッケージ} \LuaTeX-jaには(動作には必須ではないが)自由に読み込める拡張が付属している. これらは\LaTeX のパッケージとして制作しているが, \Pkg{luatexja-otf}と\Pkg{luatexja-adjust}についてはplain \LuaTeX でも\ \cs{input} で読み込み可能である. % -\subsection{\texttt{luatexja-fontspec.sty}} +\subsection{\Pkg{luatexja-fontspec}} \label{ssec-fontspec2} %<*en> As described in Subsection~\ref{ssec-fontspec}, this optional package @@ -5668,12 +6393,11 @@ the following ``font features'' specifications are allowed for the commands of Japanese version: % %<*ja> -\ref{ssec-fontspec}節で述べたように,この追加パッケージは\Pkg{fontspec} +\ref{ssec-fontspec}節で述べたように,この追加パッケージは\Pkg{fontspec}% パッケージで定義されているコマンドに対応する和文フォント用のコマンドを提供する. -\emph{以下に述べる和文版の命令の説明は \Pkg{fontspec}~v2.4 使用時にのみ当てはまる.} -\Pkg{fontspec}パッケージで指定可能な各種font featureに加えて,和文版のコマンドには -以下の``font feature''を指定することができる: +\Pkg{fontspec}パッケージで指定可能な各種OpenType機能に加えて,和文版のコマンドには +以下の「フォント機能」を指定することができる: % @@ -5715,32 +6439,50 @@ will not be embedded in the output PDF file. See Subsection~\ref{ssec-psft}. % \begin{figure}[!tb] -\begin{LTXexample} +\begin{LTXexample}[width=0.25\textwidth] \jfontspec[ - YokoFeatures={Color=007F00}, - TateFeatures={Color=00007F}, + YokoFeatures={Color=007F00}, TateFeatures={Color=00007F}, TateFont=KozGoPr6N-Regular ]{KozMinPr6N-Regular} -\hbox{\yoko 横組のテスト} -\hbox{\tate 縦組のテスト} +\hbox{\yoko 横組のテスト}\hbox{\tate 縦組のテスト} +\addjfontfeatures{Color=FF0000} +\hbox{\yoko 横組}\hbox{\tate 縦組} \end{LTXexample} %\caption{\texttt{TateFeatures} 等の使用例} %\caption{An example of \texttt{TateFeatures} etc.} \label{fig:yokotate-fontspec} \end{figure} +\item[Kanjiskip=] +%<*ja> +\pageref{pg:ltjksp}ページで説明した \verb+\jfont+ 中での \texttt{ltjksp} 指定と +同一の効力を持ち, +JFM中における \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\ +\texttt{kanjiskip\_shrink}キー(\pageref{pg:ksp_nat}ページ)の有効/無効を切り替える. +標準値は \texttt{true} である. +% \item[TateFeatures=\{\}\textrm{, }TateFont=] -% ... +%<*en> +The \texttt{TateFeatures} key specifies font features which are only turned~on in +vertical writing, such as \texttt{Style=VerticalKana}~(\texttt{vkna} feature). +Similarly, the \texttt{TateFont} key specifies the Japanese font which will be used only + in vertical writing. +A demonstrarion is shown in Figure~\ref{fig:yokotate-fontspec}. +% %<*ja> -縦組において使用されるフォントや,縦組においてのみ適用されるfeature達を +縦組において使用されるフォントや,縦組においてのみ適用されるフォント機能達を 指定する.使用例は図\ref{fig:yokotate-fontspec}参照. % \item[YokoFeatures=\{\}] -% ... +%<*en> +The \texttt{YokoFeatures} key specifies font features which are only turned~on in +horizontal writing,. +A demonstrarion is shown in Figure~\ref{fig:yokotate-fontspec}. +% %<*ja> -横組においてのみ適用されるfeature達を +同様に,横組においてのみ適用されるフォント機能達を 指定する.使用例は図\ref{fig:yokotate-fontspec}参照. % @@ -5775,7 +6517,7 @@ as the following: %<*ja> \ref{ssec-altfont}節の \cs{ltjdeclarealtfont} や, \ref{ssec-nfsspat}節の \cs{DeclareAlternateKanjiFont} と同様に, -このキーを用いると一部の文字を異なったフォントやfont featureを使って組むことができる. +このキーを用いると一部の文字を異なったフォントや機能たちを使って組むことができる. \texttt{AltFont} キーに指定する値は,次のように二重のコンマ区切りリストである: % \begin{lstlisting}[escapechar=\#] @@ -5828,6 +6570,12 @@ BoldFeatures = { On the other hand, \texttt{YokoFeatures}, \texttt{TateFeatures} and \texttt{TateFont} keys can be specified in each list in the \texttt{AltFont} key. Also, one can specify \texttt{AltFont} inside \texttt{YokoFeatures},~\texttt{TateFeatures}. + +Note that features which are specified in \texttt{YokoFeatures}~and~\texttt{TateFeatures} +are always interpreted \emph{after} other ``direction-independent'' features. +This explains why \cs{addjfontfeatures} at~line~6 in~Figure~\ref{fig:yokotate-fontspec} +has no effect, because a color specification is already done in +\texttt{YokoFeatures}~and~\texttt{TateFeatures} keys. % %<*ja> \paragraph{\texttt{AltFont}, \texttt{YokoFeatures}, \texttt{TateFeatures} 等の制限} @@ -5856,10 +6604,17 @@ BoldFeatures = { \ \texttt{YokoFeatures},~\texttt{TateFeatures} 及び \texttt{TateFont} キーを 指定することは可能であり.また\ \texttt{YokoFeatures},~\texttt{TateFeatures} キーの 中身に \texttt{AltFont} を指定することができる. + +また,図\ref{fig:yokotate-fontspec}後半部では6行目の色の指定が効かず, +2行目で指定した\ \texttt{YokoFeatures},~\texttt{TateFeatures}\ による色の指定が有効になっ +たままである.これは\emph{\ \texttt{YokoFeatures},~\texttt{TateFeatures}\ による +OpenType機能指定は +組方向に依存しないOpenType機能の指定より後に解釈される}からである. + % -\subsection{\texttt{luatexja-otf.sty}} +\subsection{\Pkg{luatexja-otf}} \label{ssec-ltjotf} %<*en> This optional package supports typesetting characters in @@ -5890,16 +6645,24 @@ but please remind remarks below. % %<*ja> 文字コードが(16進で)の文字を出力する. -このコマンドは \verb+\char"+と似ているが,下の記述に注意すること.%" +このコマンドは \verb+\char"+と似ているが,下の注意を参照すること.%" % \end{cslist} %<*ja> -このパッケージは,\texttt{ajmacros.sty}(\Pkg{otf}パッケージ付属のマクロ集,井上浩一氏作)から -漢字コードをUTF8にしたり,plain \LuaTeX でも利用可能にするという -修正を加えた \texttt{luatexja-ajmacros.sty} も自動的に読み込む. -そのため,\texttt{ajmacros.sty} マクロ集にある \verb+\aj半角+ などのマクロもそのまま使用可能である. +このパッケージは,マクロ集 \texttt{luatexja-ajmacros.sty}\footnote{\Pkg{otf}パッケージ付属の井上浩一氏によるマクロ集 +\texttt{ajmacros.sty} に対して +漢字コードをUTF-8にしたり,plain \LuaTeX でも利用可能にするという +修正を加えたものである.}\ も自動的に読み込む. +\texttt{luatexja-ajmacros.sty} は, +そのため,\Pkg{luatexja-otf} を読みこめば \texttt{ajmacros.sty} マクロ集にある \cs{aj半角} などのマクロもそのまま使うことができる. % +%<*en> +This package automatically loads \texttt{luatexja-ajmacros.sty}, which is slightly +modified version of \texttt{ajmacros.sty}\footnote{Useful macros by iNOUE Koich!, for the +\Pkg{japanese-otf} package.}. +Hence one can use macros which sre defined in \texttt{ajmacros.sty}, such as~\cs{aj半角}. +% %\paragraph{Remarks} %\paragraph{注意} @@ -5924,7 +6687,7 @@ ordinary characters in the following points: is not performed to these characters. % %<*ja> -\item OpenType feature(例えばグリフ置換やカーニング)をサポートするための +\item OpenType機能(例えばグリフ置換やカーニング)をサポートするための \Pkg{luaotfload}パッケージのコードはこれらの文字には働かない. % \end{itemize} @@ -6001,7 +6764,7 @@ For example, only ``葛'' in ``葛西'' is changed by font features \texttt{jp78}~or~\texttt{jp90}, which does not followed by any variation selector. % %<*ja> -また,IVSによる字形指定は,font featureによるそれに優先されることとした. +また,IVSによる字形指定は,OpenType機能によるそれに優先されることとした. 下の例において,\texttt{jp78}, \texttt{jp90} 指定で字形が変化した文字は 異体字セレクタが続いていない「葛西」中の「葛」のみである. % @@ -6026,7 +6789,7 @@ Lua・\TeX コードが参考になるだろう. % -\subsection{\texttt{luatexja-adjust.sty}} +\subsection{\Pkg{luatexja-adjust}} \label{ssec-adj} \begin{figure}[t] \def\sq{% @@ -6106,7 +6869,7 @@ for making the difference obvious. \end{cslist} % -\subsection{\texttt{luatexja-ruby.sty}} +\subsection{\Pkg{luatexja-ruby}} %<*en> This addon package provides functionality of ``ruby'' (\emph{furigana}) annotations using callbacks of \LuaTeX-ja. @@ -6210,7 +6973,7 @@ among the line-head form, the line-middle form, and the line-end form. %<*ja> -\subsection{\texttt{lltjext.sty}} +\subsection{\Pkg{lltjext}} \pLaTeX では縦組用の拡張として \Pkg{plext} パッケージが用意されていたが, それを\LuaTeX-ja用に書きなおしたものが本追加パッケージ \Pkg{lltjext} である. @@ -6329,7 +7092,7 @@ This commands typeset in LR-mode, in direction. If is positive, the width of the box becomes this . In this case, will be aligned \dots -\item[picture\textrm{environment}] +\item[picture\textrm{\ environment}] \item[\cs{rensuji}{[]}\{\}\textrm{, }\cs{rensujiskip}] @@ -6350,7 +7113,7 @@ In this case, will be aligned \dots %\section{Storing Parameters} %\section{パラメータの保持} \label{sec-para} -%\subsection{Used Dimensions, Attributes and Whatsit Nodes} +%\subsection{Used dimensions, attributes and whatsit nodes} %\subsection{\LuaTeX-jaで用いられるレジスタとwhatsitノード} %<*en> @@ -6441,10 +7204,11 @@ The font index of current Japanese font for vertical direction. \attr{ltj@charclass} %<*en> -The character class of Japanese \textit{glyph\_node}. +The character class of a \textbf{JAchar}. This attribute is only set on a + \textit{glyph\_node} which contains a \textbf{JAchar}. % %<*ja> -和文文字の\textit{glyph\_node}の文字クラス. +\textbf{JAchar}の文字クラス.\textbf{JAchar}が格納された\textit{glyph\_node}でのみ使われる. % \attr{ltj@yablshift} @@ -6660,7 +7424,7 @@ These whatsits will be removed during the process of inserting \textbf{JAglue}s. これらのwhatsitノードは\textbf{JAglue}の挿入処理の間に取り除かれる. % -%\subsection{Stack System of \LuaTeX-ja} +%\subsection{Stack system of \LuaTeX-ja} %\subsection{\LuaTeX-jaのスタックシステム} \label{ssec-stack} @@ -6840,7 +7604,7 @@ To solve this problem, we use another trick: the assignment % %<*en> -\subsection{Lua Functions of the Stack System} +\subsection{Lua functions of the stack system} In this subsection, we will see how a user use \LuaTeX-ja's stack system to store some data which obeys the grouping of \TeX. % @@ -6928,7 +7692,7 @@ as in \Pkg{luatexja-adjust}. %<*en> \paragraph{Setting parameters} -Figure~\ref{fig:setpar-def} shows the ``most outer'' definition of +Figure~\ref{fig:setpar-def} shows the \emph{most outer} definition of two commands, \cs{ltjsetparameter} and \cs{ltjglobalsetparameter}. Most important part is the last \cs{setkeys}, @@ -7046,7 +7810,7 @@ end %\section{Linebreak after a Japanese Character} %\section{和文文字直後の改行} \label{sec-lbreak} -%\subsection{Reference: Behavior in \pTeX} +%\subsection{Reference: behavior in \pTeX} %\subsection{参考:\pTeX の動作} %<*en> In~\pTeX, a line break after a Japanese character doesn't emit a space, @@ -7208,7 +7972,7 @@ process it}, if and only if the following three conditions are satisfied: \paragraph{Remark} The following example shows the major difference from the behavior of \pTeX. \begin{LTXexample} -\fontspec[Ligatures=TeX]{TeX Gyre Termes} +\fontspec[Ligatures=TeX]{Linux Libertine O} \ltjsetparameter{autoxspacing=false} \ltjsetparameter{jacharrange={-6}}xあ y\ltjsetparameter{jacharrange={+6}}zい @@ -7268,7 +8032,7 @@ emits a space. \texttt{lstlisting}系環境などの日本語対応マクロを書かなくてすませるためのものである. しかしながら,\pTeX と完全に同じ挙動が実現できたわけではない. -次のように,和文文字の範囲を変更したちょうどその行においては挙動が異なる: +次のように,\textbf{JAchar}の範囲を変更したちょうどその行においては挙動が異なる: \begin{LTXexample} \fontspec[Ligatures=TeX]{TeX Gyre Termes} \ltjsetparameter{autoxspacing=false} @@ -7276,7 +8040,7 @@ emits a space. y\ltjsetparameter{jacharrange={+6}}zい u \end{LTXexample} -上ソース中の「あ」は欧文文字扱いであり. +上ソース中の「あ」は\textbf{ALchar}(欧文扱い)であり. ここで使用している欧文フォント\TeX\ Gyre Termesは「あ」を含まない. よって,出力に「あ」は現れないことは不思議ではない. それでも,\pTeX とまったく同じ挙動を示すならば,出力は @@ -7284,14 +8048,14 @@ u 上のように異なる挙動となっているが,それは以下の理由による: \begin{itemize} \item 3行目を \texttt{process\_input\_buffer} で処理する時点では, - 「あ」は和文文字扱いである.よって3行目は和文文字で終わることになり, + 「あ」は\textbf{JAchar}(和文扱い)である.よって3行目は\textbf{JAchar}で終わることになり, コメント文字 \texttt{U+FFFFF} が追加される. よって,直後の改行文字は無視されることになり,空白は入らない. \item 4行目を \texttt{process\_input\_buffer} で処理する時点では, - 「い」は欧文文字扱いである.よって4行目は欧文文字で終わることになり, + 「い」は\textbf{ALchar}である.よって4行目は\textbf{ALchar}で終わることになり, 直後の改行文字は空白に置き換わる. \end{itemize} -このため,トラブルを避けるために,和文文字の範囲を\cs{ltjsetparameter}で編集した場合, +このため,トラブルを避けるために,\textbf{JAchar}の範囲を\cs{ltjsetparameter}で編集した場合, その行はそこで改行するようにした方がいいだろう. % @@ -7456,11 +8220,11 @@ $\mathit{Np}.\mathit{id}$の意味を述べるとともに, 説明用に準備した概念であって,実際のLuaコード中にそのように書かれているわけではないことに注意. \begin{description} -\item[\textit{id\_jglyph}] 和文文字.\\ -$\mathit{Np}.\mathit{head}$, $\mathit{Np}.\mathit{tail}$は,その和文文字を表している +\item[\textit{id\_jglyph}] \textbf{JAchar}(和文文字).\\ +$\mathit{Np}.\mathit{head}$, $\mathit{Np}.\mathit{tail}$は,その\textbf{JAchar}を表している \textit{glyph\_node}そのものである. -\item[\textit{id\_glyph}] 和文文字を表していない\textit{glyph\_node}~$p$.\\ -多くの場合,$p$は欧文文字を格納しているが,「ffi」などの合字によって作られた +\item[\textit{id\_glyph}] \textbf{JAchar}(和文文字)以外のものを表す\textit{glyph\_node}~$p$.\\ +多くの場合,$p$は\textbf{ALchar}(欧文文字)を格納しているが,「ffi」などの合字によって作られた \textit{glyph\_node}である可能性もある. 前者の場合,$\mathit{Np}.\mathit{head}$,~$\mathit{Np}.\mathit{tail} = p$である. 一方,後者の場合, @@ -7512,15 +8276,15 @@ $\mathit{Np}.\mathit{head}$, $\mathit{Np}.\mathit{tail}$の算出は, 空白等の実際の挿入を行うことは前に書いたが,ここでの説明では,問題にしているクラスタ\textit{Np}は「後ろ側」のクラスタである とする.「前側」のクラスタについては,以下の説明で\textit{head}が\textit{last}に置き換わることに注意すること. \begin{description} -\item[和文A] リスト中に直接出現している和文文字. +\item[和文A] リスト中に直接出現している\textbf{JAchar}. \textit{id}が\textit{id\_jglyph}であるか,\\ \textit{id}が\textit{id\_pbox}であって$\mathit{Np}.\mathit{head}$が\textbf{JAchar}であるとき. -\item[和文B] リスト中のhboxの中身の先頭として出現した和文文字.和文Aとの違いは,これの前に +\item[和文B] リスト中のhboxの中身の先頭として出現した\textbf{JAchar}.和文Aとの違いは,これの前に JFMグルーの挿入が行われない(\Param{xkanjiskip},~\Param{kanjiskip}は入り得る)ことである.\\ \textit{id}が\textit{id\_hlist}か\textit{id\_disc}であって$\mathit{Np}.\mathit{head}$が\textbf{JAchar}であるとき. -\item[欧文] リスト中に直接/hboxの中身として出現している欧文文字.次の3つの場合が該当: +\item[欧文] リスト中に直接/hboxの中身として出現している「\textbf{JAchar}以外の文字」.次の3つの場合が該当: \begin{itemize} \item \textit{id}が\textit{id\_glyph}である. \item \textit{id}が\textit{id\_math}である. @@ -7568,7 +8332,7 @@ $g$は「文字コード \texttt{'boxbdd'} の文字」と\textit{Np}の間に 一方.前者(段落)の場合は,リストの末尾は常に \cs{penalty10000} と, \cs{parfillskip} 由来のグルーが存在する.%よって,最後のクラスタ\textit{Np}は %この \cs{parfillskip} 由来のグルーとなり,実質的な中身の最後はその1つ前のクラスタ\textit{Nq}となる. -段落の最後の「通常の和文文字${}+{}$句点」が独立した行となるのを防ぐために, +段落の最後の「通常の\textbf{JAchar}${}+{}$句点」が独立した行となるのを防ぐために, \Param{jcharwidowpenalty}の値の分だけ適切な場所のペナルティを増やす. ペナルティ量を増やす場所は,\textit{head}が\textbf{JAchar}であり, @@ -7603,7 +8367,7 @@ $g$は「文字コード \texttt{'boxbdd'} の文字」と\textit{Np}の間に この場合が全ての場合の基本となる. \paragraph{「右空白」の算出} -まず,「右空白」にあたる量を算出する.通常はこれが,隣り合った2つの和文文字間に入る空白量となる. +まず,「右空白」にあたる量を算出する.通常はこれが,隣り合った2つの\textbf{JAchar}間に入る空白量となる. \begin{description} \item[JFM由来{[M]}] JFMの文字クラス指定によって入る空白を以下によって求める.この段階で空白量が未定義(未指定)だった場合, デフォルト値\Param{kanjiskip}を採用することとなるので,次へ. @@ -7682,14 +8446,14 @@ $q$と$r$の間は(実フォントが同じなのに)\texttt{jfmvar} キー \item[\Param{kanjiskip}~{[K]}] 上の[M]において空白が定まらなかった場合, 以下で定めた量「右空白」として採用する. この段階においては,\cs{inhibitglue} は効力を持たないため, -結果として,2つの和文文字間には常に何らかのグルー/カーンが挿入されることとなる. +結果として,2つの\textbf{JAchar}間には常に何らかのグルー/カーンが挿入されることとなる. \begin{enumerate} \item 両クラスタ(厳密には$\mathit{Nq}.\mathit{tail}$,$\mathit{Np}.\mathit{head}$)の中身の文字コードに対する \Param{autospacing}パラメタが両方ともfalseだった場合は,長さ0のglueとする. \item ユーザ側から見た\Param{kanjiskip}パラメタの自然長が$\cs{maxdimen}=(2^{30}-1)\,{\rm sp}$で なければ,\Param{kanjiskip}パラメタの値を持つglueを採用する. \item 2.でない場合は,\textit{Nq}, \textit{Np}で使われているJFMに指定されている\Param{kanjiskip}の値を用いる. -どちらか片方のクラスタだけが和文文字(\textsf{和文A}・\textsf{和文B})のときは,そちらのクラスタで使われている +どちらか片方のクラスタだけが\textbf{JAchar}(\textsf{和文A}・\textsf{和文B})のときは,そちらのクラスタで使われている JFM由来の値だけを用いる.もし両者で使われているJFMが異なった場合は,上の[M]~3.と同様の方法を用いて調整する. \end{enumerate} \end{description} @@ -7811,7 +8575,7 @@ If this attempt fails, \LuaTeX-ja use the method ``\textsf{\Param{kanjiskip}~[K] \item 禁則用ペナルティも,以前述べた\textsf{P-normal~[PN]}と同じである. \end{itemize} \begin{description} -\item[Boundary-B~{[\OB]}] 和文文字と「和文でないもの」との間に入る空白を以下によって求め, +\item[Boundary-B~{[\OB]}] \textbf{JAchar}と「\textbf{JAchar}でないもの」との間に入る空白を以下によって求め, 未定義でなければそれを「右空白」として採用する. \textsf{JFM-origin~[M]}の変種と考えて良い. これによって定まる空白の典型例は,和文の閉じ括弧と欧文文字の間に入る半角アキである. @@ -7851,7 +8615,7 @@ If this attempt fails, \LuaTeX-ja use the method ``\textsf{\Param{kanjiskip}~[K] \item 禁則用ペナルティは,以前述べた\textsf{P-normal~[PN]}と同じである. \end{itemize} \begin{description} -\item[Boundary-A~{[\OA]}] 「和文でないもの」と和文文字との間に入る空白を以下によって求め, +\item[Boundary-A~{[\OA]}] 「\textbf{JAchar}でないもの」と\textbf{JAchar}との間に入る空白を以下によって求め, 未定義でなければそれを「右空白」として採用する. \textsf{JFM-origin~[M]}の変種と考えて良い. これによって定まる空白の典型例は,欧文文字と和文の開き括弧との間に入る半角アキである. @@ -7936,7 +8700,7 @@ $\mathit{Nq}.\mathit{tail}$は無意味なので, \paragraph{和文Aと和文Bの違い} 先に述べたように,\textsf{和文B}はhboxの中身の先頭(or 末尾)として出現している -和文文字である.リスト内に直接ノードとして現れている和文文字(\textsf{和文A})との違いは, +\textbf{JAchar}である.リスト内に直接ノードとして現れている\textbf{JAchar}(\textsf{和文A})との違いは, \begin{itemize} \item \textsf{和文B}に対しては,JFMの文字クラス指定から定まる空白 \textsf{JFM-origin~[M]},\textsf{Boundary-A~[\OA]},\textsf{Boundary-B~[\OB]})の挿入は行われない. @@ -7983,10 +8747,10 @@ $\mathit{Nq}.\mathit{tail}$は無意味なので, 仮想ボディの高さ$h$,深さ$d$については \begin{description} \catcode`\<=12\catcode`\>=12 - \item[$\texttt{yoffset}\geq 0$のとき] -$h = \max(\texttt{height} + \texttt{yoffset}, 0)$, -$d = \max(\texttt{depth} - \texttt{yoffset}, 0)$, - \item[$\texttt{yoffset}<0$のとき] + \item[$\texttt{yoffset}\geq 0$のとき] +$h = \max(\texttt{height} + \texttt{yoffset}, 0)$, +$d = \max(\texttt{depth} - \texttt{yoffset}, 0)$, + \item[$\texttt{yoffset}<0$のとき] $h = \max(\texttt{height} + \texttt{yoffset}, 0)$, $d=\texttt{depth}$. \end{description} という仕様になっている.つまり,\texttt{yoffset} が負(グリフを下ける)の場合に深さは増加しな @@ -8028,7 +8792,7 @@ $h = \max(\texttt{height} + \texttt{yoffset}, 0)$, $d=\texttt{depth}$. \end{itemize} という状況で組んだ場合を例にとって説明しよう. -\LuaTeX・\Pkg{luaotfload}によるカーニング・ハイフネーションが終わった段階では, +\LuaTeX・\Pkg{luaotfload}によるカーニング・ハイフネーションが終わった段階では,…… @@ -8083,7 +8847,7 @@ then the patch \Pkg{lltjp-listings} is loaded automatically at \verb+\begin{docu 意識する必要はない. % -%\subsection{Notes} +%\subsection{Notes and additional keys} %\subsection{注意} %<*en> \paragraph{Escaping to \LaTeX} @@ -8125,6 +8889,20 @@ instead of ``\verb+\ほげ+''. 「\cs{}\IVSA FFFFF」というcontrol symbolが実行されることになる. % +%<*en> +\paragraph{Variation selectors} +\Pkg{lltjp-listings} add two keys, namely \texttt{vsraw}~and~\texttt{vscmd}, +which specify how variation selectors are treated in +\texttt{lstlisting} or other enviroments. +Note that these additional keys are not usable in the preamble, +since \Pkg{lltjp-listings} is loaded at \verb+\begin{document}+. + +\texttt{vsraw} is a key which takes a boolean value, and its default value is +false. +\begin{itemize} + \item If the \texttt{vsraw} key is true, then +variation selectors are ``combined'' with the previous character. +% %<*ja> \paragraph{異体字セレクタの扱い} \texttt{lstlisting} 環境などの内部にある異体字セレクタを扱うため, @@ -8137,21 +8915,31 @@ instead of ``\verb+\ほげ+''. \item trueの場合は,異体字セレクタは「直前の文字に続けて」出力される. もしもIVSサポート(\ref{ssec-ltjotf}節)が有効になっていた場合は, 以下の例(左側は入力,右側はその出力)のようになる. +% \begin{LTXexample} \begin{lstlisting}[vsraw=true] 葛󠄀城市,葛󠄁飾区,葛西 \end{lstlisting} \end{LTXexample} +%<*en> +\item If the \texttt{vsraw} key is false, then +variation selectors are typeset by an appropriate command, which is specified by + the \texttt{vscmd} key. +The default setting of the \texttt{vscmd} key produces the following. +% +%<*ja> \item falseの場合は,異体字セレクタは適当な命令によって「見える形で」出力される. どのような形で出力されるかを規定するのが \texttt{vscmd} キーであり, \Pkg{lltjp-listings} の標準設定では以下の例の右側のように出力される. +% \begin{LTXexample} \begin{lstlisting}[vsraw=false, vscmd=\ltjlistingsvsstdcmd] 葛󠄀城市,葛󠄁飾区,葛西 \end{lstlisting} \end{LTXexample} -ちなみに,本ドキュメントでは次のようにしている: +% ちなみに,本ドキュメントでは次のようにしている: +% For example, the following code is the setting of the \texttt{vscmd} key in this document. \begin{lstlisting}[numbers=left] \def\IVSA#1#2#3#4#5{% \textcolor{blue}{\raisebox{3.5pt}{\tt% @@ -8165,11 +8953,57 @@ instead of ``\verb+\ほげ+''. \lstset{vscmd=\IVSB} \end{lstlisting} \end{itemize} -既定の出力命令を復活させたい場合は\ \verb+vsraw=\ltjlistingsvsstdcmd+\ +%<*en> +The default output command of variation selectors is stored in \verb+\ltjlistingsvsstdcmd+. +% +%<*ja> +既定の出力命令を復活させたい場合は\ \verb+vscmd=\ltjlistingsvsstdcmd+\ とすれば良い. % -%\subsection{Class of Characters} +%<*en> +\paragraph{The \texttt{doubleletterspace} key} +Even the column format is \texttt{[c]fixed}, sometimes characters are not vertically aligned. +The following example is typeset with \texttt{basewidth=2em}, and +you'll see the leftmost ``\texttt{H}'' are not vertically aligned. +\begin{lstlisting}[basewidth=2em, basicstyle=\tt,numbers=left] +:H: +:HHHH: +\end{lstlisting} + +\Pkg{lltjp-listing} adds the \texttt{doubleletterspace} key (not activated by default, for +compatibility) to +improve the situation, namely doubles inter-character space in each output unit. +With this key, the above input now produces better output. +\begin{lstlisting}[basewidth=2em, basicstyle=\tt,numbers=left, doubleletterspace] +:H: +:HHHH: +\end{lstlisting} +% +%<*ja> +\paragraph{\texttt{doubleletterspace}キー} +\Pkg{listings}パッケージで列揃えが \texttt{[c]fixed} となっている場合でも, +場合によっては文字が縦に揃わない場合もある. +例を以下に示そう.これは強調するために \texttt{basewidth=2em} を設定している. +\begin{lstlisting}[basewidth=2em, basicstyle=\tt,numbers=left] +:H: +:HHHH: +\end{lstlisting} +1行目と2行目の「\texttt{H}」の位置が揃っていないが, +これは出力単位ごとに,先頭・末尾・各文字間に同じ量の空白を挿入することによる. + +\Pkg{lltjp-listing}では,このような症状を改善させるために \texttt{doubleletterspace} キー +を追加した(標準では互換性のために無効になっている).このキーを有効にすると, +出力単位中の各文字間の空白を2倍にすることで文字を揃いやすくしている. +上と同じものを \texttt{doubleletterspace} キーを有効にして組んだものが以下であり, +きちんと「\texttt{H}」の位置が揃っていることが分かる. +\begin{lstlisting}[basewidth=2em, basicstyle=\tt,numbers=left, doubleletterspace] +:H: +:HHHH: +\end{lstlisting} +% + +%\subsection{Class of characters} %\subsection{文字種} %Roughly speaking, the \Pkg{listings} package processes input as follows: @@ -8290,7 +9124,7 @@ Prev&Kanji&\multicolumn{4}{c}{\hrulefill \ outputs\ \hrulefill}&collects\\ \end{itemize} %<*en> -Characters above \texttt{U+0080} \emph{except Variation Selectors} +Characters above or equal to~\texttt{U+0080} \emph{except Variation Selectors} are classified into above 5~classes by the following rules: % %<*ja> @@ -8298,7 +9132,7 @@ are classified into above 5~classes by the following rules: Letter, Other, Kanji, Open, Closeのどれに属するかは次によって決まる: % \begin{itemize} -%\item \textbf{ALchar}s above \texttt{U+0080} are classified as Letter. +%\item \textbf{ALchar}s above or equal to~\texttt{U+0080} are classified as Letter. %\item (\texttt{U+0080}以降の)\textbf{ALchar}は,すべてLetter扱いである. %\item \textbf{JAchar}s are classified in the order as follows: @@ -8425,7 +9259,7 @@ JFM中にある文字クラス$n$の定義の \item \Param{kanjiskip} \end{enumerate} \begin{enumerate} - \item 行末の和文文字を移動したことで$\textit{total}=0$となれば, + \item 行末の\textbf{JAchar}を移動したことで$\textit{total}=0$となれば, 調整の必要はなく,行が格納されているhboxの \texttt{glue\_set}, \texttt{glue\_sign}, \texttt{glue\_order}を再計算すればよい. 以降,$\textit{total}\neq 0$と仮定する. @@ -8476,13 +9310,13 @@ JFM中にある文字クラス$n$の定義の が連続した場合に,$p$のフォントに対応したが持つ「異体字情報」に従って出力するグリフを変える. しかし,単に$p.\textit{char}$を変更するだけでは,後から -font featureの適用(すぐ下)により置換される可能性がある.そのため, +OpenType機能の適用(すぐ下)により置換される可能性がある.そのため, \cs{CID} や \cs{UTF} と同じように,\textit{glyph\_node}~$p$の代わりに \texttt{user\_id} が\textit{char\_by\_cid}であるようなuser-defined whatsitを用いている. \item[(\Pkg{luaotfload} によるfont featureの適用)] \item[\tt ltj.otf] \texttt{user\_id} が\textit{char\_by\_cid}であるようなuser-defined whatsitを きちんと\textit{glyph\_node}に変換する.この処理は,\cs{CID}, \cs{UTF}やIVSによる置換が, -font featureの適用で上書きされてしまうのを防止するためである. +OpenType機能の適用で上書きされてしまうのを防止するためである. \item[\tt ltj.main\_process] \textbf{JAglue}の挿入処理(\ref{sec-jfmglue}章)と, JFMの指定に従って各\textbf{JAchar}の「寸法を補正」することを行う. \end{description} @@ -8510,10 +9344,11 @@ OpenTypeフォントでもTrueTypeフォントでもIVS情報が格納されて \texttt{fontloader} の呼び出しでかなり時間を消費することから, %%% to_table を使わなくしたことで,メモリ使用量は減った IVS情報をキャッシュに保存することで2回目以降の実行時間を節約している. +% +%<*ja> \section{複数フォントの「合成」(未完)} - \section{\LuaTeX-jaにおけるキャッシュ} \Pkg{luaotfload}パッケージが,各TrueType・OpenTypeフォントの情報を キャッシュとして保存しているのと同様の方法で, @@ -8577,14 +9412,14 @@ CMapが必要である. 縦組時における幅を格納している.構造は以下の通り: % %<*en> -\subsection{Use of Cache} +\subsection{Use of cache} \LuaTeX-ja uses the following cache: \begin{cslist} \item[ltj-cid-auto-adobe-japan1.lua] The font table of a CID-keyed non-embedded Japanese font. This is loaded in every run. -It is created from two CMaps, \texttt{UniJIS2004-UTF32-H} and +It is created from three CMaps, \texttt{UniJIS2004-UTF32-\{H,V\}} and \texttt{Adobe-Japan1-UCS2}, and this is why these two CMaps are needed in the first run of \LuaTeX-ja. @@ -8597,7 +9432,7 @@ as in Page~\pageref{para-cid}. This file stores the table which stores the following. \begin{itemize} \item unicode variants in a font ``\texttt{***}'' - \item vertical width of glyphs, if it is not equal to the sum of + \item vertical width of glyphs, if it is not equal to the sum of the height of ascender and the depth of descender \item vertical variants \end{itemize} @@ -8614,10 +9449,10 @@ The following is the structure of the that table. \bf \texttt{cid} key&\bf name of the cache & \multicolumn{2}{c}{\bf used CMaps}\\ \midrule -Adobe-Japan1-*<j-cid-auto-adobe-japan1.lua&UniJIS2004-UTF32-H&Adobe-Japan1-UCS2\\ -Adobe-Korea1-*<j-cid-auto-adobe-korea1.lua&UniKS-UTF32-H&Adobe-Korea1-UCS2\\ -Adobe-GB1-*<j-cid-auto-adobe-gb1.lua&UniGB-UTF32-H&Adobe-GB1-UCS2\\ -Adobe-CNS1-*<j-cid-auto-adobe-cns1.lua&UniCNS-UTF32-H&Adobe-CNS1-UCS2\\ +Adobe-Japan1-*<j-cid-auto-adobe-japan1.lua&UniJIS2004-UTF32-*&Adobe-Japan1-UCS2\\ +Adobe-Korea1-*<j-cid-auto-adobe-korea1.lua&UniKS-UTF32-*&Adobe-Korea1-UCS2\\ +Adobe-GB1-*<j-cid-auto-adobe-gb1.lua&UniGB-UTF32-*&Adobe-GB1-UCS2\\ +Adobe-CNS1-*<j-cid-auto-adobe-cns1.lua&UniCNS-UTF32-*&Adobe-CNS1-UCS2\\ \bottomrule \end{tabular} \end{table} @@ -8800,7 +9635,7 @@ direction whatsitはあくまでも組方向処理のための補助的なノー \[ \xymatrix{ {}\Node{glyph}{`平'}\ar[r]&{}\Node{glyph}{`成'}\ar[r]& - {}\HNode{hlist}{10.00003}{3.02779}{0.0}\ar[r]\ar[d]^{\text{中身}}&{}\Node{glyph}{`年'}\\ + {}\HNode{hbox}{10.00003}{3.02779}{0.0}\ar[r]\ar[d]^{\text{中身}}&{}\Node{glyph}{`年'}\\ &&{}\Node{whatsit}{\cs{tate}}\ar[r]&{}\Node{glyph}{`2'}\ar[r]&{}\Node{glyph}{`6'} } \] @@ -8814,10 +9649,10 @@ direction whatsitはあくまでも組方向処理のための補助的なノー &{}\textcolor{blue}{\Node{penalty}{0}} \ar`r[d] `[l] `[ddll] `[dl] [dl] \\ - &&{}\textcolor{red}{\HNode{hlist}{3.02779}{10.00003}{0.0}}\ar[r]\ar[d]^{\text{中身}} + &&{}\textcolor{red}{\HNode{\textit{dir\_box} (\cs{yoko})}{3.02779}{10.00003}{0.0}}\ar[r]\ar[d]^{\text{中身}} &{}\textcolor{blue}{\Node{penalty}{0}}\ar[r] &{}\Node{glyph}{`年'}\\ - &&{}\HNode{\textit{dir\_box} (\cs{yoko})}{10.00003}{3.02779}{0.0}\ar[d]^{\text{中身}}\\ + &&{}\HNode{hbox}{10.00003}{3.02779}{0.0}\ar[d]^{\text{中身}}\\ &&{}\Node{whatsit}{\cs{tate}}\ar[r]&{}\Node{glyph}{`2'}\ar[r]&{}\Node{glyph}{`6'} } \] @@ -8931,7 +9766,7 @@ direction~whatsit内部のノードリストに,\textit{dir\_box}として格 {}\Node{whatsit}{\cs{dtou}}\ar[r]& {}\Node{glyph}{`a'}\ar[r]& {}\textcolor{red}{\HNode{\textit{dir\_box} (\cs{dtou})}{20.0}{9.0}{0.0}}\ar[d]_{\text{中身}}\\ - &&{}\HNode{hlist}{9.0}{5.0}{2.0}\ar[d]_{\text{中身}}\\ + &&{}\HNode{hbox}{9.0}{5.0}{2.0}\ar[d]_{\text{中身}}\\ &&{}\Node{whatsit}{\cs{yoko}}\ar[r]&{}\Node{rule}{} } \] @@ -8953,7 +9788,7 @@ TUG 2013, October 2013. \bibitem{jlisting} Thor Watanabe. \newblock Listings\ -\ MyTeXpert. %\newblock %\\\null\hfill -\url{http://mytexpert.sourceforge.jp/index.php?Listings} +\url{http://mytexpert.osdn.jp/index.php?Listings} \bibitem{jlreq} W3C Japanese Layout Task Force~(ed). \newblock Requirements for Japanese Text Layout (W3C Working Group Note), 2011, 2012. \newblock \url{http://www.w3.org/TR/jlreq/}%