OSDN Git Service

Updated drafts.
[luatex-ja/luatexja.git] / doc / tc11-slide.tex
1 %#! lualatex -shell-escape tc11-slide.tex
2 \documentclass[notheorems,12pt,hyperref={unicode=true}]{beamer}
3 \usepackage{luatexja,luatexja-otf,showexpl,lltjlisting}
4 \usepackage{lmodern,mathtools,graphicx,pict2e}
5 \usepackage{amsmath,bm,mflogo,booktabs}
6 \usepackage[all]{xy}
7
8 \SelectTips{cm}{}
9
10 %%% theme
11 \useinnertheme{rectangles}
12 \useoutertheme{split}
13 \usecolortheme{rose}
14 \usecolortheme{dolphin}
15 \setbeamertemplate{navigation symbols}{}
16 \setbeamertemplate{headline}{}
17
18 \makeatletter
19 \definecolor{purple}{rgb}{0.60, 0.0, 1.0}
20 \definecolor{green}{rgb}{0.0, 0.60, 0.0}
21 \definecolor{lblue}{rgb}{0.30, 0.0, 1.00}
22 \definecolor{gray}{rgb}{0.60, 0.60, 0.60}
23 \definecolor{linenavy}{rgb}{0.0 ,0.0 ,0.50}
24 \definecolor{linesky}{rgb} {0.50,0.75,1.00}
25 \newdimen\lineheight \lineheight=6pt
26 \def\lines#1{%
27   \noindent\null\hskip-30pt\setbox0=\hbox{%
28   {\color{linenavy}\vrule height \lineheight width #1\lineheight}%
29   \kern 0.2\lineheight{\color{linenavy!80!linesky}\vrule height\lineheight width 0.6\lineheight}%
30   \kern 0.2\lineheight{\color{linenavy!60!linesky}\vrule height\lineheight width 0.52\lineheight}%
31   \kern 0.2\lineheight{\color{linenavy!40!linesky}\vrule height\lineheight width 0.44\lineheight}%
32   \kern 0.2\lineheight{\color{linenavy!20!linesky}\vrule height\lineheight width 0.36\lineheight}%
33   \kern 0.2\lineheight}\copy0\nobreak
34   \@tempdima=\textwidth\advance\@tempdima64pt\advance\@tempdima-\wd0
35   \hbox to 0pt{\color{linesky}\vrule height \lineheight width \@tempdima \hss}\par
36 }
37 \setbeamertemplate{frametitle}{
38   \noindent\insertframetitle\par\vskip-8pt\lines{12}\vskip-16pt
39 }
40 \setbeamertemplate{footline}{
41   \leavevmode%
42   \hbox{\begin{beamercolorbox}[wd=.5\paperwidth,ht=2.5ex,dp=1.125ex,
43 leftskip=.3cm,rightskip=.3cm]{author in head/foot}%
44     \usebeamerfont{author in head/foot}\ \hfill \insertshortauthor
45   \end{beamercolorbox}%
46   \begin{beamercolorbox}[wd=.5\paperwidth,ht=2.5ex,dp=1.125ex,
47 leftskip=.3cm,rightskip=.3cm plus1fil]{title in head/foot}%
48     \usebeamerfont{title in head/foot}\insertshorttitle
49   \end{beamercolorbox}}%
50   \vskip0pt%
51 }
52 \expandafter\let\csname beamer@@tmpop@title page@default\endcsname=\relax
53 \defbeamertemplate*{title page}{default}[1][]
54 {
55   \vbox{}
56   \vfill
57   \begin{centering}
58     \begin{beamercolorbox}[sep=8pt,center,#1]{title}
59       \usebeamerfont{title}\inserttitle
60     \end{beamercolorbox}
61   \end{centering}
62
63 \lines{30}\vskip8pt
64   \begin{centering}
65     \begin{beamercolorbox}[sep=8pt,center,#1]{author}
66       \usebeamerfont{author}\insertauthor
67     \end{beamercolorbox}
68     \begin{beamercolorbox}[sep=8pt,center,#1]{date}
69       \usebeamerfont{date}\insertdate
70     \end{beamercolorbox}
71   \end{centering}
72   \vskip-8pt\vfill
73 }
74
75 \AtBeginSection[]{
76   \begin{frame}
77     \frametitle{Outline}
78     \tableofcontents[currentsection,hideothersubsections]
79   \end{frame}
80 }
81
82 \setbeamercolor{structure}{fg=linenavy}
83 \setbeamercolor{author in head/foot}{fg=white,bg=linenavy}
84 \setbeamercolor{title in head/foot}{fg=black,bg=linesky}
85 \setbeamercolor{block title}{bg=linenavy!50!linesky,fg=white}
86 \setbeamercolor{block body}{fg=black,bg=linesky!20!white}
87 \setbeamertemplate{section in toc}{■\null\inserttocsection\par\smallskip}
88 \setbeamerfont{section in toc}{size=\normalsize}
89 \setbeamerfont{title}{size=\Large, series=\bfseries}
90 \setbeamerfont{frametitle}{size=\Large, series=\bfseries, shape=\upshape}
91
92 \def\mcdefault{gt}
93 \DeclareFontShape{JY3}{gt}{bx}{n}{ <-> s*[0.960444] psft:FutoGoB101-Bold:jfm=ujis}{}
94 \def\notice#1{{\color{blue!50!black}#1}}
95 \def\alert#1{{\color{red}\bfseries#1}}
96 \def\pTeX{p\TeX}
97 \parindent=0pt
98 \catcode`\|=13\def|{\char92 }
99 \def\{{{\ttfamily\char`\{}}
100 \def\}{{\ttfamily\char`\}}}
101 \ltjsetparameter{alxspmode={`\\,allow}}
102 \lstset{numbers=left, basicstyle=\ttfamily}
103 \makeatother
104
105 \title{Lua\TeX-jaの開発}
106 \author[北川 弘典]{北川 弘典\\\footnotesize(Lua\TeX-jaプロジェクトチーム)}
107 \date{2011年10月22日}
108
109 \begin{document}
110
111 \begin{frame}
112   \titlepage
113 \end{frame}
114
115 \section{導入}
116
117
118 \subsection{背景}
119 \begin{frame}
120   \frametitle{Lua\TeX-ja}
121   {\large\[
122     \xymatrix{
123       \text{\TeX}\ar[r]\ar[d]&\text{$\varepsilon$-\TeX}\ar[d]\ar[r]
124       &\text{pdf\TeX}\ar[r]&\text{Lua\TeX}\ar@{-->}[d]\\
125       \text{p\TeX}\ar[r]&\text{$\varepsilon$-p\TeX}
126       \ar@{-->}[rr]&&\text{\alert{Lua\TeX-ja}}
127     }
128   \]}%
129   \begin{center}
130     \bfseries\Large 
131     Lua\TeX-jaは,Lua\TeX 上で日本語組版を実現させるマクロパッケージである.
132   \end{center}
133 \end{frame}
134
135 \begin{frame}[fragile]
136   \frametitle{Lua\TeX}
137   {\large\begin{align*}
138     \text{Lua\TeX}&\simeq \text{pdf\TeX}+ \text{Lua}+\text{\MP}\\
139     &\qquad+\text{Omega}+\text{OpenType}+ \cdots
140   \end{align*}}
141   \textbf{主な特徴:}
142   \begin{itemize}
143     \item pdfへの直接出力(pdf\TeX の後継)
144     \item Unicodeへの対応{\small (SIP内の文字も余裕)}
145     \item TrueType/OpenTypeフォントの直接利用
146     \item Luaスクリプトで\TeX 処理のカスタマイズが可能\\
147       \quad →もはやエンジンレベルで拡張する必要はない
148   \end{itemize}
149
150   \footnotesize 詳しくは,昨年度の八登さんの講演を参照.
151 \end{frame}
152
153 \subsection{開発方針}
154 \begin{frame}
155   \frametitle{開発方針1}
156   \begin{flushleft}
157    \alert{\bfseries\large 
158     p\TeX のプリミティブに対応する機能から実装.}%
159   \end{flushleft}\vskip-\medskipamount
160   \begin{itemize}
161   \item 最低でもp\TeX と同等の組版の自由度を確保する.\medskip
162   \item 以前から存在した,Lua\TeX で日本語組版を行う実験:
163   \begin{itemize}
164     \item \texttt{luaums.sty}(北川)\\\quad
165       {\small 適当にでっち上げた最低限の実装.}
166     \item \texttt{luajalayout}パッケージ(作者:前田一貴)\\\quad
167       {\small フォント合成・fontspecパッケージを用いた実装.}
168   \end{itemize}
169   は「\LaTeX ベース」,組版の調整機能が不足していた.
170   \end{itemize}
171 \end{frame}
172
173 \begin{frame}
174   \frametitle{開発方針2}
175   \begin{flushleft}
176     \alert{\bfseries\large 
177     p\TeX と100\%の互換性は目指さない.}%
178   \end{flushleft}\vskip-\medskipamount
179   \begin{itemize}
180     \item p\TeX の不都合・不可解な点があれば,積極的に改める.
181     \item p\TeX と全く同じ文法・動作の実装は事実上不可能.
182   \end{itemize}\medskip
183   \begin{flushleft}
184     \alert{\bfseries\large 
185     最終的に,(空白挿入等の)仕様を文書化する.}
186   \end{flushleft}
187 \end{frame}
188
189 \subsection{使い方: plain \TeX}
190 \begin{frame}
191   \frametitle{\only<1>{plain p\TeX 用ソース}\only<2>{``plain Lua\TeX-ja''用ソース}}
192 \begin{flushleft}\ttfamily
193 \only<2>{\alert{|input luatexja.sty} \notice{\% \normalfont Lua\TeX-ja本体}}\ \\
194 |hsize=20\alert{\only<2>{|zw}}\only<1>{zw}\\
195 \only<1>{|font|bigmc=jis at 14.4pt}
196 \alert{\only<2>{|jfont|bigmc=psft:Ryumin-Light:jfm=ujis at14.4pt}}\\
197 \notice{\ \ \% 和文フォント定義}\\
198 こんにちは,|TeX の世界へ!\\
199 \{|bigmc 大きい文字だよ.\}\\
200 |end
201 \end{flushleft}
202 \uncover<2>{
203 \begin{itemize}
204 \item {\tt luatexja.sty}を読み込む{\footnotesize(これがないと話が始まらない)}
205 \item {\tt zw}, {\tt zh}は{\tt |zw}, {\tt |zh}に.
206 \item 和文フォント定義は{\tt |jfont}のみ可.書式も変化.
207 \end{itemize}}
208 \end{frame}
209
210
211 \subsection{使い方: \LaTeX}
212 \begin{frame}
213   \frametitle{p\LaTeX 用ソース}
214 \begin{flushleft}\ttfamily
215 |documentclass[a4paper,10pt]\{\only<1>{jsarticle}\alert{\only<2>{bxjsarticle}}\}\\
216 \alert{\only<2>{|usepackage\{luatexja\}}}\only<1>{\notice{\%}}\\
217 |usepackage\{lmodern\}|begin\{document\}\\
218 「これはまったく意味がない日本語の文だ.」\\
219 (あいう)\{|large|gtfamily(abcゴシック)\}\\
220 \ \\
221 何かalphabet(欧文文字)も打ってみるか.\\
222 \only<1>{\notice{\%}}\only<2>{\$|zeta(2) |simeq}\\
223 \only<2>{\ \ |directlua\{tex.print(math.pi\char`\^2/6)\}\$.}\only<1>{\notice{\%}}\\
224 |end\{document\}
225 \end{flushleft}
226 \uncover<2>{
227 \begin{itemize}
228 \item まだ日本語組版用クラスは用意していない.\\
229 (とりあえず八登さんの\texttt{bxjsarticle}で代用)
230 \end{itemize}
231 }
232 \end{frame}
233
234 \begin{frame}
235   \frametitle{組版結果}
236 \begin{center}
237 \fboxsep=1\zw
238 \fbox{\large\parbox{20\zw}{\parindent=1\zw%
239 \fontfamily{mc}\fontfamily{rm}\selectfont
240 \baselineskip=1.6em
241 「これはまったく意味がない日本語の文だ.」
242 (あいう){\Large\gtfamily(abcゴシック)}
243
244 何かalphabet(欧文文字)も打ってみるか.
245 $\zeta(2) \simeq
246   \directlua{tex.print(math.pi^2/6)}$.
247 }}
248 \end{center}
249 \end{frame}
250
251
252
253 \section{現在の状況}
254
255 \begin{frame}
256   \frametitle{実装の模式図}
257   \begin{center}\unitlength=10mm
258   \begin{picture}(9.2,6.5)
259     \linethickness{1pt}
260     % primitive:
261     \only<1>{%
262     \color{lblue!20!white}
263     \put(0,0){\vrule width 9.2\unitlength height 3.2\unitlength depth 0pt}
264     \put(7.2,3.2){\vrule width 2\unitlength height 3.3\unitlength depth 0pt}
265     \color{lblue}
266     \put(0,0){\line(1,0){9.2}}
267     \put(0,0){\line(0,1){3.2}}
268     \put(9.2,0){\line(0,1){6.5}}
269     \put(0,3.2){\line(1,0){7.2}}
270     \put(7.2,3.2){\line(0,1){3.3}}
271     \put(7.2,6.5){\line(1,0){2}}
272     \color{lblue!50!black}
273     \put(4.6,1.6){\makebox(0,0)[c]{「エンジン拡張」}}
274     }%
275     % primitive (detailed)
276     \only<2>{%
277     %% typesetting
278     \color{linenavy!20!white}
279     \put(0,0){\vrule width 9.2\unitlength height \unitlength depth 0pt}
280     \color{linenavy}
281     \put(0,0){\line(1,0){9.2}}
282     \put(0,0){\line(0,1){1}}
283     \put(0,1){\line(1,0){9.2}}
284     \put(9.2,0){\line(0,1){1}}
285     \color{linenavy!50!black}
286     \put(4.6,0.5){\makebox(0,0)[c]{実際の組版処理用Luaコード}}
287     \color{blue!20!white}
288     \put(0,1.1){\vrule width 9.2\unitlength height \unitlength depth 0pt}
289     \color{blue}
290     \put(0,1.1){\line(1,0){9.2}}
291     \put(0,1.1){\line(0,1){1}}
292     \put(0,2.1){\line(1,0){9.2}}
293     \put(9.2,1.1){\line(0,1){1}}
294     \color{blue!50!black}
295     \put(4.6,1.6){\makebox(0,0)[c]{パラメタ設定用Luaコード}}
296     \color{lblue!20!white}
297     \put(0,2.2){\vrule width 9.2\unitlength height \unitlength depth 0pt}
298     \put(7.2,3.2){\vrule width 2\unitlength height 3.3\unitlength depth 0pt}
299     \color{lblue}
300     \put(0,2.2){\line(1,0){9.2}}
301     \put(0,2.2){\line(0,1){1}}
302     \put(9.2,2.2){\line(0,1){4.3}}
303     \put(0,3.2){\line(1,0){7.2}}
304     \put(7.2,3.2){\line(0,1){3.3}}
305     \put(7.2,6.5){\line(1,0){2}}
306     \color{lblue!50!black}
307     \put(4.6,2.7){\makebox(0,0)[c]{\TeX インターフェース}}
308     }%
309     % plain
310     \color{green!20!white}
311     \put(0,3.3){\vrule width 2\unitlength height 3.2\unitlength depth 0pt}
312     \color{green}
313     \put(0,3.3){\line(1,0){2}}
314     \put(0,3.3){\line(0,1){3.2}}
315     \put(2,3.3){\line(0,1){3.2}}
316     \put(0,6.5){\line(1,0){2}}
317     \color{green!50!black}
318     \put(1,4.9){\makebox(0,0)[c]{\parbox[c]{7\zw}{\centering plain \TeX\\対応}}}
319     % LaTeX kernel
320     \color{purple!20!white}
321     \put(2.1,3.3){\vrule width 5\unitlength height \unitlength depth 0pt}
322     \color{purple}
323     \put(2.1,3.3){\line(1,0){5}}
324     \put(2.1,3.3){\line(0,1){1}}
325     \put(7.1,3.3){\line(0,1){1}}
326     \put(2.1,4.3){\line(1,0){5}}
327     \color{purple!50!black}
328     \put(4.6,3.8){\makebox(0,0)[c]{\LaTeX 対応}}
329     % class file
330     \color{gray!20!white}
331     \put(2.1,4.4){\vrule width 5\unitlength height \unitlength depth 0pt}
332     \color{gray}
333     \put(2.1,4.4){\line(1,0){5}}
334     \put(2.1,4.4){\line(0,1){1}}
335     \put(7.1,4.4){\line(0,1){1}}
336     \put(2.1,5.4){\line(1,0){5}}
337     \color{gray!50!black}
338     \put(4.6,4.9){\makebox(0,0)[c]{日本語用クラスファイル}}
339     % patches for packages
340     \color{red!20!white}
341     \put(2.1,5.5){\vrule width 5\unitlength height \unitlength depth 0pt}
342     \color{red}
343     \put(2.1,5.5){\line(1,0){5}}
344     \put(2.1,5.5){\line(0,1){1}}
345     \put(7.1,5.5){\line(0,1){1}}
346     \put(2.1,6.5){\line(1,0){5}}
347     \color{red!50!black}
348     \put(4.6,6.0){\makebox(0,0)[c]{各種パッケージへの対応}}
349   \end{picture}
350   \end{center}
351 \end{frame}
352
353 \subsection{「エンジン拡張」部分・plain \TeX 対応}
354 \begin{frame}
355   \frametitle{「エンジン拡張」部分・plain \TeX 対応}
356   \begin{flushleft}
357     \large\bfseries
358     \color{linenavy!50!black}概ね実装完了,テスト段階.
359   \end{flushleft}\vskip-\medskipamount
360   \begin{itemize}
361     \item 和文フォントの(欧文フォントとの)独立管理
362     \item 和文文字間・和欧文間の空白挿入
363     \item 禁則処理用のペナルティ挿入
364     \item 欧文・和文のベースライン上下移動
365     \item 和文文字直後の改行での空白挿入抑制\alert{(限定的)}
366     \item \alert{縦書き関連はまだ}
367   \end{itemize}
368   しかし,細かい仕様変更はまだ行う可能性はある.
369 \end{frame}
370
371 \subsection{\LaTeX 対応}
372 \begin{frame}
373   \frametitle{\LaTeX 対応}
374   \begin{flushleft}
375     \large\bfseries
376     \color{purple!50!black}(横組みに関する)大半のp\LaTeXe 拡張を実装.
377   \end{flushleft}\vskip-\medskipamount
378   \begin{itemize}
379     \item 和文フォントの管理(\texttt{plfonts.dtx}相当)
380     \item \LaTeX カーネルへのパッチ(\texttt{plcore.dtx}相当)\\
381     但し,次の変更はomitした:
382     \begin{itemize}
383       \item ボトムフロートの出力順序
384       \item 脚注マクロ
385     \end{itemize}
386     \item \alert{クラスファイルの方針は未決定}\\
387     現時点では,BXjsclsを用いるのが手っ取り早い.
388   \end{itemize}
389 \end{frame}
390
391
392 \subsection{fontspec等への対応}
393
394 \begin{frame}[fragile]
395   \frametitle{fontspec等への対応}
396 \noindent\textbf{fontspec対応}
397 \begin{itemize}
398 \item \verb+luatexja-fontspec+パッケージを使用する.
399 \item 和文フォント用命令は\verb+\setmainjfont+のように「j」がつく.
400 \end{itemize}
401
402 \noindent\textbf{OTFパッケージの機能}
403 \begin{itemize}
404 \item \verb+luatexja-otf+パッケージを使用する.
405 \item 例:「\verb+\CID{8705}と高+」→\quad\CID{8705}と高
406 \item \verb+\CID+, \verb+\UTF+と,\texttt{ajmacros.sty}の一部機能が実装.
407 \end{itemize}
408
409 \end{frame}
410
411 \section{p\TeX との主要な変更点}
412
413 \subsection{命令名称・書式}
414 \def\.#1{{\rm\fontshape{it}\selectfont$\langle$#1$\rangle$}}
415 \begin{frame}
416 \frametitle{命令名称の変更}
417 {\large 殆どの組版パラメタは\texttt{|ltjsetparameter}にkey-valueリストを渡すことで設定.}
418
419 \medskip
420 \begin{tabular}{cll}
421 \toprule
422 \multicolumn{2}{l}{\bf 和欧文間空白}\\
423 \hskip1\zw代入&\tt
424 |ltjsetparameter\{xkanjiskip=\.{length}\}\\
425 \hskip1\zw取得&\tt
426 |ltjgetparameter\{xkanjiskip\}\sf\ (as string)\\\midrule
427 \multicolumn{2}{l}{\bf 禁則用ペナルティ\hss}\\
428 \hskip1\zw代入&\tt
429 |ltjsetparameter\{\\
430 &\tt\hskip2emprebreakpenalty=\{\.{chr\_code},\.{penalty}\}\}\\
431 \hskip1\zw取得&\tt
432 |ltjgetparameter\\
433 &\tt\hskip2em\{prebreakpenalty\}\{\.{chr\_code}\}\sf\ (as string)\\
434 \bottomrule
435 \end{tabular}
436
437 \end{frame}
438
439 \begin{frame}[fragile]
440 \frametitle{和文フォントの指定方法}
441
442 \begin{flushleft}
443 \tt\Large |jfont|piyo=\textcolor{green}{psft:GothicBBB-Medium}\\
444 \hskip5em:\textcolor{blue}{jfm=ujis};...\ \textcolor{red}{at 20pt}
445 \end{flushleft}
446
447 和文フォントは,次の3要素の組である:
448 \begin{description}[metric]\def\makelabel#1{\hbox to \labelwidth{\bf#1}}
449 \item[\textcolor{green}{字形}]
450   OpenType/TrueTypeフォントも可.\\
451   prefix \texttt{psft:}で非埋込フォントを指定可能.
452 \item[\textcolor{blue}{metric}] p\TeX のJFMに相当.\verb+jfm-ujis.lua+に格納.
453 \item[\textcolor{red}{サイズ}]\ 
454 \end{description}
455
456 \end{frame}
457
458 \subsection{空白挿入処理}
459
460 \newdimen\bx\bx=3.2pt
461 \newdimen\by
462 \makeatletter
463 \def\fw#1#2#3#4#5{\fboxsep0pt\vtop{\centering\by=#3\bx\hsize=\by
464   \leavevmode\fcolorbox{#4}{#4!25!white}{%
465   \hbox to\by{\fontsize{\by}{\by}\selectfont\color{black}%
466   \inhibitglue#1\inhibitglue}}\par\vskip5pt#2\par#5}\ignorespaces}
467 \def\hw#1#2#3#4#5{\fboxsep0pt\vtop{\centering\by=#3\bx\hsize=0.5\by
468   \leavevmode\fcolorbox{#4}{#4!25!white}{%
469   \hbox to0.5\by{\fontsize{\by}{\by}\selectfont\color{black}%
470   \inhibitglue#1\inhibitglue}}\par\vskip5pt#2\par#5}\ignorespaces}
471 \def\spc#1#2{\fboxsep0pt\vtop{\centering\by=#1\bx\hsize=0.5\by
472   \leavevmode\color{#2}\vrule width 0.5\by height 2pt depth 2pt}\ignorespaces}
473 \def\bar{\vrule width 0.4pt height 5pt depth 5pt}
474
475 \begin{frame}
476 \frametitle{空白挿入の単位:\only<1>{p\TeX}\only<2>{\alert{Lua\TeX-ja}}の場合}
477
478 \textbf{入力例:\quad}{\large\tt
479 \textcolor{green}{$\underbracket{\mathstrut\hbox{)\{\}(}}_{\scriptstyle 1}$}%
480 \textcolor{blue}{$\underbracket{\mathstrut\hbox{)|typeout\{\}(}}_{\scriptstyle 2}$}%
481 \textcolor{red}{$\underbracket{\mathstrut\hbox{)\{|gt (}}_{\scriptstyle 3}$}\}}
482
483 \begin{center}
484 \vskip-\bigskipamount
485 \leavevmode\bx=3.6pt
486 \only<1>{%
487 \hw{\fontfamily{mc}\selectfont )}{jis}{10}{green}{\ }
488 \spc{10}{green}\bar
489 \spc{10}{green}
490 \hw{\fontfamily{mc}\selectfont (}{jis}{10}{green}{}
491 \hw{\fontfamily{mc}\selectfont )}{jis}{10}{blue}{}
492 \spc{10}{blue}
493 \hw{\hss\setbox0=\hbox{\rotatebox{270}{\small whatsit}}\raise.5\dp0\copy0\hss}{}{10}{blue}{}
494 \spc{10}{blue}
495 \hw{\fontfamily{mc}\selectfont (}{jis}{10}{blue}{}
496 \hw{\fontfamily{mc}\selectfont )}{jis}{10}{red}{}
497 \spc{10}{red}\bar
498 \spc{10}{red}
499 \hw{(}{jisg}{10}{red}{}
500 }%
501 \only<2>{%
502 \hw{\fontfamily{mc}\selectfont )}{ujis}{10}{green}{R}
503 \spc{10}{green}
504 \hw{\fontfamily{mc}\selectfont (}{ujis}{10}{green}{R}
505 \hw{\fontfamily{mc}\selectfont )}{ujis}{10}{blue}{R}
506 \hw{\hss\setbox0=\hbox{\rotatebox{270}{\small whatsit}}\raise.5\dp0\copy0\hss}{}{10}{blue}{}
507 \spc{10}{blue}
508 \hw{\fontfamily{mc}\selectfont (}{ujis}{10}{blue}{R}
509 \hw{\fontfamily{mc}\selectfont )}{ujis}{10}{red}{R}
510 \spc{10}{red}
511 \hw{(}{ujis}{10}{red}{G}
512 }
513 \end{center}
514
515 \vskip-\medskipamount
516 \vbox to 5\baselineskip{%
517 \only<1>{
518 \alert{入力ソース中で連続していなければ,空白挿入処理は分断.}\\
519 元来の\TeX でも,{\tt of\{\}fice}では合字は抑制される.
520 }%
521 \only<2>{
522 \begin{enumerate}
523 \item \alert{水平リスト内に寄与しないものは無視}\\
524  Lua\TeX でも,{\tt of\{\}fice}では合字は抑制されない
525 \item 行分割に影響しないものも無視
526 \item 例え\textcolor{green}{字形}が異なっても,
527 \textcolor{blue}{metric}と\textcolor{red}{サイズ}が同じならば,
528 空白挿入処理では同じフォントとして扱われる
529 \end{enumerate}
530 }}
531 \end{frame}
532
533 \begin{frame}
534 \frametitle{異フォントの文字:p\TeX の場合}
535
536 \pTeX では,異なるフォントの文字間には,\\
537 両者のJFM由来の空白が(両方別々に)入る:
538
539 \medskip
540
541 \leavevmode
542 \vtop{\parindent=0pt\hsize=40pt\ \par\vskip5pt JFM\par size}
543 \fw{\fontfamily{mc}\selectfont あ}{jis}{10}{green}{10}
544 \hw{\fontfamily{mc}\selectfont 〗}{\textcolor{green}{jis}}{10}{green}{10}
545 \spc{10}{green}\bar\spc{10}{blue}
546 \hw{〖}{\textcolor{blue}{jisg}}{10}{blue}{10}
547 \fw{い}{jisg}{10}{blue}{10}
548 \hw{】}{jisg}{10}{blue}{\textcolor{blue}{10}}
549 \spc{10}{blue}\bar\spc{14.4}{red}
550 \hw{【}{jisg}{14.4}{red}{\textcolor{red}{14.4}}
551 \fw{う}{jisg}{14.4}{red}{14.4}
552
553 \begin{itemize}
554 \item \leavevmode
555 \smash{\spc{10}{green}\bar\spc{10}{blue}\hskip7.04pt}%
556 :$\textcolor{green}{5\,\textrm{pt\footnotesize (左側由来)}}
557 +\textcolor{blue}{5\,\text{pt\footnotesize (右側由来)}}=10\,\text{pt}$
558 \item \leavevmode
559 \smash{\spc{10}{blue}\bar\spc{14.4}{red}}%
560 :$\textcolor{blue}{5\,\textrm{pt\footnotesize (左側由来)}}
561 +\textcolor{red}{7.2\,\text{pt\footnotesize (右側由来)}}=12.2\,\text{pt}$
562 \end{itemize}
563 \end{frame}
564 \begin{frame}
565 \frametitle{異フォントの文字:\alert{Lua\TeX-ja} の場合}
566
567 Lua\TeX-jaにおいて,異なるフォントの文字間には,\\
568 両者のmetric由来の空白の\alert{平均}値が入る{\small(設定で変更可)\inhibitglue\hbox{}}:
569
570 \medskip
571
572
573 \leavevmode
574 \vtop{\parindent=0pt\hsize=40pt\ \par\vskip5pt metric\par size}
575 \fw{\fontfamily{mc}\selectfont あ}{ujis$'$}{10}{green}{10}
576 \hw{\fontfamily{mc}\selectfont〗}{\textcolor{green}{ujis$'$}}{10}{green}{10}
577 \spc{10}{green!50!blue}
578 \hw{〖}{\textcolor{blue}{ujis}}{10}{blue}{10}
579 \fw{い}{ujis}{10}{blue}{10}
580 \hw{】}{ujis}{10}{blue}{\textcolor{blue}{10}}
581 \spc{12.2}{purple}
582 \hw{【}{ujis}{14.4}{red}{\textcolor{red}{14.4}}
583 \fw{う}{ujis}{14.4}{red}{14.4}
584
585 \begin{itemize}
586 \item \leavevmode
587 \smash{\spc{10}{blue!50!green}\hskip3.52pt}%
588 :$(\textcolor{green}{5\,\textrm{pt\footnotesize (左側由来)}}
589 +\textcolor{blue}{5\,\text{pt\footnotesize (右側由来)}})/2=5\,\text{pt}$
590 \item \leavevmode
591 \smash{\spc{12.2}{purple}}%
592 :$(\textcolor{blue}{5\,\textrm{pt\footnotesize (左側由来)}}
593 +\textcolor{red}{7.2\,\text{pt\footnotesize (右側由来)}})/2=6.1\,\text{pt}$
594 \end{itemize}
595 \end{frame}
596
597 \subsection{注意}
598 \begin{frame}[fragile]
599 \frametitle{和文文字直後の改行}
600 {\bf\large Lua\TeX の仕様により,ad hocな実装}
601
602 \medskip
603 改行による空白が抑制されるかは,\\
604 \alert{その行を入力から読み込む前}の内部状態で決まる.
605
606 \bigskip
607 \textbf{入力例}:\hskip2\zw\unitlength=1\zw
608 {\color{green}\begin{picture}(0,0)\thicklines\put(0,0.38){\vector(0,-1){1.1}}\end{picture}%
609 \inhibitglue「ひらがな他を欧文扱いにする」}
610 \fbox{\vbox{\tt
611 {\color{green}|ltjsetparameter\{jacharrange=\{-6\}\}}xあ\\
612 y
613 }}
614
615 →出力は「xy」となる(\alert{行末空白は入らない}).
616
617 ∵1行目を入力から読み込む時点で,「あ」は和文文字扱い.
618 \end{frame}
619 \section*{まとめ}
620 \begin{frame}
621 \frametitle{まとめ}
622 \large Lua\TeX-ja は,
623 \begin{itemize}
624 \item 日本語組版をLua\TeX 上で行うパッケージ.
625 \item p\TeX をかなり意識しているが,\\ 100\% 互換とはならない.
626 \item \LaTeX, fontspec用コードが試験的に整備され,ある程度は使える.
627 しかし,バグが埋まっている可能性ありなので,使用には注意.
628 \end{itemize}
629 \end{frame}
630
631
632 \begin{frame}
633 \frametitle{Lua\TeX-ja プロジェクトについて}
634 \begin{itemize}
635 \item \textbf{公式ページ}\\
636 \url{http://sourceforge.jp/projects/luatex-ja/wiki/FrontPage}
637 \item まだ安定版のリリースはない.\\スナップショットがダウンロード可能.
638 \item \textbf{開発メンバー}
639 \begin{itemize}
640 \item 北川 弘典
641 \item 前田 一貴
642 \item 八登 崇之
643 \item 黒木 裕介
644 \item 阿部 紀行
645 \item 本田 知亮
646 \item 山本 宗宏
647 \end{itemize}
648 \end{itemize}
649 \end{frame}
650 \end{document}