iwase/itoniki - PukiWiki

I started to use XeLaTeX in April 2006 to prepare lecture notes for an extension course, and
then I gradually transfer my tex environments to fit with XeLaTeX including latex-beamer.
To complete the transfer from Japanese latex to xelatex, there was an issue to create some
Japanese localisation file for polyglossia to resolve some incompatibilities between Japanese
and Euro-American styles, as is done by Toru Inagaki for babel on Japanese latex system.
Converting from Inagaki's japanese.ldf, I found an incompatibility of book.cls with standard
Japanese book style. So I wrote down two versions -- one is gloss-japanese.ldf following the
Euro-American style and the other is gloss-nihongo.ldf below with many codes borrowed
from book.cls.


2006年夏の公開講座に向けたノート作りを XeLaTeX で行ったのをきっかけに4月以
降徐々に tex の環境を、 latex-beamer なども含め、 XeLaTeX に移行しつつある。
この移行を完了させる為には、どうしても日本語特有の事柄を反映させることのできる
polyglossia 用のファイル(ちょうど platex+babel 用に稲垣さんが作成されている)
が必要になった。 稲垣さん作成の japanese.ldf を改変する過程で、『第1章』など
と表示することができない等の book.cls 由来の問題に遭遇し、二つのバージョンを作
成した。 一つは欧米スタイルに合わせる gloss-japanese.ldf であり、もうひとつは
下の gloss-nihongo.ldf で、多くのコードを book.cls からコピーして作成したもので
ある。


News!! The new version (0.6.1 - compatible with zxjatype.sty by ZR) has arrived.
News!! The new version (0.4.3 - compatible with zxjatype.sty by ZR) has arrived.
News!! The new version (0.4.2 - a bug fixed) has arrived.
News!! The new version (0.4.1 - a bug fixed) has arrived.
The version (0.6.1 - a bug fixed) has come as below. The old version (0.1) is here
新着情報!漢数詞に対応した新版(version 0.3)ができました
明治から令和まで対応した版(version 0.6.1)が下にあります。 旧版(version 0.1)は こちら

Important!! Please try them at your own risk. I am not responsible at all.
重要!これらはどうぞご自身の責任においてお試し下さい。 私は責任を持てません。

\ProvidesFile{gloss-nihongo.ldf}[polyglossia: module for nihongo]
% The original was nihongo.ldf written by Toru Inagaki for babel.sty
% Modified for polyglossia as gloss-nihongo.ldf by Norio Iwase with 
% some additional features for nihongo kanji numbering and for Reiwa.
% Version 0.6.1
\PolyglossiaSetup{nihongo}{
   hyphenmins={2,2},
   hyphennames={nohyphenation},
   frenchspacing=true,
   fontsetup=true
}

\def\nihongo@font{%
  \@ifundefined{nihongofont}{%
   \font\zf@basefont="\csname zf@family@fontdef\f@family\endcsname" at \f@size pt}{\nihongofont}}

\def\selectnormalfontnihongo{%
  \let\normalfont=\nihongo@font%
  \let\rmfamily=\nihongo@font%
  \let\sffamily=\nihongo@font%
  \let\ttfamily=\nihongo@font%
  \def\reset@font{\normalfont}}

\ifx\l@nihongo\@undefined
  \xpg@nopatterns{Nihongo}
  \adddialect\l@nihongo0
\fi

\def\nihongo@capsformat{%
  \def\@seccntformat##1{\csname pre##1\endcsname%
    \csname the##1\endcsname%
    \csname post##1\endcsname}%
  \def\postsection{\ }% \textnihongo{節}\space
  \def\postsubsection{\ }% \textnihongo{節}\space
  \def\postsubsubsection{\ }% \textnihongo{節}\space
  \def\presection{}% \textnihongo{第}
  \def\presubsection{}% \textnihongo{第}
  \def\presubsubsection{}}% \textnihongo{第}

\@ifclassloaded{book}{%
  \if@twoside
   \def\ps@headings{%
      \let\@oddfoot\@empty\let\@evenfoot\@empty
      \def\@evenhead{\thepage\hfil\slshape\leftmark}%
      \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
      \let\@mkboth\markboth
    \def\chaptermark##1{%
      \markboth {\MakeUppercase{%
       \ifnum \c@secnumdepth >\m@ne
        \if@mainmatter
          \@chapapp\space\thechapter\postchaptername. \ %
        \fi
       \fi
       ##1}}{}}%
    \def\sectionmark##1{%
      \markright {\MakeUppercase{%
       \ifnum \c@secnumdepth >\z@
        \thesection. \ %
       \fi
       ##1}}}}
  \else
   \def\ps@headings{%
    \let\@oddfoot\@empty
    \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
    \let\@mkboth\markboth
    \def\chaptermark##1{%
      \markright {\MakeUppercase{%
       \ifnum \c@secnumdepth >\m@ne
        \if@mainmatter
          \@chapapp\space\thechapter\postchaptername. \ %
        \fi
       \fi
       ##1}}}}
  \fi
}{}
\def\@chapter[#1]#2{%
  \ifnum \c@secnumdepth >\m@ne%
   \if@mainmatter%
    \refstepcounter{chapter}%
    \typeout{\@chapapp\space\thechapter\postchaptername}%
    \addcontentsline{toc}{chapter}%
      {\protect\numberline{\thechapter}#1}%
   \else%
    \addcontentsline{toc}{chapter}{#1}%
   \fi%
  \else%
   \addcontentsline{toc}{chapter}{#1}%
  \fi%
  \chaptermark{#1}%
  \addtocontents{lof}{\protect\addvspace{10\p@}}%
  \addtocontents{lot}{\protect\addvspace{10\p@}}%
  \if@twocolumn
   \@topnewpage[\@makechapterhead{#2}]%
  \else
   \@makechapterhead{#2}%
   \@afterheading
  \fi}
\def\@makechapterhead#1{%
  \vspace*{50\p@}%
  {\parindent \z@ \raggedright \normalfont
   \ifnum \c@secnumdepth >\m@ne
    \if@mainmatter
      \huge\bfseries \@chapapp\ \nobreakspace\thechapter\postchaptername
      %\hspace{2em}\Huge \bfseries #1
      \par\nobreak
      \vskip 20\p@
    \fi
   \fi
   \interlinepenalty\@M
   \Huge \bfseries #1\par\nobreak
   \vskip 40\p@
  }}
\def\@part[#1]#2{%
  \ifnum \c@secnumdepth >-2\relax
   \refstepcounter{part}%
   \addcontentsline{toc}{part}{\thepart\postpartname\hspace{1em}#1}%
  \else
   \addcontentsline{toc}{part}{#1}%
  \fi
  \markboth{}{}%
  {\centering
  \interlinepenalty \@M
  \normalfont
  \ifnum \c@secnumdepth >-2\relax
    \huge\bfseries \partname\ \nobreakspace\thepart\postpartname
    \par
    \vskip 20\p@
  \fi
  \Huge \bfseries #2\par}%
  \@endpart}

\def\captionsnihongo{%
  \def\refname{\textnihongo{参考文献}}%
  \def\abstractname{\textnihongo{概要}}%
  \def\bibname{\textnihongo{文献目録}}%
  \def\prefacename{\textnihongo{端書き}}%
  \def\chaptername{\textnihongo{第}}%
  \def\postchaptername{\textnihongo{章}}%
  \def\appendixname{\textnihongo{付録}}%
  \def\contentsname{\textnihongo{目次}}%
  \def\listfigurename{\textnihongo{図目次}}%
  \def\listtablename{\textnihongo{表目次}}%
  \def\indexname{\textnihongo{索引}}%
  \def\figurename{\textnihongo{図}}%
  \def\tablename{\textnihongo{表}}%
  %\def\thepart{}%
  \def\partname{\textnihongo{第}}%
  \def\postpartname{\textnihongo{部}}%
  \def\pagename{\textnihongo{第}}%
  \def\postpagename{\textnihongo{頁}}%
  \def\seename{\textnihongo{参照}}%
  \def\alsoname{\textnihongo{参照}}%
  \def\enclname{\textnihongo{添付}}%
  \def\ccname{\textnihongo{同報}}%
  \def\headtoname{\textnihongo{宛先}}%
  \def\proofname{\textnihongo{証明}}%
  \def\glossaryname{\textnihongo{用語}}%
  }

  \newif\if@WameiReki \@WameiRekifalse%
  \newif\if@WameiTosi \@WameiTosifalse%
  \newif\if@WameiTuki \@WameiTukifalse%
  \newif\if@WameiHi \@WameiHifalse%
  \newif\if@IzumoTuki \@IzumoTukifalse%
  \newcount\c@TempNNum%
  \newcount\c@TempNNumA%
  \newcount\c@TempNNumB%
  \XeTeXlinebreaklocale "ja"%
  \XeTeXlinebreakskip = 0em plus 0.1em minus 0.01em%
  \XeTeXlinebreakpenalty = 0

  \def\@NihongoDigit#1{\ifcase#1 〇\or 一\or 二\or 三\or 四\or 五\or 六\or 七\or 八\or 九\or 十\or 十一\or 十二\or 十三\or 十四\or 十五\or 十六\or 十七\or 十八\or 十九\or 廿\or 廿一\or 廿二\or 廿三\or 廿四\or 廿五\or 廿六\or 廿七\or 廿八\or 廿九\or 丗\or 丗一\or 丗二\or 丗三\or 丗四\or 丗五\or 丗六\or 丗七\or 丗八\or 丗九\or 四十\or 四十一\or 四十二\or 四十三\or 四十四\or 四十五\or 四十六\or 四十七\or 四十八\or 四十九\or 五十\or 五十一\or 五十二\or 五十三\or 五十四\or 五十五\or 五十六\or 五十七\or 五十八\or 五十九\or 六十\or 六十一\or 六十二\or 六十三\or 六十四\or 六十五\or 六十六\or 六十七\or 六十八\or 六十九\or 七十\or 七十一\or 七十二\or 七十三\or 七十四\or 七十五\or 七十六\or 七十七\or 七十八\or 七十九\or 八十\or 八十一\or 八十二\or 八十三\or 八十四\or 八十五\or 八十六\or 八十七\or 八十八\or 八十九\or 九十\or 九十一\or 九十二\or 九十三\or 九十四\or 九十五\or 九十六\or 九十七\or 九十八\or 九十九\else\@ctrerr\fi\relax}

  \def\@NihongoNenDigit#1{\ifcase#1 \or 元\or 二\or 三\or 四\or 五\or 六\or 七\or 八\or 九\or 十\or 十一\or 十二\or 十三\or 十四\or 十五\or 十六\or 十七\or 十八\or 十九\or 廿\or 廿一\or 廿二\or 廿三\or 廿四\or 廿五\or 廿六\or 廿七\or 廿八\or 廿九\or 丗\or 丗一\or 丗二\or 丗三\or 丗四\or 丗五\or 丗六\or 丗七\or 丗八\or 丗九\or 四十\or 四十一\or 四十二\or 四十三\or 四十四\or 四十五\or 四十六\or 四十七\or 四十八\or 四十九\or 五十\or 五十一\or 五十二\or 五十三\or 五十四\or 五十五\or 五十六\or 五十七\or 五十八\or 五十九\or 六十\or 六十一\or 六十二\or 六十三\or 六十四\or 六十五\or 六十六\or 六十七\or 六十八\or 六十九\or 七十\or 七十一\or 七十二\or 七十三\or 七十四\or 七十五\or 七十六\or 七十七\or 七十八\or 七十九\or 八十\or 八十一\or 八十二\or 八十三\or 八十四\or 八十五\or 八十六\or 八十七\or 八十八\or 八十九\or 九十\or 九十一\or 九十二\or 九十三\or 九十四\or 九十五\or 九十六\or 九十七\or 九十八\or 九十九\else\@ctrerr\fi\relax}

  \def\@NihongoNum#1{\c@TempNNum=#1\divide\c@TempNNum by 1000\relax%
  \ifnum\c@TempNNum=\z@\c@TempNNum=#1\divide\c@TempNNum by 100\relax%
   \ifnum\c@TempNNum=\z@\@NihongoDigit{#1}\relax%
   \else\ifcase\c@TempNNum\or 百\or 二百\or 三百\or 四百\or 五百\or 六百\or 七百\or 八百\or 九百\fi\c@TempNNum=#1\divide\c@TempNNum by 100\multiply\c@TempNNum by -100\advance\c@TempNNum#1\@NihongoDigit\c@TempNNum\relax\fi%
  \else\ifcase\c@TempNNum\or 千\or 二千\or 三千\or 四千\or 五千\or 六千\or 七千\or 八千\or 九千\fi\c@TempNNum=#1\divide\c@TempNNum by 1000\multiply\c@TempNNum by -1000\advance\c@TempNNum#1\divide\c@TempNNum by 100\relax%
   \ifnum\c@TempNNum=\z@\c@TempNNum=#1\divide\c@TempNNum by 100\multiply\c@TempNNum by -100\advance\c@TempNNum#1\@NihongoDigit\c@TempNNum\relax%
   \else\ifcase\c@TempNNum\or 百\or 二百\or 三百\or 四百\or 五百\or 六百\or 七百\or 八百\or 九百\fi\c@TempNNum=#1\divide\c@TempNNum by 100\multiply\c@TempNNum by -100\advance\c@TempNNum#1\@NihongoDigit\c@TempNNum\relax\fi\fi}

  \def\@nihongonumber#1{\c@TempNNumA=#1%
   \ifnum\c@TempNNumA=\z@{〇}%
   \else\ifnum\c@TempNNumA<\z@{負}\multiply\c@TempNNumA by -1\fi%
    \c@TempNNumB=\c@TempNNumA\divide\c@TempNNumB by 10000\relax%
    \ifnum\c@TempNNumB=\z@\@NihongoNum\c@TempNNumA%
    \else\c@TempNNumB=\c@TempNNumA\divide\c@TempNNumB by 100000000\relax%
    \ifnum\c@TempNNumB=\z@\c@TempNNumB=\c@TempNNumA\divide\c@TempNNumB by 10000%
     \@NihongoNum\c@TempNNumB{万}\c@TempNNumB=\c@TempNNumA%
     \divide\c@TempNNumB by 10000\multiply\c@TempNNumB by -10000%
     \advance\c@TempNNumB\c@TempNNumA\relax\@NihongoNum\c@TempNNumB%
    \else\@NihongoNum\c@TempNNumB{億}\c@TempNNumB=\c@TempNNumA%
     \divide\c@TempNNumB by 100000000\multiply\c@TempNNumB by -100000000%
     \advance\c@TempNNumB\c@TempNNumA\divide\c@TempNNumB by 10000\relax%
     \ifnum\c@TempNNumB=\z@\else\@NihongoNum\c@TempNNumB{万}\fi%
     \c@TempNNumB=\c@TempNNumA\divide\c@TempNNumB by 10000%
     \multiply\c@TempNNumB by -10000\advance\c@TempNNumB\c@TempNNumA%
     \@NihongoNum\c@TempNNumB\fi\fi\fi}

\def\nihongonumber#1{\expandafter\@nihongonumber\csname c@#1\endcsname}%

\def\nihongo@globalnumbers{%
  \let\@latinarabic\@arabic%
  \let\@arabic\@nihongonumber%
  \def\thefootnote{\@NihongoNum\c@footnote}%
  \ifx\undefined\thechapter
   \def\thesection{\@NihongoNum\c@section}
  \else
   \def\thechapter{\@NihongoNum\c@chapter}
   \def\thesection{\thechapter.\@NihongoNum\c@section}
  \fi
   \def\thetable{\thesection.\@NihongoNum\c@table}
   \def\thefigure{\thesection.\@NihongoNum\c@figure}
   \def\thesubsection{\thesection.\@NihongoNum\c@subsection}
   \def\thesubsubsection{\thesubsection.\@NihongoNum\c@subsubsection}
  }
\def\nonihongo@globalnumbers{%
  \let\@arabic\@latinarabic%
  \def\thefootnote{\number\c@footnote}%
  }

\def\datenihongo{{%
  \ifnum\year<1868 \xdef\the@WarekiCur{}%
  \else\ifnum\year<1912 \xdef\the@WarekiCur{明治} \advance\year-1867\relax%
  \else\ifnum\year<1926 \xdef\the@WarekiCur{大正} \advance\year-1911\relax%
  \else\ifnum\year<1989 \xdef\the@WarekiCur{昭和} \advance\year-1925\relax%
  \else\ifnum\year<2019 \xdef\the@WarekiCur{平成} \advance\year-1988\relax%
  \else\xdef\the@WarekiCur{令和} \advance\year-2018\relax\fi\fi\fi\fi\fi%
  \xdef\the@WameiTosi{\the\year}%
  }
  \def\西暦{\@WameiRekifalse \@WameiTukifalse \@WameiHifalse}%
  \def\和暦{\@WameiRekitrue \@WameiTosifalse \@WameiTukifalse \@WameiHifalse}%
  \def\和名暦{\@WameiTositrue \@WameiTukitrue \@WameiHitrue}%
  \def\数字暦{\@WameiTosifalse \@WameiTukifalse \@WameiHifalse}%
  \def\出雲月{\@IzumoTukitrue}%
  \def\大和月{\@IzumoTukifalse}%
  \def\today{\textnihongo{%\hspace{-.55em}%
\if@WameiReki\the@WarekiCur\if@WameiTosi\@NihongoNenDigit\the@WameiTosi\else\,\the@WameiTosi\fi\else\number\year\,\fi{年}%
\if@WameiTuki\ifcase\month\or 睦月\or 如月\or 弥生\or 卯月\or 皐月\or 水無月\or 文月\or 葉月\or 長月\or \if@IzumoTuki 神在月\else 神無月\fi \or 霜月\or 師走\fi\else\,\number\month\,{月}\fi%
\if@WameiHi\@NihongoNum\day\else\,\number\day\,\fi{日}}}}

\def\nihongo@language{\protect\language=\l@nihongo}

\def\noextras@nihongo{%
  \nihongo@capsformat%
  }

\def\blockextras@nihongo{%
  \nihongo@capsformat%
  }

\def\inlineextras@nihongo{%
  \nihongo@capsformat%
  }

%%
%% End of file `gloss-nihongo.ldf'.

サンプルを作らねばと思い、やはり稲垣さんの sample.tex を少し改変させて頂いたものをさらに少し変更してしまいました:

%!TEX TS-program = XeLaTeX
% version 0.2.1
\documentclass{book}
\usepackage{xunicode}%
\usepackage[no-math]{fontspec}
\usepackage{polyglossia}%
\usepackage{xltxtra}
%
\setdefaultlanguage{nihongo}
%\setdefaultlanguage{japanese}
\setotherlanguage{english}
\setotherlanguage{french}
\setotherlanguage{german}
%
\defaultfontfeatures{Mapping=tex-text}
\setromanfont{Hiragino Mincho Pro W3}%
\setsansfont{Hiragino Kaku Gothic Pro W3}%
\setmonofont{Osaka-Mono}
%
\makeatletter
\def\tbcaption{\def\@captype{table}\caption{キャプションの例}}
\def\fgcaption{\def\@captype{figure}\caption{キャプションの例}}
\makeatother
\def\sf{\selectlanguage{french}}
\def\se{\selectlanguage{english}}%
\def\sj{\selectlanguage{nihongo}}
%\def\sj{\selectlanguage{japanese}}
\def\sg{\selectlanguage{german}}
\setlength{\voffset}{-43mm}
\setlength{\hoffset}{-13mm}
\setlength{\textwidth}{16cm}
\setlength{\textheight}{27cm}
\begin{document}

\sj
\chapter{PolyGlossia}
japanese/nihongo パッケージは日本語による見出し語と日付を出力するためのマクロを定義しています。
\se
\section{In ``\texttt{English}''}
(The value of language code is \the\language) \par\hfil\verb:\today: :\today\hfil

\fgcaption
\tbcaption

\sf
%\section{En ``\texttt{fran\c{c}ais}''}
\section{En ``\texttt{fran&#65533;ais}''}
(La valeur de code de langue est \the\language) \par\hfil\verb:\today: :\today\hfil

\fgcaption
\tbcaption

\sj
\section{『\texttt{日本語}』で}
(language コードの値は \the\language) \par\hfil\verb:\today: :\today\hfil

\fgcaption
\tbcaption

\begin{itemize}
 \item \verb:\和暦: は日付の表示をデフォルトの西暦「\today」から和暦「\和暦\today」に変更し、\verb:\西暦: はこれを元の表示「\西暦\today」に戻します。\par\smallskip\hfil\verb:\和暦\today: :\和暦\today\hfil
 \item \verb:\和名暦: は日付の表示をデフォルトの和暦「\和暦\today」から、月などの名に和名を採用した暦「\和名暦\today」に変更し、\verb:\数字暦: はこれを元の表示「\数字暦\today」に戻します。
 \item \verb:\出雲月: は神無月を神在月に、また \verb:\大和月: はその逆にします。
\end{itemize}

\sg
\section{In ``\texttt{Deutsch}''}
(Der Wert der Sprache Code ist \the\language) \par\hfil\verb:\today: :\today\hfil

\fgcaption
\tbcaption

\end{document}

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-09-20 (金) 16:27:57 (30d)