2 \documentclass[a4paper,titlepage]{article}
3 \usepackage{amsmath,amssymb,xcolor,pict2e}
4 \usepackage{booktabs,listings,lltjlisting,showexpl}
6 %\usepackage{luatexja-fontspec}
7 \usepackage[margin=20mm]{geometry}
8 \usepackage[unicode=true]{hyperref}
10 \title{The Lua\TeX-ja package}
11 \author{The Lua\TeX-ja project team}
15 basicstyle=\ttfamily\small, pos=o, breaklines=true,
16 numbers=none, rframe={}
20 \def<#1>{{\normalfont\itshape$\langle$#1$\rangle$}}
28 {\Large\bf This documentation is far from complete. It may have many
32 \section{Introduction}
34 The Lua\TeX-ja package is a macro package for typesetting high-quality
35 Japanese documents in Lua\TeX.
37 \subsection{Backgrounds}
38 Traditionally, ASCII p\TeX, an extension of \TeX, and its derivatives
39 are used to typeset Japanese documents in \TeX. p\TeX is an engine
40 extension of \TeX: so it can produce high-quality Japanese documents
41 without using very complicated macros. But this point is a mixed
42 blessing: p\TeX\ is left behind from other extensions of \TeX,
43 especially $\varepsilon$-\TeX\ and pdf\TeX, and from changes about
44 Japanese processing in computers (\textit{e.g.}, the UTF-8 encoding).
46 Recently the extensions of p\TeX, namely up\TeX\ (Unicode-implementation
47 of p\TeX) and $\varepsilon$-p\TeX\ (Merging of p\TeX and
48 $\varepsilon$-\TeX\ extension), have developed to fill those gap to some
49 extent, but gaps are still exist.
51 However, the appearance of Lua\TeX\ changed the whole situation. With
52 using Lua `callbacks', users can customize the internal processing of
53 Lua\TeX. So there is no need to modify sources of the \TeX\ engine to
54 support Japanese typesetting: to do this, we only have to write Lua
55 script for appropriate callbacks.
58 \subsection{Major Changes from p\TeX}
59 The Lua\TeX-ja package is much influenced by p\TeX\ engine. The initial
60 target of development was to implement features of p\TeX. However,
61 \emph{Lua\TeX-ja is not a just porting of p\TeX: Unnatural
62 specifications/behaviors of p\TeX\ were not adopted}.
64 The followings are major changes from p\TeX:
66 \item Japanese fonts are a tuple of a `real' font, a Japanese font
67 metric (\textbf{JFM}, for short), and an optional string called
70 \item In p\TeX, a linebreak after Japanese character is ignored (and
71 doesn't yield a space), since Japanese texts can linebreak almost
72 everywhere. However, Lua\TeX-ja doesn't have this function
73 completely, because of a specification of Lua\TeX.
74 \item The insertion process of glues/kerns between two Japanese
75 characters and between a Japanese character and other characters
76 (we refer these glues/kerns as \textbf{JAglue}) is rewritten from
80 \item As Lua\TeX's internal character handling is `node-based'
81 (\textit{e.g.}, \verb+of{}fice+ doesn't prevent ligatures), the
82 insertion process of \textbf{JAglue} is now `node-based'.
83 \item Furthermore, nodes between two characters which have no effects in
84 linebreak (\textit{e.g.}, \verb+\special+ node) are ignored in the
86 \item In the process, two Japanese fonts which differ in their `real'
87 fonts only are identified.
89 \item At the present, vertical typesetting (\textit{tategaki}), is not
90 supported in Lua\TeX-ja.
93 For detailed information, see Part~\ref{part-imp}.
95 \subsection{Notations}
96 In this document, the following terms and notations are used:
98 \item Characters are divided into two types:
100 \item \textbf{JAchar}: standing for Japanese characters such as
101 Hiragana, Katakana, Kanji and other punctuation marks for
103 \item \textbf{ALchar}: standing for all other characters like alphabets.
105 \item A word in sans-serif font (like \textsf{prebreakpenalty})
106 represents an internal parameter for Japanese typesetting, and it
107 is used as a key in \verb+\ltjsetparameter+ command.
108 \item The word ``primitive'' is used not only for primitives in Lua\TeX,
109 but also for control sequences that defined in the core module of
113 \subsection{About the project}
114 \paragraph{Project Wiki} \url{http://sourceforge.jp/projects/luatex-ja/wiki/FrontPage%28en%29}
116 This project is hosted by SourceForge.JP.
128 \section{Getting Started}
129 \subsection{Installation}
130 To install the Lua\TeX-ja\ package, you will need:
132 \item Lua\TeX, version 0.65.0-beta or later.\\
133 If you are using \TeX~Live\ 2011 or W32\TeX, you don't have to worry.
134 \item The source archive of Lua\TeX-ja, of course{\tt:)}
137 The installation methods are as follows:
139 \item Download the source archive.
141 At the present, Lua\TeX-ja has no official release, so you have to retrieve
142 the archive from the repository.
143 You can retrieve the Git repository via
145 $ git clone git://git.sourceforge.jp/gitroot/luatex-ja/luatexja.git
147 or download the archive of HEAD in the master branch from
149 \url{http://git.sourceforge.jp/view?p=luatex-ja/luatexja.git;a=snapshot;h=HEAD;sf=tgz}.
151 \item Extract the archive. You will see {\tt src/} and several other sub-directories.
152 \item Copy all the contents of {\tt src/} into one of your \texttt{TEXMF} tree.
153 \item If {\tt mktexlsr} is needed to update the filename database, make it so.
156 \subsection{Cautions}
158 \item The encoding of your source file must be UTF-8.
159 \item conflicts with unicode-math
162 \subsection{Using in plain \TeX}
163 To use Lua\TeX-ja in plain \TeX, simply put the following at the beginning of the document:
168 This does the minimal setting (like {\tt ptex.tex}) for typesetting Japanese documents:
170 \item The following 6 Japanese fonts are preloaded.
172 \begin{tabular}{ccccc}
174 \textbf{classification}&\textbf{font name}&\textbf{13.5\,Q}&\textbf{9.5\,Q}&\textbf{7\,Q}\\\midrule
175 \textit{mincho}&Ryumin-Light &\verb+\tenmin+&\verb+\sevenmin+&\verb+\fivemin+\\
176 \textit{gothic}&GothicBBB-Medium&\verb+\tengt+ &\verb+\sevengt+ &\verb+\fivegt+\\
181 \item The `Q' is an unit used in Japanese phototypesetting, and
182 $1\,\textrm{Q}=0.25\,\textrm{mm}$. This length is stored in a
183 dimension \verb+\jQ+.
185 \item It is widely accepted that the font `Ryumin-Light' and
186 `GothicBBB-Medium' aren't embedded into PDF files, and the PDF
187 reader substitutes them by some external Japanese font. We adopt
188 this custom to the default setting.
191 \item A character in Unicode is treated as \textbf{JAchar} if and only
192 if its code-point has more than or equal to U+0100.
193 \item The amount of glue that are inserted between \textbf{JAchar} and
194 \textbf{ALchar} (the parameter \textsf{xkanjiskip}) is set to
196 0.25\,\hbox{\verb+\zw+}^{+1\,\text{pt}}_{-1\,\text{pt}} = \frac{27}{32}\,\mathrm{mm}^{+1\,\text{pt}}_{-1\,\text{pt}}.
198 Here \verb+\zw+ is a counterpart of \texttt{em} for Japanese fonts, that is, the length of `full-width' in the current Japanese font.
202 \subsection{Using in \LaTeX}
204 Using in \LaTeXe\ is basically same. To set up the minimal environment
205 for Japanese, you only have to load {\tt luatexja.sty}:
207 \usepackage{luatexja}
209 It also does the minimal setting (the counterpart in p\LaTeX\ is {\tt
210 plfonts.dtx} and {\tt pldefs.ltx}):
213 \item {\tt JY3} is used as the font encoding for Japanese fonts (in horizontal direction).\\
214 If vertical typesetting is supported by Lua\TeX-ja, {\tt JT3} will be used for vertical fonts.
215 \item Two font families {\tt mc} and {\tt gt} are defined:
217 \begin{tabular}{ccccc}
219 \textbf{classification}&\textbf{family}&\verb+\mdseries+&\verb+\bfseries+&\textbf{scale}\\\midrule
220 \textit{mincho}&\tt mc&Ryumin-Light &GothicBBB-Medium&0.960444\\
221 \textit{gothic}&\tt gt&GothicBBB-Medium&GothicBBB-Medium&0.960444\\
225 \item Japanese characters in math mode are typeset by the font family {\tt mc}.
228 However, the above setting is not sufficient for Japanese-based documents. To do this,
229 You are better to use class files other than {\tt article.cls}, {\tt book.cls}, ...
230 The better alternatives are:
233 \item ltjarticle, ltjbook?
234 \item ltjsarticle, ltjsbook?
237 \subsection{Changing Fonts}
238 \paragraph{Remark: Japanese Characters in Math Mode}
239 Since p\TeX\ supports Japanese characters in math mode, there are
240 sources like the following:
243 $f_{高温}$~($f_{\text{high temperature}}$).
244 \[ y=(x-1)^2+2\quad{}よって\quad y>0 \]
245 $5\in{}素:=\{\,p\in\mathbb N:\text{$p$ is a prime}\,\}$.
247 We (the project members of Lua\TeX-ja) think that using
248 Japanese characters in math mode are allowed if these are used as identifiers.
249 In this point of view,
251 \item The lines 1~and~2 above are not correct, since `高温' in above is used as a textual label, and
252 `よって' is used as a conjunction.
253 \item However, the line~3 is correct, since `素' is used as an identifier.
256 Hence, in our opinion, the above input should be corrected as:
259 ($f_{\text{high temperature}}$).
261 \mathrel{\text{よって}}\quad y>0 \]
262 $5\in{}素:=\{\,p\in\mathbb N:\text{$p$ is a prime}\,\}$.
264 %BUG?: \{\}がなければ「素」がでない.上の段落の「よって」もでてない.
269 In this chapter, we don't describe how to change Japanese fonts in
270 math mode. For the method, please see Part~\ref{part-ref}.
273 \paragraph{plain \TeX}
274 To change Japanese fonts in plain \TeX, you must use the primitive
275 \verb+\jfont+. So please see Part~\ref{part-ref}.
279 For \LaTeXe, Lua\TeX-ja simply adopted font selection system from that
280 of p\LaTeXe\ (in: {\tt plfont.dtx}).
282 \item Two control sequences \verb+\mcdefault+ and \verb+\gtdefault+ are
283 used to specify the default font family for \textit{mincho} and
284 \textit{gothic}, respectively.
285 \item Commands \verb+\fontfamily+, \verb+\fontseries+,
286 \verb+\fontshape+ and \verb+\selectfont+ can be used to change
287 attributes of Japanese fonts.
289 \begin{tabular}{ccccc}
291 &\textbf{encoding}&\textbf{family}&\textbf{series}&\textbf{shape}\\\midrule
293 &\verb+\romanencoding+&\verb+\romanfamily+&\verb+\romanseries+&\verb+\romanshape+\\
295 &\verb+\kanjiencoding+&\verb+\kanjifamily+&\verb+\kanjiseries+&\verb+\kanjishape+\\
296 both&---&--&\verb+\fontseries+&\verb+\fontshape+\\
297 auto select&\verb+\fontencoding+&\verb+\fontfamily+&---&---\\
301 \item For defining a Japanese font family, use \verb+\DeclareKanjiFamily+
302 instead of \verb+\DeclareFontFamily+.
306 To use with \texttt{fontspec} package, it is needed to load
307 \texttt{luatexja-fontspec} package in the preamble. This additional
308 package automatically loads \texttt{luatexja} and \texttt{fontspec}
311 In \texttt{luatexja-fontspec} package, the following 4 commands are defined as
312 counterparts of original commands in \texttt{fontspec}:
314 \begin{tabular}{ccccc}
317 &\verb+\jfontspec+&\verb+\setmainjfont+&\verb+\setsansjfont+&\verb+\newjfontfamily+\\
319 &\verb+\fontspec+&\verb+\setmainfont+&\verb+\setsansfont+&\verb+\newfontfamily+\\
324 Note that there is no command named \verb+\setmonojfont+, since it is
325 popular for Japanese fonts that (nearly) all Japanese glyphs have the same width.
328 \section{Changing Parameters}
329 There are many parameters in Lua\TeX-ja. And due to the implementation,
330 most of them were not stored as internal register of \TeX, but as an
331 original storage system in Lua\TeX-ja. Hence, to change or recall those
332 parameters, you have to use commands \verb+\ltjsetparameter+ and
333 \verb+\ltjgetparameter+.
335 \subsection{Editing the range of \textbf{JAchar}}
336 As noted before, the default setting is:
338 A character in Unicode is treated as \textbf{JAchar} if and only if its
339 code-point has more than or equal to U+0100.
341 $\uparrow$ TODO: CHANGE THIS!
347 \subsection{\textsf{kanjiskip} and \textsf{xkanjiskip}}\label{subs-kskip}
348 \textbf{JAglue} is divided into the following three categories:
350 \item Glues/kerns specified in JFM. If \verb+\inhibitglue+ is issued,
351 this glue will be not inserted.
352 \item The default glue which inserted between two \textbf{JAchar}s ({\sf
354 \item The default glue which inserted between a \textbf{JAchar} and an
355 \textbf{ALchar} (\textsf{xkanjiskip}).
357 The value (a skip) of \textsf{kanjiskip} or \textsf{xkanjiskip} can be
358 changed as the following.
360 \ltjsetparameter{kanjiskip={0pt plus 0.4pt minus 0.4pt},
361 xkanjiskip={0.25\zw plus 1pt minus 1pt}}
365 It may occur that JFM contains the data of `ideal width of {\sf
366 kanjiskip}' and/or `ideal width of \textsf{xkanjiskip}'.
367 To use these data from JFM, set the value of \textsf{kanjiskip} or
368 \textsf{xkanjiskip} to \verb+\maxdimen+.
370 \subsection{Insertion Setting of \textsf{xkanjiskip}}
371 It is not desirable that \textsf{xkanjiskip} is inserted between every
372 boundary between \textbf{JAchar} and \textbf{ALchar}. For example,
373 \textsf{xkanjiskip} should not be inserted after opening parenthesis
374 (\textit{e.g.}, compare `(あ' and `(\hskip\ltjgetparameter{xkanjiskip}あ').
376 Lua\TeX-ja can control whether \textsf{xkanjiskip} can be inserted
377 before/after a character, by using \textsf{jaxspmode} and
378 \textsf{alxspmode} parameters.
380 \ltjsetparameter{jaxspmode={`あ,preonly}, alxspmode={`\!,postonly}}
384 The second argument {\tt preonly} means `the insertion of
385 \textsf{xkanjiskip} is allowed before this character, but not after'.
386 the other possible values are {\tt postonly}, {\tt allow} and {\tt
389 If you want to enable/disable all insertion of \textsf{kanjiskip} and
390 \textsf{xkanjiskip}, set \textsf{autospacing} and \textsf{autoxspacing}
391 parameters to {\tt false}, respectively.
394 \subsection{Shifting Baseline}
395 To make a match between a Japanese font and an alphabetic font, sometimes
396 the shifting of baseline of one of the pair. In p\TeX, this is achieved
397 by setting \verb+\ybaselineshift+ to a non-zero length (the
398 baseline of alphabetic fonts is shifted below). However, for documents
399 whose main language is not Japanese,it is good to shift the baseline of
400 Japanese fonts, but not that of alphabetic fonts.
401 Because of this, Lua\TeX-ja can be independently set the shifting amount
402 of the baseline of alphabetic fonts (\textsf{yalbaselineshift}
403 parameter) and that of Japanese fonts (\textsf{yjabaselineshift}
407 \vrule width 150pt height 0.4pt depth 0pt\hskip-120pt
408 \ltjsetparameter{yjabaselineshift=0pt, yalbaselineshift=0pt}abcあいう
409 \ltjsetparameter{yjabaselineshift=5pt, yalbaselineshift=2pt}abcあいう
412 Here the horizontal line in above is the baseline of a line.
414 There is an interesting side-effect from that the baseline of
415 Japanese fonts can be shifted: characters in different size can be
416 vertically aligned center in a line, by setting two parameters appropriately.
421 \ltjsetparameter{yjabaselineshift=-1pt,
422 yalbaselineshift=-1pt}
428 \subsection{`tombow'}
429 `tombow' is a mark for indicating 4~corners and horizontal/vertical
430 center of the paper. p\LaTeX and this Lua\TeX-ja support `tombow' by
431 their kernel. The following steps are needed to typeset tombow:
434 \item First, define the banner which will be printed at the upper left
435 of the paper. This is done by assigning a token list to
436 \verb+\@bannertoken+.
438 For example, the following sets banner as `{\tt filename (2012-01-01 17:01)}':
442 \hour\time \divide\hour by 60 \@tempcnta\hour \multiply\@tempcnta 60\relax
443 \minute\time \advance\minute-\@tempcnta
445 \jobname\space(\number\year-\two@digits\month-\two@digits\day
446 \space\two@digits\hour:\two@digits\minute)}%
453 \part{Reference}\label{part-ref}
454 \section{Font Metric and Japanese Font}
455 \subsection{\texttt{\char92jfont} primitive}
458 \subsection{Structure of JFM file}
459 A JFM file is a Lua script which has only one function call:
461 luatexja.jfont.define_jfm { ... }
463 Real data are stored in the table which indicated above by
464 \verb+{ ... }+. So, the rest of subsection are devoted to describe the
465 structure of this table. Note that all lengths in a JFM file are
466 floating-point numbers in design-size unit.
468 \begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}}
469 \item[dir=<direction>] (required)
471 The direction of JFM. At the present, only \texttt{'yoko'} is supported.
473 \item[zw=<length>] (required)
475 The amount of the length of the `full-width.
477 \item[zh=<length>] (required)
479 \item[kanjiskip=\{<natural>, <stretch>, <shrink>\}] (optional)
481 This field specifies the `ideal' amount of \textsf{kanjiskip}. As noted
482 in Subsection~\ref{subs-kskip}, if \textsf{kanjiskip} is
483 \verb+\maxdimen+, the value specified in this field is used
484 (if this field is not specified in JFM, 0\,pt is
485 used). Note that <stretch> and <shrink> fields are in
486 design-size unit too.
489 \item[xkanjiskip=\{<natural>, <stretch>, <shrink>\}] (optional)
491 Like the \texttt{kanjiskip} field, this field specifies the `ideal'
492 amount of \textsf{xkanjiskip}.
496 Besides from above fields, a JFM file have several sub-tables those
497 indices are natural numbers. The table indexed by~$i\in\omega$ stores
498 informations of `character class'~$i$. At least, the character class~0 is
499 always present, so each JFM file must have a sub-table whose index is
500 \texttt{[0]}. Each sub-table (its numerical index is denoted by $i$) has
501 the following fields:
503 \begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}}
504 \item[chars=\{<character>, ...\}] (required except character class~0)
506 This field is a list of \textbf{JAchar}s which are in this character
507 type~$i$. This field is not required if $i=0$, since all
508 \textbf{JAchar} which are not in any character class other
509 than 0 (hence, the character class~0 contains most of
510 \textbf{JAchar}s). In the list, a \textbf{JAchar} can be
511 specified by its code number, or by the character itself
512 (as a string of length~1).
514 In addition to those `real' characters, the following `imaginary
515 characters' can be specified in the list:
517 \item[width=<length>, height=<length>, depth=<length>, italic=<length>]\
519 Specify width of characters in character class~$i$, height, depth and
520 the amount of italic correction. These fields are required.
523 \item[left=<length>, down=<length>, align=<align>]\
525 These are for adjusting the position of the `real' glyph. Legal
526 values of \texttt{align} field are \texttt{'left'},
527 \texttt{'middle'} and \texttt{'right'}. If one of these
528 3~fields are omitted, \texttt{left} and \texttt{down} are
529 treated as~0, and \texttt{align} field is treated as
531 The effects of these 3~fields are indicated in Figure~\ref{fig-pos}.
533 In most cases, \texttt{left} and \texttt{down} fields are~0, while
534 it is not uncommon that the \texttt{align} field is \texttt{'middle'} or \texttt{'right'}.
535 For example, setting the \texttt{align} field to \texttt{'right'} is practically needed
536 when the current character class is the class for opening delimiters'.
538 \begin{minipage}{0.4\textwidth}%
539 \begin{center}\unitlength=10pt\small
540 \begin{picture}(15,12)(-1,-4)
541 \color{black!10!white}% real glyph :step1
542 \put(0,0){\vrule width 12\unitlength height 8\unitlength depth 3\unitlength}
544 \color{red!20!white}% real glyph :step1
545 \put(-1,-1.5){\vrule width 6\unitlength height 7\unitlength depth 2.5\unitlength}
547 \color{red}% real glyph
549 \put(-1,-1.5){\vector(0,1){7}\vector(0,-1){2.5}\vector(1,0){6}}
550 \put(5,-1.5){\line(0,1){7}\line(0,-1){2.5}}
551 \put(-1,5.5){\line(1,0){6}}
552 \put(-1,-4){\line(1,0){6}}
554 \color{green!20!white}% real glyph :step1
555 \put(3,0){\vrule width 6\unitlength height 7\unitlength depth 2.5\unitlength}
557 \color{black}% real glyph :step1
559 \put(0,0){\vector(0,1){8}\line(0,-1){3}\vector(1,0){12}}
560 \put(12,0){\line(0,1){8}\vector(0,-1){3}}
561 \put(0,8){\line(1,0){12}}
562 \put(0,-3){\line(1,0){12}}
563 \put(0.2,4){\makebox(0,0)[l]{\texttt{height}}}
564 \put(12.2,-1.5){\makebox(0,0)[l]{\texttt{depth}}}
565 \put(6,0.2){\makebox(0,0)[b]{\texttt{width}}}
567 \color{green!50!black}% real glyph :step1
569 \put(3,0){\vector(0,1){7}\vector(0,-1){2.5}\vector(1,0){6}}
570 \put(9,0){\line(0,1){7}\line(0,-1){2.5}}
571 \put(3,7){\line(1,0){6}}
572 \put(3,-2.5){\line(1,0){6}}
574 \savebox{\eqdist}(0,0)[b]{%
576 \put(-0.08,0.2){\line(0,-1){0.4}}%
577 \put(0.08,0.2){\line(0,-1){0.4}}}
578 \put(1.5,0){\usebox{\eqdist}}
579 \put(10.5,0){\usebox{\eqdist}}
581 \color{blue}% shifted
583 \put(3,-1.5){\vector(-1,0){4}}
584 \put(1,-1.7){\makebox(0,0)[t]{\texttt{left}}}
585 \put(3,0){\vector(0,-1){1.5}}
586 \put(3.2,-0.75){\makebox(0,0)[l]{\texttt{down}}}
590 \begin{minipage}{0.6\textwidth}%
591 Consider a node containing Japanese character whose value of the \texttt{align}
592 field is \texttt{'middle'}.
594 \item The black rectangle is a frame of the node.
595 Its width, height and depth are specified by JFM.
596 \item Since the \texttt{align} field is \texttt{'middle'},
597 the `real' glyph is centered horizontally (the green rectangle).
598 \item Furthermore, the glyph is shifted according to values of fields \texttt{left} and \texttt{down}. The ultimate position of the real glyph is the red rectangle.
601 \caption{The position of the `real' glyph}
610 \subsection{Math Font Family}
613 \subsection{{\tt\char92 ltjsetparameter} primitive}
615 \subsection{List of Parameters}
616 \begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}}
617 \item[\textsf{kcatcode}\,=\{<chr\_code>,<value>\}]
618 \item[\textsf{prebreakpenalty}\,=\{<chr\_code>,<penalty>\}]
619 \item[\textsf{postbreakpenalty}\,=\{<chr\_code>,<penalty>\}]
620 \item[\textsf{jatextfont}\,=\{<jfam>,<jfont\_cs>\}]
621 \item[\textsf{jascriptfont}\,=\{<jfam>,<jfont\_cs>\}]
622 \item[\textsf{jascriptscriptfont}\,=\{<jfam>,<jfont\_cs>\}]
623 \item[\textsf{yjabaselineshift}\,=<dimen>]
624 \item[\textsf{yalbaselineshift}\,=<dimen>]
625 \item[\textsf{jaxspmode}\,=\{<chr\_code>,<mode>\}]
626 \item[\textsf{alxspmode}\,=\{<chr\_code>,<mode>\}]
627 \item[\textsf{autospacing}\,=<bool>]
628 \item[\textsf{autoxspacing}\,=<bool>]
629 \item[\textsf{kanjiskip}\,=<skip>]
630 \item[\textsf{xkanjiskip}\,=<skip>]
631 \item[\textsf{jcharwidowpenalty}\,=<penalty>]
632 \item[\textsf{differentjfm}\,=<mode>]
633 \item[\textsf{jacharrange}\,=<ranges>]
635 \section{Other Primitives}
636 \section{Control Sequences for \LaTeXe}
637 \part{Implementations}\label{part-imp}