summaryrefslogtreecommitdiff
path: root/language/japanese
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-07-31 03:01:27 +0000
committerNorbert Preining <norbert@preining.info>2022-07-31 03:01:27 +0000
commit0d7064c66024537b237407f8b36413b055cf9a9a (patch)
tree51b6aa534418af1b4b49ccd1dffa32165100b8fe /language/japanese
parentab0990ca5f58ea10d38cc1760dbcbbd832626f40 (diff)
CTAN sync 202207310301
Diffstat (limited to 'language/japanese')
-rw-r--r--language/japanese/BX/bxcalc/LICENSE21
-rw-r--r--language/japanese/BX/bxcalc/README-ja.md69
-rw-r--r--language/japanese/BX/bxcalc/README.md79
-rw-r--r--language/japanese/BX/bxcalc/bxcalc.sty51
-rw-r--r--language/japanese/BX/bxcalc/bxcalcize.pdfbin0 -> 119918 bytes
-rw-r--r--language/japanese/BX/bxcalc/bxcalcize.sty89
-rw-r--r--language/japanese/BX/bxcalc/bxcalcize.tex62
-rw-r--r--language/japanese/BX/bxcalc/bxcalcux.pdfbin0 -> 175166 bytes
-rw-r--r--language/japanese/BX/bxcalc/bxcalcux.sty303
-rw-r--r--language/japanese/BX/bxcalc/bxcalcux.tex86
-rw-r--r--language/japanese/BX/bxcalc/sample-bxcalc.pdfbin0 -> 49697 bytes
-rw-r--r--language/japanese/BX/bxcalc/sample-bxcalc.tex29
-rw-r--r--language/japanese/BX/bxdvidriver/LICENSE21
-rw-r--r--language/japanese/BX/bxdvidriver/README.md104
-rw-r--r--language/japanese/BX/bxdvidriver/bxdvidriver.sty281
-rw-r--r--language/japanese/BX/bxeepic/LICENSE24
-rw-r--r--language/japanese/BX/bxeepic/README74
-rw-r--r--language/japanese/BX/bxeepic/bxdpxp2e.def10
-rw-r--r--language/japanese/BX/bxeepic/bxeepic.sty666
-rw-r--r--language/japanese/BX/bxeepic/sample-bxeepic.pdfbin0 -> 8349 bytes
-rw-r--r--language/japanese/BX/bxeepic/sample-bxeepic.tex11
-rw-r--r--language/japanese/BX/bxenclose/LICENSE27
-rw-r--r--language/japanese/BX/bxenclose/README.md60
-rw-r--r--language/japanese/BX/bxenclose/bxenclose.sty126
-rw-r--r--language/japanese/BX/bxnewfont/LICENSE21
-rw-r--r--language/japanese/BX/bxnewfont/README.md85
-rw-r--r--language/japanese/BX/bxnewfont/bxnewfont.sty642
-rw-r--r--language/japanese/BX/bxorigcapt/LICENSE21
-rw-r--r--language/japanese/BX/bxorigcapt/README.md56
-rw-r--r--language/japanese/BX/bxorigcapt/bxorigcapt.pdfbin0 -> 256321 bytes
-rw-r--r--language/japanese/BX/bxorigcapt/bxorigcapt.sty255
-rw-r--r--language/japanese/BX/bxorigcapt/bxorigcapt.tex112
32 files changed, 3385 insertions, 0 deletions
diff --git a/language/japanese/BX/bxcalc/LICENSE b/language/japanese/BX/bxcalc/LICENSE
new file mode 100644
index 0000000000..e2ed282c11
--- /dev/null
+++ b/language/japanese/BX/bxcalc/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2018-2019 Takayuki YATO (aka. "ZR")
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/language/japanese/BX/bxcalc/README-ja.md b/language/japanese/BX/bxcalc/README-ja.md
new file mode 100644
index 0000000000..a7df704b32
--- /dev/null
+++ b/language/japanese/BX/bxcalc/README-ja.md
@@ -0,0 +1,69 @@
+BXcalc パッケージ
+=================
+
+LaTeX: calc パッケージの機能を拡張する
+
+本パッケージバンドルは、以下のパッケージからなる:
+
+ * bxcalcize: calc 数式の適応範囲の拡大
+
+ * bxcalcux: 新しい長さ単位の追加
+
+この他に、このバンドルは bxcalc パッケージを含む。このパッケージは単に内部
+で上記のパッケージを一括して読み込む。
+
+### 前提環境
+
+ * フォーマット: LaTeX
+ * エンジン: 不問
+ - 一部の機能は e-TeX 拡張を必要とする。
+ * 依存パッケージ:
+ - calc
+
+### インストール
+
+ - `*.sty` → $TEXMF/tex/latex/BXcalc
+
+### ライセンス
+
+本パッケージは MIT ライセンスの下で配布される。
+
+bxcalc パッケージ ― 本体
+-------------------------
+
+本バンドルに含まれる他のパッケージを一括して読み込む。
+
+bxcalcize パッケージ ― calc 数式の適応範囲の拡大
+-------------------------------------------------
+
+LaTeX 標準命令中の長さ指定でこれまで calc パッケージの数式の使用が
+不可だった箇所を可能にする。
+
+詳細は解説文書 bxcalcize.pdf を参照。
+
+bxcalcux パッケージ ― 新しい長さ単位の追加
+-------------------------------------------
+
+ユーザが新しい長さ単位を定義して calc 数式で使えるようにする。
+
+詳細は解説文書 bxcalcux.pdf を参照。
+
+更新履歴
+--------
+
+ * Version 1.1 〈2020/09/25〉
+ - LaTeX カーネル 2020/10/01 版への対応。
+
+ * Version 1.0b 〈2019/11/24〉
+ - バグ修正。
+
+ * Version 1.0a 〈2018/01/28〉
+ - (試験的) `\usepTeXunits` 命令を追加。
+ - バグ修正。
+
+ * Version 1.0 〈2017/05/21〉
+ - 本バンドルとしての最初の公開版。(元々は BXjatool の一部だった。)
+
+--------------------
+Takayuki YATO (aka. "ZR")
+https://github.com/zr-tex8r
diff --git a/language/japanese/BX/bxcalc/README.md b/language/japanese/BX/bxcalc/README.md
new file mode 100644
index 0000000000..d260021cb7
--- /dev/null
+++ b/language/japanese/BX/bxcalc/README.md
@@ -0,0 +1,79 @@
+BXcalc Package
+==============
+
+LaTeX: To extend the functionality of the calc package
+
+This package bundle consists of the following packages:
+
+ * bxcalcize: To make calc expressions available in more places.
+
+ * bxcalcux: To add user-defined units to the calc syntax.
+
+In addition, this bundle provides the bxcalc package, which simply loads
+the above-mentioned packages internally.
+
+### System requirement
+
+ * TeX format: LaTeX.
+ * TeX engine: Anything.
+ - Some functions requires the e-TeX extension.
+ * Dependent packages:
+ - calc
+
+### Installation
+
+ - `*.sty` → $TEXMF/tex/latex/BXcalc
+
+### License
+
+This package is distributed under the MIT License.
+
+bxcalc package ― main
+----------------------
+
+This package simply loads all other packages in this bundle.
+
+Note: Under the LaTeX kernel of the version 2020/10/01 or later, the
+bxcalcize package is not loaded since it is no longer needed.
+
+
+bxcalcize package ― to make calc expressions available in more places
+----------------------------------------------------------------------
+
+Some standard LaTeX commands involving length specification do not allow
+the use of calc expressions. This package makes such uses possible.
+
+See the manual bxcalcize.pdf for detail.
+
+Note: The functionality of this package will be provided by the LaTeX
+kernel of the version 2020/10/01.
+
+
+bxcalcux package ― to add user-defined units to the calc syntax
+----------------------------------------------------------------
+
+This package enables users to define new length units and use them in
+calc expressions.
+
+See the manual bxcalcux.pdf for detail.
+
+
+Revision History
+----------------
+
+ * Version 1.1 〈2020/09/25〉
+ - Support LaTeX kernel 2020/10/01.
+
+ * Version 1.0b 〈2019/11/24〉
+ - Bug fix.
+
+ * Version 1.0a 〈2018/01/28〉
+ - Bug fix.
+
+ * Version 1.0 〈2017/05/21〉
+ - The first public version as this bundle, which has been seperated
+ from the old BXjatool bundle.
+
+--------------------
+Takayuki YATO (aka. "ZR")
+https://github.com/zr-tex8r
diff --git a/language/japanese/BX/bxcalc/bxcalc.sty b/language/japanese/BX/bxcalc/bxcalc.sty
new file mode 100644
index 0000000000..3336088f5b
--- /dev/null
+++ b/language/japanese/BX/bxcalc/bxcalc.sty
@@ -0,0 +1,51 @@
+%%
+%% This is file 'bxcalc.sty'.
+%%
+%% Copyright (c) 2018-2020 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+%% package declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{bxcalc}[2020/09/25 v1.1]
+\def\bxqcz@pkgname{bxcalc}
+
+%--------------------------------------- main
+
+%% packages
+\RequirePackage{calc}[]
+\@ifl@t@r\fmtversion{2020/10/01}{}{%else
+ \RequirePackage{bxcalcize}[2017/05/21]% v1.0
+}
+\RequirePackage{bxcalcux}[2017/05/21]% v1.0
+
+%--------------------------------------- \usepTeXunits
+
+\ifundef{\kanjiskip}{%
+ \newrobustcmd*{\usepTeXunits}{%
+ \DeclareCalcUnit{Q}{\dimexpr0.25mm\relax}%
+ \DeclareCalcUnit{H}{\dimexpr0.25mm\relax}%
+ \DeclareCalcUnit{trueQ}{\dimexpr0.25truemm\relax}%
+ \DeclareCalcUnit{trueH}{\dimexpr0.25truemm\relax}%
+ \ifdef{\zw}{%
+ \DeclareCalcUnit{zw}{\zw}%%
+ \DeclareCalcUnit{zh}{\zw}%
+ }{\ifdef{\jsZw}{%
+ \DeclareCalcUnit{zw}{\jsZw}%%
+ \DeclareCalcUnit{zh}{\jsZw}%
+ }{}}%
+ \ifdef{\zh}{%
+ \DeclareCalcUnit{zh}{\zh}%
+ }{}%
+ \let\usepTeXunits\relax
+ }%
+}{%else
+ \newrobustcmd*{\usepTeXunits}{}%
+}
+
+%--------------------------------------- all done
+\endinput
+%% EOF
diff --git a/language/japanese/BX/bxcalc/bxcalcize.pdf b/language/japanese/BX/bxcalc/bxcalcize.pdf
new file mode 100644
index 0000000000..23fe3879ef
--- /dev/null
+++ b/language/japanese/BX/bxcalc/bxcalcize.pdf
Binary files differ
diff --git a/language/japanese/BX/bxcalc/bxcalcize.sty b/language/japanese/BX/bxcalc/bxcalcize.sty
new file mode 100644
index 0000000000..ebb119ae01
--- /dev/null
+++ b/language/japanese/BX/bxcalc/bxcalcize.sty
@@ -0,0 +1,89 @@
+%%
+%% This is file 'bxcalcize.sty'.
+%%
+%% Copyright (c) 2018-2020 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+%% package declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{bxcalcize}[2020/09/25 v1.1]
+\def\bxcy@pkgname{bxcalcize}
+
+%% code guards
+\edef\bxcy@restore@codes{%
+\catcode45=\the\catcode45%
+\catcode46=\the\catcode46%
+\catcode47=\the\catcode47%
+\endlinechar=\the\endlinechar%
+\relax}
+\catcode45=12 % <->
+\catcode46=12 % <.>
+\catcode47=12 % </>
+\endlinechar\m@ne
+\AtEndOfPackage{
+\bxcy@restore@codes
+\let\bxcy@restore@codes\relax}
+
+
+%--------------------------------------- general
+
+%% packages
+\RequirePackage{calc}[]
+\RequirePackage{etoolbox}[]
+\ifx\numdef\@undefined\endinput\fi
+
+% check kernel version
+\@ifl@t@r\fmtversion{2020/10/01}{%
+ \PackageWarningNoLine\bxcy@pkgname
+ {Functionality of this package is already\MessageBreak
+ provided by LaTeX}%
+ \endinput
+}{}
+
+%% variables
+\newdimen\bxcy@resdim
+
+%--------------------------------------- patches to standard commands
+
+%% to \hspace / \vspace
+\csdef{hspace }{
+ \@ifstar{\bxcy@with@calc\@hspacer}
+ {\bxcy@with@calc\@hspace}
+}
+\csdef{vspace }{
+ \@ifstar{\bxcy@with@calc\@vspacer}
+ {\bxcy@with@calc\@vspace}
+}
+
+%% to \addvspace
+\let\bxcy@org@addvspace\addvspace
+\def\addvspace{
+ \bxcy@with@calc\bxcy@org@addvspace
+}
+
+%% to \\[<len>] (\@newline)
+\patchcmd{\@newline}{
+ \@gnewline{\vskip#1}
+}{
+ \setlength\bxcy@resdim{#1}
+ \edef\bxcy@tmpa{{\vskip\the\bxcy@resdim}}
+ \expandafter\@gnewline\bxcy@tmpa
+}{}{% failure
+ \PackageWarningNoLine\bxcy@pkgname
+ {Patch to \string\@newline\space failed.}
+}
+
+%% \bxcy@with@calc
+\def\bxcy@with@calc#1#2{
+ \setlength\bxcy@resdim{#2}
+ \edef\bxcy@tmpa{{\the\bxcy@resdim}}
+ \expandafter#1\bxcy@tmpa
+}
+
+%--------------------------------------- all done
+\endinput
+%% EOF
diff --git a/language/japanese/BX/bxcalc/bxcalcize.tex b/language/japanese/BX/bxcalc/bxcalcize.tex
new file mode 100644
index 0000000000..5645aa9b06
--- /dev/null
+++ b/language/japanese/BX/bxcalc/bxcalcize.tex
@@ -0,0 +1,62 @@
+\documentclass[a4paper]{article}
+\usepackage[scale=0.75]{geometry}
+\usepackage{shortvrb}
+\MakeShortVerb{\|}
+\newcommand{\PkgVersion}{1.1}
+\newcommand{\PkgDate}{2020/09/25}
+\newcommand{\Pkg}[1]{\textsf{#1}}
+\newcommand{\Meta}[1]{$\langle$\textit{#1}$\rangle$}
+\newcommand{\Note}{\par\noindent \textbf{NB:}\quad}
+\newcommand{\Means}{~:\quad}
+\providecommand{\eTeX}{$\varepsilon$-{\TeX}}
+%-----------------------------------------------------------
+\begin{document}
+\title{The \Pkg{bxcalcize} package}
+\author{Takayuki YATO\quad (aka.~``ZR'')}
+\date{v\PkgVersion \quad[\PkgDate]}
+\maketitle
+
+%===========================================================
+\section{Notice}
+
+Functionality of this package will be provided by the LaTeX
+kernel of the version 2020/10/01.
+
+%===========================================================
+\section{Overview}
+
+After loading \Pkg{calc}, most of the length specifications
+in {\LaTeX} become aware of that package--- i.e.\
+\Pkg{calc} expressions can be written in place of
+simple lengths.
+However some commands remain \Pkg{calc}-unaware; for example
+one cannot use expressions in the argument of |\hspace|.
+This package patches to the {\LaTeX} kernel and eliminates
+remaining \Pkg{calc}-unawareness
+(as far as I know).
+
+\paragraph{Supported format} \LaTeX.
+\paragraph{Supported engine} Any engine with {\eTeX} extensions.
+\paragraph{Prerequisite packages} \Pkg{calc} package.
+
+%===========================================================
+\section{Package Loading}
+
+Use |\usepackage| as usual, with no options.
+\begin{quote}\small\begin{verbatim}
+\usepackage{bxcalcize}
+\end{verbatim}\end{quote}
+
+%===========================================================
+\section{Usage}
+
+After loading the package, one can use \Pkg{calc} expressions
+in the following places:
+\begin{itemize}
+\item the sole argument of |\hspace|(|*|), |\vspace|(|*|),
+and |\addvspace|;
+\item the sole optional argument of |\\|.
+\end{itemize}
+
+%===========================================================
+\end{document}
diff --git a/language/japanese/BX/bxcalc/bxcalcux.pdf b/language/japanese/BX/bxcalc/bxcalcux.pdf
new file mode 100644
index 0000000000..fa530e451f
--- /dev/null
+++ b/language/japanese/BX/bxcalc/bxcalcux.pdf
Binary files differ
diff --git a/language/japanese/BX/bxcalc/bxcalcux.sty b/language/japanese/BX/bxcalc/bxcalcux.sty
new file mode 100644
index 0000000000..90e222643a
--- /dev/null
+++ b/language/japanese/BX/bxcalc/bxcalcux.sty
@@ -0,0 +1,303 @@
+%%
+%% This is file 'bxcalcux.sty'.
+%%
+%% Copyright (c) 2018-2020 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+%% package declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{bxcalcux}[2020/09/25 v1.1]
+\def\bxcx@pkgname{bxcalcux}
+
+%% code guards
+\edef\bxcx@restore@codes{%
+\catcode33=\the\catcode33%
+\catcode34=\the\catcode34%
+\catcode63=\the\catcode63%
+\endlinechar=\the\endlinechar%
+\relax}
+\catcode33=12 %<!>
+\catcode34=12 %<">
+\catcode63=12 %<?>
+\endlinechar\m@ne
+\AtEndOfPackage{
+\bxcx@restore@codes
+\let\bxcx@restore@codes\@undefined}
+
+%--------------------------------------- general
+
+%% packages
+\RequirePackage{calc}[]
+\RequirePackage{etoolbox}[]
+\ifx\numdef\@undefined\endinput\fi
+
+%% unique tokens
+\def\bxcx@end{\noexpand\bxcx@end@}
+\def\bxcx@mark{\noexpand\bxcx@mark@}
+\def\bxcx@mt{\noexpand\bxcx@mt@}
+
+%% variables
+\let\bxcx@parsed\@empty % parsed token list
+\let\bxcx@unit\@empty % unit string now holding
+\let\bxcx@unitlc\@empty % unit string now holding, lowercased
+\newcount\bxcx@arg@count % # of arguments remaining
+\let\bxcx@mode\relax % current mode (N/L/U)
+\let\bxcx@g@tempa\@empty % global temp
+% \bxcx@arity\CS % arity of functions of which the
+ % argument should be also parsed
+% \bxcx@lc/<char> % lowercase letter of an alphabet letter
+% \bxcx@tl/<str> % tl that relates to unit <str>
+% \bxcx@mluf/<str> % is there a multichar unit <char>... ?
+
+%% Makes the array \bxcx@arity*.
+\csdef{bxcx@arity\string\minof}{2}
+\csdef{bxcx@arity\string\maxof}{2}
+\csdef{bxcx@arity\string\ratio}{2}
+
+%% Makes the array \bxcx@lc/*.
+\@tempcnta=65
+\@tempcntb=97
+\@whilenum\@tempcnta<91 \do{
+ \lccode`!=\@tempcnta \lccode`?=\@tempcntb
+ \lowercase{
+ \csdef{bxcx@lc/!}{?}
+ \csdef{bxcx@lc/?}{?}
+ }
+ \advance\@tempcnta\@ne
+ \advance\@tempcntb\@ne
+}
+
+%% \bxcx@cond\ifXXX...\fi{<true>}{<false>}
+\@gobbletwo\if\if \def\bxcx@cond#1\fi{
+ #1\expandafter\@firstoftwo
+ \else \expandafter\@secondoftwo
+ \fi
+}
+
+%--------------------------------------- unit registration
+
+%%<*> \newcalcunit{<unit>}{<length>}
+\newcommand*\newcalcunit[2]{
+ \DeclareCalcUnit{#1}{\dimexpr#2\relax}
+}
+
+%%<+> \DeclareCalcUnit{<unit>}{<unit-of-dimen>}
+\newcommand*\DeclareCalcUnit[2]{
+ \edef\bxcx@tempa{#1}
+ \expandafter\bxcx@check@unit@name\meaning\bxcx@tempa\bxcx@end
+ \bxcx@cond\ifx\bxcx@tempa\@empty\fi{}{%else
+ \expandafter\bxcx@decl@calc@unit@a\meaning\bxcx@tempa\bxcx@end{#2}
+ }
+}
+\def\bxcx@decl@calc@unit@a#1>#2#3\bxcx@end#4{
+ \ifstrempty{#3}{
+ \csdef{bxcx@tl/#2}{#4}
+ }{%else
+ \csdef{bxcx@mluf/\@nameuse{bxcx@lc/#2}}{t}
+ \let\bxcx@unitlc\@empty
+ \@tfor\bxcx@tempa:=#2#3\do{
+ \eappto\bxcx@unitlc{\@nameuse{bxcx@lc/\bxcx@tempa}}
+ }
+ \csdef{bxcx@tl/\bxcx@unitlc}{#4}
+ }
+}
+\def\bxcx@check@unit@name#1>#2\bxcx@end{
+ \@tfor\bxcx@tempb:=#2\do{
+ \ifcsdef{bxcx@lc/\bxcx@tempb}{}{%else
+ \let\bxcx@tempa\@empty
+ }
+ }
+ \ifx\bxcx@tempa\@empty
+ \PackageError\bxcx@pkgname
+ {Illegal unit name '#2'}
+ \fi
+}
+
+%--------------------------------------- parser
+
+%%<+> \CUXParseExpr\CS{<expr>}
+\newcommand*\CUXParseExpr[2]{
+ \bxcx@parse{#2}
+ \let#1=\bxcx@parsed
+}
+
+%% \bxcx@parse
+\def\bxcx@parse#1{
+ \let\bxcx@parsed\@empty
+ \bxcx@clear@unit
+ \let\bxcx@mode=N\relax
+ \bxcx@parse@a#1@\bxcx@end
+}
+\def\bxcx@the#1{\expandafter\bxcx@thee\meaning#1}
+{\lccode`?=`r \lowercase{\gdef\bxcx@thee#1? #2{#2}}}
+\def\bxcx@parse@a{
+%\typeout{[\bxcx@the\bxcx@mode:\the\bxcx@arg@count:\bxcx@unitlc]\expandonce{\bxcx@parsed}}
+ \futurelet\bxcx@tok\bxcx@parse@b
+}
+\def\bxcx@parse@b{
+%\typeout{<token:\meaning\bxcx@tok>}
+ \bxcx@cond\ifx\bxcx@tok\@sptoken\fi{
+ \bxcx@parse@space
+ }{\bxcx@cond\ifx\bxcx@tok\bgroup\fi{
+ \bxcx@parse@group
+ }{\bxcx@cond\ifcat\relax\noexpand\bxcx@tok\fi{
+ \bxcx@arg@count=\z@
+ \bxcx@parse@cs
+ }{%else
+ \bxcx@arg@count=\z@
+ \bxcx@parse@char
+ }}}
+}
+\expandafter\def\expandafter\bxcx@parse@space\space{
+ \bxcx@parse@char{ }
+}
+\def\bxcx@parse@char#1{
+ \bxcx@cond\if N\bxcx@mode\fi{
+ \ifcsdef{bxcx@lc/#1}{
+ \ifcsdef{bxcx@tl/#1}{
+ \bxcx@add@unit{#1}
+ \let\bxcx@mode=L\relax
+ }{\ifcsdef{bxcx@mluf/\@nameuse{bxcx@lc/#1}}{
+ \bxcx@addto@unit{#1}
+ \let\bxcx@mode=U\relax
+ }{%else
+ \appto\bxcx@parsed{#1}
+ \let\bxcx@mode=L\relax
+ }}
+ }{%else
+ \appto\bxcx@parsed{#1}
+ }
+ }{\bxcx@cond\if U\bxcx@mode\fi{
+ \ifcsdef{bxcx@lc/#1}{
+ \bxcx@addto@unit{#1}
+ \ifcsdef{bxcx@tl/\bxcx@unitlc}{
+ \bxcx@add@unit{\bxcx@unitlc}
+ \bxcx@clear@unit
+ \let\bxcx@mode=L\relax
+ }{}
+ }{%else
+ \eappto\bxcx@parsed{\bxcx@unit}
+ \bxcx@clear@unit
+ \appto\bxcx@parsed{#1}
+ \let\bxcx@mode=N\relax
+ }
+ }{%else(L\bxcx@mode)
+ \appto\bxcx@parsed{#1}
+ \ifcsdef{bxcx@lc/#1}{}{%else
+ \let\bxcx@mode=N\relax
+ }
+ }}
+ \bxcx@parse@a
+}
+\def\bxcx@parse@cs#1{
+%\typeout{<cs:\string#1>}
+ \bxcx@cond{\ifx#1\bxcx@end}\fi{% NB. #1 can be \fi
+ \bxcx@parse@fin
+ }{%else
+ \ifcsdef{bxcx@arity\string#1}{
+ \bxcx@arg@count=\@nameuse{bxcx@arity\string#1}\relax
+ }{}
+ \bxcx@cond\if U\bxcx@mode\fi{
+ \eappto\bxcx@parsed{\bxcx@unit}
+ \bxcx@clear@unit
+ }{}
+ \appto\bxcx@parsed{#1}
+ \let\bxcx@mode=N\relax
+ \bxcx@parse@a
+ }
+}
+\def\bxcx@parse@group#1{
+ \bxcx@cond\if U\bxcx@mode\fi{
+ \eappto\bxcx@parsed{\bxcx@unit}
+ \bxcx@clear@unit
+ }{}
+ \bxcx@cond\ifnum\bxcx@arg@count>\z@\fi{
+%\typeout{<group:parse>}
+ \begingroup
+ \bxcx@parse{#1}
+ \global\let\bxcx@gtempa\bxcx@parsed
+ \endgroup
+ \expandafter\bxcx@parse@group@a\bxcx@gtempa\bxcx@end
+ \advance\bxcx@arg@count\m@ne
+ }{%else
+%\typeout{<group:pass>}
+ \appto\bxcx@parsed{{#1}}
+ }
+ \let\bxcx@mode=N\relax
+ \bxcx@parse@a
+}
+\def\bxcx@parse@group@a#1\bxcx@end{
+ \appto\bxcx@parsed{{#1}}
+}
+\def\bxcx@parse@fin{
+ \expandafter\bxcx@parse@fin@a\bxcx@parsed\bxcx@end
+}
+\def\bxcx@parse@fin@a#1@\bxcx@end{
+ \def\bxcx@parsed{#1}
+}
+
+%% \bxcx@add@unit
+\def\bxcx@add@unit#1{
+%\typeout{<unit:#1>}
+ \expandafter\bxcx@add@unit@a\csname bxcx@tl/#1
+ \endcsname\bxcx@end
+}
+\def\bxcx@add@unit@a#1\bxcx@end{
+ \appto\bxcx@parsed{#1}
+}
+
+%% \bxcx@clear@unit
+\def\bxcx@clear@unit{
+ \let\bxcx@unit\@empty
+ \let\bxcx@unitlc\@empty
+}
+
+%% \bxcx@addto@unit
+\def\bxcx@addto@unit#1{
+ \appto\bxcx@unit{#1}
+ \eappto\bxcx@unitlc{\@nameuse{bxcx@lc/#1}}
+}
+
+%--------------------------------------- apply the patch
+
+%% \bxcx@decl@patch\xxx{<body>}
+% Here xxx is setlength or addtolength; and gives a new
+% definition to that command. The <body> knows two macro
+% arguments (#1 & #2) and \CUXxxx is the original definition
+% of \xxx.
+\def\bxcx@decl@patch#1{
+ \expandafter\bxcx@decl@patch@a\csname
+ \expandafter\@gobble\string#1\space\expandafter\endcsname
+ \csname CUX\expandafter\@gobble\string#1\endcsname
+ #1
+}
+\def\bxcx@decl@patch@a#1#2#3{
+ \def\bxcx@tempa{\protect#1}
+ \bxcx@cond\ifx\bxcx@tempa#3\fi{
+ \let#2=#1
+ \def#1##1##2
+ }{%else
+ \let#2=#3
+ \DeclareRobustCommand*#3[2]
+ }
+}
+
+%% Patch to \setlength.
+\bxcx@decl@patch\setlength{
+ \bxcx@parse{#2}
+ \CUXsetlength{#1}{\bxcx@parsed}
+}
+
+%% Patch to \addtolength.
+\bxcx@decl@patch\addtolength{
+ \bxcx@parse{#2}
+ \CUXaddtolength{#1}{\bxcx@parsed}
+}
+
+%--------------------------------------- all done
+\endinput
+%% EOF
diff --git a/language/japanese/BX/bxcalc/bxcalcux.tex b/language/japanese/BX/bxcalc/bxcalcux.tex
new file mode 100644
index 0000000000..2dd90a17c3
--- /dev/null
+++ b/language/japanese/BX/bxcalc/bxcalcux.tex
@@ -0,0 +1,86 @@
+\documentclass[a4paper]{article}
+\usepackage[scale=0.75]{geometry}
+\usepackage{shortvrb}
+\MakeShortVerb{\|}
+\newcommand{\PkgVersion}{1.1}
+\newcommand{\PkgDate}{2020/09/25}
+\newcommand{\Pkg}[1]{\textsf{#1}}
+\newcommand{\Meta}[1]{$\langle$\textit{#1}$\rangle$}
+\newcommand{\Note}{\par\noindent \textbf{NB:}\quad}
+\newcommand{\Means}{~:\quad}
+\providecommand{\eTeX}{$\varepsilon$-{\TeX}}
+%-----------------------------------------------------------
+\begin{document}
+\title{The \Pkg{bxcalcux} package}
+\author{Takayuki YATO\quad (aka.~``ZR'')}
+\date{v\PkgVersion \quad[\PkgDate]}
+\maketitle
+
+%===========================================================
+\section{Overview}
+
+This package allows one to create a new unit of length
+that can be used in length expressions
+of the \Pkg{calc} package.
+For example,
+\begin{quote}\small\begin{verbatim}
+\newcalcunit{thou}{0.07227pt}% thousandth of inch
+\setlength{\lengthA}{10thou}
+\end{verbatim}\end{quote}
+will assign 0.72266\,pt to |\lengthA|.%
+\footnote{Using \texttt{0.001in} instead of
+\texttt{0.07227pt} will give rather inaccurate results,
+since \texttt{0.001in} is evaluated to 0.7277\,pt.}
+
+\paragraph{Supported format} \LaTeX.
+\paragraph{Supported engine} Any engine with {\eTeX} extension.
+\paragraph{Prerequisite packages}
+\Pkg{calc}, \Pkg{etoolbox}.
+
+%===========================================================
+\section{Package Loading}
+
+Use |\usepackage| as usual, with no options.
+\begin{quote}\small\begin{verbatim}
+\usepackage{bxcalcux}
+\end{verbatim}\end{quote}
+
+%===========================================================
+\section{Usage}
+
+\begin{itemize}
+\item |\newcalcunit{|\Meta{unit}|}{|\Meta{length}|}|\Means
+Declares a new unit \Meta{unit} as equal to \Meta{length}.
+The unit name must consist only of alphabets.
+You can use relative units such as |0.5em| in \Meta{length},
+and such relative units are resolved
+when \Pkg{calc} expressions are evaluated.
+
+\item |\DeclareCalcUnit{|\Meta{unit}|}{|\Meta{text}|}|\Means
+\textsl{(for {\TeX}nicians)}
+Declares a new unit \Meta{unit} as equal to the unit
+expressed by a token list \Meta{text},
+which must form a ``unit of dimen'' (in {\TeX} terminology).
+Here is an example.
+\begin{quote}\small\begin{verbatim}
+\DeclareCalcUnit{ls}{\baselineskip}% current line skip
+\end{verbatim}\end{quote}
+
+\end{itemize}
+
+%===========================================================
+\section{Notices}
+
+\begin{itemize}
+\item Usually unit names are treated as case-insensitive;
+but as exception, unit names with a single letter are
+case-sensitive.
+\item You must not create a unit name that coincides
+with a prefix of existing (built-in or created) units
+or any keywords that could be used in \Pkg{calc} expressions
+(such as |plus|, |fil|, etc.); otherwise unexpected
+things would occur.
+\end{itemize}
+
+%===========================================================
+\end{document}
diff --git a/language/japanese/BX/bxcalc/sample-bxcalc.pdf b/language/japanese/BX/bxcalc/sample-bxcalc.pdf
new file mode 100644
index 0000000000..bcfc5628a5
--- /dev/null
+++ b/language/japanese/BX/bxcalc/sample-bxcalc.pdf
Binary files differ
diff --git a/language/japanese/BX/bxcalc/sample-bxcalc.tex b/language/japanese/BX/bxcalc/sample-bxcalc.tex
new file mode 100644
index 0000000000..48ed148710
--- /dev/null
+++ b/language/japanese/BX/bxcalc/sample-bxcalc.tex
@@ -0,0 +1,29 @@
+\documentclass[a4paper]{article}
+\usepackage{bxcalc}
+% Declares new units
+\newcalcunit{ls}{\baselineskip}
+\newcalcunit{tm}{0.05em}
+%
+\title{Sample document of \textsf{bxcalc}}
+\author{ZR}
+\date{}
+\begin{document}
+\maketitle
+
+\section{Example 1}
+
+\noindent
+The quick brown fox\\[1ex-1ls]% so line skip is 1ex
+jump\hspace{6tm}s\hspace{12tm}ov\hspace{2tm}er\\[1ex-1ls]
+\hspace*{3tm}t\hspace{4tm}he\hspace{9tm}lazy\hspace{4tm}dog.
+
+\section{Example 2}
+
+\noindent
+AAAAAAAAAAAAAAAAAAAA\\[\heightof{A}-1ls+2tm]
+A\hspace{\widthof{A}*18}A\\[\heightof{A}-1ls+2tm]
+A\hspace{\widthof{A}*18}A\\[\heightof{A}-1ls+2tm]
+A\hspace{\widthof{A}*18}A\\[\heightof{A}-1ls+2tm]
+AAAAAAAAAAAAAAAAAAAA
+
+\end{document}
diff --git a/language/japanese/BX/bxdvidriver/LICENSE b/language/japanese/BX/bxdvidriver/LICENSE
new file mode 100644
index 0000000000..8ada757fbc
--- /dev/null
+++ b/language/japanese/BX/bxdvidriver/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2017 Takayuki YATO (aka. "ZR")
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/language/japanese/BX/bxdvidriver/README.md b/language/japanese/BX/bxdvidriver/README.md
new file mode 100644
index 0000000000..bf2fb1f417
--- /dev/null
+++ b/language/japanese/BX/bxdvidriver/README.md
@@ -0,0 +1,104 @@
+BXdvidriver Package
+===================
+
+LaTeX: To specify a driver option effective only in DVI output
+
+This single-function package enables authors to specify a global
+driver option (dvips, dvipdfmx, etc) which is applied only when the
+engine outputs a DVI file. It is useful to create special document-
+templates that can be compiled in both PDF-mode and DVI-mode.
+
+### System requirement
+
+ * TeX format: LaTeX.
+ * TeX engine: Anything.
+ * Dependent packages:
+ - ifpdf, ifluatex, ifxetex, ifvtex
+ - pdftexcmds
+
+### Installation
+
+ - `*.sty` → $TEXMF/tex/latex/BXdvidriver
+
+### License
+
+This package is distributed under the MIT License.
+
+The bxdvidriver Package
+-----------------------
+
+### Package Loading
+
+ \usepackage[<option>,...]{bxdvidriver}
+
+The available options are described hereafter.
+
+#### Driver options
+
+The following driver options are available:
+
+ dvips,xdvi,dvipdf,dvipdfm,dvipdfmx,dvipsone
+ dviwindo,oztex,textures,pctexps,pctex32
+
+Suppose the document begins with:
+
+ \documentclass[a4paper]{article}
+ \usepackage[dvipdfmx]{bxdvidriver}
+ \usepackage{graphicx,color}
+
+If the document is compiled with pdflatex (or xelatex, lualatex), then
+the package does nothing and the driver option `dvipdfmx` is simply
+ignored.
+
+However, if the document is compiled with latex (or any other engine
+that outputs DVI files), then the package adds the given driver option
+`dvipdfmx` to the global option list, and makes the settings effectively
+the same as the following:
+
+ \documentclass[a4paper,dvipdfmx]{article}
+ \usepackage{graphicx,color}
+
+The driver option is globally in effect, and thus the packages graphicx
+and color will choose the driver for dvipdfmx.
+
+*Note.* Some care must be taken when the document class itself has some
+driver-dependent behavior. In that case, simply loading bxdvidriver
+after `\documentclass` would leave its driver option unapplied to the
+document class. Instead, you must load the bxdvidriver package *before*
+`\documentclass` with `\RequirePackage` command.
+
+ \RequirePackage[dvipdfmx]{bxdvidriver}
+ \documentclass[a4paper]{some-fancy-class}
+ \usepackage{graphicx,color}
+
+#### Other options
+
+This package is essentially single-function, but as side effect it also
+checks some integrity on driver settings:
+
+ * whether (at most) one driver option is given;
+ * whether the driver matches the (PDF-output) engine;
+ * whether (at most) one graphics driver is loaded.
+
+By default, an error is issued when any check fails. But the behavior
+can be changed by options.
+
+ * `check` (default): Check failure issues an error.
+ * `nocheck`: Check failure does not issue an error.
+
+### Usage
+
+This package offers no user commands or environments. All the settings
+are done by package options.
+
+Revision History
+----------------
+
+ * Version 0.2a ‹2017/02/13›
+ - Bug fix.
+ * Version 0.2 ‹2016/03/26›
+ - The first public version.
+
+--------------------
+Takayuki YATO (aka. "ZR")
+https://github.com/zr-tex8r
diff --git a/language/japanese/BX/bxdvidriver/bxdvidriver.sty b/language/japanese/BX/bxdvidriver/bxdvidriver.sty
new file mode 100644
index 0000000000..612249d600
--- /dev/null
+++ b/language/japanese/BX/bxdvidriver/bxdvidriver.sty
@@ -0,0 +1,281 @@
+% bxdvidriver.sty
+
+%% package declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{bxdvidriver}[2017/02/13 v0.2a]
+
+%% preparation
+\def\bxdd@pkgname{bxdvidriver}
+\providecommand\bxDebug[1]{}
+
+%--------------------------------------- general
+
+%% \bxdd@dvi@driver@list
+% List of dvi-driver names.
+\@onlypreamble\bxdd@dvi@driver@list
+\def\bxdd@dvi@driver@list{%
+ dvips,xdvi,dvipdf,dvipdfm,dvipdfmx,dvipsone,%
+ dviwindo,oztex,textures,pctexps,pctex32}
+%% \bxdd@pdf@driver@list
+% List of pdf-driver names.
+\@onlypreamble\bxdd@pdf@driver@list
+\def\bxdd@pdf@driver@list{%
+ pdftex,xetex,luatex,vtex}
+
+%% packages
+\RequirePackage{ifpdf,ifxetex,ifluatex,ifvtex}
+\RequirePackage{pdftexcmds}
+
+%% variables
+\newif\ifbxdd@ok
+\@onlypreamble\bxdd@driver
+\let\bxdd@driver\relax % driver given to this package
+\@onlypreamble\bxdd@pdf@driver
+\let\bxdd@pdf@driver\relax % actual pdf-mode driver, or \relax
+
+%% \[bxdd@T/<driver>]
+\@for\bxdd@x:=\bxdd@dvi@driver@list\do{%
+ \expandafter\let\csname bxdd@T/\bxdd@x\endcsname=d}
+\@for\bxdd@x:=\bxdd@pdf@driver@list\do{%
+ \expandafter\let\csname bxdd@T/\bxdd@x\endcsname=p}
+
+%% \bxdd@detokenize\CS
+\def\bxdd@detokenize#1{%
+ \expandafter\bxdd@detokenize@a\meaning#1\relax#1}
+\def\bxdd@detokenize@a#1>#2\relax#3{%
+ \def#3{#2}}
+
+%% switch 'bxdd@in@preamble'
+\newif\ifbxdd@in@preamble
+\ifx\documentclass\@twoclasseserror
+ \bxdd@in@preambletrue
+\fi
+
+%--------------------------------------- options
+
+%% 'check'/'nocheck'
+\newif\ifbxdd@check \bxdd@checktrue
+\DeclareOption{check}{%
+ \bxdd@checktrue}
+\DeclareOption{nocheck}{%
+ \bxdd@checkfalse}
+%% driver options
+\DeclareOption*{%
+ \bxdd@pfxplus\CurrentOption \ifx\bxdd@tmpa\@empty
+ \let\bxdd@tmpa\CurrentOption
+ \else
+ \expandafter\let\csname bxdd@T/\bxdd@tmpa\endcsname=d%
+ \fi
+ \expandafter\let\expandafter\bxdd@tmpb
+ \csname bxdd@T/\bxdd@tmpa\endcsname
+ \ifx\bxdd@tmpb\relax % unknown name
+ \PackageError\bxdd@pkgname
+ {Unknown driver name '\bxdd@tmpa' found}%
+ {The invalid option is ignored.\MessageBreak\@ehc}
+ \else\ifx\bxdd@driver\relax % first
+ \let\bxdd@driver\bxdd@tmpa
+ \else\ifx\bxdd@driver\bxdd@tmpa % repeated
+ \PackageInfo\bxdd@pkgname
+ {Redundant driver option '\bxdd@tmpa',\MessageBreak
+ found}%
+ \else % second
+ \PackageError\bxdd@pkgname
+ {Multiple driver options are given\MessageBreak
+ ('\bxdd@driver' and '\bxdd@tmpa')}%
+ {The extra option '\bxdd@tmpa' is ignored.\MessageBreak\@ehc}
+ \fi\fi\fi}
+\def\bxdd@pfxplus#1{%
+ \expandafter\bxdd@pfxplus@a#1\@gobble+\@nil}
+\def\bxdd@pfxplus@a#1+#2\@nil{%
+ \edef\bxdd@tmpa{\ifx\@nil#1\@nil#2\else\fi}}
+%%
+\ProcessOptions*
+
+%% check consistency
+\ifx\bxdd@driver\relax
+ \PackageInfo\bxdd@pkgname
+ {No driver option given,}
+\else\expandafter\ifx\csname bxdd@T/\bxdd@driver\endcsname p%
+ \PackageWarning\bxdd@pkgname
+ {The driver '\bxdd@driver' is a pdf-mode driver and\MessageBreak
+ inappropriate for this package,}
+\else\bxDebug{driver=\bxdd@driver}
+\fi\fi
+
+%--------------------------------------- pdf-mode detection
+
+%% check 'pdfmode' and set \bxdd@pdf@driver
+\bxdd@oktrue
+\ifluatex
+ \let\bxdd@tmpa\m@ne
+ \pdf@isprimitive\outputmode\outputmode{\let\bxdd@tmpa\outputmode}{}
+ \pdf@isprimitive\pdfoutput\pdfoutput{\let\bxdd@tmpa\pdfoutput}{}
+ \ifnum\bxdd@tmpa>\z@
+ \def\bxdd@pdf@driver{luatex}%
+ \else\ifnum\bxdd@tmpa<\z@
+ \PackageError\bxdd@pkgname
+ {INTERNAL ERROR (1)}
+ {Package loading is aborted.\MessageBreak\@ehc}
+ \bxdd@okfalse
+ \fi\fi
+\else\ifxetex
+ \def\bxdd@pdf@driver{xetex}
+\else\ifvtex
+ \def\bxdd@pdf@driver{vtex}
+\else\ifpdf
+ \def\bxdd@pdf@driver{pdftex}
+\fi\fi\fi\fi
+\ifbxdd@ok\else
+\expandafter\endinput\fi\relax
+
+% clear \bxdd@driver if pdf-mode
+\ifx\bxdd@pdf@driver\relax\else
+ \PackageInfo\bxdd@pkgname
+ {Driver option '\bxdd@driver' is ignored, because\MessageBreak
+ the engine is in pdf-mode,}
+ \let\bxdd@driver\relax
+\fi
+
+%--------------------------------------- append to global
+
+%% variables
+\let\bxdd@gopt\relax
+\let\bxdd@godrv\relax
+\let\bxdd@godrv@multiple=M% flag value
+
+%% \bxdd@scan@global@options
+\@onlypreamble\bxdd@scan@global@options
+\def\bxdd@scan@global@options{%
+ \begingroup
+ \@for\bxdd@gopt:=\@classoptionslist\do{%
+ \let\bxdd@tmpa\bxdd@gopt \bxdd@detokenize\bxdd@tmpa
+ \expandafter\ifx\csname bxdd@T/\bxdd@tmpa\endcsname\relax\else
+ \ifbxdd@in@preamble
+ \@expandtwoargs\@removeelement\bxdd@gopt
+ \@unusedoptionlist\@unusedoptionlist
+ \fi
+ \ifx\bxdd@godrv\bxdd@gopt % just redundant
+ \else\ifx\bxdd@godrv\relax % first
+ \let\bxdd@godrv\bxdd@gopt
+ \else\ifx\bxdd@godrv\bxdd@godrv@multiple % more
+ \PackageInfo\bxdd@pkgname
+ {Extra driver option in global option list\MessageBreak
+ ('\bxdd@gopt'),}%
+ \else % second
+ \PackageInfo\bxdd@pkgname
+ {Multiple driver options in global option list\MessageBreak
+ ('\bxdd@godrv' and '\bxdd@gopt'),}%
+ \let\bxdd@godrv\bxdd@godrv@multiple
+ \fi\fi\fi
+ \fi}
+ \global\let\@unusedoptionlist\@unusedoptionlist
+ \aftergroup\bxdd@okfalse
+ \ifx\bxdd@godrv\relax
+ \ifx\bxdd@driver\relax\else
+ \PackageInfo\bxdd@pkgname
+ {Driver option '\bxdd@driver' is appended to the\MessageBreak
+ global option list,}
+ \aftergroup\bxdd@oktrue
+ \fi
+ \else\ifx\bxdd@godrv\bxdd@driver
+ \PackageInfo\bxdd@pkgname
+ {Driver option '\bxdd@driver' is already contained\MessageBreak
+ in the global option list,}
+ \else\ifx\bxdd@godrv\bxdd@godrv@multiple
+ \ifbxdd@check
+ \PackageError\bxdd@pkgname
+ {Multiple driver options in global option list\MessageBreak
+ (see log for detail)}%
+ {\@ehd}%
+ \fi
+ \else\ifx\bxdd@driver\relax
+ % nothing to do
+ \else % inconsistent
+ \ifbxdd@check
+ \PackageError\bxdd@pkgname
+ {The driver specified is '\bxdd@driver',\MessageBreak
+ but the global list contains '\bxdd@godrv'}%
+ {\@ehd}%
+ \else
+ \PackageInfo\bxdd@pkgname
+ {Driver option '\bxdd@driver' is discarded,\MessageBreak
+ because the global option list contains another driver\MessageBreak
+ '\bxdd@godrv',}
+ \fi
+ \fi\fi\fi\fi
+ \endgroup}
+
+%% append the specified driver option
+\ifbxdd@in@preamble
+ \bxdd@scan@global@options
+ \ifbxdd@ok
+ \edef\bxdd@tmpa{%
+ \noexpand\g@addto@macro\noexpand\@classoptionslist{%
+ ,\bxdd@driver}%
+ }\bxdd@tmpa
+ \fi
+\else % 'before-preamble'
+ \let\bxdd@org@fileswith@pti@ns\@fileswith@pti@ns
+ \def\@fileswith@pti@ns#1{%
+ \ifx#1\@clsextension
+ \let\@fileswith@pti@ns\bxdd@org@fileswith@pti@ns
+ \let\bxdd@org@fileswith@pti@ns\@undefined
+ \g@addto@macro\@documentclasshook{%
+ \bxdd@scan@global@options}%
+ \ifx\bxdd@driver\relax
+ \def\bxdd@tmpa{\@fileswith@pti@ns#1}%
+ \else
+ \edef\bxdd@tmpa{\noexpand\bxdd@tmpb{\bxdd@driver}}%
+ \def\bxdd@tmpb##1[##2]{\@fileswith@pti@ns#1[{##2,##1}]}%
+ \fi
+ \else
+ \def\bxdd@tmpa{\bxdd@org@fileswith@pti@ns#1}%
+ \fi
+ \bxdd@tmpa}
+\fi
+
+%--------------------------------------- check for graphics drivers
+
+%% \bxdd@scan@graphics@drivers
+\@onlypreamble\bxdd@scan@graphics@drivers
+\def\bxdd@scan@graphics@drivers{%
+ \begingroup
+ \edef\bxdd@tmpa{\bxdd@dvi@driver@list,\bxdd@pdf@driver@list}%
+ \@for\bxdd@gopt:=\bxdd@tmpa\do{%
+ \expandafter\ifx\csname ver@\bxdd@gopt.def\endcsname\relax\else
+ \ifx\bxdd@godrv\relax % first
+ \let\bxdd@godrv\bxdd@gopt
+ \else\ifx\bxdd@godrv\bxdd@godrv@multiple % more
+ \PackageInfo\bxdd@pkgname
+ {Extra graphics driver is loaded\MessageBreak
+ ('\bxdd@gopt'),}%
+ \else % second
+ \PackageInfo\bxdd@pkgname
+ {Multiple graphics driver is loaded\MessageBreak
+ ('\bxdd@godrv' and '\bxdd@gopt'),}%
+ \let\bxdd@godrv\bxdd@godrv@multiple
+ \fi\fi
+ \fi}
+ \ifx\bxdd@godrv\relax
+ \PackageInfo\bxdd@pkgname
+ {No graphics driver used,}
+ \else\ifx\bxdd@godrv\bxdd@godrv@multiple
+ \ifbxdd@check
+ \PackageError\bxdd@pkgname
+ {Multiple graphics drivers are loaded\MessageBreak
+ (see log for detail)}%
+ {\@ehd}%
+ \fi
+ \else
+ \PackageInfo\bxdd@pkgname
+ {Graphics driver is '\bxdd@godrv',}
+ \fi\fi
+ \endgroup}
+
+%% add hook
+\AtBeginDocument{%
+ \bxdd@scan@graphics@drivers}
+
+%--------------------------------------- all done
+\endinput
+%% EOF
diff --git a/language/japanese/BX/bxeepic/LICENSE b/language/japanese/BX/bxeepic/LICENSE
new file mode 100644
index 0000000000..46756e57fe
--- /dev/null
+++ b/language/japanese/BX/bxeepic/LICENSE
@@ -0,0 +1,24 @@
+本ソフトウェアは MIT ライセンスの下で配布されます。著作権は作者である
+「八登崇之(別名 ZR)」に属します。また本ソフトウェアは無保証です。
+
+The MIT License
+
+Copyright (c) 2012 Takayuki YATO (a.k.a. "ZR")
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/language/japanese/BX/bxeepic/README b/language/japanese/BX/bxeepic/README
new file mode 100644
index 0000000000..a3cb4d00ba
--- /dev/null
+++ b/language/japanese/BX/bxeepic/README
@@ -0,0 +1,74 @@
+BXeepic Package
+===============
+
+LaTeX: Reimplementation of epic/eepic features using pict2e engine
+
+The eepic package (authored by Conrad Kwok) is one of packages to
+provide small-size extention to the picture environment of LaTeX
+(and epic package) and employs the tpic drawing feature of DVI-wares.
+Back in 1990--2000 the use of epic + eepic was widespread because
+many of the legacy DVI-wares (dvips, dvipdfmx, etc.) support tpic
+(and thus eepic extension). But pdfTeX engine has never supported
+tpic. As consequence, the use of epic + eepic was gradually replaced
+by pict2e as pdfTeX became more popular.
+
+In most cases drawings using epic + eepic are easily converted to
+pict2e ones, but there are features that eepic supports but pict2e
+does not --- e.g. ellipsis, dashed line. The present package provides
+almost full features of epic + eepic implemented on pict2e engines.
+Thus one can make epic + eepic drawings work on pdfTeX; moreover,
+one can use eepic and pict2e in the same document.
+
+### Installation
+
+ - `*.sty`, `*.def` → $TEXMF/tex/latex/bxeepic
+
+### Usage
+
+Load this package after loading pict2e.
+
+ \usepackage[<pict2e options>]{pict2e}
+ \usepackage{bxeepic}
+
+If pict2e is not yet loaded in loading bxeepic then it is loaded
+automatically, and in this case every option given to bxeepic will
+be passed to pict2e.
+
+ \usepackage[<pict2e options>]{bxeepic}
+
+This package provides all commands of epic and eepic packages, except
+the following:
+
+ - Shading: `\blacken`, `\whiten`, `\shade`, `\texture`, `\filltype`
+ - Dashed line with dotted dashes: the second optional argument of
+ `\dashline` is ignored.
+ - Dotted line with user-defined dots: the optional argument of
+ `\dottedline` is ignored.
+
+### Notice
+
+ - When behavior of a command differs btween eepic and epic, then
+ that of eepic is adopted.
+ - When behavior of a command differs btween pict2e and eepic, then
+ that of pict2e is adopted.
+ - However, `\arc` command can be used either in pict2e or eepic
+ syntax; when it looks like `\arc{...}{...}{...}` then eepic syntax
+ is assumed.
+ - When bxeepic is loaded, both epic and eepic packages are marked
+ as ‘already-loaded’; so one can load bxeepic earlily and then
+ the packages that rely on epic and eepic will work happily.
+
+Revision History
+----------------
+
+ * Version 0.2 <2013/04/28>
+ - The bxdpxp2e module, which provides proper support for
+ dvipdfmx, was abolished because the recent pic2e (>=v0.2y)
+ has the support.
+ - Documentation.
+ * Version 0.1 <2010/08/08>
+ - The first public version.
+
+--------------------
+Takayuki YATO (aka. "ZR")
+http://zrbabbler.sp.land.to/
diff --git a/language/japanese/BX/bxeepic/bxdpxp2e.def b/language/japanese/BX/bxeepic/bxdpxp2e.def
new file mode 100644
index 0000000000..b1fde9c735
--- /dev/null
+++ b/language/japanese/BX/bxeepic/bxdpxp2e.def
@@ -0,0 +1,10 @@
+\typeout{%
+!!!!!!!!!!!!!!!!!!!! WARNING !!!!!!!!!!!!!!!!!!!!^^J%
+Loading the file 'bxdpxp2e.def' in 'pict2e.cfg' should be^^J%
+no longer needed, because the recent pict2e package (>=0.2y)^^J%
+properly supports dvipdfmx.^^J%
+If your pict2e is of older version, then update pict2e, or^^J%
+load 'bxeepic' package (with 'dvipdfmx' driver option) in^^J%
+place of 'pict2e' package.^^J%
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
+\endinput
diff --git a/language/japanese/BX/bxeepic/bxeepic.sty b/language/japanese/BX/bxeepic/bxeepic.sty
new file mode 100644
index 0000000000..f450f154b2
--- /dev/null
+++ b/language/japanese/BX/bxeepic/bxeepic.sty
@@ -0,0 +1,666 @@
+%
+% bxeepic.sty
+%
+
+%% package declarations
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{bxeepic}[2013/04/28 v0.2]
+
+%% preparation
+\def\bxpz@ee@pkgname{bxeepic}
+\def\bxpz@ee@error{\PackageError\bxpz@ee@pkgname}
+\def\bxpz@ee@warn{\PackageWarning\bxpz@ee@pkgname}
+% (errors)
+\def\bxpz@warn@peald#1{\bxpz@ee@warn
+ {Option '#1' ignored (pict2e already loaded)}}
+\def\bxpz@warn@wnpnt{\bxpz@ee@warn
+ {Poly-line commands need at least two vertices.}}
+\def\bxpz@warn@wnstr{\bxpz@ee@warn
+ {Blank lines due to too low stretch value.}}
+% (globals)
+\newif\ifbxpz@injoin
+\newif\ifbxpz@dashset
+\newif\ifbxpz@eepic@dotl
+\newif\ifbxpz@uselbl
+\newif\ifbxpz@first
+\chardef\bxpz@boxa=8
+
+%% public parameters
+%%<*> \dashlinestretch
+\def\dashlinestretch{0}
+%%<*> \drawlinestretch
+\def\drawlinestretch{0}
+%%<*> \maxovaldiam
+\newdimen\maxovaldiam \maxovaldiam=40pt
+%%<*> \epictopgridlabelsep
+\def\epictopgridlabelsep{2mm}
+%%<*> \epicbottomgridlabelsep
+\def\epicbottomgridlabelsep{2\unitlength}
+%%<*> \epicsidegridlabelsep
+\def\epicsidegridlabelsep{\spacewidth}
+%% other initial settings
+\AtEndOfPackage{%
+ \drawlines
+ \eepicdottedlines
+ \def\bxpz@tmpa{20pt}%
+ %\ifx\maxovalrad\bxpz@tmpa \def\maxovalrad{.5\maxovaldiam}\fi
+}
+
+%% internal parameters
+\def\bxpz@dashlen@drawline{10pt}
+\def\bxpz@setdash@phase{0}
+\def\bxpz@dflt@linecap{0}
+\def\bxpz@dflt@linejoin{0}
+
+%% dvipdfmx option
+\IfFileExists{p2e-dvipdfmx.def}{}{%else
+ % if pict2e lacks of proper support of dvipdfmx
+ \@ifpackageloaded{pict2e}{}{%else
+ \DeclareOption{dvipdfmx}{%
+ \PassOptionsToPackage{dvipdfm}{pict2e}%
+ \def\bxpz@begin@picture@hook{\let\pdfliteral\bxpz@pdfliteral}%
+ \def\bxpz@pdfliteral##1{\special{pdf:literal ##1}}%
+ \let\bxpz@org@@picture\@picture
+ \def\@picture{\bxpz@begin@picture@hook \bxpz@org@@picture}%
+ }%
+ }%
+}
+%% option handling
+\newif\ifbxpz@safe
+\DeclareOption{safe}{\bxpz@safetrue}
+\DeclareOption{nosafe}{\bxpz@safefalse}
+% other options are passed to pict2e
+\@ifpackageloaded{pict2e}{%
+ \DeclareOption*{\bxpz@warn@peald\CurrentOption}%
+}{%else
+ \DeclareOption*{\PassOptionsToPackage{\CurrentOption}{pict2e}}%
+}%
+\ExecuteOptions{nosafe}
+\ProcessOptions*
+
+% load pict2e if not done
+\@ifpackageloaded{pict2e}{}{\RequirePackage{pict2e}}
+
+% pretend that epic & eepic are already loaded
+\@namedef{ver@epic.sty}{2100/01/01}
+\@namedef{ver@eepic.sty}{2100/01/01}
+
+%%------ mode-dependent stuffs
+
+%% exits unless in right mode
+\ifnum\pIIe@mode<\@ne
+ \endinput\expandafter\fi
+
+%%
+\ifcase\pIIe@mode\relax
+ \or
+ \def\bxpz@setdash@op{setdash}
+ \or
+ \def\bxpz@setdash@op{d}
+\fi
+\def\bxpz@beginarray@op{[}
+\def\bxpz@endarray@op{]}
+
+%%------ Poly-line commands
+
+%% \bxpz@asdraw / \bxpz@asjoin / \bxpz@asmode
+\def\bxpz@asdraw{\chardef\bxpz@lm@invoke\z@}
+\def\bxpz@asjoin{\chardef\bxpz@lm@invoke\@ne}
+\def\bxpz@asmode{\chardef\bxpz@lm@invoke\tw@}
+
+%%<*> \drawline/\dottedline/\dashline
+% \dottedline[CHAR]{DOTGAP}(X1,Y1)...(XN,YN)
+% \dashline[STRETCH]{DASHLEN}[DOTGAP](X1,Y1)...(XN,YN)
+% * DOTGAP is ignored
+% \drawline[STRETCH](X1,Y1)...(XN,YN)
+% * switches to \dashline in case of negative STRETCH
+\def\drawline{\bxpz@asdraw\bxpz@drawl@a}
+\def\dottedline{\bxpz@asdraw\bxpz@dotl@a}
+\def\dashline{\bxpz@asdraw\bxpz@dashl@a}
+\def\bxpz@drawl@a{\@testopt\bxpz@drawl@b\drawlinestretch}
+\def\bxpz@drawl@b[#1]{%
+ \ifnum#1<\z@ \def\bxpz@nxt{\bxpz@path{\bxpz@dp@drawl@x{#1}}}%
+ \else \let\bxpz@nxt\bxpz@drawl@c
+ \fi \bxpz@nxt}
+\def\bxpz@drawl@c{\bxpz@path{\bxpz@dp@drawl}}
+\def\bxpz@dashl@a{\@testopt\bxpz@dashl@b\dashlinestretch}
+\def\bxpz@dashl@b[#1]#2{\@testopt{\bxpz@dashl@c{#1}{#2}}{}}
+\def\bxpz@dashl@c#1#2[#3]{\bxpz@path{\bxpz@dp@dashl{#1}{#2}}}
+\def\bxpz@dotl@a{\@testopt\bxpz@dotl@b{}}
+\def\bxpz@dotl@b[#1]#2{\bxpz@path{\bxpz@dp@dotl{#1}{#2}}}
+%\def\path{\bxpz@asdraw\bxpz@path{}}
+%% \bxpz@path{<dash-pattern>}
+\def\bxpz@path#1{%
+ #1\ifcase\bxpz@lm@invoke
+ \expandafter\bxpz@polyline
+ \or \expandafter\bxpz@join@start
+ \or \expandafter\bxpz@dash@mode
+ \fi}
+
+%% \bxpz@polyline
+% Same as \polyline in pict2e, except that \bxpz@stroke@graph is
+% used instead of \pIIe@strokeGraph.
+\def\bxpz@polyline(#1,#2){%
+ \@killglue
+ \pIIe@moveto{#1\unitlength}{#2\unitlength}%
+ \@ifnextchar\lp@r{\bxpz@polyline@a}%
+ {\ifnum\bxpz@lm@invoke=\z@ \bxpz@warn@wnpnt \fi \ignorespaces}}
+\def\bxpz@polyline@a(#1,#2){%
+ \pIIe@lineto{#1\unitlength}{#2\unitlength}%
+ \@ifnextchar\lp@r{\bxpz@polyline@a}{\bxpz@stroke@graph\ignorespaces}}
+
+%%<*> drawjoin / dottedjoin / dashjoin environment
+% \begin{dottedjoin}[CHAR]{DOTGAP}...\end{dottedjoin}
+% \begin{dashjoin}[STRETCH]{DASHLEN}[DOTGAP]...\end{dashjoin}
+% \begin{drawjoin}[STRETCH]...\end{drawjoin}
+\def\drawjoin{\bxpz@asjoin\bxpz@drawl@a}
+\def\dottedjoin{\bxpz@asjoin\bxpz@dotl@a}
+\def\dashjoin{\bxpz@asjoin\bxpz@dashl@a}
+\def\bxpz@endjoin{\bxpz@join@end\aftergroup\bxpz@join@finale}
+\let\enddrawjoin\bxpz@endjoin
+\let\enddottedjoin\bxpz@endjoin
+\let\enddashjoin\bxpz@endjoin
+
+%%<*> \jput(X,Y){something}
+\def\jput(#1,#2){%
+ \ifbxpz@injoin
+ \xdef\bxpz@g@join@last{(#1,#2)}%
+ \xdef\bxpz@g@join@path{\bxpz@g@join@path\bxpz@g@join@last}%
+ \fi \put(#1,#2)}
+\let\bxpz@g@join@last\relax
+\let\bxpz@g@join@path\@empty
+
+%% \bxpz@join@start
+\def\bxpz@join@start{%
+ \bxpz@renew@join \let\bxpz@dp@join\bxpz@dp
+ \edef\bxpz@wholewidth@join{\the\@wholewidth}%
+ \bxpz@dp@clear \bxpz@injointrue \ignorespaces}
+
+%% \bxpz@join@end
+\def\bxpz@join@end{\bxpz@renew@join}
+
+%% \bxpz@join@finale
+\def\bxpz@join@finale{%
+ \ifbxpz@injoin\else
+ \global\let\bxpz@g@join@last\relax
+ \global\let\bxpz@g@join@path\@empty
+ \fi \ignorespaces}
+
+%%<*> \flushjoin
+\def\flushjoin{%
+ \bxpz@flush@join \global\let\bxpz@g@join@last\relax}
+%% \bxpz@renew@join
+\def\bxpz@renew@join{%
+ \bxpz@flush@join
+ \ifx\bxpz@g@join@last\relax\else
+ \global\let\bxpz@g@join@path\bxpz@g@join@last \fi}
+\def\bxpz@flush@join{%
+ \ifx\bxpz@g@join@path\@empty\else
+ \bgroup \bxpz@asjoin
+ \@wholewidth=\bxpz@wholewidth@join \let\bxpz@dp\bxpz@dp@join
+ \expandafter\bxpz@polyline\bxpz@g@join@path
+ \egroup \global\let\bxpz@g@join@path\@empty
+ \fi}
+
+%%<*> \drawlines / \dottedlines / \dashlines
+\def\drawlines{\bxpz@asmode\bxpz@drawl@a}
+\def\dottedlines{\bxpz@asmode\bxpz@dotl@a}
+\def\dashlines{\bxpz@asmode\bxpz@dashl@a}
+
+%% \bxpz@dash@mode
+\def\bxpz@dash@mode{%
+ \let\bxpz@dp@mode\bxpz@dp \bxpz@dp@clear \ignorespaces}
+
+%%<*>\path(X1,Y1)..(Xn,Yn)
+\def\path{\bxpz@asdraw \bxpz@polyline}
+
+%%------ Dash-pattern generator
+
+% A dash-pattern generator defines \bxpz@dp to be
+% {<PS dash array>}{<dash flag>}
+% where <dash flag> means: 0 = normal; 1 = ordinary dotted line,
+% line-width adjustment is needed; 2 = character dotted line.
+
+%% \bxpz@dp@drawl
+\def\bxpz@dp@drawl{\let\bxpz@dp\bxpz@dp@drawl@val}
+%% \bxpz@dp@dotl{<IGNORED>}{<dot-gap>}
+\def\bxpz@dp@dotl#1#2{\bxpz@dp@start
+ \bxpz@addto@dp@nums{\@wholewidth}{#2\unitlength}%
+ \gdef\bxpz@g@dpflag{1}\bxpz@dp@end}
+%% \bxpz@dp@drawl@x{<stretch>}
+% For \drawline with negative stretch.
+\def\bxpz@dp@drawl@x#1{\bxpz@dp@dashl@sub{%
+ \@tempcnta=#1\relax\multiply\@tempcnta\tw@
+ \@tempdima=\bxpz@dashlen@drawline}}
+%% \bxpz@dp@dashl{<stretch>}{<dash-length>}
+\def\bxpz@dp@dashl#1#2{\bxpz@dp@dashl@sub{%
+ \@tempcnta=#1\relax\advance\@tempcnta-100
+ \@tempdima=#2\unitlength}}
+% \bxpz@dp@dashl@sub
+% Here dash gap length is calculated so that 'ink ratio' in resulted
+% lines equals the value derived from the given stretch value.
+% ink ratio: (blank)0.0 0.5 1.0(solid)
+% \drawline stretch: -100 .. -50 .. 0
+% \dashline stretch: -100 .. 0 .. 100
+\def\bxpz@dp@dashl@sub#1{\bxpz@dp@start
+ #1% here \@tempcnta is adjusted in range -200..0
+ \ifnum\@tempcnta<\z@
+ \ifnum\@tempcnta>-200 %
+ \@tempdimb=-\@tempcnta\@tempdima
+ \advance\@tempcnta200 \divide\@tempdimb\@tempcnta
+ \bxpz@addto@dp@nums{\@tempdima}{\@tempdimb}%
+ \else % 'blank' lines
+ \bxpz@warn@wnstr \bxpz@addto@dp@nums{\z@}{1000pt}%
+ \fi
+ \fi % if \@tempcnta >=0 then do nothing (solid lines)
+ \bxpz@dp@end}
+% some internal stuffs
+\def\bxpz@dp@start{%
+ \bgroup \global\let\bxpz@g@dp\@empty \gdef\bxpz@g@dpflag{0}}
+\def\bxpz@dp@end{
+ \egroup \edef\bxpz@dp{{\bxpz@g@dpflag}{\bxpz@g@dp}}}
+\def\bxpz@dp@drawl@val{{}{0}}
+\def\bxpz@addto@dp@nums#1#2{%
+ \bgroup \@tempdima#1\relax \@tempdimb#2\relax
+ \xdef\bxpz@g@dp{%
+ \bxpz@g@dp\strip@pt\@tempdima\space\strip@pt\@tempdimb\space}%
+ \egroup}
+\def\bxpz@dp@clear{\let\bxpz@dp\relax}
+
+%%------ Strokes with dash-pattern in effect
+
+%% pict2e original \pIIe@strokeGraph
+\def\bxpz@pIIe@strokeGraph{\begingroup \@tempswafalse\pIIe@drawGraph}
+
+% \bxpz@stroke@graph
+\def\bxpz@stroke@graph{\begingroup \bxpz@draw@graph}
+\def\bxpz@draw@graph{%
+ \ifx\bxpz@dp\relax \let\bxpz@dp\bxpz@dp@mode \fi
+ \ifx\bxpz@dp\bxpz@dp@drawl@val \let\bxpz@setdash\@empty
+ \else
+ \ifbxpz@eepic@dotl \roundcap \fi
+ \bxpz@set@dp\bxpz@dp
+ \ifnum \bxpz@dpflag=\@ne \bxpz@adj@linewidth \fi
+ \xdef\bxpz@setdash{\bxpz@beginarray@op\space\bxpz@dpary
+ \bxpz@endarray@op\space\bxpz@setdash@phase\space
+ \bxpz@setdash@op\space}%
+ \fi
+ \edef\x{\pIIe@debug@comment\space\pIIe@scale@PTtoBP}%
+ \edef\x{\x\space\bxpz@setdash\strip@pt\@wholewidth\space
+ \pIIe@setlinewidth@op}%
+ \edef\y{\pIIe@stroke@op}%
+ \expandafter\pIIe@code\expandafter{%
+ \expandafter\x\the\pIIe@GRAPH\space\y}%
+ \global\pIIe@GRAPH{}\xdef\pIIe@CPx{}\xdef\pIIe@CPy{}%
+ \endgroup
+ \let\bxpz@dp\relax}
+
+%% \bxpz@set@dp\DP
+\def\bxpz@set@dp#1{\expandafter\bxpz@set@dp@a#1}
+\def\bxpz@set@dp@a#1#2{%
+ \def\bxpz@dpary{#2}\def\bxpz@dpflag{#1}}
+
+\def\bxpz@adj@linewidth{%
+ \ifdim\@wholewidth<0.2pt \@wholewidth=2\@wholewidth
+ \else\ifdim\@wholewidth<1pt
+ \@wholewidth=0.75\@wholewidth \advance\@wholewidth0.25pt
+ \fi\fi}
+
+%%------ Circles & ovals
+
+% pict2e's original \@arc command
+\let\bxpz@pIIe@arc\@arc
+
+%% \@arc{<diam>}{<s_angle>}{<e_angle>}
+% If the arguments obey the format shown above then passes them
+% to \bxpz@eepic@arc; otherwise passes them to \bxpz@pIIe@arc.
+\def\@arc{\@ifnextchar[{\@arc}{\bxpz@arc@a}}
+\def\bxpz@arc@a#1{%
+ \def\bxpz@argi{#1}\futurelet\bxpz@tok\bxpz@arc@b}
+\def\bxpz@arc@b{%
+ \ifx\bxpz@tok\bgroup \expandafter\bxpz@arc@c
+ \else \bxpz@pIIe@arc\bxpz@argi \fi}
+\def\bxpz@arc@c#1{%
+ \def\bxpz@doargii{\bxpz@do{#1}}\futurelet\bxpz@tok\bxpz@arc@d}
+\def\bxpz@arc@d{%
+ \ifx\bxpz@tok\bgroup \expandafter\bxpz@arc@f
+ \else \expandafter\bxpz@arc@e \fi}
+\def\bxpz@arc@e{%
+ \bxpz@pIIe@arc\bxpz@argi \let\bxpz@do\@empty\bxpz@doargii}
+\def\bxpz@arc@f{%
+ \def\bxpz@do##1{\bxpz@eepic@arc\bxpz@argi{##1}}\bxpz@doargii}
+
+%% \bxpz@eepic@arc{<diam>}{<s_angle>}{<e_angle>}
+\def\bxpz@eepic@arc#1#2#3{%
+ \bgroup
+ \@tempdima=#2\p@ \@tempdimb=#3\p@ \bxpz@conv@arc@param
+ \@tempdimc=#1\unitlength \divide\@tempdimc\tw@
+ \xdef\bxpz@g@tmpa{%
+ {\the\@tempdimc}{\strip@pt\@tempdima}{\strip@pt\@tempdimb}}%
+ \egroup
+ \if@tempswa
+ \def\bxpz@do{\pIIe@arc{\z@}{\z@}}%
+ \pIIe@moveto\z@\z@ \expandafter\bxpz@do\bxpz@g@tmpa
+ \pIIe@closepath\pIIe@fillGraph
+ \else
+ \def\bxpz@do{\pIIe@arc[1]{\z@}{\z@}}%
+ \expandafter\bxpz@do\bxpz@g@tmpa \pIIe@strokeGraph
+ \fi}
+
+%% \bxpz@conv@arc@param
+% Converts tpic degree arguments (s, e) to pict2e ones (S, E); values
+% of (\@tempdima, \@tempdimb) are changed from (s, e) to (S, E).
+% Let (S', E') = -(180/pi)(s, e); then:
+% * if e - s >= 2pi (ie. S' - 360 >= E') then (S, E) = (0, 360)
+% so that a whole circle is drawn;
+% * otherwise, adjust S' and E' to values in range [0, 360), and then
+% if S' < E' then decrement E' by 360, since in tpic an arc is
+% always drawn in clockwise direction and thus S' >= E' must hold.
+% Note: After scaling by 180/pi, degree values are rounded to multiples
+% of 2^(-10). This rounding eliminates errors in the case of 'common
+% angles' such as 15deg, while generally it enlarges the maximum possible
+% error by factor about two.
+\def\bxpz@conv@arc@param{%
+%\typeout{BEFORE:\the\@tempdima/\the\@tempdimb}%
+ \bxpz@conv@arc@param@a\@tempdima \bxpz@conv@arc@param@a\@tempdimb
+ \@tempdimc\@tempdima \dimen@360\p@ \advance\@tempdimc-\dimen@
+ \ifdim \@tempdimb>\@tempdimc
+ \bxpz@conv@arc@param@b\@tempdima \bxpz@conv@arc@param@b\@tempdimb
+ \ifdim \@tempdima<\@tempdimb \advance\@tempdimb-\dimen@ \fi
+ \else \@tempdima\z@ \@tempdimb\dimen@ \fi
+%\typeout{AFTER : \the\@tempdima/\the\@tempdimb}%
+}
+\def\bxpz@conv@arc@param@a#1{%
+ #1=57.29577951#1\advance#132sp \divide#164\multiply#1-64\relax}
+\def\bxpz@conv@arc@param@b#1{%
+ \@whiledim#1>\z@ \do{\advance#1-\dimen@}%
+ \@whiledim#1<\z@ \do{\advance#1\dimen@}}%
+
+%%<*> \ellipse[*]{<x_diam>}{<y_diam>}
+\def\ellipse{%
+ \@ifstar{\begingroup\@tempswatrue\bxpz@ellipse}%
+ {\begingroup\@tempswafalse\bxpz@ellipse}}
+\def\bxpz@ellipse#1#2{%
+ \@tempdima=#1\unitlength\@tempdimb=#2\unitlength
+ \ifdim\@tempdima<\z@ \@tempdima\z@ \fi
+ \ifdim\@tempdimb<\z@ \@tempdimb\z@ \fi
+ \divide\@tempdima\tw@ \divide\@tempdimb\tw@
+ \bxpz@ellipse@a
+ \if@tempswa \pIIe@fillGraph \else \pIIe@strokeGraph \fi
+ \endgroup}
+\def\bxpz@ellipse@a{%
+ \buttcap \@ovxx\@tempdima \@ovyy\@tempdimb
+ \@ovdx=0.55228475\@ovxx \@ovdy=0.55228475\@ovyy
+ \pIIe@moveto\@ovxx\z@
+ \pIIe@curveto\@ovxx\@ovdy\@ovdx\@ovyy\z@\@ovyy
+ \pIIe@curveto{-\@ovdx}\@ovyy{-\@ovxx}\@ovdy{-\@ovxx}\z@
+ \pIIe@curveto{-\@ovxx}{-\@ovdy}{-\@ovdx}{-\@ovyy}\z@{-\@ovyy}%
+ \pIIe@curveto\@ovdx{-\@ovyy}\@ovxx{-\@ovdy}\@ovxx\z@
+ \pIIe@closepath}
+
+
+%%------ Chaikin spline curves
+
+%%<*> \spline
+% Same as \polyline in pict2e, except that \bxpz@stroke@graph is
+% used instead of \pIIe@strokeGraph.
+\def\spline{\bxpz@firsttrue\bxpz@spline@a}
+\def\bxpz@spline@a(#1,#2){%
+ \@killglue \@xdim=#1\unitlength \@ydim=#2\unitlength
+ \pIIe@moveto\@xdim\@ydim
+ \@ifnextchar\lp@r{\bxpz@spline@b}%
+ {\ifnum \bxpz@warn@wnpnt \ignorespaces}}
+\def\bxpz@spline@b(#1,#2){%
+ % M1:previous midpoint (\@ovdx,\@ovdy)
+ % P1:previous point (\@xdim,\@ydim)
+ % M2:current midpoint (\@ovxx,\@ovyy)
+ % P2:current point (\@tempdima,\@tempdimb)
+ \@tempdima=#1\unitlength\@tempdimb=#2\unitlength
+ \@ovxx\@tempdima \advance\@ovxx\@xdim \divide\@ovxx\tw@
+ \@ovyy\@tempdimb \advance\@ovyy\@ydim \divide\@ovyy\tw@
+ \ifbxpz@first
+ \pIIe@lineto\@ovxx\@ovyy \bxpz@firstfalse
+ \else\bgroup
+ % quadratic Bezier curve M1--P1--M2
+ \pIIe@bezier@QtoC\@ovdx\@xdim\@ovdx
+ \pIIe@bezier@QtoC\@ovdy\@ydim\@ovdy
+ \pIIe@bezier@QtoC\@ovxx\@xdim\@xdim
+ \pIIe@bezier@QtoC\@ovyy\@ydim\@ydim
+ \pIIe@curveto\@ovdx\@ovdy\@xdim\@ydim\@ovxx\@ovyy
+ \egroup\fi
+ \@ovdx\@ovxx \@ovdy\@ovyy
+ \@xdim\@tempdima \@ydim\@tempdimb
+ \@ifnextchar\lp@r{\bxpz@spline@b}{\bxpz@spline@c}}
+\def\bxpz@spline@c{%
+ \pIIe@lineto\@xdim\@ydim
+ \bxpz@stroke@graph\ignorespaces}
+
+
+%%------ Functions not dependent on special features
+
+%%<*> \allinesthickness
+% In pict2e \linethickness setting applies to all kinds of lines.
+% For better compatibility with eepic, \allinesthickness changes
+% (without much aim) the LaTeX "line fonts".
+\def\allinethickness{\bxpz@thicklinefont \linethickness}
+\def\bxpz@thicklinefont{\let\@linefnt\tenlnw\let\@circlefnt\tencircw}
+
+%%<*> \Thicklines
+% Sets line-width to 1.5 times the width of \thicklines.
+\def\Thicklines{\bxpz@thicklinefont \@wholewidth\fontdimen8\tenlnw
+ \linethickness{1.5\@wholewidth}}
+
+%%<*> \picsquare
+% Not of much use.
+\def\picsquare{%
+ \hskip-\@halfwidth
+ \vrule\@width\@wholewidth\@height\@halfwidth\@depth\@halfwidth\relax}
+
+%%<*> \multiputlist
+% \multiputlist(X,Y)(DX,DY)[tbrl]{ITEM,...}
+\def\multiputlist(#1,#2)(#3,#4){%
+ \@xdim=#1\unitlength \@ydim=#2\unitlength \@killglue
+ \@ifnextchar[{\bxpz@multiputlist@a{#3}{#4}}%
+ {\bxpz@multiputlist@a{#3}{#4}[]}}
+\def\bxpz@multiputlist@a#1#2[#3]#4{%
+ \@for\bxpz@x:={#4}\do{%
+ \raise\@ydim\hb@xt@\z@{\kern\@xdim
+ \@imakepicbox(0,0)[#3]\bxpz@x \hss}%
+ \advance\@xdim#1\unitlength \advance\@ydim#2\unitlength}%
+ \ignorespaces}
+
+%%<*> \matrixput
+% \matrixput(X,Y)(DX1,DY1){N1}(DX2,DY2){N2}{ITEM}
+\def\matrixput(#1,#2)(#3,#4)#5(#6,#7)#8#9{%
+ \bgroup \@xdim\z@ \@ydim\z@
+ \setbox\bxpz@boxa\hbox{%
+ \@multicnt=#8\relax
+ \@whilenum\@multicnt>\z@\do{%
+ \raise\@ydim\hb@xt@\z@{\kern\@xdim #9\hss}%
+ \advance\@xdim#6\unitlength \advance\@ydim#7\unitlength
+ \advance\@multicnt\m@ne}}%
+ \@xdim=#1\unitlength \@ydim=#2\unitlength \@killglue
+ \@multicnt=#5\relax
+ \@whilenum\@multicnt>\z@\do{%
+ \raise\@ydim\hb@xt@\z@{\kern\@xdim \copy\bxpz@boxa\hss}%
+ \advance\@xdim#3\unitlength \advance\@ydim#4\unitlength
+ \advance\@multicnt\m@ne}%
+ \egroup \ignorespaces}
+
+%%<*> \grid
+% \grid(W,H)(DW,DH)[X0,Y0]
+\def\grid(#1,#2)(#3,#4){%
+ \@ovxx=#1\unitlength \@ovyy=#2\unitlength
+ \edef\bxpz@gridx{#3}\edef\bxpz@gridy{#4}%
+ \@ifnextchar[{\bxpz@grid@a}{\bxpz@grid@a[,]}}
+\def\bxpz@grid@a[#1,#2]{%
+ \@killglue \let\spacewidth\@ovri
+ \setbox\bxpz@boxa\hbox{\space}\@ovri=\wd\bxpz@boxa
+ \@tempdimc=\z@ \@ovdx=\bxpz@gridx\unitlength
+ \ifx @#1@\bxpz@uselblfalse
+ \else \@tempdima=#1\p@ \bxpz@uselbltrue \fi
+ \@tempdimb\@ovxx \advance\@tempdimb.5\@ovdx \divide\@tempdimb\@ovdx
+ \@tempcnta\@tempdimb \advance\@tempcnta\@ne
+ \@whilenum\@tempcnta>\z@ \do{%
+ \hb@xt@\z@{\kern\@tempdimc \kern-\@halfwidth
+ \vrule\@height\@ovyy\@width\@wholewidth \hss}%
+ \ifbxpz@uselbl \bxpz@makelbl
+ \setbox\bxpz@boxa\hb@xt@\z@{\hss\copy\bxpz@boxa\hss}%
+ \hb@xt@\z@{\kern\@tempdimc
+ \vtop{\kern\epicbottomgridlabelsep\copy\bxpz@boxa}\hss}%
+ \raise\@ovyy\hb@xt@\z@{\kern\@tempdimc
+ \vbox{\copy\bxpz@boxa\kern\epictopgridlabelsep}\hss}%
+ \fi
+ \advance\@tempdima\bxpz@gridx\p@ \advance\@tempdimc\@ovdx
+ \advance\@tempcnta\m@ne}%
+ \@tempdimc=\z@ \@ovdy=\bxpz@gridy\unitlength
+ \ifx @#2@\bxpz@uselblfalse
+ \else \@tempdima=#2\p@ \bxpz@uselbltrue \fi
+ \@tempdimb\@ovyy \advance\@tempdimb.5\@ovdy \divide\@tempdimb\@ovdy
+ \@tempcnta\@tempdimb \advance\@tempcnta\@ne
+ \@whilenum\@tempcnta>\z@ \do{%
+ \raise\@tempdimc\hb@xt@\z@{%
+ \vrule\@height\@halfwidth\@depth\@halfwidth\@width\@ovxx \hss}%
+ \ifbxpz@uselbl \bxpz@makelbl
+ \setbox\bxpz@boxa\vbox to\z@{\vss\copy\bxpz@boxa\vss}%
+ \raise\@tempdimc\hb@xt@\z@{%
+ \hss\copy\bxpz@boxa\kern\epicsidegridlabelsep}%
+ \raise\@tempdimc\hb@xt@\z@{\kern\@ovxx
+ \kern\epicsidegridlabelsep\copy\bxpz@boxa\hss}%
+ \fi
+ \advance\@tempdima\bxpz@gridy\p@ \advance\@tempdimc\@ovdy
+ \advance\@tempcnta\m@ne}%
+ \let\spacewidth\@undefined
+ \ignorespaces}
+\def\bxpz@makelbl{%
+ \edef\bxpz@tmpa{\noexpand\bxGridLabelForm{\strip@pt\@tempdima}}%
+ \setbox\bxpz@boxa\hbox{\bxpz@tmpa}}
+
+%<+> \bxGridLabelForm{<real>}
+% It must output the formatted string for value <real>. which is
+% given as numerals (e.g. 72 or 10.333333).
+% The default implementation uses decimal strings of the value
+% rounded to integers.
+\def\bxGridLabelForm#1{\@tempdima#1\p@ \advance\@tempdima.5\p@
+ \expandafter\bxpz@gridlabelform@a\the\@tempdima\@nil}
+\def\bxpz@gridlabelform@a#1.#2\@nil{#1}
+
+%%<*> \putfile{<filename>}{<general_text>}
+\def\putfile#1#2{%
+ \def\bxpz@body{#2}%
+ \let\bxpz@dofile\bxpz@putfile@a \let\bxpz@dofile@skipped\relax
+ \bxpz@dofile@ifexists{#1}}
+\let\bxpz@fhread\@inputcheck
+\def\bxpz@putfile@a#1{%
+ \openin\bxpz@fhread=#1\relax \let\bxpz@tmpa\relax
+ \ifeof\bxpz@fhread\else \expandafter\bxpz@putfile@b \fi
+ \closein\bxpz@fhread \ignorespaces}
+\def\bxpz@putfile@b{%
+ \read\bxpz@fhread to\bxpz@line
+ \ifx\bxpz@line\bxpz@line@par \let\bxpz@line\@empty \fi
+ \edef\bxpz@line{\bxpz@line\space\space}%
+ \expandafter\bxpz@putfile@c\bxpz@line
+ \ifeof\bxpz@fhread\else \expandafter\bxpz@putfile@b \fi}
+\def\bxpz@putfile@c#1 {%
+ \ifx @#1@\relax \else
+ \ifx\bxpz@tmpa\relax \def\bxpz@tmpa{#1}%
+ \else \put(\bxpz@tmpa,#1){\bxpz@body}
+ \let\bxpz@tmpa\relax
+ \fi \expandafter\bxpz@putfile@c
+ \fi}
+\def\bxpz@line@par{\par}
+
+%% \bxpz@dofile@ifexists
+\newif\ifbxpz@dofile@ok
+\def\bxpz@InputIfFileExists#1#2{%
+ \IfFileExists{#1}{\bxpz@dofile@ifex@a\bxpz@dofile{#1}}}
+\let\bxpz@ltx@InputIfFileExists\InputIfFileExists
+\def\bxpz@dofile@ifexists#1{%
+ \let\InputIfFileExists\bxpz@InputIfFileExists
+ \bxpz@dofile@okfalse \@iinput{#1}%
+ \ifbxpz@dofile@ok\else
+ \bxpz@dofile@ifex@a \bxpz@dofile@skipped \fi}
+\def\bxpz@dofile@ifex@a{\bxpz@dofile@oktrue
+ \let\InputIfFileExists\bxpz@ltx@InputIfFileExists}
+
+%%------
+\ifbxpz@safe %----<*safe>
+
+%%<*> \[no]eepicdottedlines
+% No-op in safe mode.
+\let\eepicdottedlines\relax
+\let\noeepicdottedlines\relax
+
+\else %----<*!safe>
+
+%%<*> \[no]eepicdottedlines
+\let\eepicdottedlines\bxpz@eepic@dotltrue
+\let\noeepicdottedlines\bxpz@eepic@dotlfalse
+
+%% \bxpz@redefine@linestyle\LSCMD{<attr>}{<val>}
+\def\bxpz@redefine@linestyle#1#2#3{%
+ \expandafter\bxpz@redefine@linestyle@a
+ \csname bxpz@raw@\expandafter\@gobble\string#1\expandafter\endcsname
+ \csname bxpz@#2\expandafter\endcsname
+ \csname bxpz@LS/#2/#3\expandafter\endcsname
+ \csname bxpz@SLS/#2\endcsname #1{#2}{#3}}
+\def\bxpz@redefine@linestyle@a#1#2#3#4#5#6#7{%
+ % \[bxpz@raw@LSCMD]\[bxpz@<attr>]\[bxpz@LS/<attr>/<val>]
+ % \[bxpz@SLS/<attr>]\LSCMD{<attr>}{<val>}
+ \let#1#5\let#3#5\def#5{\def#2{#7}#3\aftergroup#4}%
+ \def#4{\csname bxpz@LS/#6/#2\endcsname}}
+% redefine linestyle commands
+\bxpz@redefine@linestyle\buttcap{lcap}{0}
+\bxpz@redefine@linestyle\roundcap{lcap}{1}
+\bxpz@redefine@linestyle\squarecap{lcap}{2}
+\bxpz@redefine@linestyle\miterjoin{ljoin}{0}
+\bxpz@redefine@linestyle\roundjoin{ljoin}{1}
+\bxpz@redefine@linestyle\beveljoin{ljoin}{2}
+
+% default values of states
+\let\bxpz@lcap\bxpz@dflt@linecap
+\let\bxpz@ljoin\bxpz@dflt@linejoin
+
+%% patch to \pIIe@circle
+% \buttcap moved one-level outside.
+\def\pIIe@circle#1{%
+ \buttcap
+ \begingroup
+ \pIIe@qcircle[1]\z@{#1}\pIIe@qcircle \@ne{#1}%
+ \pIIe@qcircle \tw@{#1}\pIIe@qcircle\thr@@{#1}%
+ \endgroup}
+
+
+\fi %----</safe>
+\endinput
+%%------
+%
+% List of epic features not contained in pict2e
+%
+%\multiputlist(X,Y)(DX,DY)[tbrl]{ITEM,...}
+%\matrixput(X,Y)(DX1,DY1){N1}(DX2,DY2){N2}{ITEM}
+%\grid(W,H)(DW,DH)[X0,Y0]
+%\dottedline[CHAR]{DOTGAP}(X1,Y1)...(XN,YN)
+%\dashline[STRETCH]{DASHLEN}[DOTGAP](X1,Y1)...(XN,YN)
+%\drawline[STRETCH](X1,Y1)...(XN,YN)
+%\jput(X,Y){ITEM}
+%\begin{dottedjoin}[C]{G} ... \end{dottedjoin}
+%\begin{dashjoin}[S]{D}[G] ... \end{dashjoin}
+%\begin{drawjoin}[S] ... \end{drawjoin}
+%\picsquare
+%\putfile{FILE}
+%\dashlinestretch
+%\drawlinestretch
+%
+% List of eepic features not contained in pict2e
+%
+%\maxovaldimen (for \oval)
+%\allinethickness
+%\Thicklines
+%\path(X1,Y1)..(Xn,Yn)
+%\spline(X1,Y1)..(Xn,Yn)
+%\ellipse[*]{XDIAM}{YDIAM}
+%\arc{DIAM}{SANG}{EANG} *angle in radian, +ve = clockwise
+%\filltype{FILL} / \blacken / \whiten / \shade
+%
+%% EOF
diff --git a/language/japanese/BX/bxeepic/sample-bxeepic.pdf b/language/japanese/BX/bxeepic/sample-bxeepic.pdf
new file mode 100644
index 0000000000..6e66d9bbd7
--- /dev/null
+++ b/language/japanese/BX/bxeepic/sample-bxeepic.pdf
Binary files differ
diff --git a/language/japanese/BX/bxeepic/sample-bxeepic.tex b/language/japanese/BX/bxeepic/sample-bxeepic.tex
new file mode 100644
index 0000000000..957b86f4c2
--- /dev/null
+++ b/language/japanese/BX/bxeepic/sample-bxeepic.tex
@@ -0,0 +1,11 @@
+\documentclass[a4paper]{article}
+\usepackage{bxeepic}
+\begin{document}
+\begin{picture}(100,100)
+ \Thicklines
+ \put(50,50){\ellipse{80}{60}}
+ \thicklines
+ \dashline{4}(0,50)(100,50)
+ \dashline{4}(50,0)(50,100)
+\end{picture}
+\end{document}
diff --git a/language/japanese/BX/bxenclose/LICENSE b/language/japanese/BX/bxenclose/LICENSE
new file mode 100644
index 0000000000..49f803e083
--- /dev/null
+++ b/language/japanese/BX/bxenclose/LICENSE
@@ -0,0 +1,27 @@
+$BK\%=%U%H%&%'%"$O(B MIT $B%i%$%;%s%9$N2<$GG[I[$5$l$^$9!#(B
+$BCx:n8"$O:n<T$G$"$k!VH,EP(B $B?rG7!JJLL>(B ZR$B!K!W$KB0$7$^$9!#(B
+$B$^$?K\%=%U%H%&%'%"$OL5J]>Z$G$9!#(B
+
+This software is distributed under the MIT License.
+
+The MIT License
+
+Copyright (c) 2016 Takayuki YATO (aka. "ZR")
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/language/japanese/BX/bxenclose/README.md b/language/japanese/BX/bxenclose/README.md
new file mode 100644
index 0000000000..e60047f76d
--- /dev/null
+++ b/language/japanese/BX/bxenclose/README.md
@@ -0,0 +1,60 @@
+BXenclose Package
+=================
+
+LaTeX: To enclose the document body with some pieces of code
+
+The package enables authors to designate in the preamble to make the
+document body enclosed with the given pieces of code. As is known,
+there are already various mechanisms provided by LaTeX kernel or
+packages that attach “hooks” at the beginning and end of documents.
+This package tries harder to win the race, that is, place the given
+code as close to the real document body as possible.
+
+### System requirement
+
+ * TeX format: LaTeX.
+ * TeX engine: Anything.
+ * Dependent packages: None.
+
+### Installation
+
+ - `*.sty` → $TEXMF/tex/latex/BXenclose
+
+### License
+
+This package is distributed under the MIT License.
+
+The bxenclose Package
+---------------------
+
+### Package Loading
+
+ \usepackage{bxenclose}
+
+No options are available.
+
+### Usage
+
+This package defines the following single command:
+
+ \enclosebodywith{<begin>}{<end>}
+
+This command makes the document body enclosed with `<begin>` and
+`<end>`. That is, `<begin>` is executed immediately before the body
+text (probably after other “begin-document hooks” provided by LaTeX
+itself and other packages) and `<end>` is executed immediately after
+the body text (probably before other “end-document hooks”).
+
+Note that both `<begin>` and `<end>` code are treated as part of the
+document body. In particular, `<begin>` code cannot contain any
+preamble-restricted commands (such as `\listfiles`).
+
+Revision History
+----------------
+
+ * Version 0.2 〈2016/04/01〉
+ - The first public version.
+
+--------------------
+Takayuki YATO (aka. "ZR")
+http://zrbabbler.sp.land.to/
diff --git a/language/japanese/BX/bxenclose/bxenclose.sty b/language/japanese/BX/bxenclose/bxenclose.sty
new file mode 100644
index 0000000000..75acfa0ce6
--- /dev/null
+++ b/language/japanese/BX/bxenclose/bxenclose.sty
@@ -0,0 +1,126 @@
+% bxenclose.sty
+
+%% package declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{bxenclose}[2016/04/01 v0.2]
+\def\bxew@pkgame{bxenclose}
+
+%--------------------------------------- main
+
+%% \bxew@begin@body@hook
+% Things to be prepended to the document body.
+\let\bxew@begin@body@hook\@empty
+%% \bxew@end@body@hook
+% Things to be appended to the document body.
+\let\bxew@end@body@hook\@empty
+
+% The insertion of \bxew@begin@body@hook is realized by appending
+% the token to \document macro. But of course there are dozens of
+% packages that do the same thing, and in order to "win the race"
+% and put \bxew@begin@body@hook immediately before the actual body
+% content, I need to postpone the patching to \document as late as
+% possible. Hence comes my tactics, where the patching will be done
+% in invocation of "\begin{document}", just before expanding the
+% \document macro.
+
+%%<*> \enclosebodywith{<begin>}{<end>}
+\@onlypreamble\enclosebodywith
+\newcommand\enclosebodywith[2]{%
+ \begingroup
+ \ifx\bxew@patch@begin\@undefined\else
+ \bxew@patch@begin
+ \fi
+ \toks@\expandafter{\bxew@begin@body@hook}%
+ \toks\tw@{#1}%
+ \xdef\bxew@begin@body@hook{%
+ \the\toks@\the\toks\tw@}%
+ \toks@\expandafter{\bxew@end@body@hook}%
+ \toks\tw@{#2}%
+ \xdef\bxew@end@body@hook{%
+ \the\toks\tw@\the\toks@}%
+ \endgroup
+}
+
+%% \bxew@patch@begin
+% Patches to \begin macro. Specifically, it prepends
+% "\bxew@begin@hook{#1}" to \begin.
+\def\bxew@patch@begin{%
+ \global\let\bxew@patch@begin\@undefined % one-shot
+ \begingroup
+ \toks@\expandafter{\begin{##1}}%
+ \edef\bxew@tempa{\gdef\noexpand\begin####1{%
+ \noexpand\bxew@begin@hook{####1}\the\toks@}}%
+ \bxew@tempa
+ \endgroup
+}
+
+%% \bxew@unpatch@begin
+% Revokes the patch of \bxew@patch@begin. That is, it removes
+% "\bxew@begin@hook{#1}" from \begin macro.
+\def\bxew@unpatch@begin{%
+ \global\let\bxew@unpatch@begin\@undefined % one-shot
+ \begingroup
+ % check the target
+ \long\def\bxew@tempa##1\bxew@begin@hook##2##3\bxew@end{%
+ \def\bxew@tempa{##2}}%
+ \expandafter\bxew@tempa\begin{}\bxew@begin@hook!\bxew@end
+ \ifx\bxew@tempa\@empty % if target is there
+ \long\def\bxew@tempa##1\bxew@begin@hook##2{##1}%
+ \toks@\expandafter\expandafter\expandafter
+ {\expandafter\bxew@tempa\begin{##1}}%
+ \edef\bxew@tempa{\gdef\noexpand\begin####1{\the\toks@}}%
+ \bxew@tempa
+ \fi % if not there, then do nothing
+ \endgroup
+}
+
+%% \bxew@begin@hook{<envname>}
+% The patch attached to \begin. When "\begin{document}"
+% is called, this macro patches to \document, before
+% \document is expanded.
+\def\bxew@begin@hook#1{%
+ \begingroup
+ \def\bxew@tempa{#1}\def\bxew@tempb{document}%
+ \ifx\bxew@tempa\bxew@tempb % if it is \begin{document}
+ % just in case unpatching failed
+ \global\let\bxew@begin@hook\@gobble % neutralize
+ \bxew@unpatch@begin
+ \bxew@patch@document
+ \fi
+ \endgroup
+}
+
+%% \bxew@patch@document
+% Appends something and \bxew@begin@body@hook to \document macro.
+\def\bxew@patch@document{%
+ \begingroup
+ \global\let\bxew@patch@document\@undefined % one-shot
+ \g@addto@macro\document{%
+ \bxew@patch@enddocument
+ % and \bxew@begin@body@hook will come last
+ \let\reserved@a\bxew@begin@body@hook
+ \global\let\bxew@begin@body@hook\@undefined
+ \reserved@a}%
+ \endgroup
+}
+
+% Just like \bxew@begin@body@hook, prepending \bxew@end@body@hook
+% to \enddocument need to be deferred as much as possible. So I
+% decided to patch \enddocument just before executing the
+% \bxew@begin@body@hook macro.
+
+%% \bxew@patch@enddocument
+% Prepends \bxew@end@body@hook to \enddocument.
+\def\bxew@patch@enddocument{%
+ \global\let\bxew@patch@enddocument\@undefined % one-shot
+ \begingroup
+ \toks@\expandafter{\enddocument}%
+ \toks\tw@{\bxew@end@body@hook
+ \global\let\bxew@end@body@hook\@undefined}%
+ \xdef\enddocument{\the\toks\tw@\the\toks@}%
+ \endgroup
+}
+
+%--------------------------------------- done
+\endinput
+%% EOF
diff --git a/language/japanese/BX/bxnewfont/LICENSE b/language/japanese/BX/bxnewfont/LICENSE
new file mode 100644
index 0000000000..8ada757fbc
--- /dev/null
+++ b/language/japanese/BX/bxnewfont/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2017 Takayuki YATO (aka. "ZR")
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/language/japanese/BX/bxnewfont/README.md b/language/japanese/BX/bxnewfont/README.md
new file mode 100644
index 0000000000..34ba546697
--- /dev/null
+++ b/language/japanese/BX/bxnewfont/README.md
@@ -0,0 +1,85 @@
+BXnewfont Package
+=================
+
+LaTeX: Enhanced `\newfont` command
+
+This package provides a new command `\newfontx`. It is similar to
+the old (and deprecated) command `\newfont` in function, but is more
+compatible with NFSS. In particular, one can safely change font size
+after invoking a font command defined by `\newfontx`. The new command
+will be useful to users who know much of the old '\newfont` command
+but are unfamiliar with the detail of NFSS.
+
+### System requirement
+
+ * TeX format: LaTeX.
+ * TeX engine: Anything.
+ * Dependent packages: None.
+
+### Installation
+
+ - `*.sty` → $TEXMF/tex/latex/BXnewfont
+
+### License
+
+This package is distributed under the MIT License.
+
+The bxnewfont Package
+---------------------
+
+### Package Loading
+
+ \usepackage[<option>]{bxdvidriver}
+
+Available options:
+
+ * `newfont`: Makes `\newfont` an alias of `newfontx`.
+
+### Usage
+
+ * `\newfontx\CMD[<encoding>]{<tfm-name><at-clause>}`: Defines `\CMD`
+ to be a “font command” (pseudo-fontdef token). Here the format
+ of the mandatory argument is exactly same as that of `\newfont`
+ (`<at-clause>` can be empty). The optional argument specifies the
+ NFSS encoding name (such as `T1`) of the TFM to be used, and
+ defaults to the current font encoding. (If you don’t know what
+ it means, then you probably need not care about this argument.)
+
+ When the defined `\CMD` command is invoked, the current font will
+ changes to what is specified by the argument, just as the original
+ `\newfont`. But unlike `\newfont`, it does not break consistency
+ of LaTeX NFSS. Specifically, NFSS is set at the following state:
+
+ - The family is what was auto-generated for `\CMD`.
+ - The series is `m` and the shape is `n`.
+ - The encoding and size are what was specified by the arguments
+ of `\newfontx`.
+
+ It means that further use of “LaTeX’s font commands” will
+ probably result in what you will expect. In particular, font size
+ can be safely changed. The use of `\itshape` has no effect ---
+ of course, because LaTeX does not know the TFM name of the italic
+ counterpart --- and no unfavorable effect either.
+
+ * `\newfontx*\CMD[<encoding>]{<tfm-name>}`: Same as the `\newfontx`,
+ except that “font commands” defined by `\newfontx*` does not
+ fix font size (note the absence of `<at-clause>`). Namely, invoking
+ `\CMD` does not change the current font size. This variant surely
+ diverges from the original `\newfont`, but will be more useful.
+
+Revision History
+----------------
+
+ * Version 0.2b ‹2017/05/01›
+ - Change the rule for automatic quoting. Namely, names which are
+ judged as illegal by mktextfm should be quoted.
+ * Version 0.2a ‹2016/08/08›
+ - Now “TFM” names can contain spaces with suitable quoting.
+ This enables one to specify OpenType fonts on Unicode engines.
+ - An experimental command `\newfontjascale` is added.
+ * Version 0.2 ‹2016/03/27›
+ - The first public version.
+
+--------------------
+Takayuki YATO (aka. "ZR")
+http://zrbabbler.sp.land.to/
diff --git a/language/japanese/BX/bxnewfont/bxnewfont.sty b/language/japanese/BX/bxnewfont/bxnewfont.sty
new file mode 100644
index 0000000000..16c5dfd300
--- /dev/null
+++ b/language/japanese/BX/bxnewfont/bxnewfont.sty
@@ -0,0 +1,642 @@
+%%
+%% This is file 'bxnewfont.sty'.
+%%
+%% Copyright (c) 2017 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+%% package declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{bxnewfont}[2017/05/01 v0.2b]
+
+%% preparation
+\def\bxnf@pkgname{bxnewfont}
+\def\bxnf@error{\PackageError\bxnf@pkgname}
+\providecommand\bxDebug[1]{}
+
+%--------------------------------------- options
+
+%% variables
+\newif\ifbxnf@newfont
+
+%% options
+\DeclareOption{newfont}{%
+ \bxnf@newfonttrue
+}
+\ProcessOptions\relax
+
+%--------------------------------------- general
+
+%% load packages
+\RequirePackage{etoolbox}
+\ifx\newrobustcmd\@undefined % non-e-TeX
+\expandafter\endinput\fi\relax
+
+%% unique tokens
+\def\bxnf@mk{\bxnf@mk@}
+\def\bxnf@end{\bxnf@end@}
+
+%% variables
+\newbool{bxnf@ok}
+
+%% constants
+\def\bxnf@@star{*}
+
+%% \bxnf@cond\if...\fi{<true>}{<false>}
+\@gobbletwo\if\if \def\bxnf@cond#1\fi{%
+ #1\expandafter\@firstoftwo
+ \else \expandafter\@secondoftwo \fi
+}
+
+%% \ifbxnf@ptex : engine is pTeX?
+\newbool{bxnf@ptex}
+\begingroup
+ \edef\bxnf@tmpa{\string\tfont}\edef\bxnf@tmpb{\meaning\tfont}
+ \ifx\bxnf@tmpa\bxnf@tmpb \global\bxnf@ptextrue \fi
+\endgroup
+
+%--------------------------------------- main
+
+%% variables
+\newbool{bxnf@fixed} % fixed size?
+\let\bxnf@font\relax % font-spec string
+\let\bxnf@tfm\relax % tfm name
+\let\bxnf@atcl\relax % at-clause
+\let\bxnf@enc\relax % encoding
+\let\bxnf@fam\relax % family
+\let\bxnf@type\relax % 1=normal,2=pTeX-yoko,3=pTeX-tate
+\let\bxnf@size\relax
+
+%%<*> \newfontx*[<encoding>]{<tfm-spec>}
+\newcommand\newfontx{%
+ \@ifstar{%
+ \bxnf@fixedfalse
+ \bxnf@newfontx@a
+ }{%else
+ \bxnf@fixedtrue
+ \bxnf@newfontx@a
+ }%
+}
+\def\bxnf@newfontx@a#1{%
+ \@ifnextchar[{%
+ \bxnf@newfontx@b{#1}%
+ }{%else
+ \bxnf@newfontx@b{#1}[]%
+ }%]
+}
+\def\bxnf@newfontx@b#1[#2]#3{%
+ \bxnf@annihilate@setjascale
+ \edef\bxnf@enc{#2}%
+ \edef\bxnf@font{#3}%
+ \bxnf@split@name
+ \bxnf@check@param
+ \ifbxnf@ok \bxnf@declare \fi
+ \ifbxnf@ok \bxnf@make@cmd#1\fi
+}
+
+%% \bxnf@check@param
+% Sets bxnf@ok.
+\def\bxnf@check@param{%
+ \bxnf@oktrue
+ \bxnf@get@tfm@info
+ \unless\ifnum\bxnf@type=\z@ \unless\ifdim\bxnf@size>\z@
+ \chardef\bxnf@type\z@
+ \fi\fi
+ \ifnum\bxnf@type=\z@
+ \bxnf@error{Failed in getting TFM info}\@eha
+ \let\bxnf@enc\cf@encoding
+ \bxnf@okfalse
+ \else
+ \ifx\bxnf@enc\@empty
+ % resolve encoding when unspecified
+ \ifcase\bxnf@type\or
+ \let\bxnf@enc\cf@encoding
+ \or % pTeX-yoko
+ \let\bxnf@enc\cy@encoding
+ \or % pTeX-tate
+ \let\bxnf@enc\ct@encoding
+ \fi
+ \fi
+ \fi
+ \ifcsundef{T@\bxnf@enc}{%
+ \bxnf@error{Unknown encoding '\bxnf@enc'}\@ehc
+ \bxnf@okfalse
+ }{}%
+ \ifbxnf@ok
+ \bxDebug{type=\number\bxnf@type; enc=\bxnf@enc}%
+ \fi
+ \unless\ifbxnf@fixed \unless\ifx\bxnf@atcl\relax
+ \bxnf@error{You cannot use size spec here}{%
+ The invalid size spec (\bxnf@atcl) is ignored.%
+ \MessageBreak\@ehc}%
+ \fi\fi
+}
+
+%% \bxnf@declare
+\def\bxnf@declare{%
+ \bxnf@get@family@name
+ \unless\ifbxnf@ok
+ \bxnf@set@family@param
+ \bxnf@declare@family
+ \fi
+ \bxnf@oktrue
+}
+
+%% \bxnf@make@cmd\CS
+% Defines \CS to be a protected macro that selects the family
+% which name equals (the current value of) \bxnf@fam.
+% A wierdly-named control sequence is used in the macro body
+% so that \show'ing \CS will display something like:
+% > \CS=\protected macro:
+% \select font FAMILY(ID) .
+\def\bxnf@make@cmd#1{%
+ \expandafter\bxnf@make@cmd@a\bxnf@fam\bxnf@mk#1%
+}
+\begingroup
+\catcode`\ =11\relax\catcode`\_=10\relax
+\gdef\bxnf@make@cmd@a#1\bxnf@mk#2{%
+__\newrobustcmd*#2{\select font#1 }}%
+\endgroup
+
+%% \select_font<family>_
+% (Here '_' means a space with catcode 11.)
+\begingroup
+\catcode`\ =11\relax\catcode`\_=10\relax
+\gdef\select font#1 {%
+__\bxnf@select@family{#1}}%
+\endgroup
+
+%--------------------------------------- parse
+
+%% variables
+\let\bxnf@pre\relax
+\let\bxnf@post\relax
+\let\bxnf@quoted@part\relax
+
+%% \bxnf@split@at{<sep>}{<text>}
+% Splits the text by the given separator.
+% In success, it will set \bxnf@pre and \bxnf@post.
+\def\bxnf@split@at#1#2{%
+ \def\bxnf@next##1#1##2\bxnf@end{%
+ \bxnf@split@at@a{##1}{##2}}%
+ \bxnf@next#2\bxnf@mk#1\bxnf@end
+}
+\def\bxnf@split@at@a#1#2{%
+ \ifstrempty{#2}{%
+ \let\bxnf@pre\relax \let\bxnf@post\relax
+ }{%else
+ \def\bxnf@pre{#1}%
+ \bxnf@split@at@b#2\bxnf@end
+ }%
+}%
+\def\bxnf@split@at@b#1\bxnf@mk#2\bxnf@end{%
+ \def\bxnf@post{#1}%
+}%
+
+%% \bxnf@guard@quote\CS
+% Extract from the string a part enclosed by a pair of quotes,
+% and replaces the part with the cs '\bxnf@quoted@part'.
+% Then the cs is assigned to the content of the part.
+\def\bxnf@guard@quote#1{%
+ \let\bxnf@quoted@part\relax
+ \edef\bxnf@tmpb{{"}{#1}}%
+ \expandafter\bxnf@split@at\bxnf@tmpb
+ \unless\ifx\bxnf@pre\relax
+ \let\bxnf@tmpa\bxnf@pre \edef\bxnf@tmpb{{"}{\bxnf@post}}%
+ \expandafter\bxnf@split@at\bxnf@tmpb
+ \unless\ifx\bxnf@pre\relax
+ \let\bxnf@quoted@part\bxnf@pre
+ \edef#1{\bxnf@tmpa"\noexpand\bxnf@quoted@part"\bxnf@post}%
+ \fi
+ \fi
+}
+
+%% \bxnf@enclose@quote\CS
+% If the string does not contain a quote but does contain
+% a space, then the string will get enclosed by quotes.
+\def\bxnf@enclose@quote#1{%
+ \edef\bxnf@tmpa{#1}%
+ \edef\bxnf@tmpb{{"}{\bxnf@tmpa}}%
+ \expandafter\bxnf@split@at\bxnf@tmpb
+ \ifx\bxnf@pre\relax
+ \edef\bxnf@tmpb{{\bxnf@tmpa}}%
+ \expandafter\bxnf@find@unsafe@char\bxnf@tmpb
+ \unless\ifx\bxnf@pre\relax
+ \edef\bxnf@tmpa{"\bxnf@tmpa"}%
+ \fi
+ \fi
+ \let#1\bxnf@tmpa
+}
+
+%% \bxnf@find@unsafe@char
+\def\bxnf@find@unsafe@char#1{%
+ \bxnf@find@unsafe@char@a#1\bxnf@end
+}
+\def\bxnf@find@unsafe@char@a{%
+ \futurelet\bxnf@tok\bxnf@find@unsafe@char@b
+}
+\def\bxnf@find@unsafe@char@b{%
+ \ifx\bxnf@tok\bxnf@end
+ \let\bxnf@tok\relax
+ \let\bxnf@tmpb\bxnf@find@unsafe@char@c
+ \else\ifcat A\noexpand\bxnf@tok
+ \let\bxnf@tmpb\bxnf@find@unsafe@char@d
+ \else\ifcat 0\noexpand\bxnf@tok
+ \let\bxnf@tmpb\bxnf@find@unsafe@char@e
+ \else\ifcat _\noexpand\bxnf@tok
+ \let\bxnf@tmpb\bxnf@find@unsafe@char@e
+ \else
+ \let\bxnf@tmpb\bxnf@find@unsafe@char@c
+ \fi\fi\fi\fi
+ \bxnf@tmpb
+}
+\def\bxnf@find@unsafe@char@c#1\bxnf@end{%
+ \let\bxnf@pre= \bxnf@tok
+}
+\def\bxnf@find@unsafe@char@d#1{%
+ \bxnf@find@unsafe@char@a
+}
+\def\bxnf@find@unsafe@char@e#1{%
+ \ifcsundef{bxnf@sc/#1}{%
+ \bxnf@find@unsafe@char@c
+ }{%else
+ \bxnf@find@unsafe@char@a
+ }%
+}
+\@tfor\bxnf@tmpa:=0123456789.-_+\do{%
+ \cslet{bxnf@sc/\bxnf@tmpa}{t}%
+}
+
+%% \bxnf@split@name
+% Parses \bxnf@font and sets \bxnf@tfm and \bxnf@atcl.
+\def\bxnf@split@name{%
+ \let\bxnf@tfm\bxnf@font \let\bxnf@atcl\relax
+ \bxnf@guard@quote\bxnf@tfm
+ \expandafter\bxnf@split@name@a\bxnf@tfm\bxnf@end
+ \bxnf@enclose@quote\bxnf@tfm
+}
+\def\bxnf@split@name@a#1\bxnf@end{%
+ \let\bxnf@pre\relax
+ \def\do##1{%
+ \bxnf@split@name@b{##1}{#1}%
+ }%
+ \bxnf@split@sep@list
+}
+\def\bxnf@split@name@b#1#2{%
+ \ifx\bxnf@pre\relax
+ \bxnf@split@at{ #1}{#2}%
+ \unless\ifx\bxnf@pre\relax
+ \let\bxnf@tfm\bxnf@pre
+ \edef\bxnf@atcl{#1\bxnf@post}%
+ \fi
+ \fi
+}
+\let\do\relax
+\edef\bxnf@split@sep@list{%
+ \do{at}\do{scaled}%
+ \do{\detokenize{at}}%
+ \do{\detokenize{scaled}}%
+}
+
+%--------------------------------------- Family name
+
+%% variables
+%\[bxnf@g@varid/<tfm>] % maximum used id number
+%\[bxnf@g@prm/<family>] % font parameter ({<enc>}{<size>})
+%\[bxnf@g@pc/<spec>] % cache
+\let\bxnf@stfm\relax
+
+%% \bxnf@get@family@name
+% Generates a family name and returns to \bxnf@fam.
+% The name is of the form "<tfm-name>(<id>)".
+\def\bxnf@get@family@name{%
+ \def\bxnf@tmpa{bxnf@g@pc/\bxnf@enc:\bxnf@tfm:%
+ \ifbxnf@fixed \the\dimexpr\bxnf@size\relax \fi}%
+ \letcs\bxnf@fam{\bxnf@tmpa}%
+ \ifdef\bxnf@fam{%
+ \bxDebug{\bxnf@tmpa==\bxnf@fam}%
+ \bxnf@oktrue
+ }{%else
+ \bxnf@sanitize@tfmname\bxnf@stfm
+ \csnumgdef{bxnf@g@varid/\bxnf@stfm}{\csuse{bxnf@g@varid/\bxnf@stfm}+1}%
+ \edef\bxnf@fam{\bxnf@stfm*\csuse{bxnf@g@varid/\bxnf@stfm}*}%
+ \global\cslet{\bxnf@tmpa}\bxnf@fam
+ \bxDebug{\bxnf@tmpa:=\bxnf@fam}%
+ \bxnf@okfalse
+ }%
+}
+
+%% \bxnf@sanitize@tfmname\CS
+\def\bxnf@sanitize@tfmname#1{%
+ \begingroup
+ \let\bxnf@pre\relax
+ \let\do\bxnf@sanitize@tfmname@a
+ \bxnf@sanitize@list
+ \ifx\bxnf@pre\relax
+ \global\let\bxnf@g@tmpa\bxnf@tfm
+ \else
+ \global\let\bxnf@g@tmpa\bxnf@@sanitized
+ \fi
+ \endgroup
+ \let#1\bxnf@g@tmpa
+}
+\def\bxnf@sanitize@tfmname@a#1{%
+ \ifx\bxnf@pre\relax
+ \edef\bxnf@tmpa{{#1}{\bxnf@tfm}}%
+ \expandafter\bxnf@split@at\bxnf@tmpa
+ \fi
+}
+\def\bxnf@@sanitized{(OpenType)}
+\def\bxnf@sanitize@list{%
+ \do{ }\do{:}\do{,}\do{;}\do{=}\do{/}%
+}
+
+%% \def\bxnf@set@family@param
+% Sets \[bxnf@g@prm/*].
+\def\bxnf@set@family@param{%
+ \csxdef{bxnf@g@prm/\bxnf@fam}{{\bxnf@enc}%
+ {\ifbxnf@fixed \expandafter\rem@pt\bxnf@size \fi}}%
+ \bxDebug{bxnf@g@prm/\bxnf@fam:=\csuse{bxnf@g@prm/\bxnf@fam}}%
+}
+
+%% \bxnf@declare@family
+\def\bxnf@declare@family{%
+ \DeclareFontFamily{\bxnf@enc}{\bxnf@fam}{}%
+ \let\bxnf@tmpb\@empty
+ \ifcase\bxnf@type\or
+ \or \let\bxnf@tmpb\bxnf@jfscale@spec
+ \or \let\bxnf@tmpb\bxnf@jfscale@spec
+ \fi
+ \DeclareFontShape{\bxnf@enc}{\bxnf@fam}{m}{n}%
+ {<->\bxnf@tmpb\bxnf@tfm}{}%
+ % In pTeX, a dummy entry must be declared for the
+ % encoding counterpart.
+ \let\bxnf@tmpb\relax
+ \ifcase\bxnf@type\or % no-op for normal
+ \or \letcs\bxnf@tmpb{t@enc@\bxnf@enc}% yoko->tate
+ \or \letcs\bxnf@tmpb{y@enc@\bxnf@enc}% tate->yoko
+ \fi
+ \unless\ifx\bxnf@tmpb\relax
+ \DeclareFontFamily{\bxnf@tmpb}{\bxnf@fam}{}%
+ \DeclareFontShape{\bxnf@tmpb}{\bxnf@fam}{m}{n}%
+ {<->ssub*\kanjifamilydefault/m/n}{}%
+ \fi
+}
+
+%% \bxnf@select@family{<family>}
+\def\bxnf@select@family#1{%
+ \edef\bxnf@next{\noexpand\bxnf@select@family@a
+ {#1}\csuse{bxnf@g@prm/#1}}%
+ \bxnf@next
+}
+\def\bxnf@select@family@a#1#2#3{%
+ \bxDebug{select=#2/#1/m/n/#3}%
+ \usefont{#2}{#1}{m}{n}\relax
+ \ifstrempty{#3}{}{%else
+ \fontsize{#3}{#3}\selectfont
+ }%
+}
+
+%--------------------------------------- Inquery on TFM
+
+%% variables
+\let\bxnf@type\relax
+\let\bxnf@size\relax
+
+%% \bxnf@get@tfm@info
+\def\bxnf@get@tfm@info{%
+ \bxDebug{name=\bxnf@tfm}%
+ \begingroup
+ \chardef\bxnf@type=0 \let\bxnf@size\@empty
+ \font\bxnf@tmpa=\bxnf@tfm\space scaled 2000\relax
+ \ifx\bxnf@tmpa\nullfont\else
+ \bxnf@get@tfm@info@a
+ \bxnf@get@tfm@info@b
+ \fi
+ \xdef\bxnf@g@tmpa{%
+ \chardef\bxnf@type=\number\bxnf@type\relax
+ \def\noexpand\bxnf@size{\bxnf@size}}%
+ \endgroup
+ \bxnf@g@tmpa
+ \bxDebug{tfm=\number\bxnf@type/\bxnf@size}%
+}
+\def\bxnf@get@tfm@info@a{%
+ \bxnf@tmpa
+ \bxnf@curr@font\bxnf@g@tmpa\font
+ \chardef\bxnf@type=1 \let\bxnf@xfont\font
+}
+\def\bxnf@get@tfm@info@b{%
+ \unless\ifnum\bxnf@type=0
+ \expandafter\bxnf@read@at\bxnf@g@tmpa\bxnf@end
+ \ifx\bxnf@size\relax \let\bxnf@size\z@ \fi
+ \dimdef\bxnf@size{\bxnf@size/2}%
+ \bxDebug{tfm1=\number\bxnf@type/\bxnf@size}%
+ \unless\ifx\bxnf@atcl\relax
+ \let\bxnf@tmpb\bxnf@size
+ \bxnf@xfont\bxnf@tmpa=\bxnf@tfm\space\bxnf@atcl\relax
+ \bxnf@tmpa
+ \bxnf@curr@font\bxnf@g@tmpa\bxnf@xfont
+ \expandafter\bxnf@read@at\bxnf@g@tmpa\bxnf@end
+ \ifx\bxnf@size\relax \let\bxnf@size\bxnf@tmpb \fi
+ \fi
+ \fi
+}
+
+%% \bxnf@read@at<text>\bxnf@end
+\begingroup
+ \catcode`\A=12 \catcode`\T=12
+ \lowercase{%
+ \gdef\bxnf@read@at#1\bxnf@end{%
+ \bxnf@read@at@a#1\bxnf@mk AT \bxnf@mk\bxnf@end
+ }%
+ \gdef\bxnf@read@at@a#1AT #2\bxnf@mk#3\bxnf@end{%
+ \ifstrempty{#2}{%
+ \let\bxnf@size\relax
+ }{%else
+ \def\bxnf@size{#2}%
+ }%
+ }%
+ }
+\endgroup
+
+%% \bxnf@curr@font\CS\Xfont
+\def\bxnf@curr@font#1#2{%
+ \xdef#1{\fontname#2}%
+}
+
+\ifbxnf@ptex %----<*pTeX>
+
+%% revision to \bxnf@get@tfm@info
+\def\bxnf@get@tfm@info@a{%
+ \bxnf@get@tfm@info@init
+ \nullfont \bxnf@jnullfont \bxnf@tnullfont
+ \bxnf@tmpa
+ \bxnf@curr@font\bxnf@g@tmpa\font
+ \unless\ifx\bxnf@g@tmpa\bxnf@dsf@null
+ \chardef\bxnf@type=1 \let\bxnf@xfont\font
+ \else
+ \bxnf@curr@font\bxnf@g@tmpa\jfont
+ \unless\ifx\bxnf@g@tmpa\bxnf@dsf@jnull
+ \chardef\bxnf@type=2 \let\bxnf@xfont\jfont
+ \else
+ \bxnf@curr@font\bxnf@g@tmpa\tfont
+ \unless\ifx\bxnf@g@tmpa\bxnf@dsf@tnull
+ \chardef\bxnf@type=3 \let\bxnf@xfont\tfont
+ \fi
+ \fi
+ \fi
+}
+\def\bxnf@get@tfm@info@init{%
+ \bxDebug{\string\bxnf@get@tfm@info@init}%
+ \begingroup
+ \global\jfont\bxnf@jnullfont=rml\relax
+ \global\tfont\bxnf@tnullfont=rmlv\relax
+ \nullfont \bxnf@jnullfont \bxnf@tnullfont
+ \bxnf@curr@font\bxnf@dsf@null\font
+ \bxnf@curr@font\bxnf@dsf@jnull\jfont
+ \bxnf@curr@font\bxnf@dsf@tnull\tfont
+ \endgroup
+ \bxDebug{null=\bxnf@dsf@null}%
+ \bxDebug{jnull=\bxnf@dsf@jnull}%
+ \bxDebug{tnull=\bxnf@dsf@tnull}%
+ \global\let\bxnf@get@tfm@info@init\relax
+}
+
+\fi %----</pTeX>
+
+%--------------------------------------- Ja-font scaling
+
+%% variables
+\def\bxnf@jfscale{1}
+
+%% error message
+\def\bxnf@err@ivjsc{%
+ \PackageError\bxnf@pkgname
+ {Invalid argument given to \string\newfontjascale
+ \MessageBreak(\bxnf@tmpa)}%
+ {\@eha}%
+}
+\def\bxnf@err@najsc{%
+ \PackageError\bxnf@pkgname
+ {The command is already invalidated}%
+ {\@eha}%
+}
+
+%% \bxnf@jfscale@spec
+\def\bxnf@jfscale@spec{%
+ \unless\ifdim\p@=\bxnf@jfscale\p@
+ s*[\bxnf@jfscale]%
+ \fi
+}
+
+%%<*>\newfontjascale
+\newrobustcmd*\newfontjascale[1]{%
+ \edef\bxnf@tmpa{#1}%
+ \ifx\bxnf@tmpa\bxnf@@star
+ \edef\bxnf@tmpa{\csuse{mcdefault}}%
+ \fi
+ \expandafter\bxnf@setjascale@a\bxnf@tmpa\bxnf@end
+}
+\def\bxnf@setjascale@a#1\bxnf@end{%
+ \ifblank{#1}{%
+ \bxnf@setjascale@real{1}%
+ }{%else
+ \bxnf@setjascale@b#1\bxnf@end%
+ }%
+}
+\def\bxnf@setjascale@b#1#2\bxnf@end{%
+ \ifcat\noexpand#10%
+ \afterassignment\bxnf@setjascale@c\dimen@ii=#1#2\p@\bxnf@stop
+ \else
+ \bxnf@setjascale@fam\bxnf@tmpa
+ \fi
+}
+\def\bxnf@setjascale@c#1\bxnf@stop{%
+ \ifstrempty{#1}{%
+ \edef\bxnf@tmpa{\strip@pt\dimen@ii}%
+ \bxnf@setjascale@real\bxnf@tmpa
+ }{%else
+ \bxnf@err@ivjsc
+ }%
+}
+
+%% \bxnf@setjascale@real
+\let\bxnf@setjascale@real\@gobble
+%% \bxnf@setjascale@fam
+\let\bxnf@setjascale@fam\@gobble
+
+%% \bxnf@annihilate@setjascale
+\def\bxnf@annihilate@setjascale{%
+ \global\let\bxnf@annihilate@setjascale\relax
+ \gdef\newfontjascale##1{%
+ \bxnf@err@najsc
+ }%
+ \global\let\bxnf@setjascale@a\@undefined
+ \global\let\bxnf@setjascale@b\@undefined
+ \global\let\bxnf@setjascale@c\@undefined
+ \global\let\bxnf@setjascale@real\@undefined
+ \global\let\bxnf@setjascale@fam\@undefined
+}
+
+\ifbxnf@ptex %----<*pTeX>
+
+%% \bxnf@setjascale@real
+\def\bxnf@setjascale@real#1{%
+ \edef\bxnf@jfscale{#1}%
+ \bxDebug{jfscale:=\bxnf@jfscale}%
+}
+%% \bxnf@setjascale@fam
+\def\bxnf@setjascale@fam#1{%
+ \letcs\bxnf@tmpb{\cy@encoding/#1/m/n}%
+ \ifdef\bxnf@tmpb{%
+ \expandafter\bxnf@setjascale@fam@a\meaning\bxnf@tmpb\bxnf@end
+ }{%else
+ \bxnf@err@ivjsc
+ }%
+}
+\begingroup
+ \catcode`\S=12
+ \lowercase{%
+ \gdef\bxnf@setjascale@fam@a#1\bxnf@end{%
+ \def\bxnf@tmpb{1}%
+ \bxnf@split@at{<->S*[}{#1}%
+ \ifx\bxnf@pre\relax \bxnf@split@at{<->*[}{#1}\fi
+ \unless\ifx\bxnf@pre\relax
+ \edef\bxnf@tmpb{{]}{\bxnf@post}}%
+ \expandafter\bxnf@split@at\bxnf@tmpb
+ \unless\ifx\bxnf@pre\relax
+ \let\bxnf@tmpb\bxnf@pre
+ \fi
+ \fi
+ \bxnf@setjascale@real\bxnf@tmpb
+ }%
+ }%
+\endgroup
+
+\fi %----</pTeX>
+
+%--------------------------------------- Switching of \newfont
+
+%% \bxnf@ltx@newfont
+% The original.
+\let\bxnf@ltx@newfont\newfont
+
+%%<*>\enhancenewfont
+\newrobustcmd*\enhancenewfont{%
+ \let\newfont\newfontx}
+
+%%<*>\noenhancenewfont
+\newrobustcmd*\noenhancenewfont{%
+ \let\newfont\bxnf@ltx@newfont}
+
+%% initial
+\ifbxnf@newfont
+ \enhancenewfont
+\fi
+
+%--------------------------------------- all done
+\endinput
+%% EOF
diff --git a/language/japanese/BX/bxorigcapt/LICENSE b/language/japanese/BX/bxorigcapt/LICENSE
new file mode 100644
index 0000000000..b9164b46b1
--- /dev/null
+++ b/language/japanese/BX/bxorigcapt/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2016-2022 Takayuki YATO (aka. "ZR")
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/language/japanese/BX/bxorigcapt/README.md b/language/japanese/BX/bxorigcapt/README.md
new file mode 100644
index 0000000000..a17c825fad
--- /dev/null
+++ b/language/japanese/BX/bxorigcapt/README.md
@@ -0,0 +1,56 @@
+BXorigcapt Package
+==================
+
+LaTeX: To retain the original caption names when using Babel
+
+This package forces the caption names (`\chaptername`, `\today`, etc)
+declared by the document class in use to be used as the caption names
+for a specific language introduced by the Babel package.
+
+Starting from version 0.3, this package also supports Polyglossia.
+
+### System requirement
+
+ * TeX format: LaTeX.
+ * TeX engine: Any engine with e-TeX extension.
+ * Dependent packages:
+ - babel or polyglossia
+ - etoolbox v2.1+
+
+### Installation
+
+ - `*.sty` → $TEXMF/tex/latex/BXorigcapt
+
+### License
+
+This package is distributed under the MIT License.
+
+
+The bxorigcapt Package
+----------------------
+
+See the manual bxorigcapt.pdf for detail.
+
+
+Revision History
+----------------
+
+ * Version 1.0 〈2022/04/10〉
+ - Now e-TeX and etoolbox are required.
+ - Add option `main`.
+ * Version 0.4a 〈2022/04/08〉
+ - Add option `nowarn`.
+ - Bug fix.
+ * Version 0.4 〈2022/03/12〉
+ - Adjustment for new version of Babel.
+ - Add option `warn`.
+ * Version 0.3 〈2018/09/05〉
+ - Add support for Polyglossia.
+ * Version 0.2a 〈2017/05/03〉
+ - Minor fix.
+ * Version 0.2 〈2016/04/01〉
+ - The first public version.
+
+--------------------
+Takayuki YATO (aka. "ZR")
+https://github.com/zr-tex8r
diff --git a/language/japanese/BX/bxorigcapt/bxorigcapt.pdf b/language/japanese/BX/bxorigcapt/bxorigcapt.pdf
new file mode 100644
index 0000000000..8206ebbd69
--- /dev/null
+++ b/language/japanese/BX/bxorigcapt/bxorigcapt.pdf
Binary files differ
diff --git a/language/japanese/BX/bxorigcapt/bxorigcapt.sty b/language/japanese/BX/bxorigcapt/bxorigcapt.sty
new file mode 100644
index 0000000000..7baf67ec5a
--- /dev/null
+++ b/language/japanese/BX/bxorigcapt/bxorigcapt.sty
@@ -0,0 +1,255 @@
+%%
+%% This is file 'bxorigcapt.sty'.
+%%
+%% Copyright (c) 2016-2022 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+%% package declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{bxorigcapt}[2022/04/10 v1.0]
+\def\bxoc@pkgname{bxorigcapt}
+\providecommand\bxDebug[1]{}
+
+%% code guard
+\edef\bxoc@restore@codes{%
+\catcode33=\the\catcode33%
+\catcode39=\the\catcode39%
+\catcode46=\the\catcode46%
+\catcode47=\the\catcode47%
+\catcode58=\the\catcode58%
+\catcode63=\the\catcode63%
+\relax}
+\catcode33=12 % <!>
+\catcode39=12 % <'>
+\catcode46=12 % <.>
+\catcode47=12 % </>
+\catcode58=12 % <:>
+\catcode63=12 % <?>
+\AtEndOfPackage{%
+\bxoc@restore@codes
+\let\bxoc@restore@codes\relax}
+
+%--------------------------------------- options
+
+%% \bxoc@target@lang
+\let\bxoc@target@lang\relax
+
+%% \bxoc@warn@or@info
+\let\bxoc@warn@or@info\PackageInfo
+
+%% handle options
+% 'warn'/'nowarn'
+\DeclareOption{warn}{%
+ \let\bxoc@warn@or@info\PackageWarning
+}
+\DeclareOption{nowarn}{%
+ \let\bxoc@warn@or@info\PackageInfo
+}
+% 'main'
+\DeclareOption{main}{%
+ \let\bxoc@target@lang\relax
+}
+% language options
+\DeclareOption*{%
+ \edef\bxoc@target@lang{\CurrentOption}%
+}
+% dispatch
+\ProcessOptions*
+\bxDebug{target language = %
+ \ifx\bxoc@target@lang\relax (main)\else \bxoc@target@lang\fi}
+
+%--------------------------------------- environment
+
+%% packages
+\RequirePackage{etoolbox}[2011/01/03]% v2.1
+\ifx\numdef\@undefined % etoolbox is aborted
+ \PackageWarningNoLine
+ {Package loading is aborted}
+\expandafter\endinput\fi\relax
+
+%--------------------------------------- general
+
+%% \bxoc@name@list
+% The list of caption names.
+\@onlypreamble\bxoc@name@list
+\def\bxoc@name@list{%
+ abstract,also,appendix,author,bib,cc,chapter,contents,%
+ encl,figure,glossary,headto,index,listfigure,listtable,%
+ page,part,preface,proof,ps,ref,seealso,see,subject,table,%
+ prepart,postpart,prechapter,postchapter,presection,postsection%
+}
+
+%% \bxoc@deprecated@ldf@list
+% The list of the names of deprecated commands.
+\@onlypreamble\bxoc@deprecated@ldf@list
+\def\bxoc@deprecated@ldf@list{}
+
+%--------------------------------------- public commands
+
+%%<+> \bxorigcaptDeprecateCommand{<csname>,...}
+\@onlypreamble\bxorigcaptDeprecateCommand
+\newcommand*\bxorigcaptDeprecateCommand[1]{%
+ \eappto\bxoc@deprecated@ldf@list{,#1}%
+}
+
+%--------------------------------------- hook
+
+%% \bxoc@check@conflict
+% Check if both babel and polyglossia are loaded, and then
+% annihilate all the function of this package.
+\@onlypreamble\bxoc@check@conflict
+\def\bxoc@check@conflict{%
+ \@ifpackageloaded{polyglossia}{%
+ %NB. polyglossia marks babel as loaded.
+ \@ifpackageloaded{babel}{%
+ \ifx\bbl@afterelse\@undefined\else % Babel is REALLY loaded
+ \PackageError\bxoc@pkgname
+ {Both Babel and Polyglossia are loaded!\MessageBreak
+ Such usage is not supported}%
+ {All the function of \bxoc@pkgname\space
+ is invalidated.\MessageBreak
+ \@ehc}%
+ % annihilate
+ \let\bxoc@babel@hook\relax
+ \let\bxoc@check@conflict\relax
+ \fi
+ }{}%
+ }{}%
+}
+
+%% \bxoc@if@babel@or@polyglossia@loaded
+\@onlypreamble\bxoc@if@babel@or@polyglossia@loaded
+\def\bxoc@if@babel@or@polyglossia@loaded{%
+ \let\bxoc@next\@secondoftwo
+ \@ifpackageloaded{babel}{\let\bxoc@next\@firstoftwo}{}%
+ \@ifpackageloaded{polyglossia}{\let\bxoc@next\@firstoftwo}{}%
+ \bxoc@next
+}
+
+%% \bxoc@babel@hook
+% Note that \bxoc@babel@hook must be invoked between the loading
+% of babel and the dispatch of babel's begin-document hook.
+\@onlypreamble\bxoc@babel@hook
+\let\bxoc@babel@hook\@empty
+\bxoc@if@babel@or@polyglossia@loaded{%
+ \AtEndPreamble{%
+ \bxoc@check@conflict
+ \bxoc@babel@hook
+ }%
+}{%else
+ \AtEndPreamble{%
+ \bxoc@if@babel@or@polyglossia@loaded{%
+ \bxoc@check@conflict
+ \bxoc@babel@hook
+ }{%else
+ \bxoc@warn@or@info\bxoc@pkgname
+ {Neither Polyglossia nor Babel is\MessageBreak
+ loaded, reported}%
+ }%
+ }%
+}
+
+%--------------------------------------- deprecated ldf stuffs
+
+%% \bxoc@clear@deprecated@ldf
+\@onlypreamble\bxoc@clear@deprecated@ldf
+\def\bxoc@clear@deprecated@ldf{%
+ \begingroup
+ \@for\bxoc@tmpa:=\bxoc@deprecated@ldf@list\do{%
+ \ifx\bxoc@tmpa\@empty\else
+ \ifcsdef{\bxoc@tmpa}{%
+ \bxDebug{Smashed \@backslashchar\bxoc@tmpa}%
+ \global\cslet{\bxoc@tmpa}\@empty
+ }{}%
+ \fi
+ }%
+ \endgroup
+ \bxoc@clear@deprecated@ldf@a
+}
+\@onlypreamble\bxoc@clear@deprecated@ldf@a
+\def\bxoc@clear@deprecated@ldf@a{%
+ \global\let\bxoc@clear@deprecated@ldf@a\relax
+ \gdef\bxorigcaptDeprecateCommand##1{% modified
+ \edef\bxoc@deprecated@ldf@list{##1}%
+ \bxoc@clear@deprecated@ldf}}
+\g@addto@macro\bxoc@babel@hook{\bxoc@clear@deprecated@ldf}
+
+%--------------------------------------- save and restore
+
+%% variables
+\let\bxoc@@today\relax
+% \[bxoc@@<caption>name]
+
+%% \bxoc@save@captions
+%% \bxoc@restore@captions
+\@onlypreamble\bxoc@save@captions
+\let\bxoc@save@captions\@empty
+\let\bxoc@restore@captions\@empty
+\begingroup
+ \@for\bxoc@tmpa:=\bxoc@name@list\do{%
+ \edef\bxoc@next{%
+ \noexpand\g@addto@macro\noexpand\bxoc@save@captions{%
+ \let\expandonce{\csname bxoc@@\bxoc@tmpa name\endcsname}%
+ \expandonce{\csname\bxoc@tmpa name\endcsname}}%
+ }\bxoc@next
+ \edef\bxoc@next{%
+ \noexpand\g@addto@macro\noexpand\bxoc@restore@captions{%
+ \let\expandonce{\csname\bxoc@tmpa name\endcsname}%
+ \expandonce{\csname bxoc@@\bxoc@tmpa name\endcsname}}%
+ }\bxoc@next
+ }
+\endgroup
+
+%% \bxoc@restore@date
+\def\bxoc@restore@date{%
+ \let\today\bxoc@@today
+}
+
+%% \bxoc@enable@restore
+\@onlypreamble\bxoc@enable@restore
+\def\bxoc@enable@restore{%
+ \ifx\bxoc@target@lang\relax
+ \@ifpackageloaded{polyglossia}{%
+ \let\bxoc@target@lang\xpg@main@language
+ }{%else
+ \let\bxoc@target@lang\bbl@main@language
+ }%
+ \ifx\bxoc@target@lang\@undefined
+ \PackageError\bxoc@pkgname
+ {The main language is not set}%
+ {\@ehc}%
+ \def\bxoc@target@lang{?bxoc}%
+ \cslet{date\bxoc@target@lang}\@empty
+ \fi
+ \fi
+ \bxDebug{target language = \bxoc@target@lang}%
+ \ifcsundef{date\bxoc@target@lang}{%
+ \PackageError\bxoc@pkgname
+ {Language '\bxoc@target@lang' not defined}%
+ {\@ehc}%
+ \cslet{date\bxoc@target@lang}\@empty
+ }{}%
+ \ifcsundef{captions\bxoc@target@lang}{%
+ \cslet{captions\bxoc@target@lang}\@empty
+ }{}%
+ \csappto{date\bxoc@target@lang}{\bxoc@restore@date}%
+ \csappto{captions\bxoc@target@lang}{\bxoc@restore@captions}%
+ % do not do 'ensure'!
+ \ifcsundef{bbl@e@\bxoc@target@lang}{}{%else
+ \bxDebug{ensure for \bxoc@target@lang\space invalidated}%
+ \csundef{bbl@e@\bxoc@target@lang}%
+ }%
+}
+
+%% Saves the current captions
+\bxoc@save@captions
+\let\bxoc@@today\today
+\g@addto@macro\bxoc@babel@hook{\bxoc@enable@restore}
+
+%--------------------------------------- done
+\endinput
+%% EOF
diff --git a/language/japanese/BX/bxorigcapt/bxorigcapt.tex b/language/japanese/BX/bxorigcapt/bxorigcapt.tex
new file mode 100644
index 0000000000..83dffe4c8a
--- /dev/null
+++ b/language/japanese/BX/bxorigcapt/bxorigcapt.tex
@@ -0,0 +1,112 @@
+\documentclass[a4paper]{article}
+\usepackage[scale=0.75]{geometry}
+\usepackage[T1]{fontenc}
+\usepackage{lmodern,textcomp}
+\usepackage{color}
+\definecolor{myblue}{rgb}{0,0,0.75}
+\definecolor{mygreen}{rgb}{0,0.45,0}
+\usepackage[colorlinks]{hyperref}
+\hypersetup{linkcolor=myblue,urlcolor=mygreen,
+ pdftitle={The bxorigcapt package},
+ pdfauthor={Takayuki YATO}}
+\usepackage{bxtexlogo}
+\bxtexlogoimport{*}
+\usepackage{shortvrb}
+\MakeShortVerb{\|}
+\newcommand{\PkgVersion}{1.0}
+\newcommand{\PkgDate}{2022/04/10}
+\newcommand{\Pkg}[1]{\textsf{#1}}
+\newcommand{\Meta}[1]{$\langle$#1$\rangle$}
+\newcommand{\Note}{\par\noindent\emph{Note.}}
+\newcommand{\Means}{:\quad}
+%-----------------------------------------------------------
+\begin{document}
+\title{The \Pkg{bxorigcapt} package}
+\author{Takayuki YATO\quad (aka.~``ZR'')}
+\date{v\PkgVersion\quad[\PkgDate]}
+\maketitle
+%\tableofcontents
+\begin{abstract}
+This package forces the caption names (|\chaptername|, |\today|, etc.)\ %
+declared by the document class in use to be used as the caption names
+for a specific language introduced by the Babel package.
+
+Starting from version 0.3, this package also supports Polyglossia.
+\end{abstract}
+
+%===========================================================
+\section{Introduction}
+\label{sec:Introduction}
+
+Suppose you have designed a document class
+tailored for the Esperanto language.
+The class has the following definition of caption names
+and you like it:
+\begin{quote}
+|\newcommand\contentsname{Tabelo de Enhavo}|
+\end{quote}
+
+If a document is written solely in Esperanto,
+then there is no need to employ the Babel package.
+(Yes, the document class should select the hyphenation rule
+for the language.)
+However, when you want to create document
+that contains Esperanto and German,
+then you have to utilize Babel,
+to have correct hyphenations for both languages.
+\begin{quote}
+|\usepackage[ngerman,esperanto]{babel}|
+\end{quote}
+
+But unfortunately, this changes |\contentsname|
+from ``Tabelo de Enhavo'' (what you have chosen)
+to ``Enhavo''
+(what is declared in the language definition file of Babel),
+which is unfavorable.
+
+In fact, when using a document class for a specific language,
+the most suitable caption names \emph{for that language}
+should be the ones provided by the class.
+The \Pkg{bxorigcapt} package realizes this natural request,
+that is, it enables you
+to make the caption names declared in the current document class
+treated as the caption names for a specific language.
+
+
+%===========================================================
+\section{Package Loading}
+\label{sec:Package-Loading}
+
+\begin{quote}
+|\usepackage[|\Meta{option}|,...]{bxorigcapt}|
+\end{quote}
+
+Available options are:
+\begin{itemize}
+\item |main| (default)\Means
+ Sets the main language of Babel to the default target language.
+\item \emph{a Babel language name}\Means
+ Specifies the target language.
+\item |warn|\Means
+ Issues a warning (instead of an info)
+ if Babel is never loaded in the preamble.
+\item |nowarn| (default)\Means
+ Negation of |warn|.
+\end{itemize}
+
+
+%===========================================================
+\section{Usage}
+\label{sec:Usage}
+
+Once this package is loaded,
+the caption names provided by the document class
+(actually the ones that are effective when this package is loaded)
+will be used as the caption names for the target language
+(which is specified by the package option).
+
+This package has no public commands.
+
+
+%===========================================================
+\end{document}