summaryrefslogtreecommitdiff
path: root/language/japanese/pxbase
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-05-24 03:01:24 +0000
committerNorbert Preining <norbert@preining.info>2021-05-24 03:01:24 +0000
commit5f0d648973cab5784f4bdb361bbe261b60493432 (patch)
tree8d52d91ad042d654b138e7ce1b7b87b85b837b11 /language/japanese/pxbase
parentf1261b349e875b842745b63258c3e338cb1fe3bf (diff)
CTAN sync 202105240301
Diffstat (limited to 'language/japanese/pxbase')
-rw-r--r--language/japanese/pxbase/LICENSE2
-rw-r--r--language/japanese/pxbase/README-ja.md7
-rw-r--r--language/japanese/pxbase/README.md1
-rw-r--r--language/japanese/pxbase/pxbabel.pdfbin151727 -> 136058 bytes
-rw-r--r--language/japanese/pxbase/pxbabel.sty131
-rw-r--r--language/japanese/pxbase/pxbabel.tex295
-rw-r--r--language/japanese/pxbase/pxbase.sty4
-rw-r--r--language/japanese/pxbase/pxbasenc.def2
-rw-r--r--language/japanese/pxbase/pxjsfenc.def2
-rw-r--r--language/japanese/pxbase/upkcat.sty4
10 files changed, 327 insertions, 121 deletions
diff --git a/language/japanese/pxbase/LICENSE b/language/japanese/pxbase/LICENSE
index 8ada757fbc..ead3a3702e 100644
--- a/language/japanese/pxbase/LICENSE
+++ b/language/japanese/pxbase/LICENSE
@@ -1,6 +1,6 @@
The MIT License
-Copyright (c) 2017 Takayuki YATO (aka. "ZR")
+Copyright (c) 2008-2021 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
diff --git a/language/japanese/pxbase/README-ja.md b/language/japanese/pxbase/README-ja.md
index fd3eaf9ad0..b15ea3336e 100644
--- a/language/japanese/pxbase/README-ja.md
+++ b/language/japanese/pxbase/README-ja.md
@@ -165,6 +165,13 @@ upLaTeX の場合:
更新履歴
--------
+ * Version 1.2 〈2021/05/22〉
+ - pxbabel: CJK 言語のフォント切替を japanese-otf で多ウェイト拡張
+ (`deluxe`)を指定した場合に対応させた。
+ - pxbabel: (試験的) `(no)forcedeluxemulti` オプションを追加。
+ `forcedeluxemulti` を指定すると、さらに多言語拡張(`multi`)を
+ 行った場合の日本語以外のフォントにも適用される。
+
* Version 1.1b 〈2017/07/03〉
- upLaTeX で japanese-otf と併用した場合に対応。
- バグ修正。
diff --git a/language/japanese/pxbase/README.md b/language/japanese/pxbase/README.md
index 6128d2223a..5dee4dac83 100644
--- a/language/japanese/pxbase/README.md
+++ b/language/japanese/pxbase/README.md
@@ -67,6 +67,7 @@ README-ja.md).
Revision History
----------------
+ * Version 1.2 〈2021/05/22〉
* Version 1.1b 〈2017/07/03〉
* Version 1.1a 〈2017/06/19〉
* Version 1.1 〈2017/05/29〉
diff --git a/language/japanese/pxbase/pxbabel.pdf b/language/japanese/pxbase/pxbabel.pdf
index 615e612777..7d9d7b272f 100644
--- a/language/japanese/pxbase/pxbabel.pdf
+++ b/language/japanese/pxbase/pxbabel.pdf
Binary files differ
diff --git a/language/japanese/pxbase/pxbabel.sty b/language/japanese/pxbase/pxbabel.sty
index 3f0ab85d30..345e2c9000 100644
--- a/language/japanese/pxbase/pxbabel.sty
+++ b/language/japanese/pxbase/pxbabel.sty
@@ -1,7 +1,7 @@
%%
%% This is file 'pxbabel.sty'.
%%
-%% Copyright (c) 2017 Takayuki YATO (aka. "ZR")
+%% Copyright (c) 2008-2021 Takayuki YATO (aka. "ZR")
%% GitHub: https://github.com/zr-tex8r
%% Twitter: @zr_tex8r
%%
@@ -10,7 +10,7 @@
%% package declaration
\NeedsTeXFormat{pLaTeX2e}
-\ProvidesPackage{pxbabel}[2017/07/03 v1.1b PX Babel interface for CJK]
+\ProvidesPackage{pxbabel}[2021/05/22 v1.2 PX Babel interface for CJK]
\def\pxbb@pkgname{pxbabel}
%--------------------------------------- general
@@ -97,6 +97,9 @@
\bxIfExpToEqualX{\mcdefault}{mc}{}{\pxbb@stdjaencodingtrue}% default
\DeclareOption{stdjaencoding}{\pxbb@stdjaencodingtrue}
\DeclareOption{nostdjaencoding}{\pxbb@stdjaencodingfalse}
+\newbool{pxbb@forcedeluxemulti}
+\DeclareOption{forcedeluxemulti}{\pxbb@forcedeluxemultitrue}
+\DeclareOption{noforcedeluxemulti}{\pxbb@forcedeluxemultifalse}
% (<lang_id>, +<lang_id>)
\bxPreamble\let\pxbb@last@lang\relax
\bxForEachIn\pxbb@cjk@langid@list\do{%
@@ -131,6 +134,10 @@
\@ifpackageloaded{mlutf}{\pxbb@otfmultitrue}{}
\@ifpackageloaded{pxotf}{\pxbb@otfmultitrue\pxbb@pxotftrue}{}
+%% \ifpxbb@otfdeluxe
+\newbool{pxbb@otfdeluxe}
+\@ifpackagewith{otf}{deluxe}{\pxbb@otfdeluxetrue}{}
+
%% \ifpxbb@babel
\newbool{pxbb@babel}
\@ifpackageloaded{babel}{\pxbb@babeltrue}{}
@@ -143,6 +150,22 @@
\pxbb@warn@nocjk
\fi\fi\fi
+% Check if 'forcedeluxemulti' is available.
+\ifpxbb@forcedeluxemulti
+ \ifupTeX\else
+ \PackageWarningNoLine\pxbb@pkgname
+ {Option 'forcedeluxemulti' is invalid, since\MessageBreak
+ the engine is not upTeX}
+ \pxbb@forcedeluxemultifalse
+ \fi
+ \ifpxbb@otfmulti\else
+ \PackageWarningNoLine\pxbb@pkgname
+ {Option 'forcedeluxemulti' is invalid, since\MessageBreak
+ package 'otf' is not loaded with 'multi'}
+ \pxbb@forcedeluxemultifalse
+ \fi
+\fi
+
%% resolve the expected main language
\ifundef\pxbb@main@lang{%then
% if 'main' is not specified
@@ -353,6 +376,110 @@
\endgroup
\fi
+%% declarations for upTeX + otf deluxe CJK fonts
+\ifpxbb@otfdeluxe
+
+% UniJIS
+\pxDeclareBasicCJKShape{J20}{hmc}{l}{!upnmlminl-h}
+\pxDeclareBasicCJKShape{J20}{hmc}{m}{!upnmlminr-h}
+\pxDeclareBasicCJKShape{J20}{hmc}{bx}{!upnmlminb-h}
+\pxDeclareBasicCJKShape{J20}{hgt}{m}{!upnmlgothr-h}
+\pxDeclareBasicCJKShape{J20}{hgt}{bx}{!upnmlgothb-h}
+\pxDeclareBasicCJKShape{J20}{hgt}{eb}{!upnmlgotheb-h}
+\pxDeclareKanjiFamily{J20}{mg}
+\pxDeclareBasicCJKShape{J20}{mg}{m}{!upnmlmgothr-h}
+
+\pxDeclareBasicCJKShape{J30}{hmc}{l}{!upnmlminl-v}
+\pxDeclareBasicCJKShape{J30}{hmc}{m}{!upnmlminr-v}
+\pxDeclareBasicCJKShape{J30}{hmc}{bx}{!upnmlminb-v}
+\pxDeclareBasicCJKShape{J30}{hgt}{m}{!upnmlgothr-v}
+\pxDeclareBasicCJKShape{J30}{hgt}{bx}{!upnmlgothb-v}
+\pxDeclareBasicCJKShape{J30}{hgt}{eb}{!upnmlgotheb-v}
+\pxDeclareKanjiFamily{J30}{mg}
+\pxDeclareBasicCJKShape{J30}{mg}{m}{!upnmlmgothr-v}
+
+% UniJIS2004
+\pxDeclareBasicCJKShape{J24}{hmc}{l}{!upnmlminln-h}
+\pxDeclareBasicCJKShape{J24}{hmc}{m}{!upnmlminrn-h}
+\pxDeclareBasicCJKShape{J24}{hmc}{bx}{!upnmlminbn-h}
+\pxDeclareBasicCJKShape{J24}{hgt}{m}{!upnmlgothrn-h}
+\pxDeclareBasicCJKShape{J24}{hgt}{bx}{!upnmlgothbn-h}
+\pxDeclareBasicCJKShape{J24}{hgt}{eb}{!upnmlgothebn-h}
+\pxDeclareKanjiFamily{J24}{mg}
+\pxDeclareBasicCJKShape{J24}{mg}{m}{!upnmlmgothrn-h}
+
+\pxDeclareBasicCJKShape{J34}{hmc}{l}{!upnmlminln-v}
+\pxDeclareBasicCJKShape{J34}{hmc}{m}{!upnmlminrn-v}
+\pxDeclareBasicCJKShape{J34}{hmc}{bx}{!upnmlminbn-v}
+\pxDeclareBasicCJKShape{J34}{hgt}{m}{!upnmlgothrn-v}
+\pxDeclareBasicCJKShape{J34}{hgt}{bx}{!upnmlgothbn-v}
+\pxDeclareBasicCJKShape{J34}{hgt}{eb}{!upnmlgothebn-v}
+\pxDeclareKanjiFamily{J34}{mg}
+\pxDeclareBasicCJKShape{J34}{mg}{m}{!upnmlmgothrn-v}
+
+\ifpxbb@forcedeluxemulti
+
+% UniKS
+\pxDeclareBasicCJKShape{J21}{hmc}{l}{!utfkml--h}
+\pxDeclareBasicCJKShape{J21}{hmc}{m}{!utfkmr--h}
+\pxDeclareBasicCJKShape{J21}{hmc}{bx}{!utfkmb--h}
+\pxDeclareBasicCJKShape{J21}{hgt}{m}{!utfkgr--h}
+\pxDeclareBasicCJKShape{J21}{hgt}{bx}{!utfkgb--h}
+\pxDeclareBasicCJKShape{J21}{hgt}{eb}{!utfkge--h}
+\pxDeclareKanjiFamily{J21}{mg}
+\pxDeclareBasicCJKShape{J21}{mg}{m}{!utfkmgr--h}
+
+\pxDeclareBasicCJKShape{J31}{hmc}{l}{!utfkml--v}
+\pxDeclareBasicCJKShape{J31}{hmc}{m}{!utfkmr--v}
+\pxDeclareBasicCJKShape{J31}{hmc}{bx}{!utfkmb--v}
+\pxDeclareBasicCJKShape{J31}{hgt}{m}{!utfkgr--v}
+\pxDeclareBasicCJKShape{J31}{hgt}{bx}{!utfkgb--v}
+\pxDeclareBasicCJKShape{J31}{hgt}{eb}{!utfkge--v}
+\pxDeclareKanjiFamily{J31}{mg}
+\pxDeclareBasicCJKShape{J31}{mg}{m}{!utfkmgr--v}
+
+% UniGB
+\pxDeclareBasicCJKShape{J22}{hmc}{l}{!utfcml--h}
+\pxDeclareBasicCJKShape{J22}{hmc}{m}{!utfcmr--h}
+\pxDeclareBasicCJKShape{J22}{hmc}{bx}{!utfcmb--h}
+\pxDeclareBasicCJKShape{J22}{hgt}{m}{!utfcgr--h}
+\pxDeclareBasicCJKShape{J22}{hgt}{bx}{!utfcgb--h}
+\pxDeclareBasicCJKShape{J22}{hgt}{eb}{!utfcge--h}
+\pxDeclareKanjiFamily{J22}{mg}
+\pxDeclareBasicCJKShape{J22}{mg}{m}{!utfcmgr--h}
+
+\pxDeclareBasicCJKShape{J32}{hmc}{l}{!utfcml--v}
+\pxDeclareBasicCJKShape{J32}{hmc}{m}{!utfcmr--v}
+\pxDeclareBasicCJKShape{J32}{hmc}{bx}{!utfcmb--v}
+\pxDeclareBasicCJKShape{J32}{hgt}{m}{!utfcgr--v}
+\pxDeclareBasicCJKShape{J32}{hgt}{bx}{!utfcgb--v}
+\pxDeclareBasicCJKShape{J32}{hgt}{eb}{!utfcge--v}
+\pxDeclareKanjiFamily{J32}{mg}
+\pxDeclareBasicCJKShape{J32}{mg}{m}{!utfcmgr--v}
+
+% UniCNS
+\pxDeclareBasicCJKShape{J23}{hmc}{l}{!utftml--h}
+\pxDeclareBasicCJKShape{J23}{hmc}{m}{!utftmr--h}
+\pxDeclareBasicCJKShape{J23}{hmc}{bx}{!utftmb--h}
+\pxDeclareBasicCJKShape{J23}{hgt}{m}{!utftgr--h}
+\pxDeclareBasicCJKShape{J23}{hgt}{bx}{!utftgb--h}
+\pxDeclareBasicCJKShape{J23}{hgt}{eb}{!utftge--h}
+\pxDeclareKanjiFamily{J23}{mg}
+\pxDeclareBasicCJKShape{J23}{mg}{m}{!utftmgr--h}
+
+\pxDeclareBasicCJKShape{J33}{hmc}{l}{!utftml--v}
+\pxDeclareBasicCJKShape{J33}{hmc}{m}{!utftmr--v}
+\pxDeclareBasicCJKShape{J33}{hmc}{bx}{!utftmb--v}
+\pxDeclareBasicCJKShape{J33}{hgt}{m}{!utftgr--v}
+\pxDeclareBasicCJKShape{J33}{hgt}{bx}{!utftgb--v}
+\pxDeclareBasicCJKShape{J33}{hgt}{eb}{!utftge--v}
+\pxDeclareKanjiFamily{J33}{mg}
+\pxDeclareBasicCJKShape{J33}{mg}{m}{!utftmgr--v}
+
+\fi % pxbb@forcedeluxemulti
+
+\fi % pxbb@otfdeluxe
+
%--------------------------------------- add font switch to Babel \extras
\ifpxbb@switchfont
diff --git a/language/japanese/pxbase/pxbabel.tex b/language/japanese/pxbase/pxbabel.tex
index c619d0dcbb..065607a97a 100644
--- a/language/japanese/pxbase/pxbabel.tex
+++ b/language/japanese/pxbase/pxbabel.tex
@@ -1,16 +1,27 @@
% 文字コードは UTF-8
% uplatex で組版する
-\documentclass[a4paper,uplatex]{jsarticle}
+\documentclass[uplatex,dvipdfmx,a4paper]{jsarticle}
+\usepackage[T1]{fontenc}
+\usepackage{lmodern,textcomp}
+\usepackage{color}
+\definecolor{myblue}{rgb}{0,0,0.75}
+\definecolor{mygreen}{rgb}{0,0.45,0}
+\usepackage[colorlinks,hyperfootnotes=false]{hyperref}
+\usepackage{pxjahyper}
+\hypersetup{linkcolor=myblue,urlcolor=mygreen,
+ pdftitle={pxbabelパッケージ},
+ pdfauthor={八登崇之}}
+\usepackage{bxtexlogo}
+\bxtexlogoimport{*}
\usepackage{shortvrb}
\MakeShortVerb{\|}
-\newcommand{\PkgVersion}{1.1b}
-\newcommand{\PkgDate}{2017/07/03}
+\newcommand{\PkgVersion}{1.2}
+\newcommand{\PkgDate}{2021/05/22}
\newcommand{\Pkg}[1]{\textsf{#1}}
\newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$}
\newcommand{\Note}{\par\noindent ※}
\newcommand{\Means}{:\quad\inhibitglue}
-\providecommand{\upTeX}{u\pTeX}
-\providecommand{\upLaTeX}{u\pLaTeX}
+\newcommand{\XS}{\hspace{\xkanjiskip}}
%-----------------------------------------------------------
\DeclareFontShape{JY2}{mc}{m}{ko}{<->s*[.924871]upkorrm-h}{}
\DeclareFontShape{JT2}{mc}{m}{ko}{<->s*[.924871]upkorrm-v}{}
@@ -26,9 +37,10 @@
%===========================================================
\section{概要}
+\label{sec:Overview}
{(u)\pLaTeX}における日本語・簡体字中国語・繁体字中国語・
-韓国語(以下この 4 つを「CJK言語」と総称する)の間の
+韓国語(以下この4つを「CJK言語」と総称する)の間の
「和文(CJK)フォント」の切り替えをBabelのインタフェースを
用いて行えるようにする。
@@ -46,10 +58,38 @@
\item \Pkg{japanese-otf}パッケージ({\pLaTeX}の場合)
\end{itemize}
+%-------------------
+\subsection{用語集}
+\label{ssec:terminology}
+
+\begin{itemize}
+\item CJK言語識別子\Means
+本パッケージにおいてCJK言語を指し示す、以下の文字列。
+ \begin{itemize}
+ \item |japanese|\Means 日本語
+ \item |korean|\Means 韓国語
+ \item |schinese|\Means 簡体字中国語
+ \item |tchinese|\Means 繁体字中国語
+ \end{itemize}
+\item 言語名\Means
+Babelで指定する(|\foreignlanguage| 等の引数にする)
+言語を表す文字列。
+\Note 既定ではCJK言語に対する「言語名」は「CJK言語識別子」と
+同じ(例えば日本語の「言語名」は|japanese|)であるが、
+そうでない設定も可能である。
+\item 仮想言語\Means
+Babelの言語オプション定義ファイル(|*.ldf|)の読込を伴わない
+言語のこと。
+本パッケージではCJK言語を仮想言語として扱えるため、
+各言語の定義ファイルを用意する必要がない。
+\Note CJK言語を仮想言語にせず定義ファイルを利用することも可能。
+\end{itemize}
+
%===========================================================
\section{読込}
+\label{sec:Loading}
-v0.9より\Pkg{babel}パッケージと一緒に読み込む方式
+0.9版より\Pkg{babel}パッケージと一緒に読み込む方式
(一括読込モード)をサポートした。
従来通り、別個に読み込む方式(分離読込モード)も可能である。
どちらであるかは、\Pkg{pxbabel}読込時に\Pkg{babel}が読込済か
@@ -64,45 +104,45 @@ v0.9より\Pkg{babel}パッケージと一緒に読み込む方式
|\usepackage[|\Meta{オプション}|]{pxbabel}|
\end{quote}
-オプションは以下の通り。
-なお「CJK 言語識別子」は次のいずれかの値のことを指す:
-\begin{itemize}
-\item |japanese|: 日本語
-\item |korean|: 韓国語
-\item |schinese|: 簡体字中国語
-\item |tchinese|: 繁体字中国語
-\end{itemize}
-「言語名」はBabelで指定する(|\foreignlanguage| 等の引数にする)
-言語を表す文字列のことである。
+%-------------------
+\subsection{パッケージオプション}
+\label{ssec:options}
\begin{itemize}
\item \Meta{CJK言語識別子}|=|\Meta{言語名}\Means
-各々のCJK言語に対して実際に使用するBabelの言語名を指定する。
-詳しくは「機能」の節を参照。
+CJK言語を仮想言語として扱い、実際に使用するBabelの言語名を指定する。
+\Note 詳細は\ref{sec:Commands}節を参照。
\Note 言語名の既定値はCJK言語識別子と同一名。
-(例えば |japanese|(日本語)の言語名は |japanese|。)
\item \Meta{CJK言語識別子}\Means
「\Meta{CJK言語識別子}|=|\Meta{CJK言語識別子}」と同じ。
-\Note これは既定値なので通常は指定する必要がないが、
+\Note 既定でこれと同等の設定が適用されるので通常は指定する必要がないが、
一括読込モードで「最後の言語(基底言語になる)」を
指定するのに有用である。
\item \Meta{CJK言語識別子}|=+|\Meta{言語名}\Means
-各々のCJK言語に対して実際に使用するBabelの言語名を指定し、
-かつその言語オプションの定義ファイル(|*.ldf|)を読み込む。
+CJK言語を非仮想言語として扱い、実際に使用するBabelの言語名を指定する。
+\Note 「\Meta{言語名}|.ldf|」という名前の
+言語オプション定義ファイルが読み込まれる。
\item |+|\Meta{CJK言語識別子}\Means
「\Meta{CJK言語識別子}|=+|\Meta{CJK言語識別子}」と同じ。
-\item 有効なBabel言語の名前\Means
+\item Babelの有効な言語名\Means
その言語の定義ファイルを読み込む。
-\Note 分離読込モードでもこの機能は有効である。
+\Note 現状では、分離読込モードでもこの機能は有効であるが、
+確実に動作させるのが困難であるため、将来的に
+「分離読込モードではCJK言語のみが指定可能
+\footnote{つまり、CJK言語以外は\texttt{babel}のオプションとして
+指定する必要がある。}」
+となる可能性がある。
\item |main=|\Meta{言語名}\Means
-文書開始時に有効となる基底言語を、
-言語名(CJK言語識別子でない)で指定する。
-\Note このオプションが未指定の場合、
+文書開始時に有効となる基底言語を、言語名
+\footnote{CJK言語について言語名とCJK言語識別子が異なる設定を
+用いる場合、\texttt{main}に指定するのは言語名の方であることに注意。}%
+で指定する。
+\Note |main|の指定がない場合、
分離読込モードでは\Pkg{babel}で最後に読まれた言語が基底言語になる。
一括読込モードでは\Pkg{pxbabel}で最後に読まれた言語が基底言語になる。
@@ -111,7 +151,7 @@ v0.9より\Pkg{babel}パッケージと一緒に読み込む方式
固定に関する設定を行う。
有効な値は次の通り:
\begin{itemize}
- \item 有効なBabel言語名\Means その言語に固定する。
+ \item 有効な言語名\Means その言語に固定する。
\item |main|\Means 文書開始時の基底言語に固定する。
\item |default|\Means キャプション文字列を文書クラスで
指定されたものから変更しない。
@@ -123,72 +163,55 @@ v0.9より\Pkg{babel}パッケージと一緒に読み込む方式
(仮に「仮想言語設定」と呼ぶ)の場合は |default|、
それ以外は |switch|。
\end{itemize}
-\Note Babelでは言語の切替に関して、入力言語のみを切り替えるもの
-(|\foreignlanguage| 命令、|otherlanguage*| 環境)
-と基底言語を切り替えるもの
-(|\selectlanguage| 命令、|otherlanguage| 環境)
-があり、既定の動作では
-キャプション言語は基底言語に常に追随する
-(|switch| 指定時と同じ)。
-ところが、「仮想言語設定」においては、キャプション文字列の
-設定が働かないので、基底言語を「仮想言語設定」の言語に切り替えた場合に
-キャプション言語が正しくない事態が生じる。\<\footnote{%
- ただし「文書開始時以外に基底言語を仮想言語設定に切り替える」ことを
- しなければ問題は起こらない。
- 特に、「日本語の文書クラスを用いて、かつBabelにおいて
- 仮想言語設定とした日本語を文書全体で基底言語にする」
- 場合は、キャプションは文書クラスで定めたものに固定される。}
-これによる混乱を避けるためにキャプション言語の固定が
-有用である場合がある。
-特に、「Babelによるキャプション文字列の変更を抑止して文書クラスで
-定めた文字列がいつでも有効であるようにしたい」という場合は、
-|default| を指定すればよい。
-文書開始時の基底言語が仮想言語設定である場合はこちらの使い方が
-多いと考えられるので、この場合には既定を |default| としている。
-\Note \Pkg{bxbase}パッケージの |\fixcaptiopnlanguage| によるキャプション
-言語固定の設定は、常に本パッケージでの設定より優先される。
-この使用は |main| オプションのものと一貫していないが、
-互換性のためそのままにしている。
+\Note 詳細は\ref{sec:Caption-Lang}節を参照。
\item |noswitchcaption|\Means
-|caption=default| と同じ。
-\Note v0.9 より前はこれが既定値であった。
-ゆえに、(|no|)|switchcaption| も |caption| もなく基底言語が
-仮想言語設定でない場合の |caption| 設定は、
-v0.9 より前は |default|、以降は |switch| と異なることになる。
-仮想言語設定でない場合は |default| にする必然性が少ないので、
-Babelの既定動作に合わせる目的で変更された。
+|caption=default|と同じ。
\item |switchcaption|\Means
-|caption=switch| と同じ。
+|caption=switch|と同じ。
+\Note (|no|)|switchcaption|は0.9版より前との互換性のため存在する。
-\item |switchfont|(既定で有効)\Means
-このパッケージが提供する、
+\item |switchfont|(既定値)\Means
CJK言語でフォントを切り替える機能を有効にする。
\item |noswitchfont|\Means
-このパッケージが提供する、
-CJK言語でフォントを切り替える機能を無効にする。
|switchfont| の否定。
+
+\item |forcedeluxemulti|\Means
+{\upLaTeX}で\Pkg{japanese-otf}パッケージを
+|deluxe|オプションおよび|multi|オプション付で使用している
+(|\UTFK|/|\UTFC|/|\UTFT|が多ウェイトで使える)ときに、
+日本語以外のテキストについても多ウェイトの設定を有効にする。
+\Note 本来は\XS|\UTFK|/|\UTFC|/|\UTFT|入力用である{\TeX}フォント
+(和文TFM)を使うため、約物の周りの空き調整が無効になる。
+
+\item |noforcedeluxemulti|(既定値)\Means
+|forcedeluxemulti|の否定。
+日本語以外のテキストについて多ウェイト設定を無効にする。
+\Note 約物の周りの空き調整が正常に行われる。
+\Note (|no|)|forcedeluxemulti|は試験的な機能であり、
+将来的に廃止される可能性がある。
\end{itemize}
%===========================================================
\section{ユーザ命令}
+\label{sec:Commands}
-このパッケージが提供する主要な機能であるCJKフォント切替に
+本パッケージの主要機能であるCJKフォント切替に
ついてはBabelの機能を用いて行うことになるため、
パッケージ特有の命令は存在しない。
-例えば、次のようなパッケージ読込(一括読込モード)
-の場合:
+例えば、次のようなパッケージ読込(一括読込モード)の場合
+\footnote{使用エンジンが{\upLaTeX}であるか、または
+ {\pLaTeX}で\Pkg{bxutf8}入力エンコーディングを用いているとする。}%
+:
\begin{quote}\begin{verbatim}
\usepackage[korean,japanese]{pxbabel}
\end{verbatim}\end{quote}
本文中で
-\footnote{{\upLaTeX}フォーマット使用または
-{\pLaTeX}で\Pkg{bxutf8}入力エンコーディングを用いているとする。}
\begin{quote}
-|日本語文書中に\foregnlanguage{korean}{|%
+|日本語文書中に\foreignlanguage{korean}{|%
\textgt{\Kor{한글}}|}がある。|
\end{quote}
と入力すれば次の出力が得られる。
@@ -201,58 +224,104 @@ CJK言語でフォントを切り替える機能を無効にする。
\begin{itemize}
\item |\cjklanguagename{|\Meta{CJK言語識別子}|}|\Means
そのCJK言語に対する言語名。
-\Note 例えば読込時に |schinese=chinesesimp| と指定した場合、
-|\cjklanguagename{schinese}| は |chinesesimp| に展開される。
+\Note 例えば、パッケージオプションで|schinese=chinesesimp|と指定した場合、
+|\cjklanguagename|\hspace{0pt}|{schinese}|\XS は
+「|chinesesimp|」に展開される。
\end{itemize}
%===========================================================
+\section{キャプション言語の固定に関する設定}
+\label{sec:Caption-Lang}
+
+Babelでは言語の切替に関して、入力言語のみを切り替えるもの
+(|\foreignlanguage|命令、|otherlanguage*|\XS 環境)
+と基底言語を切り替えるもの
+(|\selectlanguage|命令、|otherlanguage|環境)
+があり、既定動作ではキャプション言語は基底言語に常に追随する
+(|caption=switch|指定時と同じ)。
+
+ところが、実際の言語定義を伴わない仮想言語においては、
+キャプション文字列の設定は働かない。
+このため、基底言語を仮想言語に切り替えた場合には
+キャプション言語が正しくない事態が生じることになる。%
+\footnote{ただし「文書開始時以外に基底言語を仮想言語に切り替える」
+ ことをしなければ問題は起こらない。
+ 特に、「日本語の文書クラスを用いて、かつBabelにおいて
+ 仮想言語扱いの日本語を文書全体で基底言語にする」
+ 場合は、キャプションは文書クラスで定めたものに固定される。}
+これによる混乱を避けるために、|caption|オプションによる
+キャプション言語の固定が有用である場合がある。
+
+特に、「Babelによるキャプション文字列の変更を抑止して文書クラスで
+定めた文字列を常に有効にしたい」という場合は、
+|caption=default|を指定すればよい。
+文書開始時の基底言語が仮想言語である場合はこちらの使い方が
+多いと考えられるので、この場合に限って|caption|の既定値を
+(Babelの既定動作に相当する|switch|ではなく)
+|default|としている。
+
+\Note 0.9版より前は常に|default|を既定値としていた。
+ゆえに、|caption|(および(|no|)|switchcaption|)オプション
+指定がなく基底言語が仮想言語でない場合の|caption|設定は、
+0.9版より前は|default|、以降は|switch|と異なることになる。
+仮想言語設定でない場合は|default|にする必然性が少ないので、
+Babelの既定動作に合わせる目的で仕様が変更された。
+
+\Note \Pkg{bxbase}パッケージの\XS|\fixcaptiopnlanguage|命令による
+キャプション言語固定の設定は、常に本パッケージでの設定より優先される。
+この仕様は|main|オプションのものと一貫していないが、
+互換性のためそのままにしている。
+
+%===========================================================
\section{CJKフォント切替機能の原理}
+\label{sec:Switch-Font}
\subsection{{\upLaTeX}において}
{\upTeX}は標準で、CJK言語の{\TeX}フォント(和文TFM)を用意している。
-本パッケージはBabelにおいてCJK言語の切替処理(|\extras...|)
+本パッケージはBabelにおいてCJK言語の切替処理(|\extras...|\XS マクロ)
の中に、フォントの切替を追加し、
言語の選択に応じて適切なフォントが選ばれるようにする。
-言語に対するBabelの言語オプションの名前は変わりうるので、
-その名前をパッケージ読込時に指定できるようにした。
-また、あるCJK言語の為のオプションが読み込まれていない時は、
-フォントの切替のみをする簡易の言語オプション(仮想言語設定)
-をその場で生成する。
+%言語に対するBabelの言語オプションの名前は変わりうるので、
+%その名前をパッケージ読込時に指定できるようにした。
+%また、あるCJK言語の為のオプションが読み込まれていない時は、
+%フォントの切替のみをする簡易の言語オプション(仮想言語設定)
+%をその場で生成する。
\subsection{{\pLaTeX}において}
-\Pkg{japanese-otf}パッケージの |multi| オプションは{\pLaTeX}において
+\Pkg{japanese-otf}パッケージの|multi|オプションは{\pLaTeX}において
韓国語・中国語を扱うためのもので、
-これを使うと |\UTFK|/|\UTFC|/|\UTFT| で
-韓国語/中国語(簡体)/中国語(繁体)のフォントを用いて
+これを使うと\XS|\UTFK|/|\UTFC|/|\UTFT|の各命令で
+韓国語/簡体字中国語/繁体字中国語のフォントを用いて
文字が出力される
-(これらの命令の引数は |\UTF| と同じでUnicode値16進)。
+(これらの命令の引数は\XS|\UTF|と同じで16進表記のUnicode符号値)。
{\pLaTeX}における本パッケージの動作は次のようである。
-まず、{\upLaTeX}の場合と同じようにCJK言語のための
-Babel言語オプションを生成する。
-その上で、CJK言語に切り替わった場合には、
-|\UTF| の動作を「本来の |\UTF|」/|\UTFK|/|\UTFC|/|\UTFT|
+%まず、{\upLaTeX}の場合と同じようにCJK言語のための
+%Babel言語オプションを生成する。
+Babelの言語がCJK言語に切り替わった場合には、
+|\UTF|の動作を「本来の\XS|\UTF|」/|\UTFK|/|\UTFC|/|\UTFT|
に切り替える。
この機能は単独ではあまり有用とはいえないが、
\Pkg{bxutf8}入力エンコーディング
と併用してCJK言語のUTF-8直接入力を行う時に有用となる。
-すなわち直接入力されたCJK文字は |\UTF| に帰着するので、
+すなわち直接入力されたCJK文字は\XS|\UTF|に帰着するので、
結果的に{\upLaTeX}の時と同じように、Babelで切り替えた言語用の
フォントで出力することが可能となる。
\Note ただし、この機構には、
-「JIS X~0208にある文字はそもそも |\UTF| に変換されずに
-直接日本語フォントで出力される」
+「JIS X~0208にある文字はそもそも\XS|\UTF|に変換されないので
+常に日本語フォントで出力されてしまう」
という欠点をもつ。
これを解決するには\Pkg{pxfltsrc}パッケージ等の機能を用いて
-文書にテキスト変換フィルタを適用されるという処理が必要になる。
+文書にテキスト変換フィルタを適用するといった追加の処理が必要になる。
%===========================================================
\section{Babel一括読込モード}
+\label{sec:Lumped-Loading}
-v0.9より前では、Babel本体(\Pkg{babel}パッケージ)
+0.9版より前では、Babel本体(\Pkg{babel}パッケージ)
とは別個に読み込む方式のみを採用していた。
ところがこの場合、
「Babelの本来の機能は不要で\Pkg{pxbabel}の
@@ -267,12 +336,12 @@ v0.9より前では、Babel本体(\Pkg{babel}パッケージ)
\end{verbatim}\end{quote}
\Note \Pkg{pxbabel}を読んで基底言語を |japanese|
にする必要があるのだが、
-そうするとまず \Pkg{babel} を読む必要があり
-ここで何かダミーの言語(|english| を用いた)を指定する必要がある。
-このままでは基底が |english| になるので、
-|japanese| を基底にするのに |main| オプションが必要。
+そうするとまず\Pkg{babel}を読む必要があり
+ここで何かダミーの言語(|english|を用いた)を指定する必要がある。
+このままでは基底が|english|になるので、
+|japanese|を基底にするためさらに|main|オプションが必要となる。
-そこで、v0.9において、\Pkg{babel}と一括で読み込むことで、
+そこで、0.9版において、\Pkg{babel}と一括で読み込むことで、
\Pkg{babel}の使用言語オプション指定の方法を踏襲できるようにした。
\Pkg{babel}の読込前に\Pkg{pxbabel}を読み込むとこの動作になり、
\Pkg{babel}も一緒に読み込まれる。
@@ -281,22 +350,29 @@ v0.9より前では、Babel本体(\Pkg{babel}パッケージ)
\usepackage[korean,japanese]{pxbabel}
\end{verbatim}\end{quote}
\Note オプションは\Pkg{babel}のものと同じ理屈で書く。
-|korean| と |japanese| を用い、
-基底が |japanese| なのでこの順番になる。
+|korean|と|japanese|を用い、
+かつ基底が|japanese|なのでこの順番になる。
-目的が「{\upTeX}のSIP対応の日本語フォントが使いたい」
-だけの場合は以下のようになる。
+目的が「{\upTeX}の非BMP文字対応の日本語フォントが使いたい」
+だけの場合
+\footnote{現在の{\upLaTeX}では既定の和文フォントが既に非BMP文字に
+対応しているため、この使い方は不要である。}%
+は以下のようになる。
\begin{quote}\begin{verbatim}
\usepackage[japanese]{pxbabel}
\end{verbatim}\end{quote}
-\Note |japanese| のみ指定して、当然これが基底。
+\Note |japanese|のみ指定して、当然これを基底とする。
実際には、4つのCJK言語のオプションは「常に」出現するので、
上の2つの指定は等価であるが、
一括読込の場合は\Pkg{babel}の習慣に合わせて記述するのが
解りやすいと思われる。
+%-------------------
+\subsection{複雑な例}
+\label{ssec:complex-loading}
+
少し複雑な例を挙げておく。
ドイツ語(|ngerman|)、日本語(|japanese|)、
簡体字中国語(|simpchinese|)、繁体字中国語(|tradchinese|)
@@ -319,14 +395,9 @@ v0.9より前では、Babel本体(\Pkg{babel}パッケージ)
+japanese]{pxbabel}
\end{verbatim}\end{quote}
-\Note ldfの読込を伴う言語(|japanese|)が基底なので、
-|caption| は |switch| が既定値になる。
-なお、非CJK言語(|ngerman|)には決して |+| を付けないことに注意。
-
-%===========================================================
-\section{更新履歴}
-
-|README-ja.md| ファイルを参照。
+\Note 非仮想言語の|japanese|が基底なので、
+|caption|は|switch|が既定値になる。
+なお、非CJK言語(|ngerman|)には決して\XS|+|\XS を付けないことに注意。
%===========================================================
\end{document}
diff --git a/language/japanese/pxbase/pxbase.sty b/language/japanese/pxbase/pxbase.sty
index e10ec1c6e2..56dbb1d053 100644
--- a/language/japanese/pxbase/pxbase.sty
+++ b/language/japanese/pxbase/pxbase.sty
@@ -1,14 +1,14 @@
%%
%% This is file 'pxbase.sty'.
%%
-%% Copyright (c) 2017 Takayuki YATO (aka. "ZR")
+%% Copyright (c) 2008-2021 Takayuki YATO (aka. "ZR")
%% GitHub: https://github.com/zr-tex8r
%% Twitter: @zr_tex8r
%%
%% This package is distributed under the MIT License.
%%
\NeedsTeXFormat{pLaTeX2e}
-\ProvidesPackage{pxbase}[2017/07/03 v1.1b PX base library]
+\ProvidesPackage{pxbase}[2021/05/22 v1.2 PX base library]
% The pxbase package now does the same thing as the bxbase package.
\RequirePackageWithOptions{bxbase}[2017/05/29]
\endinput
diff --git a/language/japanese/pxbase/pxbasenc.def b/language/japanese/pxbase/pxbasenc.def
index 55f1ac1130..3168617933 100644
--- a/language/japanese/pxbase/pxbasenc.def
+++ b/language/japanese/pxbase/pxbasenc.def
@@ -4,7 +4,7 @@
%% file declaration
\NeedsTeXFormat{pLaTeX2e}
-\ProvidesFile{pxbasenc.def}[2017/07/03 v1.1b PX encoding library]
+\ProvidesFile{pxbasenc.def}[2021/05/22 v1.2 PX encoding library]
\def\pxec@pkgname{PXbase} % bundle name
%% code guards
diff --git a/language/japanese/pxbase/pxjsfenc.def b/language/japanese/pxbase/pxjsfenc.def
index 0fc28f2e81..44ef99b3b1 100644
--- a/language/japanese/pxbase/pxjsfenc.def
+++ b/language/japanese/pxbase/pxjsfenc.def
@@ -4,7 +4,7 @@
%% file declaration
\NeedsTeXFormat{pLaTeX2e}
-\ProvidesFile{pxjsfenc.def}[2017/07/03 v1.1b PX JSF encoding]
+\ProvidesFile{pxjsfenc.def}[2021/05/22 v1.2 PX JSF encoding]
%% code guards
\edef\pxec@jsf@restore@codes{%
diff --git a/language/japanese/pxbase/upkcat.sty b/language/japanese/pxbase/upkcat.sty
index a97cbde36d..4f95a26d7b 100644
--- a/language/japanese/pxbase/upkcat.sty
+++ b/language/japanese/pxbase/upkcat.sty
@@ -1,7 +1,7 @@
%%
%% This is file 'upkcat.sty'.
%%
-%% Copyright (c) 2017 Takayuki YATO (aka. "ZR")
+%% Copyright (c) 2008-2021 Takayuki YATO (aka. "ZR")
%% GitHub: https://github.com/zr-tex8r
%% Twitter: @zr_tex8r
%%
@@ -35,7 +35,7 @@
%% package declaration
\NeedsTeXFormat{pLaTeX2e}
-\ProvidesPackage{upkcat}[2017/06/19 v1.1a safe kcatcode access]
+\ProvidesPackage{upkcat}[2021/05/22 v1.2 safe kcatcode access]
%--------------------------------------- main