% \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--2019 by Japanese TeX Development Community % % This package 'japanese.dtx' supports the following Babel package: % % ==================================================================== % % Copyright (C) 2012-2018 Javier Bezos and Johannes L. Braams. % Copyright (C) 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} % %\ProvidesLanguage{japanese} %<*!sample> %\ProvidesFile{japanese.dtx} [2019/04/03 v2.2 Japanese support for babel (texjporg)] % %\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} % % %\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 % \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@kanjishowa{昭和} \def\bbl@jpn@kanjiheisei{平成} \def\bbl@jpn@kanjireiwa{令和} \def\bbl@jpn@kanjigan{元}% \def\bbl@jpn@TateSeirekiToday{% \bbl@jpn@maybekansuji\year 年% \bbl@jpn@maybekansuji\month 月% \bbl@jpn@maybekansuji\day 日} \def\bbl@jpn@TateWarekiToday{% \bbl@jpn@gengo\bbl@jpn@maybekansuji\bbl@jpn@gengoyear 年% \bbl@jpn@maybekansuji\month 月% \bbl@jpn@maybekansuji\day 日} \def\bbl@jpn@SeirekiToday{% \number\year 年% \number\month 月% \number\day 日} \def\bbl@jpn@WarekiToday{% \bbl@jpn@gengo\number\bbl@jpn@gengoyear 年% \number\month 月% \number\day 日} % \end{macrocode} % % p\TeX{}系では |\kansuji| トリックで同じ命令を定義します。 % \begin{macrocode} \else \begingroup \kansujichar1=\jis"472F\relax % 年 \kansujichar2=\jis"376E\relax % 月 \kansujichar3=\jis"467C\relax % 日 \xdef\bbl@jpn@kanjinen{\kansuji1}% \xdef\bbl@jpn@kanjigatsu{\kansuji2}% \xdef\bbl@jpn@kanjinichi{\kansuji3}% \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}% \kansujichar4=\jis"4A3F\relax % 平 \kansujichar5=\jis"402E\relax % 成 \kansujichar6=\jis"3E3C\relax % 昭 \kansujichar7=\jis"4E61\relax % 令 \xdef\bbl@jpn@kanjishowa{\kansuji62}% \xdef\bbl@jpn@kanjiheisei{\kansuji45}% \xdef\bbl@jpn@kanjireiwa{\kansuji72}% \kansujichar0=\jis"3835\relax % 元 \xdef\bbl@jpn@kanjigan{\kansuji0}% \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@gengo\bbl@jpn@maybekansuji\bbl@jpn@gengoyear\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@gengo\number\bbl@jpn@gengoyear\bbl@jpn@kanjinen \number\month\bbl@jpn@kanjigatsu \number\day\bbl@jpn@kanjinichi} \fi % \end{macrocode} % % |\bbl@jpn@gengo| の内部で,元号を計算します。 % % [2019-04-03] 2019年5月1日から始まる予定の新元号「令和」に対応しました。 % \begin{macrocode} \def\bbl@jpn@gengo#1\bbl@jpn@gengoyear{% \@tempcnta\year\relax \multiply\@tempcnta100 \advance\@tempcnta\month \multiply\@tempcnta100 \advance\@tempcnta\day \@tempcntb\year\relax \ifnum\@tempcnta<19890108 \bbl@jpn@kanjishowa \advance\@tempcntb-1925 \else\ifnum\@tempcnta<20190501 \bbl@jpn@kanjiheisei \advance\@tempcntb-1988 \else \bbl@jpn@kanjireiwa \advance\@tempcntb-2018 \fi\fi \ifnum\@tempcntb=1 \bbl@jpn@kanjigan % 元年は \number も \kansuji も関係ない \else #1\@tempcntb % この #1 は \number または \bbl@jpn@maybekansuji \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} % % 実際に使用する命令にコピーします。 % % [2019-04-03] 縦数式ディレクションは横組と同じ出力とします。 % \begin{macrocode} \@namedef{date\CurrentOption}{% \def\today{% P \iftdir\ifmdir % tate-math P \ifbbl@jpn@Seireki P \bbl@jpn@SeirekiToday P \else P \bbl@jpn@WarekiToday P \fi P \else % tate L \ifnum\ltjgetparameter{direction}=3 % tate X \ifbbl@jpn@Seireki X \bbl@jpn@TateSeirekiToday X \else X \bbl@jpn@TateWarekiToday X \fi P \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 % % \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} % % \end{macrocode> % % \Finale % \endinput