diff options
author | Norbert Preining <norbert@preining.info> | 2022-07-31 03:01:27 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2022-07-31 03:01:27 +0000 |
commit | 0d7064c66024537b237407f8b36413b055cf9a9a (patch) | |
tree | 51b6aa534418af1b4b49ccd1dffa32165100b8fe /language/japanese | |
parent | ab0990ca5f58ea10d38cc1760dbcbbd832626f40 (diff) |
CTAN sync 202207310301
Diffstat (limited to 'language/japanese')
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 Binary files differnew file mode 100644 index 0000000000..23fe3879ef --- /dev/null +++ b/language/japanese/BX/bxcalc/bxcalcize.pdf 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 Binary files differnew file mode 100644 index 0000000000..fa530e451f --- /dev/null +++ b/language/japanese/BX/bxcalc/bxcalcux.pdf 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 Binary files differnew file mode 100644 index 0000000000..bcfc5628a5 --- /dev/null +++ b/language/japanese/BX/bxcalc/sample-bxcalc.pdf 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 Binary files differnew file mode 100644 index 0000000000..6e66d9bbd7 --- /dev/null +++ b/language/japanese/BX/bxeepic/sample-bxeepic.pdf 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 Binary files differnew file mode 100644 index 0000000000..8206ebbd69 --- /dev/null +++ b/language/japanese/BX/bxorigcapt/bxorigcapt.pdf 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} |