For the up-to-date XHTML version of this web page, go here. This is a legacy HTML 4 version.

Creating Japanese language documents under GNU/Linux using LaTeX

Mark Alford. Last updated: 2004-Aug-27

Chinese, Japanese, and Korean language support is available in LaTeX via the CJK package. These are the steps that I followed to get Japanese. They work for CJK-4.5.2 (2004-04-29 version) under Fedora Core 2 and Fedora Core 1, and they worked previously for CJK-4.4.0 (Apr 2001) under RedHat 6.2, 7.x, 8.0.

I did everything as root, because I was adding CJK as a system-wide component, although I put it in a separate tree, /usr/local/share/texmf/, so that it is not mixed up with teTeX and does not get clobbered when teTeX is upgraded. But if the sysadmin has set up the TeX search paths correctly (see below) you should be able to install CJK for your personal use by putting everything in $HOME/texmf/ and $HOME/bin/, without being root.

[A] Add Japanese language capability ("CJK") to LaTeX.

  1. At the UK TeX archive you can find CJK and CJK fonts. The latest version of CJK is also available via ftp. The only font file you need for Japanese is the kanji one, which should be called something like "kanji48.tar.gz" and be found at this URL. In these instructions I will assume that CJK has been downloaded to ~/cjk-current/, and the kanji font to ~/CJK_fonts/kanji48.tar.gz. I will also assume that /usr/share/texmf/web2c/texmf.cnf is correctly set up to include /usr/local/share/texmf in the TeX path, by setting
    ----
    TEXMFLOCAL = /usr/local/share/texmf
    HOMETEXMF = $HOME/texmf    % optional
    TEXMF = {$HOMETEXMF,!!$TEXMFLOCAL,!!$TEXMFMAIN}
    ----
    
  2. Copy the CJK tex input files to a place where tex will find them:
    > cp -r ~/cjk-current/texinput /usr/local/share/texmf/tex/latex/CJK
    
  3. Install hbf2gf in /usr/local/bin:
    > cd ~/cjk-current/utils/hbf2gf
    > ./configure --prefix=/usr/local/ \
                  --with-kpathsea-include=/usr/include \
                  --with-kpathsea-lib=/usr/lib
    > make
    > make install
    
    The with-kpathsea-include dir is wherever kpathsea/kpathsea.h lives, and the with-kpathsea-lib dir is wherever libkpathsea.a lives.
  4. Install Japanese fonts in /usr/local/share/texmf/fonts/:
    > cd /usr/local/share/
    > cp ~/CJK_fonts/kanji48.tar.gz .
    > tar -zxf kanji48.tar.gz
    > rm kanji48.tar.gz
    
    Since kanji48.tar.gz contains the files in the proper directory structure, it is sufficient to unpack it in a dir that contains the target texmf dir.
  5. Tell teTeX where to find .hbf files, by modifying /usr/share/texmf/web2c/texmf.cnf:
    ----
    MISCFONTS = .;$TEXMF/fonts/misc//;$TEXMF/fonts/hbf//
    ----
    
    For non-root installation it may be possible to set this as an environment variable (see ~/cjk-current/doc/INSTALL and man hbf2gf). You can tell what kpathsea is doing by looking at debugging output obtained by setenv KPATHSEA_DEBUG -1. I expected to have to add a new variable, HBF2GFINPUTS = $TEXMF/hbf2gf// to texmf.cnf, which tells it where to find .cfg files, but it works fine without it.
  6. Update tex database
    > mktexlsr  # (same as "texhash")
    
Now see if it works. Unfortunately, the example files given in recent versions of CJK do not work! So try my example, (japanese_template.cjk):
> latex japanese_template.cjk
This is TeX, Version 3.14159 (Web2C 7.4.5)
(./japanese_template.cjk
LaTeX2e <2001/06/01>
Babel  and hyphenation patterns for american, french, german, ngerman, n
ohyphenation, loaded.
(/usr/local/share/texmf/tex/latex/CJK/CJK.sty
(/usr/local/share/texmf/tex/latex/CJK/mule/MULEenc.sty)
(/usr/local/share/texmf/tex/latex/CJK/CJK.enc))
(/usr/share/texmf/tex/latex/base/article.cls
Document Class: article 2001/04/21 v1.4e Standard LaTeX document class
(/usr/share/texmf/tex/latex/base/size12.clo))
(/usr/local/share/texmf/tex/latex/CJK/ruby.sty) (./japanese_template.aux)
(/usr/local/share/texmf/tex/latex/CJK/standard.bdg)
(/usr/local/share/texmf/tex/latex/CJK/standard.enc)
(/usr/local/share/texmf/tex/latex/CJK/standard.chr)
(/usr/local/share/texmf/tex/latex/CJK/JIS/c40song.fd) [1]
(./japanese_template.aux) )
Output written on japanese_template.dvi (1 page, 632 bytes).
Transcript written on japanese_template.log.
> xdvi japanese_template
You should see Japanese!

[B] Use emacs (mule) to produce LaTeX files that include Japanese.

You will keep each file in two forms. There will be file.tex, which is encoded however you like (I will use emacs-mule encoding), and which you edit and work on. And there is file.cjk, which is JIS-encoded, and which can be LaTeXed.
  1. Make sure that the emacs-leim (library of emacs input methods) package is installed:
    > rpm -qi emacs-leim
    
    If necessary, download the rpm file (eg from rpmfind) and install it.
  2. Install the necessary emacs lisp macros in /usr/local/share/emacs/site-lisp (create this dir if necessary).
    > cd ~/cjk-current/utils/lisp
    > cp cjktilde.el /usr/local/share/emacs/site-lisp/
    > cp emacs-20.3/cjk-enc.el /usr/local/share/emacs/site-lisp/
    
  3. Tell your emacs sessions where to find them. Put the following line into your ~/.emacs file:
    ----
    (setq load-path (cons "/usr/local/share/emacs/site-lisp" load-path))
    (load-library "cjk-enc")
    (global-set-key "\C-c\C-w" 'cjk-write-file) ; CTRL C CTRL W writes CJK file
    ----
    
  4. You can use this template latex file (annotated version). Do not try to use the templates in the CJK examples directory, since they do not work.
    ----
    %-*- coding: emacs-mule -*-
    \documentclass[12pt]{article}
    \usepackage[overlap, CJK]{ruby}
    \CJKencfamily{JIS}{song}
    \renewcommand{\rubysep}{-0.3ex}
    \begin{document}
      Insert English and Japanese text here.
    \end{document}
    ----
    
    Note that we specify the coding in a TeX comment on the first line. (Alternatively, this can be done by explicit commands to emacs.) Possible codings include emacs-mule, japanese-euc, japanese-shift-jis, and probably others. When you load the file into emacs, it will automatically detect the coding and display the characters correctly.
  5. To go to Japanese input mode, CTRL-x RET CTRL-\ or
    (Options ->) mule -> select input method
    
    And then select japanese. After that, you can toggle back and forth between english and japanese input methods with (Options ->) mule -> toggle input method or CTRL-\.
  6. How to enter Japanese text.
    Once you have set the input method to Japanese, you can type in romaji, and it will come out as hiragana, underlined. The underlined bit is the "conversion region", which is still malleable, i.e. not yet fixed. To fix it, and start a new conversion region, press return. To convert it to katakana, type "K" (uppercase). To toggle among a range of kanji for the conversion region, keep pressing space. (To go back and forth in the kanji list use CTRL-P and CTRL-N.) When you get the one you want, press return to fix it. To get "n", type "n" then some character like "/" or "q", then go back and delete that last character.
  7. To save the file, use CTRL-C CTRL-W (see the binding in your .emacs file above). This invokes 'cjk-write-file, which saves file.tex, and also creates the JIS-encoded version file.ckj which can be LaTeXed.
  8. To latex the file,
    > latex file.cjk   # [NOT file.tex!]
    
    Then you can use xdvi, dvips, etc to view and print it.

Please sent comments, corrections, improvements to alford(at)wuphys.wustl.edu. Thanks to those who have done so, including Paul Wyatt of Toshiba.

Mark Alford's IBM Thinkpad GNU/Linux page,

Valid HTML 4.0!

revalidate