% \iffalse meta-comment
%
% This file is part of the `japanese' package,
% providing Japanese language support for Babel.
%
% Copyright (C) 1999--2007 by ING (Toru INAGAKI)
%               2016--     by Japanese TeX Development Community
%
% This package 'japanese.dtx' supports the following Babel package:
%
% ====================================================================
%
% Copyright 2012-2016 Javier Bezos and Johannes L. Braams.
% Copyright 1989-2012 Johannes L. Braams and any individual authors
% listed elsewhere in this file.  All rights reserved.
% 
% It may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2003/12/01 or later.
% 
% This work has the LPPL maintenance status "maintained".
% 
% The Current Maintainer of this work is Javier Bezos.
%
% ====================================================================
%
% \fi
%
% ^^A  Ensure UTF-8 input encoding for pLaTeX
% ^^A  (effective since e-pTeX 20160201, thus TeX Live 2016)
\ifx\epTeXinputencoding\undefined\else
  \epTeXinputencoding utf8
\fi
%
%\iffalse
%    Tell the \LaTeX\ system who we are and write an entry on the
%    transcript.
%<*dtx>
\ProvidesFile{japanese.dtx}
%</dtx>
%<code>\ProvidesLanguage{japanese}
%<*!sample>
%\ProvidesFile{japanese.dtx}
        [2017/02/05 v2.1 Japanese support for babel (texjporg)]
%</!sample>
%\fi
%
%\iffalse
%
%<*filedriver>
\ifx\directlua\undefined
  \documentclass{jltxdoc}
\else
  \documentclass{ltjltxdoc}
\fi
\GetFileInfo{japanese.dtx}
\setcounter{StandardModuleDepth}{1}
\CodelineNumbered
\MakeShortVerb{\|}
\OnlyDescription
\newcommand*\babel{\textsf{babel}}
\newcommand*\langvar{$\langle \it lang \rangle$}
%\newcommand*\Lopt[1]{\textsf{#1}}
%\newcommand*\file[1]{\texttt{#1}}
\begin{document}
  \DocInput{japanese.dtx}
\end{document}
%</filedriver>
%
%\fi
%
% \title{Babel-Option {\sffamily japanese} {\Large version \fileversion}}
% \author{\copyright\ 1999--2007 ING\\ 2016-- Japanese \TeX\ Development Community}
% \date{\filedate}
% \maketitle
% \baselineskip=14pt
%
% \section*{The Japanese language}
%
% \file{japanese}パッケージは日本語による見出し語と日付を出力するためのマクロを
% 定義しています。\babel のオプションの最後で日本語を指定します。
% \begin{quote}
% |\usepackage[...,japanese]{babel}|
% \end{quote}
%
% バージョンv2.0以降では，p\TeX{}系（p\LaTeX{}，up\LaTeX{}）に加えて，
% 新しいUnicodeな\TeX{}エンジン（Xe\TeX{}，Lua\TeX{}）もサポートしました。
% このため，ファイルはUTF-8エンコーディングで保存するようにしてください。
%
% 2016年以降，本パッケージのメンテナンスは日本語\TeX{}開発コミュニティ
% (Japanese \TeX\ Development Community)によって行われています。開発版は
% GitHubリポジトリ
%\begin{verbatim}
%      https://github.com/texjporg/babel-japanese
%\end{verbatim}
% にあります。バグ報告は上記のリポジトリ，またはIssue Mailing List
%\begin{verbatim}
%      issue@texjp.org
%\end{verbatim}
% までお願いします。
%
%
% \section{この文書について}
%
% この文書ファイル(\jobname.pdf)自体はp\LaTeX{}，up\LaTeX{}，Lua\LaTeX{}で
% 処理できるようになっています。
%
%
% \section{コード}
%
% p\TeX{}系（p\LaTeX{}，up\LaTeX{}）でなく，かつUnicodeな\TeX{}（Xe\LaTeX{}，
% Lua\LaTeX{}）でもない場合は，最初にエラーを出します。
%
%    \begin{macrocode}
%<*code>
\ifx\kanjiskip\@undefined\ifx\directlua\@undefined
\ifx\XeTeXversion\@undefined
  \@latex@error{Option '\CurrentOption' requires one of the followings:\MessageBreak
                pTeX, upTeX, XeTeX, LuaTeX\MessageBreak
                It seems you are running unsupported engine!}\@ehc
\fi
\fi\fi
%    \end{macrocode}
%
%    \begin{macrocode}
\LdfInit\CurrentOption{captions\CurrentOption}
%    \end{macrocode}
% \DescribeMacro{\l@japanese}
% ここでは|\l@japanese|が定義されているか否かを判断し，定義されていれば
% 日本語用ハイフネーションパターンを読み込みます。
% \DescribeMacro{\adddialect}
% しかし，日本語にはハイフネーションパタンが存在しないので
% |\adddialect|に|\l@japanese|を代入し，\file{language.dat}
% で最初に指定した言語（言語番号0，通常は英語）のハイフネーションパターンを
% 使用します。
%
% [2016-12-16] 旧バージョン(v1.3)では
%\begin{quote}\small\begin{verbatim}
% Package babel Warning: No hyphenation patterns were loaded for
% (babel)                the language `Japanese'
% (babel)                I will use the patterns loaded for \language=0
%                        instead.
%\end{verbatim}\end{quote}
% という警告が出るのを無視する方針でしたが，新しい\babel では警告が
% よりうるさくなっていました。
%\begin{quote}\small\begin{verbatim}
% Package babel Warning: No hyphenation patterns were preloaded for
% (babel)                the language `Japanese' into the format.
% (babel)                Please, configure your TeX system to add them and
% (babel)                rebuild the format. Now I will use the patterns
% (babel)                preloaded for english instead on input line 47.
%\end{verbatim}\end{quote}
% そこで，新しいバージョン(v2.0)からは警告を出さないことにして，代わりに
% ログファイルにのみInfoを出力します。
%
%    \begin{macrocode}
\ifx\l@japanese\@undefined
%  \@nopatterns{Japanese}% comment out (2016-12-16)
  \PackageInfo{babel}{%
    No hyphenation patterns are available for Japanese,\MessageBreak
    so I will use the patterns preloaded for \bbl@nulllanguage\MessageBreak
    instead}
  \adddialect\l@japanese0\fi
%    \end{macrocode}
%
% \DescribeMacro{\captionsjapanese}
% |\captionsjapanese|マクロはp\LaTeX{}の標準のクラスファイルで使われる
% 見出し語を日本語で出力します。\LaTeX{}の標準のクラスファイルでも動作
% しますが，元が英語用ですので，語順の関係上すべてを日本語化することは
% できません（たとえば、Part 1→第1部とは変更することは不可能です）。
%
% [2016-12-15] 「証明」と「用語集」も日本語化するようにしました。
% |\postpartname| がタイポで |\postpartnam| になっていたのを直しました。
%
% 新しいUnicodeな\TeX{}エンジン（Xe\TeX{}，Lua\TeX{}）の場合は，
% UTF-8エンコーディングで直接和文文字を記述します。
%    \begin{macrocode}
\ifx\kanjiskip\@undefined
  \def\bbl@jpn@prefacename{前書き}%
  \def\bbl@jpn@refname{参考文献}%
  \def\bbl@jpn@abstractname{概要}%
  \def\bbl@jpn@bibname{参考文献}%
  %\def\bbl@jpn@chaptername{Chapter}%
  \def\bbl@jpn@prechaptername{第}%    -- added
  \def\bbl@jpn@postchaptername{章}%   -- added
  \def\bbl@jpn@presectionname{}%  第  -- added
  \def\bbl@jpn@postsectionname{}% 節  -- added
  \def\bbl@jpn@appendixname{付録}%
  \def\bbl@jpn@contentsname{目次}%
  \def\bbl@jpn@listfigurename{図目次}%
  \def\bbl@jpn@listtablename{表目次}%
  \def\bbl@jpn@indexname{索引}%
  \def\bbl@jpn@figurename{図}%
  \def\bbl@jpn@tablename{表}%
  %\def\bbl@jpn@partname{Part}%
  \def\bbl@jpn@prepartname{第}%       -- added
  \def\bbl@jpn@postpartname{部}%      -- added
  %\def\bbl@jpn@enclname{encl}%     同封物
  %\def\bbl@jpn@ccname{cc}%         Cc
  %\def\bbl@jpn@headtoname{To}%     To（宛先）
  %\def\bbl@jpn@pagename{Page}%     ページ
  %\def\bbl@jpn@seename{see}%       参照
  %\def\bbl@jpn@alsoname{see also}% も参照
  \def\bbl@jpn@proofname{証明}%
  \def\bbl@jpn@glossaryname{用語集}%
%    \end{macrocode}
%
% p\TeX{}系の場合は，UTF-8を読めない可能性があるため，
% |\kansuji| トリックを使って和文文字の代わりにします。
%
%    \begin{macrocode}
\else
\begingroup
  \kansujichar1=\jis"4130\relax % 前
  \kansujichar2=\jis"3D71\relax % 書
  \kansujichar3=\jis"242D\relax % き
  \kansujichar4=\jis"3B32\relax % 参
  \kansujichar5=\jis"394D\relax % 考
  \kansujichar6=\jis"4A38\relax % 文
  \kansujichar7=\jis"3825\relax % 献
  \kansujichar8=\jis"3335\relax % 概
  \kansujichar9=\jis"4D57\relax % 要
  \xdef\bbl@jpn@prefacename{\kansuji123}%
  \xdef\bbl@jpn@refname{\kansuji4567}%
  \xdef\bbl@jpn@abstractname{\kansuji89}%
  \xdef\bbl@jpn@bibname{\kansuji4567}%
  \kansujichar1=\jis"4268\relax % 第
  \kansujichar2=\jis"3E4F\relax % 章
  \kansujichar3=\jis"4061\relax % 節
  \kansujichar4=\jis"4955\relax % 付
  \kansujichar5=\jis"4F3F\relax % 録
  \kansujichar6=\jis"3A77\relax % 索
  \kansujichar7=\jis"307A\relax % 引
  \kansujichar8=\jis"4974\relax % 部
  \xdef\bbl@jpn@prechaptername{\kansuji1}%
  \xdef\bbl@jpn@postchaptername{\kansuji2}%
  \xdef\bbl@jpn@presectionname{}%
  \xdef\bbl@jpn@postsectionname{}%
  \xdef\bbl@jpn@appendixname{\kansuji45}%
  \xdef\bbl@jpn@indexname{\kansuji67}%
  \xdef\bbl@jpn@prepartname{\kansuji1}%
  \xdef\bbl@jpn@postpartname{\kansuji8}%
  \kansujichar1=\jis"4C5C\relax % 目
  \kansujichar2=\jis"3C21\relax % 次
  \kansujichar3=\jis"3F5E\relax % 図
  \kansujichar4=\jis"493D\relax % 表
  \kansujichar5=\jis"3E5A\relax % 証
  \kansujichar6=\jis"4C40\relax % 明
  \kansujichar7=\jis"4D51\relax % 用
  \kansujichar8=\jis"386C\relax % 語
  \kansujichar9=\jis"3D38\relax % 集
  \xdef\bbl@jpn@contentsname{\kansuji12}%
  \xdef\bbl@jpn@listfigurename{\kansuji312}%
  \xdef\bbl@jpn@listtablename{\kansuji412}%
  \xdef\bbl@jpn@figurename{\kansuji3}%
  \xdef\bbl@jpn@tablename{\kansuji4}%
  \xdef\bbl@jpn@proofname{\kansuji56}%
  \xdef\bbl@jpn@glossaryname{\kansuji789}%
\endgroup
\fi
%    \end{macrocode}
%
% 実際の命令にこれらをコピーします。
%
%    \begin{macrocode}
\@namedef{captions\CurrentOption}{%
  \let\prefacename\bbl@jpn@prefacename
  \let\refname\bbl@jpn@refname
  \let\abstractname\bbl@jpn@abstractname
  \let\bibname\bbl@jpn@bibname
  %\def\chaptername{Chapter}%
  \let\prechaptername\bbl@jpn@prechaptername   % -- added
  \let\postchaptername\bbl@jpn@postchaptername % -- added
  \let\presectionname\bbl@jpn@presectionname   % -- added
  \let\postsectionname\bbl@jpn@postsectionname % -- added
  \let\appendixname\bbl@jpn@appendixname
  \let\contentsname\bbl@jpn@contentsname
  \let\listfigurename\bbl@jpn@listfigurename
  \let\listtablename\bbl@jpn@listtablename
  \let\indexname\bbl@jpn@indexname
  \let\figurename\bbl@jpn@figurename
  \let\tablename\bbl@jpn@tablename
  %\def\partname{Part}%
  \let\prepartname\bbl@jpn@prepartname   % -- added
  \let\postpartname\bbl@jpn@postpartname % -- added
  %\def\enclname{encl}%     同封物
  %\def\ccname{cc}%         Cc
  %\def\headtoname{To}%     To（宛先）
  %\def\pagename{Page}%     ページ
  %\def\seename{see}%       参照
  %\def\alsoname{see also}% も参照
  \let\proofname\bbl@jpn@proofname
  \let\glossaryname\bbl@jpn@glossaryname
  }
%    \end{macrocode}
%
% \DescribeMacro{\datejapanese}
% |\datejapanese|マクロは日本語で日付を出力するように |\today|コマンドを
% 再定義します。デフォルトの出力は西暦です。和暦を使用する際は，プリアンブルで 
% |\和暦| を指定するか，本文で |\和暦\today| のように指定します。
%
% フラグの準備，平成の計算。
%    \begin{macrocode}
\newif\ifbbl@jpn@Seireki \bbl@jpn@Seirekitrue
{\advance\year-1988\relax
 \xdef\the@heisei{\the\year}}
%    \end{macrocode}
%
% Unicodeな\TeX{}エンジン（Xe\TeX{}，Lua\TeX{}）の場合は，
% UTF-8エンコーディングで直接和文文字を記述します。
% Xe\TeX{}の場合は |\bbl@jpn@Tate...| の2つは実際には使いません。
%    \begin{macrocode}
\ifx\kanjiskip\@undefined
  \def\西暦{\bbl@jpn@Seirekitrue}%
  \def\和暦{\bbl@jpn@Seirekifalse}%
  \def\bbl@jpn@TateSeirekiToday{%
      \bbl@jpn@maybekansuji\year 年%
      \bbl@jpn@maybekansuji\month 月%
      \bbl@jpn@maybekansuji\day 日}
  \def\bbl@jpn@TateWarekiToday{%
      平成\bbl@jpn@maybekansuji\the@heisei 年%
      \bbl@jpn@maybekansuji\month 月%
      \bbl@jpn@maybekansuji\day 日}
  \def\bbl@jpn@SeirekiToday{%
      \number\year 年%
      \number\month 月%
      \number\day 日}
  \def\bbl@jpn@WarekiToday{%
      平成\the@heisei 年%
      \number\month 月%
      \number\day 日}
%    \end{macrocode}
%
% p\TeX{}系では |\kansuji| トリックで同じ命令を定義します。
%    \begin{macrocode}
\else
\begingroup
  \kansujichar1=\jis"403E\relax % 西
  \kansujichar2=\jis"4F42\relax % 和
  \kansujichar3=\jis"4E71\relax % 暦
  \expandafter\expandafter\expandafter\gdef
  \expandafter\csname\kansuji13\endcsname{\bbl@jpn@Seirekitrue}%
  \expandafter\expandafter\expandafter\gdef
  \expandafter\csname\kansuji23\endcsname{\bbl@jpn@Seirekifalse}%
  \kansujichar1=\jis"472F\relax % 年
  \kansujichar2=\jis"376E\relax % 月
  \kansujichar3=\jis"467C\relax % 日
  \kansujichar4=\jis"4A3F\relax % 平
  \kansujichar5=\jis"402E\relax % 成
  \xdef\bbl@jpn@kanjinen{\kansuji1}%
  \xdef\bbl@jpn@kanjigatsu{\kansuji2}%
  \xdef\bbl@jpn@kanjinichi{\kansuji3}%
  \xdef\bbl@jpn@kanjiheisei{\kansuji45}%
\endgroup
  \def\bbl@jpn@TateSeirekiToday{%
    \bbl@jpn@maybekansuji\year\bbl@jpn@kanjinen
    \bbl@jpn@maybekansuji\month\bbl@jpn@kanjigatsu
    \bbl@jpn@maybekansuji\day\bbl@jpn@kanjinichi}
  \def\bbl@jpn@TateWarekiToday{%
    \bbl@jpn@kanjiheisei\bbl@jpn@maybekansuji\the@heisei\bbl@jpn@kanjinen
    \bbl@jpn@maybekansuji\month\bbl@jpn@kanjigatsu
    \bbl@jpn@maybekansuji\day\bbl@jpn@kanjinichi}
  \def\bbl@jpn@SeirekiToday{%
    \number\year\bbl@jpn@kanjinen
    \number\month\bbl@jpn@kanjigatsu
    \number\day\bbl@jpn@kanjinichi}
  \def\bbl@jpn@WarekiToday{%
    \bbl@jpn@kanjiheisei\the@heisei\bbl@jpn@kanjinen
    \number\month\bbl@jpn@kanjigatsu
    \number\day\bbl@jpn@kanjinichi}
\fi
%    \end{macrocode}
%
% (u)p\LaTeXe{}とLua\TeX-jaで組方向判定方法が異なるため，|\catcode| のトリックで
% 別々のコードを使い分けます。Xe\LaTeX{}の場合，およびLua\LaTeX{}でLua\TeX-ja不使用の
% 場合は，縦組をサポートしません。
%    \begin{macrocode}
\chardef\bbl@jpn@l@catcode=\catcode`\L\relax
\chardef\bbl@jpn@p@catcode=\catcode`\P\relax
\chardef\bbl@jpn@x@catcode=\catcode`\X\relax
\ifx\directlua\@undefined
  \ifx\XeTeXversion\@undefined    % ptex/uptex
    \catcode`\L=14\relax
    \catcode`\P=9\relax
    \catcode`\X=9\relax
  \else                           % xetex
    \catcode`\L=14\relax
    \catcode`\P=14\relax
    \catcode`\X=14\relax
  \fi
\else
  \ifx\luatexjaLoaded\@undefined  % luatex
    \catcode`\L=14\relax
    \catcode`\P=14\relax
    \catcode`\X=14\relax
  \else                           % luatex + luatexja
    \catcode`\L=9\relax
    \catcode`\P=14\relax
    \catcode`\X=9\relax
  \fi
\fi
%    \end{macrocode}
%
% 実際に使用する命令にコピーします。
%    \begin{macrocode}
\@namedef{date\CurrentOption}{%
  \def\today{%
P  \iftdir
L  \ifnum\ltjgetparameter{direction}=3
X   \ifbbl@jpn@Seireki
X     \bbl@jpn@TateSeirekiToday
X   \else
X     \bbl@jpn@TateWarekiToday
X   \fi
X  \else
    \ifbbl@jpn@Seireki
      \bbl@jpn@SeirekiToday
    \else
      \bbl@jpn@WarekiToday
    \fi
X  \fi
  }%
}
%    \end{macrocode}
%
% [2017-02-05] 新機能：|\languageattribute{japanese}{kansujitoday}|を指定すると，
% 縦書きでは |\today| の表記が漢数字（例：二〇一六年一二月二八日）になります。
%    \begin{macrocode}
\let\bbl@jpn@maybekansuji\number
\bbl@declare@ttribute{japanese}{kansujitoday}{\let\bbl@jpn@maybekansuji\kansuji}
%    \end{macrocode}
%
% トリックに使用した文字の |\catcode| を元に戻します。
%    \begin{macrocode}
\catcode`\L=\bbl@jpn@l@catcode\relax
\catcode`\P=\bbl@jpn@p@catcode\relax
\catcode`\X=\bbl@jpn@x@catcode\relax
%    \end{macrocode}
%
%    \begin{macrocode}
\@namedef{extras\CurrentOption}{}
\@namedef{noextras\CurrentOption}{}
\ldf@finish\CurrentOption
%</code>
%    \end{macrocode}
%
% \section*{謝辞}
%
% Babel-Option \Lopt{japanese}の作成に当って，バグフィックスや改良案を
% ご提案いただいた方に感謝します。
% bookworm $<$BYV01204$>$さんから，新しい言語を定義し，それに固有の
% 言語番号を付けるマクロ \verb+\addlanguage+の機能について，詳しい
% 解説をいただきました。本パッケージでは採用していませんが，\babel
% の言語切り替え機能を理解する上でたいへん参考になりました。
% Tony $<$PAG01322$>$さんから，キャプションと日付の定義について
% ご提案をいただきました。
% 大石勝 $<$DZH00446$>$さんから，初版に含まれていた \verb+\ifx\undefined+
% のバグをご指摘いただきました。
%
% \section*{変更履歴}
% \begin{itemize}
% \item 2005年2月：日付の定義を修正しました。
% \item 2007年10月：ZRさんからいただいた詳細なご指摘をもとに修正しました。\\
% \verb|http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/48625.html|
% \item 2007年12月：ZRさん，ttkさんからいただいたご指摘を反映しました。
% \item 2016年12月：日本語\TeX{}開発コミュニティが開発を引き継ぎました。
% 以降の変更履歴は本文中に直接書いてあります。
% \end{itemize}
%
% \StopEventually{}
%
%    \begin{macrocode}
%<*sample>
\ifx\directlua\undefined
  \documentclass{jbook}
\else
  \documentclass{ltjbook}
\fi
\usepackage[german,english,japanese]{babel}
\makeatletter
\def\tbcaption{\def\@captype{table}\caption{キャプションの例}}
\def\fgcaption{\def\@captype{figure}\caption{キャプションの例}}
\makeatother
\def\yes{--- はい。}
\def\no{--- いいえ。}
\def\TEXT{Textverarbeitung mit einem Rechner kann in vielf\"altiger Weise
erfolgen. Eigenschaften und Leistungsf\"ahigkeit sind hierbei weniger
vom jeweiligen Rechnertype, sondern vielmehr vom verwendeten
\textit{Textverarbeitungsprogramm} bestimmt.}
\def\se{\selectlanguage{english}}
\def\sj{\selectlanguage{japanese}}
\def\sg{\selectlanguage{german}}
\setlength{\hoffset}{-13mm}
\setlength{\textwidth}{16cm}
\begin{document}

\chapter{babel}
\section{japaneseパッケージ}
japaneseパッケージは日本語による見出し語と日付を出力するためのマクロを
定義しています。

\fgcaption

\begin{itemize}
\se
\item ここで英語（\texttt{english}）に変更します。（languageの値は\the\language）

\TEXT

ここは英語？ \iflanguage{english}{\yes}{\no}\par
ここはドイツ語？ \iflanguage{german}{\yes}{\no}\par
ここは日本語？ \iflanguage{japanese}{\yes}{\no}

※ \verb:\adddialect\l@japanese0: と設定しているため，日本語？も「はい」となります。

\sg
\item ここでドイツ語（\texttt{german}）に変更します。(languageの値は\the\language）

\TEXT

ここは英語？ \iflanguage{english}{\yes}{\no}\par
ここはドイツ語？ \iflanguage{german}{\yes}{\no}\par
ここは日本語？ \iflanguage{japanese}{\yes}{\no}

※ ハイフネーションがドイツ語―旧正書法―に切り替わっている点に注目。
なお，新正書法（\texttt{ngerman}）では\texttt{Leis-tungs-f\"a-hig-keit}のように分綴します。

\sj
\item ここで日本語（\texttt{japanese}）に変更します。(languageの値は\the\language）
\tbcaption
\item \verb:\和暦: は日付の表示をデフォルトの西暦「\today 」から和暦「\和暦\today 」に変更します。
\end{itemize}
\end{document}
%</sample>
%    \end{macrocode>
%
% \Finale
%
\endinput
