% \iffalse meta-comment %% File: plfonts.dtx % % Copyright 1994-2006 ASCII Corporation. % Copyright (c) 2010 ASCII MEDIA WORKS % Copyright (c) 2016-2020 Japanese TeX Development Community % % This file is part of the pLaTeX2e system (community edition). % ------------------------------------------------------------- % % \fi % % \iffalse %<*driver> \ifx\JAPANESEtrue\undefined \expandafter\newif\csname ifJAPANESE\endcsname \JAPANESEtrue \fi \def\eTeX{$\varepsilon$-\TeX} \def\pTeX{p\kern-.15em\TeX} \def\epTeX{$\varepsilon$-\pTeX} \def\pLaTeX{p\kern-.05em\LaTeX} \def\pLaTeXe{p\kern-.05em\LaTeXe} % % \fi % % \setcounter{StandardModuleDepth}{1} % \StopEventually{} % % \iffalse % \changes{v1.0}{1994/09/16}{first edition} % \changes{v1.1}{1995/02/21}{\cs{selectfont}アルゴリズム変更} % \changes{v1.1b}{1995/04/25}{\cs{selectfont}修正} % \changes{v1.1c}{1995/08/22}{縦横フォント同時切り替え} % \changes{v1.2}{1995/11/09}{\cs{DeclareFixedFont}の日本語化} % \changes{v1.3}{1996/03/25}{数式ファミリの定義変更} % \changes{v1.3a}{1997/01/25}{\LaTeX\ \texttt{!<1996/12/01!>に対応}} % \changes{v1.3b}{1997/01/28}{\cs{textmc}, \cs{textgt}の動作修正} % \changes{v1.3c}{1997/04/08}{和文エンコード関連の修正} % \changes{v1.3d}{1997/06/25}{\cs{em},\cs{emph}で和文を強調書体に} % \changes{v1.3e}{1997/07/10}{fdファイル名の小文字化が効いていなかったのを修正} % \changes{v1.3f}{1998/08/10}{\cs{DeclareFixedCommand}を\cs{@onlypreamble}に % してしまっていたのを修正} % \changes{v1.3g}{1999/04/05}{plpatch.ltxの内容を反映} % \changes{v1.3h}{1999/08/09}{\cs{strut}の改善} % \changes{v1.3i}{2000/07/13}{\cs{text..}コマンドの左側に\cs{xkanjiskip}が % 入らないのを修正} % \changes{v1.3j}{2000/10/24}{\cs{adjustbaseline}で余分なアキが入らない % ようにした} % \changes{v1.3k}{2001/05/10}{欧文書体の基準を再び`/`から`M'に変更} % \changes{v1.3l}{2002/04/05}{\cs{adjustbaseline}でフォントの基準値が縦書き % 以外では設定されないのを修正} % \changes{v1.3m}{2004/06/14}{\cs{fontfamily}コマンド内部フラグ変更} % \changes{v1.3n}{2004/08/10}{和文エンコーディングの切り替えを有効化} % \changes{v1.3o}{2005/01/04}{\cs{fontfamily}中のフラグ修正} % \changes{v1.3p}{2006/01/04}{\cs{DeclareFontEncoding@}中で % \cs{LastDeclaredEncodeng}の再定義が抜けていたので追加} % \changes{v1.4}{2006/06/27}{\cs{reDeclareMathAlphabet}を修正。 % ありがとう、ymtさん。} % \changes{v1.5}{2006/11/10}{\cs{reDeclareMathAlphabet}を修正。 % ありがとう、ymtさん。} % \changes{v1.6}{2016/02/01}{\LaTeX\ \texttt{!<2015/01/01!>}での\cs{em}の % 定義変更に対応。\cs{eminnershape}を追加。} % \changes{v1.6a}{2016/04/01}{ベースライン補正量が0でないときに % \cs{AA}など一部の合成文字がおかしくなることへの対応。} % \changes{v1.6b}{2016/04/30}{ptrace.styの冒頭でtracefnt.styを % \cs{RequirePackageWithOptions}するようにした} % \changes{v1.6c}{2016/06/06}{v1.6aでの修正で\'e など全てのアクセント付き文字で % 周囲に\cs{xkanjiskip}が入らなくなっていたのを修正。} % \changes{v1.6d}{2016/06/19}{アクセント付き文字をさらに修正(forum:1951)} % \changes{v1.6e}{2016/06/26}{v1.6a以降の修正で全てのアクセント付き文字で % トラブルが相次いだため、いったんパッチを除去。} % \changes{v1.6f}{2017/02/20}{ptrace.styのplatexrelease対応} % \changes{v1.6f}{2017/02/20}{\cs{ystrutbox}を追加} % \changes{v1.6f}{2017/02/20}{\cs{strutbox}を縦横両対応に} % \changes{v1.6f}{2017/02/20}{\cs{strutbox}の代わりに\cs{ystrutbox}を使用} % \changes{v1.6f}{2017/02/20}{\cs{ystrut}を追加} % \changes{v1.6f}{2017/02/20}{\cs{ystrutbox}を組み立てるように} % \changes{v1.6g}{2017/03/07}{ベースライン補正量を修正} % \changes{v1.6h}{2017/08/05}{和文書体の基準を全角空白から「漢」に変更} % \changes{v1.6h}{2017/08/05}{traceのコードの\texttt{\%}忘れを修正} % \changes{v1.6i}{2017/09/24}{2010年のp\TeX{}本体の修正により、v1.3iで入れた % 対処が不要になっていたので削除} % \changes{v1.6i}{2017/09/24}{\cs{<}が段落頭でも効くようにした} % \changes{v1.6j}{2017/11/06}{\cs{cy@encoding}と\cs{ct@encoding}を % 具体的な値ではなく「空」で初期化} % \changes{v1.6j}{2017/11/06}{縦横のエンコーディングのセット化を % plcoreからpldefsへ移動} % \changes{v1.6k}{2017/12/05}{デフォルト設定ファイルの読み込みを % \file{plcore.ltx}から\file{platex.ltx}へ移動} % \changes{v1.6l}{2018/02/04}{和文スケール値を明文化} % \changes{v1.6m}{2018/03/31}{\file{utf8.def}由来のコードを追加} % \changes{v1.6n}{2018/04/06}{\cs{UseRawInputEncoding}で使われる % \cs{DeclareFontEncoding@}の保存版も定義 % (sync with ltfinal.dtx 2018/04/06 v2.1b)} % \changes{v1.6o}{2018/04/08}{Delay full UTF-8 handling to \cs{everyjob} % (sync with ltfinal.dtx 2018/04/08 v2.1d)} % \changes{v1.6p}{2018/04/09}{v1.6oで加えた対策を削除。 % 参考:plvers.dtx 2018/04/09 v1.1lの\cs{everyjob}} % \changes{v1.6q}{2018/07/03}{シリーズbがbxと等価になるように宣言} % \changes{v1.6r}{2018/07/25}{PDFのしおりにアクセント文字が含まれる場合に対応} % \changes{v1.6r}{2018/07/25}{\cs{[no]fixcompositeaccent}マクロ追加} % \changes{v1.6r}{2018/07/25}{コード整理} % \changes{v1.6s}{2019/08/13}{\cs{DeclareErrorKanjiFont}: % Don't set any \cs{k@...} macros % (sync with ltfssbas.dtx 2019/07/09 v3.2c)} % \changes{v1.6s}{2019/08/13}{Explicitly set some defaults % after \cs{DeclareErrorKanjiFont} change % (sync with ltfssini.dtx 2019/07/09 v3.1c)} % \changes{v1.6t}{2019/09/16}{Make \cs{strut}, \cs{tstrut} etc. robust % (sync with ltdefns.dtx 2019/08/27 v1.5f)} % \changes{v1.6t}{2019/09/16}{Make \cs{usefont} etc. robust % (sync with ltfssbas.dtx 2019/08/27 v3.2d)} % \changes{v1.6u}{2019/09/29}{Make \cs{userelfont} robust} % \changes{v1.6u}{2019/09/29}{Make \cs{adjustbaseline} robust} % \changes{v1.6v}{2020/02/01}{New commands \cs{fontseriesforce} etc. % (sync with ltfssaxes.dtx 2019/12/16 v1.0a)} % \changes{v1.6v}{2020/02/01}{New commands \cs{fontshapeforce} etc. % (sync with ltfssaxes.dtx 2019/12/16 v1.0a)} % \changes{v1.6v}{2020/02/01}{Don't call \cs{fontseries} or \cs{fontshape} % (sync with ltfssbas.dtx 2019/12/17 v3.2e)} % \changes{v1.6v}{2020/02/01}{\LaTeX{}がmweightsパッケージを基にした % シリーズのカスタム設定を導入したので、これをサポート % (sync with ltfssini.dtx 2019/12/17 v3.1e)} % \changes{v1.6v}{2020/02/01}{Support \cs{emph} sequences % (sync with ltfssini.dtx 2019/12/17 v3.1e)} % \changes{v1.6v}{2020/02/01}{定義をpldefsからplcoreへ移動} % \changes{v1.6v}{2020/02/01}{Set \cs{kanjishapedefault} explicitly to ``n'' % (sync with fontdef.dtx 2019/12/17 v3.0e)} % \changes{v1.6w}{2020/02/03}{巻き戻しのバグ修正} % \changes{v1.6x}{2020/02/05}{一時コマンドの名前を統一 % (sync with ltfssaxes.dtx 2020/02/05 v1.0b and ltfssini.dtx 2020/02/05 v3.1g)} % \changes{v1.6y}{2020/02/24}{Switch \cs{if@forced@series} added % (sync with ltfssaxes.dtx 2020/02/18 v1.0c)} % \changes{v1.6y}{2020/02/24}{Make the \cs{ifx} selection outside of % \cs{fontseries} argument so that it is not done several times % (sync with ltfssini.dtx 2020/02/18 v3.1i)} % \changes{v1.6y}{2020/02/24}{No series auto-update when forced % (sync with ltfssini.dtx 2020/02/18 v3.1i)} % \changes{v1.6y}{2020/02/24}{Recognize current family if it is not a % ``meta'' family and auto-update series using \cs{bfdefault} % (sync with ltfssini.dtx 2020/02/18 v3.1i)} % \changes{v1.6z}{2020/02/28}{\cs{series@maybe@drop@one@m}の存在確認} % \changes{v1.6z}{2020/02/28}{Drop ``m'' only in a specific set of values % (sync with ltfssaxes.dtx 2020/02/27 v1.0d)} % \changes{v1.6z}{2020/02/28}{Drop surplus ``m'' from \cs{target@series@value} % (sync with ltfssini.dtx 2020/02/25 v3.1j)} % \fi % % \iffalse %<*driver> \NeedsTeXFormat{pLaTeX2e} % \fi \ProvidesFile{plfonts.dtx}[2020/02/28 v1.6z pLaTeX New Font Selection Scheme] % \iffalse \documentclass{jltxdoc} \GetFileInfo{plfonts.dtx} \title{p\LaTeXe{}のフォントコマンド\space\fileversion} \author{Ken Nakano \& Hideaki Togashi} \date{作成日:\filedate} \begin{document} \maketitle \tableofcontents \DocInput{\filename} \end{document} % % \fi % % \section{概要}\label{plfonts:intro} % ここでは、和文書体を\NFSS2のインターフェイスで選択するための % コマンドやマクロについて説明をしています。 % また、フォント定義ファイルや初期設定ファイルなどの説明もしています。 % 新しいフォント選択コマンドの使い方については、\file{fntguide.tex}や % \file{usrguide.tex}を参照してください。 % % \begin{description} % \item[第\ref{plfonts:intro}節] この節です。このファイルの概要と % \dst{}プログラムのためのオプションを示しています。 % \item[第\ref{plfonts:codes}節] 実際のコードの部分です。 % \item[第\ref{plfonts:pldefs}節] プリロードフォントやエラーフォントなどの % 初期設定について説明をしています。 % \item[第\ref{plfonts:fontdef}節] フォント定義ファイルについて % 説明をしています。 % \end{description} % % % \subsection{\dst{}プログラムのためのオプション} % \dst{}プログラムのためのオプションを次に示します。 % % \DeleteShortVerb{\|} % \begin{center} % \begin{tabular}{l|p{0.7\linewidth}} % \emph{オプション} & \emph{意味}\\\hline % plcore & \file{plcore.ltx}の断片を生成します。\\ % trace & \file{ptrace.sty}を生成します。\\ % JY1mc & 横組用、明朝体のフォント定義ファイルを生成します。\\ % JY1gt & 横組用、ゴシック体のフォント定義ファイルを生成します。\\ % JT1mc & 縦組用、明朝体のフォント定義ファイルを生成します。\\ % JT1gt & 縦組用、ゴシック体のフォント定義ファイルを生成します。\\ % pldefs & \file{pldefs.ltx}を生成します。次の4つのオプションを付加する % ことで、プリロードするフォントを選択することができます。 % デフォルトは10ptです。\\ % xpt & 10pt プリロード\\ % xipt & 11pt プリロード\\ % xiipt & 12pt プリロード\\ % ori & \file{plfonts.tex}に似たプリロード\\ % \end{tabular} % \end{center} % \MakeShortVerb{\|} % % % % \section{コード}\label{plfonts:codes} % この節で、具体的に\NFSS2を拡張するコマンドやマクロの定義を行なっています。 % % \subsection{準備} % \NFSS2を拡張するための準備です。 % 和文フォントの属性を格納するオブジェクトや長さ変数、 % 属性を切替える際の判断材料として使うリストなどを定義しています。 % % \file{ptrace}パッケージは\LaTeX{}の\file{tracefnt}パッケージに依存します。 % \changes{v1.6b}{2016/04/30}{ptrace.styの冒頭でtracefnt.styを % \cs{RequirePackageWithOptions}するようにした} % \begin{macrocode} %<*trace> \NeedsTeXFormat{pLaTeX2e} \ProvidesPackage{ptrace} [2019/09/16 v1.6t Standard pLaTeX package (font tracing)] \RequirePackageWithOptions{tracefnt} % % \end{macrocode} % % \subsubsection{和文フォント属性} % ここでは、和文フォントの属性を格納するためのオブジェクトについて % 説明をしています。 % % \begin{macro}{\k@encoding} % \begin{macro}{\ck@encoding} % \begin{macro}{\cy@encoding} % \begin{macro}{\ct@encoding} % 和文エンコードを示すオブジェクトです。 % |\ck@encoding|は、最後に選択された和文エンコード名を示しています。 % |\cy@encoding|と|\ct@encoding|はそれぞれ、最後に選択された、 % 横組用と縦組用の和文エンコード名を示しています。 % % ここでは単に「空」に初期化するだけにしています。 % \iffalse % アスキー版はJY1やJT1という具体的な値で初期化していたが、これらの値は % \file{pldefs.ltx}で定義するものであるから、\file{plcore.ltx}で % それを使うのはおかしい。 % \fi % \changes{v1.6j}{2017/11/06}{\cs{cy@encoding}と\cs{ct@encoding}を % 具体的な値ではなく「空」で初期化} % \begin{macrocode} %<*plcore> \let\k@encoding\@empty \let\ck@encoding\@empty \let\cy@encoding\@empty \let\ct@encoding\@empty % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\k@family} % 和文書体のファミリを示すオブジェクトです。 % \begin{macrocode} \let\k@family\@empty % \end{macrocode} % \end{macro} % % \begin{macro}{\k@series} % 和文書体のシリーズを示すオブジェクトです。 % \begin{macrocode} \let\k@series\@empty % \end{macrocode} % \end{macro} % % \begin{macro}{\k@shape} % 和文書体のシェイプを示すオブジェクトです。 % \begin{macrocode} \let\k@shape\@empty % \end{macrocode} % \end{macro} % % \begin{macro}{\curr@kfontshape} % 現在の和文フォント名を示すオブジェクトです。 % \begin{macrocode} \def\curr@kfontshape{\k@encoding/\k@family/\k@series/\k@shape} % \end{macrocode} % \end{macro} % % \begin{macro}{\rel@fontshape} % 関連付けされたフォント名を示すオブジェクトです。 % \begin{macrocode} \def\rel@fontshape{\f@encoding/\f@family/\f@series/\f@shape} % \end{macrocode} % \end{macro} % % \subsubsection{長さ変数} % ここでは、和文フォントの幅や高さなどを格納する変数について説明をしています。 % % 頭文字が大文字の変数は、ノーマルサイズの書体の大きさで、基準値となります。 % これらは、\file{jart10.clo}などの補助クラスファイルで設定されます。 % % 小文字だけからなる変数は、 % フォントが変更されたときに(|\selectfont|内で)更新されます。 % % \begin{macro}{\Cht} % \begin{macro}{\cht} % |\Cht|は基準となる和文フォントの文字の高さを示します。 % |\cht|は現在の和文フォントの文字の高さを示します。 % なお、この``高さ''はベースラインより上の長さです。 % \begin{macrocode} \newdimen\Cht \newdimen\cht % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\Cdp} % \begin{macro}{\cdp} % |\Cdp|は基準となる和文フォントの文字の深さを示します。 % |\cdp|は現在の和文フォントの文字の深さを示します。 % なお、この``深さ''はベースラインより下の長さです。 % \begin{macrocode} \newdimen\Cdp \newdimen\cdp % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\Cwd} % \begin{macro}{\cwd} % |\Cwd|は基準となる和文フォントの文字の幅を示します。 % |\cwd|は現在の和文フォントの文字の幅を示します。 % \begin{macrocode} \newdimen\Cwd \newdimen\cwd % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\Cvs} % \begin{macro}{\cvs} % |\Cvs|は基準となる行送りを示します。 % ノーマルサイズの|\baselineskip|と同値です。 % |\cvs|は現在の行送りを示します。 % \begin{macrocode} \newdimen\Cvs \newdimen\cvs % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\Chs} % \begin{macro}{\chs} % |\Chs|は基準となる字送りを示します。|\Cwd|と同値です。 % |\chs|は現在の字送りを示します。 % \begin{macrocode} \newdimen\Chs \newdimen\chs % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\cHT} % |\cHT|は、現在のフォントの高さに深さを加えた長さを示します。 % |\set@fontsize|コマンド(実際は|\size@update|)で更新されます。 % \begin{macrocode} \newdimen\cHT % \end{macrocode} % \end{macro} % % \subsubsection{一時コマンド} % % \begin{macro}{\afont} % \LaTeX{}内部の|\do@subst@correction|マクロでは、 % |\fontname\font|で返される外部フォント名を用いて、 % \LaTeX{}フォント名を定義しています。したがって、|\font|をそのまま使うと、 % 和文フォント名に欧文の外部フォントが登録されたり、 % 縦組フォント名に横組用の外部フォントが割り付けられたりしますので、 % |\jfont|か|\tfont|を用いるようにします。 % |\afont|は、|\font|コマンドの保存用です。 % \begin{macrocode} \let\afont\font % \end{macrocode} % \end{macro} % % % \subsubsection{フォントリスト} % ここでは、フォントのエンコードやファミリの名前を登録するリストについて % 説明をしています。 % % p\LaTeXe{}の\NFSS2では、一つのコマンドで和文か欧文のいずれか、あるいは両方を % 変更するため、コマンドに指定された引数が何を示すのかを判断しなくては % なりません。この判断材料として、リストを用います。 % % このときの具体的な判断手順については、エンコード選択コマンドや % ファミリ選択コマンドなどの定義を参照してください。 % % \begin{macro}{\inlist@} % 次のコマンドは、エンコードやファミリのリスト内に第二引数で指定された文字列 % があるかどうかを調べるマクロです。 % \begin{macrocode} \def\inlist@#1#2{% \def\in@@##1<#1>##2##3\in@@{% \ifx\in@##2\in@false\else\in@true\fi}% \in@@#2<#1>\in@\in@@} % \end{macrocode} % \end{macro} % % \begin{macro}{\enc@elt} % \begin{macro}{\fam@elt} % |\enc@elt|と|\fam@elt|は、登録されているエンコードに対して、 % なんらかの処理を逐次的に行ないたいときに使用することができます。 % \begin{macrocode} \def\fam@elt{\noexpand\fam@elt} \def\enc@elt{\noexpand\enc@elt} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\fenc@list} % \begin{macro}{\kenc@list} % \begin{macro}{\kyenc@list} % \begin{macro}{\ktenc@list} % |\fenc@list|には、|\DeclareFontEncoding|コマンドで宣言されたエンコード名が % 格納されていきます。 % % |\kyenc@list|には、|\DeclareYokoKanjiEncoding|コマンドで宣言された % エンコード名が格納されていきます。 % |\ktenc@list|には、|\DeclareTateKanjiEncoding|コマンドで宣言された % エンコード名が格納されていきます。 % % \changes{v1.1b}{1995/03/28}{リストの初期値を変更} % \changes{v1.1b}{1995/05/10}{リスト内の空白を削除} % % ここで、これらのリストに具体的な値を入れて初期化をするのは、 % リストにエンコードの登録をするように|\DeclareFontEncoding|を再定義 % する前に、欧文エンコードが宣言されるため、リストに登録されないからです。 % \changes{v1.1}{1997/01/25}{Add TS1 encoding to the starting member of % \cs{fenc@list}.} % \begin{macrocode} \def\fenc@list{\enc@elt\enc@elt\enc@elt\enc@elt% \enc@elt\enc@elt\enc@elt} \let\kenc@list\@empty \let\kyenc@list\@empty \let\ktenc@list\@empty % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\kfam@list} % \begin{macro}{\ffam@list} % \begin{macro}{\notkfam@list} % \begin{macro}{\notffam@list} % |\kfam@list|には、|\DeclareKanjiFamily|コマンドで宣言されたファミリ名が % 格納されていきます。 % % |\ffam@list|には、|\DeclareFontFamily|コマンドで宣言されたファミリ名が % 格納されていきます。 % % |\notkfam@list|には、和文ファミリではないと推測されたファミリ名が % 格納されていきます。このリストは|\fontfamily|コマンドで作成されます。 % % |\notffam@list|には欧文ファミリではないと推測されたファミリ名が % 格納されていきます。このリストは|\fontfamily|コマンドで作成されます。 % % \changes{v1.1b}{1995/03/28}{リストの初期値を変更} % \changes{v1.1b}{1995/05/10}{リスト内の空白を削除} % % ここで、これらのリストに具体的な値を入れて初期化をするのは、 % リストにファミリの登録をするように、|\DeclareFontFamily|が % 再定義される前に、このコマンドが使用されるため、 % リストに登録されないからです。 % \begin{macrocode} \def\kfam@list{\fam@elt\fam@elt} \def\ffam@list{\fam@elt\fam@elt\fam@elt% \fam@elt\fam@elt\fam@elt} % \end{macrocode} % \changes{v1.1c}{1996/03/06}{\cs{notkfam@list}と\cs{notffam@list}の % 初期値を変更} % つぎの二つのリストの初期値として、上記の値を用います。 % これらのファミリ名は、和文でないこと、欧文でないことがはっきりしています。 % \begin{macrocode} \let\notkfam@list\ffam@list \let\notffam@list\kfam@list % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % % \subsubsection{支柱} % 行間の調整などに用いる支柱です。 % 支柱のもととなるボックスの大きさは、フォントサイズが変更されるたびに、 % |\set@fontsize|コマンドによって変化します。 % % フォントサイズが変更されたときに、|\set@fontsize|コマンドで更新されます。 % % 従来、横組ボックス用の支柱は|\strutbox|で、高さと深さが7対3となっていました。 % これはp\LaTeX{}単体では問題になりませんでしたが、海外製の\LaTeX{}パッケージを % 縦組で使用した場合に、意図しない幅や高さが取得されることがありました。 % この不都合を回避するため、コミュニティ版p\LaTeX{}では次の方法をとります。 % \begin{itemize} % \item |\ystrutbox|(新設):高さと深さが7対3の横組ボックス用の支柱 % \item |\tstrutbox|:高さと深さが5対5の縦組ボックス用の支柱 % \item |\zstrutbox|:高さと深さが7対3の縦組ボックス用の支柱 % \item |\strutbox|(仕様変更):縦横のディレクションに応じて % |\tstrutbox|または|\ystrutbox|に展開されるマクロ % \end{itemize} % すなわち、従来のp\LaTeX{}における|\strutbox|と同じ挙動を示すのが、 % 新設された|\ystrutbox|ということになります。 % % \begin{macro}{\tstrutbox} % \begin{macro}{\zstrutbox} % |\tstrutbox|は高さと深さが5対5、 % |\zstrutbox|は高さと深さが7対3の支柱ボックスとなります。 % これらは縦組ボックスの行間の調整などに使います。 % \begin{macrocode} \newbox\tstrutbox \newbox\zstrutbox % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\ystrutbox} % |\ystrutbox|は高さと深さが7対3の横組ボックス用の支柱です。 % \changes{v1.6f}{2017/02/20}{\cs{ystrutbox}を追加} % \begin{macrocode} % %\plIncludeInRelease{2017/04/08}{\ystrutbox} % {Add \ystrutbox}% %<*plcore|platexrelease> \newbox\ystrutbox % %\plEndIncludeInRelease %\plIncludeInRelease{0000/00/00}{\ystrutbox} % {Add \ystrutbox}% %\let\ystrutbox\@undefined %\plEndIncludeInRelease % \end{macrocode} % \end{macro} % % \begin{macro}{\strutbox} % |\strutbox|は縦横両対応です。 % \changes{v1.6f}{2017/02/20}{\cs{strutbox}を縦横両対応に} % \begin{macrocode} %\plIncludeInRelease{2017/04/08}{\strutbox} % {Macro definition of \strutbox}% %<*plcore|platexrelease> \def\strutbox{\iftdir\tstrutbox\else\ystrutbox\fi} % %\plEndIncludeInRelease %\plIncludeInRelease{0000/00/00}{\strutbox} % {LaTeX2e original}% %\newbox\strutbox % emulation purpose only %\plEndIncludeInRelease % \end{macrocode} % \end{macro} % % \begin{macro}{\strut} % ディレクションに応じて|\ystrutbox|と|\tstrutbox|を使い分けます。 % ^^A |\strutbox|は|\yoko|ディレクションで組まれていますので、 % ^^A 縦組ボックス内で|\unhcopy|をするとエラーとなります。 % オリジナルの\LaTeX{}では\file{ltplain.dtx}で定義されていますが、 % \LaTeXe\ 2019-10-01以降ではさらに\file{ltdefns.dtx}で % |\MakeRobust|を前置されるため、robustになります。 % % \changes{v1.1c}{1995/08/24}{``\cs{centerling}~\cs{strut}''の幅がゼロに % なってしまうのを修正} % \changes{v1.3h}{1999/08/09}{縦組のとき、幅のあるボックスになってしまう % のを修正} % \changes{v1.6f}{2017/02/20}{\cs{strutbox}の代わりに\cs{ystrutbox}を使用} % \changes{v1.6t}{2019/09/16}{Make \cs{strut}, \cs{tstrut} etc. robust % (sync with ltdefns.dtx 2019/08/27 v1.5f)} % \begin{macrocode} %\plIncludeInRelease{2019/10/01}{\strut} % {Make robust}% %<*plcore|platexrelease> \DeclareRobustCommand\strut{\relax \iftdir \ifmmode\copy\tstrutbox\else\unhcopy\tstrutbox\fi \else \ifmmode\copy\ystrutbox\else\unhcopy\ystrutbox\fi \fi} % %\plEndIncludeInRelease %\plIncludeInRelease{2017/04/08}{\strut} % {Use \ystrutbox}% %\def\strut{\relax % \ifydir % \ifmmode\copy\ystrutbox\else\unhcopy\ystrutbox\fi % \else % \ifmmode\copy\tstrutbox\else\unhcopy\tstrutbox\fi % \fi} %\expandafter \let \csname strut \endcsname \@undefined %\plEndIncludeInRelease %\plIncludeInRelease{0000/00/00}{\strut} % {ASCII Corporation original}% %\def\strut{\relax % \ifydir % \ifmmode\copy\strutbox\else\unhcopy\strutbox\fi % \else % \ifmmode\copy\tstrutbox\else\unhcopy\tstrutbox\fi % \fi} %\expandafter \let \csname strut \endcsname \@undefined %\plEndIncludeInRelease % \end{macrocode} % \end{macro} % % \begin{macro}{\tstrut} % \begin{macro}{\zstrut} % \begin{macrocode} %\plIncludeInRelease{2019/10/01}{\tstrut} % {Make robust}% %<*plcore|platexrelease> \DeclareRobustCommand\tstrut{\relax\hbox{\tate \ifmmode\copy\tstrutbox\else\unhcopy\tstrutbox\fi}} \DeclareRobustCommand\zstrut{\relax\hbox{\tate \ifmmode\copy\zstrutbox\else\unhcopy\zstrutbox\fi}} % %\plEndIncludeInRelease %\plIncludeInRelease{0000/00/00}{\tstrut} % {ASCII Corporation original}% %\def\tstrut{\relax\hbox{\tate % \ifmmode\copy\tstrutbox\else\unhcopy\tstrutbox\fi}} %\def\zstrut{\relax\hbox{\tate % \ifmmode\copy\zstrutbox\else\unhcopy\zstrutbox\fi}} %\expandafter \let \csname tstrut \endcsname \@undefined %\expandafter \let \csname zstrut \endcsname \@undefined %\plEndIncludeInRelease % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\ystrut} % \changes{v1.6f}{2017/02/20}{\cs{ystrut}を追加} % \begin{macrocode} %\plIncludeInRelease{2019/10/01}{\ystrut} % {Make robust}% %<*plcore|platexrelease> \DeclareRobustCommand\ystrut{\relax\hbox{\yoko \ifmmode\copy\ystrutbox\else\unhcopy\ystrutbox\fi}} % %\plEndIncludeInRelease %\plIncludeInRelease{2017/04/08}{\ystrut} % {Add \ystrut}% %\def\ystrut{\relax\hbox{\yoko % \ifmmode\copy\ystrutbox\else\unhcopy\ystrutbox\fi}} %\expandafter \let \csname ystrut \endcsname \@undefined %\plEndIncludeInRelease %\plIncludeInRelease{0000/00/00}{\ystrut} % {Add \ystrut}% %\let\ystrut\@undefined %\expandafter \let \csname ystrut \endcsname \@undefined %\plEndIncludeInRelease %<*plcore> % \end{macrocode} % \end{macro} % % % % \subsection{コマンド} % 次のコマンドの定義をしています。 % % \DeleteShortVerb{\|} % \MakeShortVerb{\+} % \begin{center} % \begin{tabular}{l|l} % \emph{コマンド} & \emph{意味}\\\hline % +\Declare{Font|YokoKanji|TateKanji}Encoding+ & エンコードの宣言\\ % +\Declare{Yoko|Tate}KanjiEncodingDefaults+ & % デフォルトの和文エンコードの宣言\\ % +\Declare{Font|Kanji}Family+ & ファミリの宣言\\ % +\DeclareKanjiSubstitution+ & 和文の代用フォントの宣言\\ % +\DeclareErrorKanjiFont+ & 和文のエラーフォントの宣言 \\ % +\DeclareFixedFont+ & フォントの名前の宣言 \\ % +\reDeclareMathAlphabet+ & 和欧文を同時に切り替えるコマンド宣言\\ % +\{Declare|Set}RelationFont+ & 従属書体の宣言\\ % +\userelfont+ & 欧文書体を従属書体にする\\ % +\selectfont+ & フォントを切り替える\\ % +\set@fontsize+ & フォントサイズの変更\\ % +\adjustbaseline+ & ベースラインシフト量の設定\\ % +\{font|roman|kanji}encoding+ & エンコードの指定\\ % +\{font|roman|kanji}family+ & ファミリの指定\\ % +\{font|roman|kanji}series+ & シリーズの指定\\ % +\{font|roman|kanji}shape+ & シェイプの指定\\ % +\use{font|roman|kanji}+ & 書体の切り替え\\ % +\normalfont+ & デフォルト値の設定に切り替える\\ % +\mcfamily+,+\gtfamily+ & 和文書体を明朝体、ゴシック体にする\\ % +\textunderscore+ & テキストモードでの下線マクロ\\ % \end{tabular} % \end{center} % \DeleteShortVerb{\+} % \MakeShortVerb{\|} % % % \begin{macro}{\DeclareFontEncoding} % \begin{macro}{\DeclareFontEncoding@} % 欧文エンコードを宣言するためのコマンドです。 % \file{ltfssbas.dtx}で定義されているものを、 % |\fenc@list|を作るように再定義をしています。 % \changes{v1.3p}{2006/01/04}{\break\cs{DeclareFontEncoding@}中で % \cs{LastDeclaredEncodeng}の再定義が抜けていたので追加} % \begin{macrocode} \def\DeclareFontEncoding{% \begingroup \nfss@catcodes \expandafter\endgroup \DeclareFontEncoding@} % %\plIncludeInRelease{2018/04/01}{\DeclareFontEncoding@} % {UTF-8 Encoding}% %<*plcore|platexrelease> % \end{macrocode} % % まず、\LaTeXe\ 2017-04-15以前の場合のコードです。このコードは、 % |\UseRawInputEncoding|の内部でも使われます。 % \changes{v1.6n}{2018/04/06}{\cs{UseRawInputEncoding}で使われる % \cs{DeclareFontEncoding@}の保存版(従来の定義)を準備 % (sync with ltfinal.dtx 2018/04/06 v2.1b)} % \begin{macrocode} % for compatibility with LaTeX2e 2017-04-15 or earlier. % this code is used if MLTeX is enabled \def\DeclareFontEncoding@#1#2#3{% \expandafter \ifx\csname T@#1\endcsname\relax \def\cdp@elt{\noexpand\cdp@elt}% \xdef\cdp@list{\cdp@list\cdp@elt{#1}% {\default@family}{\default@series}% {\default@shape}}% \expandafter\let\csname#1-cmd\endcsname\@changed@cmd % \end{macrocode} % 以下の2行がp\LaTeXe{}による追加部分です。 % \begin{macrocode} \def\enc@elt{\noexpand\enc@elt}% \xdef\fenc@list{\fenc@list\enc@elt<#1>}% % \end{macrocode} % \begin{macrocode} \else \@font@info{Redeclaring font encoding #1}% \fi \global\@namedef{T@#1}{#2}% \global\@namedef{M@#1}{\default@M#3}% \xdef\LastDeclaredEncoding{#1}% } \let\DeclareFontEncoding@saved\DeclareFontEncoding@ % \end{macrocode} % % 次に、\LaTeXe\ 2018-04-01以降の場合のコードです。 % \begin{macrocode} \ifx\IeC\@undefined\else % for LaTeX2e with UTF-8 input. \def\DeclareFontEncoding@#1#2#3{% \expandafter \ifx\csname T@#1\endcsname\relax \def\cdp@elt{\noexpand\cdp@elt}% \xdef\cdp@list{\cdp@list\cdp@elt{#1}% {\default@family}{\default@series}% {\default@shape}}% \expandafter\let\csname#1-cmd\endcsname\@changed@cmd % \end{macrocode} % \LaTeXe\ 2018-04-01で、既定の欧文入力エンコーディングが % UTF-8になりました。これは、\file{latex.ltx}が\file{utf8.def}(従来は % \LaTeX{}ソースに |\usepackage[utf8]{inputenc}| と書いたときに % 読み込まれていたもの)を読み込むことで実現されています。 % \file{utf8.def}は |\DeclareFontEncoding@| を再定義するので、 % これに合わせるためのコードを追加します。 % \changes{v1.6m}{2018/03/31}{\file{utf8.def}由来のコードを追加} % \begin{macrocode} \begingroup \wlog{Now handling font encoding #1 ...}% \lowercase{% \InputIfFileExists{#1enc.dfu}}% {\wlog{... processing UTF-8 mapping file for font % encoding #1}}% {\wlog{... no UTF-8 mapping file for font encoding #1}}% \endgroup % \end{macrocode} % 以下の2行がp\LaTeXe{}による追加部分です。 % \begin{macrocode} \def\enc@elt{\noexpand\enc@elt}% \xdef\fenc@list{\fenc@list\enc@elt<#1>}% % \end{macrocode} % \begin{macrocode} \else \@font@info{Redeclaring font encoding #1}% \fi \global\@namedef{T@#1}{#2}% \global\@namedef{M@#1}{\default@M#3}% \xdef\LastDeclaredEncoding{#1}% } % \end{macrocode} % ^^A pLaTeX2e <2018-04-01>+1では一時的に、この場所で % ^^A \LaTeXe\ 2018-04-01 Patch level 2で導入された % ^^A 「コマンドライン引数にUnicode文字が使われた場合への対処」 % ^^A への対策を実行していましたが、 % ^^A pLaTeX2e <2018-04-01>+2を以って、\file{plvers.dtx}側が % ^^A 対応完了したため削除しました。 % \changes{v1.6o}{2018/04/08}{Delay full UTF-8 handling to \cs{everyjob} % (sync with ltfinal.dtx 2018/04/08 v2.1d)} % \changes{v1.6p}{2018/04/09}{v1.6oで加えた対策を削除。 % 参考:plvers.dtx 2018/04/09 v1.1lの\cs{everyjob}} % \begin{macrocode} \fi % %\plEndIncludeInRelease %\plIncludeInRelease{0000/00/00}{\DeclareFontEncoding@} % {ASCII Corporation original}% %\def\DeclareFontEncoding@#1#2#3{% % \expandafter % \ifx\csname T@#1\endcsname\relax % \def\cdp@elt{\noexpand\cdp@elt}% % \xdef\cdp@list{\cdp@list\cdp@elt{#1}% % {\default@family}{\default@series}% % {\default@shape}}% % \expandafter\let\csname#1-cmd\endcsname\@changed@cmd % \def\enc@elt{\noexpand\enc@elt}% % \xdef\fenc@list{\fenc@list\enc@elt<#1>}% % \else % \@font@info{Redeclaring font encoding #1}% % \fi % \global\@namedef{T@#1}{#2}% % \global\@namedef{M@#1}{\default@M#3}% % \xdef\LastDeclaredEncoding{#1}% % } %\let\DeclareFontEncoding@saved\@undefined %\plEndIncludeInRelease %<*plcore> % \end{macrocode} % \end{macro} % \end{macro} % % % \begin{macro}{\DeclareKanjiEncoding} % \begin{macro}{\DeclareYokoKanjiEncoding} % \begin{macro}{\DeclareYokoKanjiEncoding@} % \begin{macro}{\DeclareTateKanjiEncoding} % \begin{macro}{\DeclareTateKanjiEncoding@} % 和文エンコードの宣言をするコマンドです。 % \changes{v1.3c}{1997/04/08}{和文エンコード宣言コマンドを縦組用と横組用で % 分けるようにした。} % \begin{macrocode} \def\DeclareKanjiEncoding#1{% \@latex@warning{% The \string\DeclareKanjiEncoding\space is obsoleted command. Please use \MessageBreak the \string\DeclareTateKanjiEncoding\space for `Tate-kumi' encoding, and \MessageBreak the \string\DeclareYokoKanjiEncoding\space for `Yoko-kumi' encoding. \MessageBreak I treat the `#1' encoding as `Yoko-kumi'.} \DeclareYokoKanjiEncoding{#1}% } \def\DeclareYokoKanjiEncoding{% \begingroup \nfss@catcodes \expandafter\endgroup \DeclareYokoKanjiEncoding@} % \def\DeclareYokoKanjiEncoding@#1#2#3{% \expandafter \ifx\csname T@#1\endcsname\relax \def\cdp@elt{\noexpand\cdp@elt}% \xdef\cdp@list{\cdp@list\cdp@elt{#1}% {\default@k@family}{\default@k@series}% {\default@k@shape}}% \expandafter\let\csname#1-cmd\endcsname\@changed@kcmd \def\enc@elt{\noexpand\enc@elt}% \xdef\kyenc@list{\kyenc@list\enc@elt<#1>}% \xdef\kenc@list{\kenc@list\enc@elt<#1>}% \else \@font@info{Redeclaring KANJI (yoko) font encoding #1}% \fi \global\@namedef{T@#1}{#2}% \global\@namedef{M@#1}{\default@KM#3}% } % \def\DeclareTateKanjiEncoding{% \begingroup \nfss@catcodes \expandafter\endgroup \DeclareTateKanjiEncoding@} % \def\DeclareTateKanjiEncoding@#1#2#3{% \expandafter \ifx\csname T@#1\endcsname\relax \def\cdp@elt{\noexpand\cdp@elt}% \xdef\cdp@list{\cdp@list\cdp@elt{#1}% {\default@k@family}{\default@k@series}% {\default@k@shape}}% \expandafter\let\csname#1-cmd\endcsname\@changed@kcmd \def\enc@elt{\noexpand\enc@elt}% \xdef\ktenc@list{\ktenc@list\enc@elt<#1>}% \xdef\kenc@list{\kenc@list\enc@elt<#1>}% \else \@font@info{Redeclaring KANJI (tate) font encoding #1}% \fi \global\@namedef{T@#1}{#2}% \global\@namedef{M@#1}{\default@KM#3}% } % \@onlypreamble\DeclareKanjiEncoding \@onlypreamble\DeclareYokoKanjiEncoding \@onlypreamble\DeclareYokoKanjiEncoding@ \@onlypreamble\DeclareTateKanjiEncoding \@onlypreamble\DeclareTateKanjiEncoding@ % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % % \begin{macro}{\DeclareKanjiEncodingDefaults} % 和文エンコードのデフォルト値を宣言するコマンドです。 % \begin{macrocode} \def\DeclareKanjiEncodingDefaults#1#2{% \ifx\relax#1\else \ifx\default@KT\@empty\else \@font@info{Overwriting KANJI encoding scheme text defaults}% \fi \gdef\default@KT{#1}% \fi \ifx\relax#2\else \ifx\default@KM\@empty\else \@font@info{Overwriting KANJI encoding scheme math defaults}% \fi \gdef\default@KM{#2}% \fi} \let\default@KT\@empty \let\default@KM\@empty \@onlypreamble\DeclareKanjiEncodingDefaults % \end{macrocode} % \end{macro} % % % \begin{macro}{\KanjiEncodingPair} % 和文の縦横のエンコーディングはそれぞれ対にして扱うため、セット化するための % コマンドを定義します。 % \changes{v1.3n}{2004/08/10}{和文エンコーディングの切り替えを有効化} % \begin{macrocode} \def\KanjiEncodingPair#1#2{\@namedef{t@enc@#1}{#2}\@namedef{y@enc@#2}{#1}} % \end{macrocode} % \end{macro} % % % \begin{macro}{\DeclareFontFamily} % 欧文ファミリを宣言するためのコマンドです。 % |\ffam@list|を作るように再定義をします。 % \begin{macrocode} \def\DeclareFontFamily#1#2#3{% \@ifundefined{T@#1}% {\@latex@error{Encoding scheme `#1' unknown}\@eha}% {\edef\tmp@item{{#2}}% \expandafter\expandafter\expandafter \inlist@\expandafter\tmp@item\expandafter{\ffam@list}% \ifin@ \else \def\fam@elt{\noexpand\fam@elt}% \xdef\ffam@list{\ffam@list\fam@elt<#2>}% \fi \def\reserved@a{#3}% \global \expandafter\let\csname #1+#2\expandafter\endcsname \ifx \reserved@a\@empty \@empty \else \reserved@a \fi }% } % \end{macrocode} % \end{macro} % % \begin{macro}{\DeclareKanjiFamily} % 和文ファミリを宣言するためのコマンドです。 % \begin{macrocode} \def\DeclareKanjiFamily#1#2#3{% \@ifundefined{T@#1}% {\@latex@error{KANJI Encoding scheme `#1' unknown}\@eha}% {\edef\tmp@item{{#2}}% \expandafter\expandafter\expandafter \inlist@\expandafter\tmp@item\expandafter{\kfam@list}% \ifin@ \else \def\fam@elt{\noexpand\fam@elt}% \xdef\kfam@list{\kfam@list\fam@elt<#2>}% \fi \def\reserved@a{#3}% \global \expandafter\let\csname #1+#2\expandafter\endcsname \ifx \reserved@a\@empty \@empty \else \reserved@a \fi }% } % \end{macrocode} % \end{macro} % % \begin{macro}{\DeclareKanjiSubstitution} % 目的の和文フォントが見つからなかったときに使うフォントの宣言をする % コマンドです。 % |\DeclareFontSubstitution|に対応します。 % \begin{macrocode} \def\DeclareKanjiSubstitution#1#2#3#4{% \expandafter\ifx\csname T@#1\endcsname\relax \@latex@error{KANJI Encoding scheme `#1' unknown}\@eha \else \begingroup \def\reserved@a{#1}% \toks@{}% \def\cdp@elt##1##2##3##4{% \def\reserved@b{##1}% \ifx\reserved@a\reserved@b \addto@hook\toks@{\cdp@elt{#1}{#2}{#3}{#4}}% \else \addto@hook\toks@{\cdp@elt{##1}{##2}{##3}{##4}}% \fi}% \cdp@list \xdef\cdp@list{\the\toks@}% \endgroup \global\@namedef{D@#1}{\def\default@family{#2}% \def\default@series{#3}% \def\default@shape{#4}}% \fi} \@onlypreamble\DeclareKanjiSubstitution % \end{macrocode} % \end{macro} % % \begin{macro}{\DeclareErrorKanjiFont} % |\DeclareErrorFont|に対応するコマンドです。 % \changes{v1.6s}{2019/08/13}{\cs{DeclareErrorKanjiFont}: % Don't set any \cs{k@...} macros % (sync with ltfssbas.dtx 2019/07/09 v3.2c)} % \begin{macrocode} % %\plIncludeInRelease{2019/10/01}{\DeclareErrorKanjiFont} % {No side effects please}% %<*plcore|platexrelease> \def\DeclareErrorKanjiFont#1#2#3#4#5{% \xdef\error@kfontshape{% \noexpand\expandafter\noexpand\split@name\noexpand\string \expandafter\noexpand\csname#1/#2/#3/#4/#5\endcsname \noexpand\@nil}% \gdef\default@k@family{#2}% \gdef\default@k@series{#3}% \gdef\default@k@shape{#4}% } % %\plEndIncludeInRelease %\plIncludeInRelease{0000/00/00}{\DeclareErrorKanjiFont} % {ASCII Corporation original}% %\def\DeclareErrorKanjiFont#1#2#3#4#5{% % \xdef\error@kfontshape{% % \noexpand\expandafter\noexpand\split@name\noexpand\string % \expandafter\noexpand\csname#1/#2/#3/#4/#5\endcsname % \noexpand\@nil}% % \gdef\default@k@family{#2}% % \gdef\default@k@series{#3}% % \gdef\default@k@shape{#4}% % \global\let\k@family\default@k@family % \global\let\k@series\default@k@series % \global\let\k@shape\default@k@shape % \gdef\f@size{#5}% % \gdef\f@baselineskip{#5pt}} %\plEndIncludeInRelease %<*plcore> \@onlypreamble\DeclareErrorKanjiFont % \end{macrocode} % \end{macro} % % % \begin{macro}{\DeclareFixedFont} % フォント名を宣言するコマンドです。 % % \changes{v1.2}{1995/11/09}{\break\cs{DeclareFixedFont}の日本語化} % \changes{v1.3c}{1997/04/09}{縦横エンコード・リストの分離による拡張} % \changes{v1.3f}{1998/08/10}{プリアンブル・コマンドにしてしまっていたのを解除} % \begin{macrocode} \def\DeclareFixedFont#1#2#3#4#5#6{% \begingroup \let\afont\font \math@fontsfalse \every@math@size{}% \fontsize{#6}\z@ \edef\tmp@item{{#2}}% \expandafter\expandafter\expandafter \inlist@\expandafter\tmp@item\expandafter{\kyenc@list}% \ifin@ \usekanji{#2}{#3}{#4}{#5}% \let\font\jfont \else \expandafter\expandafter\expandafter \inlist@\expandafter\tmp@item\expandafter{\ktenc@list}% \ifin@ \usekanji{#2}{#3}{#4}{#5}% \let\font\tfont \else \useroman{#2}{#3}{#4}{#5}% \let\font\afont \fi \fi \global\expandafter\let\expandafter#1\the\font \let\font\afont \endgroup } % \end{macrocode} % \end{macro} % % % \begin{macro}{\reDeclareMathAlphabet} % \changes{v1.0}{1997/01/30}{\break\cs{reDeclareMathAlphabet}を追加。 % ありがとう、ymtさん。} % \changes{v1.4}{2006/06/27}{\break\cs{reDeclareMathAlphabet}を修正。 % ありがとう、ymtさん。} % \changes{v1.5}{2006/11/10}{\break\cs{reDeclareMathAlphabet}を修正。 % ありがとう、ymtさん。} % 数式モード内で、数式文字用の和欧文フォントを同時に切り替えるコマンドです。 % % p\LaTeXe{}には、本来の動作モードと2.09互換モードの二つがあり、 % 両モードで数式文字を変更するコマンドや動作が異なります。 % 本来の動作モードでは、|\mathrm{...}|のように|\math??|に引数を指定して % 使います。このときは引数にだけ影響します。2.09互換モードでは、|\rm|の % ような二文字コマンドを使います。このコマンドには引数を取らず、書体は % グルーピングの範囲で反映されます。二文字コマンドは、ネイティブモード % でも使えるようになっていて、動作も2.09互換モードのコマンドと同じです。 % % しかし、内部的には|\math??|という一つのコマンドがすべての動作を受け持ち、 % |\math??|コマンドや|\??|コマンドから呼び出された状態に応じて、動作を変え % ています。したがって、欧文フォントと和文フォントの両方を一度に変更する、 % 数式文字変更コマンドを作るとき、それぞれの状態に合った動作で動くように % フォント切り替えコマンドを実行させる必要があります。 % % \textbf{使い方} %\begin{verbatim} % usage: \reDeclareMathAlphabet{\mathAA}{\mathBB}{\mathCC} %\end{verbatim} % 欧文・和文両用の数式文字変更コマンド |\mathAA| を(再)定義します。 % 欧文用のコマンド |\mathBB| と、和文用の |\mathCC| を (p)\LaTeX{} 標準の % 方法で定義しておいた後、上のように記述します。なお、|{\mathBB}{\mathCC}| % の部分については |{\@mathBB}{\@mathCC}| のように @ をつけた記述 % をしてもかまいません(互換性のため)。上のような命令を発行すると、 % |\mathAA| が、欧文に対しては |\mathBB|、 和文に対しては |\mathCC| の意味を % 持つようになります。 % 通常は、|\reDeclareMathAlphabet{\mathrm}{\mathrm}{\mathmc}| のように % |AA=BB| として用います。また、|\mathrm| は \LaTeX{} kernel において % 標準のコマンドとして既に定義されているので、この場合は |\mathrm| の % 再定義となります。native mode での |\rm| のような two letter command % (old font command) に対しても同様なことが引きおこります。つまり、 % 数式モードにおいて、新たな |\rm| は、\LaTeX{} original の |\rm| と |\mc| % (正確に言えば |\mathrm| と |\mathmc| であるが)の意味を合わせ持つように % なります。 % % \textbf{補足} % \begin{itemize} % \item % |\mathAA| を再定義する他の命令(|\DeclareSymbolFontAlphabet| を用いる % パッケージの使用等)との衝突を避けるためには、|\AtBeginDocument| を併用 % するなどして展開位置の制御を行ってください。 % \item % テキストモード時のエラー表示用に |\mathBB| のみを用いることを除いて、 % |\mathBB| と |\mathCC| の順は実際には意味を持ちません。和文、欧文の順に % 定義しても問題はありません。 % \item % 第2,3引き数には |{\@mathBB}{\@mathCC}| のように |@| をつけた記述も % 行えます。ただし、形式は統一してください。判断は第2引き数で行って % いるため、 |{\@mathBB}{\mathCC}| のような記述ではうまく動作しません。 % また、|\makeatletter| な状態で |{\@mathBB }{\@mathCC }| のような |@| と % 余分なスペースをつけた場合には無限ループを引き起こすことがあります。 % このような記述は避けるようにして下さい。 % \item % |\reDeclareMathAlphabet| を実行する際には、|\mathBB|, |\mathCC| が定義 % されている必要はありません。実際に |\mathAA| を用いる際にはこれらの % |\mathBB|, |\mathCC| が (p)\LaTeX{}標準の方法で定義されている必要があります。 % \item % 他の部分で |\mathAA| を全く定義しない場合を除き、|\mathAA| は % |\reDeclareMathAlphabet| を実行する以前で (p)\LaTeX{}標準の方法で定義され % ている必要があります(|\mathrm| や |\mathbf| の標準的なコマンドは、 % \LaTeX{} kernel で既に定義されています)。 % |\DeclareMathAlphabet| の場合には、|\reDeclareMathAlphabet| よりも前で1度 % |\mathAA| を定義してあれば、|\reDeclareMathAlphabet| の後ろで再度 % |\DeclareMathAlphabet| を用いて |\mathAA| の内部の定義内容を変更すること % には問題ありません。 % |\DeclareSymbolFontAlphabet| の場合、再定義においても |\mathAA| が直接 % 定義されるので、|\mathAA| に対する最後の |\DeclareSymbolFontAlphabet| の % さらに後で |\reDeclareMathAlphabet| を実行しなければ有効とはなりません。 % \item % |\documentstyle| の互換モードの場合、|\rm| 等の two letter command % (old font command) は、|\reDeclareMathAlphabet| とは関連することのない % 別個のコマンドとして定義されます。従って、この場合には % |\reDeclareMathAlphabet| を用いても |\rm| 等は数式モードにおいて % 欧文・和文両用のものとはなりません。 % \end{itemize} % \begin{macrocode} \def\reDeclareMathAlphabet#1#2#3{% \edef#1{\noexpand\protect\expandafter\noexpand\csname% \expandafter\@gobble\string#1\space\space\endcsname}% \edef\@tempa{\expandafter\@gobble\string#2}% \edef\@tempb{\expandafter\@gobble\string#3}% \edef\@tempc{\string @\expandafter\@gobbletwo\string#2}% \ifx\@tempc\@tempa% \edef\@tempa{\expandafter\@gobbletwo\string#2}% \edef\@tempb{\expandafter\@gobbletwo\string#3}% \fi \expandafter\edef\csname\expandafter\@gobble\string#1\space\space\endcsname% {\noexpand\DualLang@mathalph@bet% {\expandafter\noexpand\csname\@tempa\space\endcsname}% {\expandafter\noexpand\csname\@tempb\space\endcsname}% }% } \@onlypreamble\reDeclareMathAlphabet \def\DualLang@mathalph@bet#1#2{% \relax\ifmmode \ifx\math@bgroup\bgroup% 2e normal style (\mathrm{...}) \bgroup\let\DualLang@Mfontsw\DLMfontsw@standard \else \ifx\math@bgroup\relax% 2e two letter style (\rm->\mathrm) \let\DualLang@Mfontsw\DLMfontsw@oldstyle \else \ifx\math@bgroup\@empty% 2.09 oldlfont style ({\mathrm ...}) \let\DualLang@Mfontsw\DLMfontsw@oldlfont \else% panic! assume 2e normal style \bgroup\let\DualLang@Mfontsw\DLMfontsw@standard \fi \fi \fi \else \let\DualLang@Mfontsw\@firstoftwo \fi \DualLang@Mfontsw{#1}{#2}% } \def\DLMfontsw@standard#1#2#3{#1{#2{#3}}\egroup} \def\DLMfontsw@oldstyle#1#2{#1\relax\@fontswitch\relax{#2}} \def\DLMfontsw@oldlfont#1#2{#1\relax#2\relax} % \end{macrocode} % \end{macro} % % % \begin{macro}{\DeclareRelationFont} % \begin{macro}{\SetRelationFont} % 和文書体に対する従属書体を宣言するコマンドです。\emph{従属書体}とは、 % ある和文書体とペアになる欧文書体のことです。 % 主に多書体パッケージ|skfonts|を用いるための仕組みです。 % % |\DeclareRelationFont|コマンドの最初の4つの引数の組が和文書体の属性、 % その後の4つの引数の組が従属書体の属性です。 %\begin{verbatim} % \DeclareRelationFont{JY1}{mc}{m}{n}{OT1}{cmr}{m}{n} % \DeclareRelationFont{JY1}{gt}{m}{n}{OT1}{cmr}{bx}{n} %\end{verbatim} % 上記の例は、明朝体の従属書体としてコンピュータモダンローマン、 % ゴシック体の従属書体としてコンピュータモダンボールドを宣言しています。 % カレント和文書体が|\JY1/mc/m/n|となると、 % 自動的に欧文書体が|\OT1/cmr/m/n|になります。 % また、和文書体が|\JY1/gt/m/n|になったときは、 % 欧文書体が|\OT1/cmr/bx/n|になります。 % % 和文書体のシェイプ指定を省略するとエンコード/ファミリ/シリーズの組合せで % 従属書体が使われます。このときは、|\selectfont|が呼び出された時点での % シェイプ(|\f@shape|)の値が使われます。 % % |\DeclareRelationFont|の設定値はグローバルに有効です。 % |\SetRelationFont|の設定値はローカルに有効です。 % フォント定義ファイルで宣言をする場合は、 % |\DeclareRelationFont|を使ってください。 % \begin{macrocode} \def\all@shape{all}% \def\DeclareRelationFont#1#2#3#4#5#6#7#8{% \def\rel@shape{#4}% \ifx\rel@shape\@empty \global \expandafter\def\csname rel@#1/#2/#3/all\endcsname{% \romanencoding{#5}\romanfamily{#6}% \romanseries{#7}}% \else \global \expandafter\def\csname rel@#1/#2/#3/#4\endcsname{% \romanencoding{#5}\romanfamily{#6}% \romanseries{#7}\romanshape{#8}}% \fi } \def\SetRelationFont#1#2#3#4#5#6#7#8{% \def\rel@shape{#4}% \ifx\rel@shape\@empty \expandafter\def\csname rel@#1/#2/#3/all\endcsname{% \romanencoding{#5}\romanfamily{#6}% \romanseries{#7}}% \else \expandafter\def\csname rel@#1/#2/#3/#4\endcsname{% \romanencoding{#5}\romanfamily{#6}% \romanseries{#7}\romanshape{#8}}% \fi } % \end{macrocode} % \end{macro} % \end{macro} % % % \begin{macro}{\if@knjcmd} % |\if@knjcmd|は欧文書体を従属書体にするかどうかのフラグです。 % このフラグが真になると、欧文書体に従属書体が使われます。 % \begin{macrocode} \newif\if@knjcmd % \end{macrocode} % \end{macro} % % \begin{macro}{\userelfont} % |\if@knjcmd|フラグは|\userelfont|コマンドによって、\emph{真}となります。 % そして|\selectfont|実行後には\emph{偽}に初期化されます。 % \changes{v1.6u}{2019/09/29}{Make \cs{userelfont} robust} % \begin{macrocode} % %\plIncludeInRelease{2019/10/01}{\userelfont} % {Make robust}% %<*plcore|platexrelease> \DeclareRobustCommand\userelfont{\@knjcmdtrue} % %\plEndIncludeInRelease %\plIncludeInRelease{0000/00/00}{\userelfont} % {ASCII Corporation original}% %\def\userelfont{\@knjcmdtrue} %\expandafter \let \csname userelfont \endcsname \@undefined %\plEndIncludeInRelease %<*plcore> % \end{macrocode} % \end{macro} % % \begin{macro}{\selectfont} % |\selectfont|のオリジナルからの変更部分は、次の3点です。 % \begin{itemize} % \item 和文書体を変更する部分 % \item 従属書体に変更する部分 % \item 和欧文のベースラインを調整する部分 % \end{itemize} % % \changes{v1.0c}{1995/08/22}{縦横両方のフォントを切り替えるようにした} % \changes{v1.2}{1995/11/22}{エラーフォントに対応した} % \changes{v1.3n}{2004/08/10}{和文エンコーディングの切り替えを有効化} % |\selectfont|コマンドは、まず、和文フォントを切り替えます。 % \begin{macrocode} % %<*plcore|trace> \DeclareRobustCommand\selectfont{% \let\tmp@error@fontshape\error@fontshape \let\error@fontshape\error@kfontshape \edef\tmp@item{{\k@encoding}}% \expandafter\expandafter\expandafter \inlist@\expandafter\tmp@item\expandafter{\kyenc@list}% \ifin@ \let\cy@encoding\k@encoding \edef\ct@encoding{\csname t@enc@\k@encoding\endcsname}% \else \expandafter\expandafter\expandafter \inlist@\expandafter\tmp@item\expandafter{\ktenc@list}% \ifin@ \let\ct@encoding\k@encoding \edef\cy@encoding{\csname y@enc@\k@encoding\endcsname}% \else \@latex@error{KANJI Encoding scheme `\k@encoding' unknown}\@eha \fi \fi \let\font\tfont \let\k@encoding\ct@encoding \xdef\font@name{\csname\curr@kfontshape/\f@size\endcsname}% \pickup@font \font@name \let\font\jfont \let\k@encoding\cy@encoding \xdef\font@name{\csname\curr@kfontshape/\f@size\endcsname}% \pickup@font \font@name \expandafter\def\expandafter\k@encoding\tmp@item \kenc@update \let\error@fontshape\tmp@error@fontshape % \end{macrocode} % 次に、|\if@knjcmd|が真の場合、 % 欧文書体を現在の和文書体に関連付けされたフォントに変えます。 % このフラグは|\userelfont|コマンドによって\emph{真}となります。 % このフラグはここで再び、\emph{偽}に設定されます。 % \begin{macrocode} \if@knjcmd \@knjcmdfalse \expandafter\ifx \csname rel@\k@encoding/\k@family/\k@series/\k@shape\endcsname\relax \expandafter\ifx \csname rel@\k@encoding/\k@family/\k@series/all\endcsname\relax \else \csname rel@\k@encoding/\k@family/\k@series/all\endcsname \fi \else \csname rel@\k@encoding/\k@family/\k@series/\k@shape\endcsname \fi \fi % \end{macrocode} % そして、欧文フォントを切り替えます。 % \begin{macrocode} \let\font\afont \xdef\font@name{\csname\curr@fontshape/\f@size\endcsname}% \pickup@font \font@name % \ifnum \tracingfonts>\tw@ % \@font@info{Roman:Switching to \font@name}\fi \enc@update % \end{macrocode} % 最後に、サイズが変更されていれば、ベースラインの調整などを行ないます。 % 英語版の|\selectfont|では最初に行なっていますが、 % p\LaTeXe{}ではベースラインシフトの調整をするために、 % 書体を確定しなければならないため、一番最後に行ないます % % \changes{v1.1b}{1995/04/26}{ベースラインの調整をサイズ変更時に % 行なうようにした} % \begin{macrocode} \ifx\f@linespread\baselinestretch \else \set@fontsize\baselinestretch\f@size\f@baselineskip \fi \size@update} % %<*plcore> % \end{macrocode} % \end{macro} % % \begin{macro}{\set@fontsize} % |\fontsize|コマンドの内部形式です。 % ベースラインの設定と、支柱の設定を行ないます。 % \begin{macrocode} % %\plIncludeInRelease{2017/04/08}{\set@fontsize} % {Construct \ystrutbox}% %<*plcore|platexrelease|trace> \def\set@fontsize#1#2#3{% \@defaultunits\@tempdimb#2pt\relax\@nnil \edef\f@size{\strip@pt\@tempdimb}% \@defaultunits\@tempskipa#3pt\relax\@nnil \edef\f@baselineskip{\the\@tempskipa}% \edef\f@linespread{#1}% \let\baselinestretch\f@linespread \def\size@update{% \baselineskip\f@baselineskip\relax \baselineskip\f@linespread\baselineskip \normalbaselineskip\baselineskip % \end{macrocode} % ここで、ベースラインシフトの調整と支柱を組み立てます。 % \changes{v1.6f}{2017/02/20}{\cs{ystrutbox}を組み立てるように} % \begin{macrocode} \adjustbaseline \setbox\ystrutbox\hbox{\yoko \vrule\@width\z@ \@height.7\baselineskip \@depth.3\baselineskip}% \setbox\tstrutbox\hbox{\tate \vrule\@width\z@ \@height.5\baselineskip \@depth.5\baselineskip}% \setbox\zstrutbox\hbox{\tate \vrule\@width\z@ \@height.7\baselineskip \@depth.3\baselineskip}% % \end{macrocode} % フォントサイズとベースラインに関する診断情報を出力します。 % \begin{macrocode} %<*trace> \ifnum \tracingfonts>\tw@ \ifx\f@linespread\@empty \let\reserved@a\@empty \else \def\reserved@a{\f@linespread x}% \fi \@font@info{Changing size to\space \f@size/\reserved@a \f@baselineskip}% \aftergroup\type@restoreinfo \fi % \let\size@update\relax}} % %\plEndIncludeInRelease %\plIncludeInRelease{0000/00/00}{\set@fontsize} % {ASCII Corporation original}% %\def\set@fontsize#1#2#3{% % \@defaultunits\@tempdimb#2pt\relax\@nnil % \edef\f@size{\strip@pt\@tempdimb}% % \@defaultunits\@tempskipa#3pt\relax\@nnil % \edef\f@baselineskip{\the\@tempskipa}% % \edef\f@linespread{#1}% % \let\baselinestretch\f@linespread % \def\size@update{% % \baselineskip\f@baselineskip\relax % \baselineskip\f@linespread\baselineskip % \normalbaselineskip\baselineskip % \adjustbaseline % \setbox\strutbox\hbox{\yoko % \vrule\@width\z@ % \@height.7\baselineskip \@depth.3\baselineskip}% % \setbox\tstrutbox\hbox{\tate % \vrule\@width\z@ % \@height.5\baselineskip \@depth.5\baselineskip}% % \setbox\zstrutbox\hbox{\tate % \vrule\@width\z@ % \@height.7\baselineskip \@depth.3\baselineskip}% %<*trace> % \ifnum \tracingfonts>\tw@ % \ifx\f@linespread\@empty % \let\reserved@a\@empty % \else % \def\reserved@a{\f@linespread x}% % \fi % \@font@info{Changing size to\space % \f@size/\reserved@a \f@baselineskip}% % \aftergroup\type@restoreinfo % \fi % % \let\size@update\relax}} %\plEndIncludeInRelease %<*plcore> % \end{macrocode} % \end{macro} % % % \begin{macro}{\adjustbaseline} % 現在の和文フォントの空白(EUCコード\texttt{0xA1A1})の中央に % 現在の欧文フォントの``/''の中央がくるようにベースラインシフトを設定します。 % \changes{v1.0c}{1995/08/31}{欧文書体の基準を`M'から`/'に変更} % \changes{v1.2}{1995/11/21}{縦組時のみ調整するようにした} % % 当初はまずベースラインシフト量をゼロにしていましたが、 % \cs{tbaselineshift}を連続して変更した後に鈎括弧類を使うと余計なアキが % でる問題が起こるため、\cs{tbaselineshift}をゼロクリアする処理を削除し % ました。 % \changes{v1.3j}{2000/10/24}{文頭に鈎括弧などがあるときに余計なアキがで % る問題に対処} % % しかし、それではベースラインシフトを調整済みの欧文ボックスと比較して % しまうため、計算した値が大きくなってしまいます。そこで、このボックス % の中でゼロにするようにしました。また、``/''と比較していたのを``M''に % しました。 % \changes{v1.3k}{2001/05/10}{欧文書体の基準を再び`/`から`M'に変更} % \changes{v1.3l}{2002/04/05}{\cs{adjustbaseline}でフォントの基準値が縦書き % 以外では設定されないのを修正} % % 全角空白(EUCコード\texttt{0xA1A1})はJFMで特殊なタイプに分類される可能性 % があるため、和文書体の基準を「漢」(JISコード\texttt{0x3441})へ変更しました。 % \changes{v1.6h}{2017/08/05}{和文書体の基準を全角空白から「漢」に変更} % \changes{v1.6u}{2019/09/29}{Make \cs{adjustbaseline} robust} % \begin{macrocode} \newbox\adjust@box \newdimen\adjust@dimen % \end{macrocode} % % \begin{macrocode} % %\plIncludeInRelease{2019/10/01}{\adjustbaseline} % {Make robust}% %<*plcore|platexrelease|trace> \DeclareRobustCommand\adjustbaseline{% % \end{macrocode} % 和文フォントの基準値を設定します。 % \begin{macrocode} \setbox\adjust@box\hbox{\char\jis"3441}%" \cht\ht\adjust@box \cdp\dp\adjust@box \cwd\wd\adjust@box \cvs\normalbaselineskip \chs\cwd \cHT\cht \advance\cHT\cdp % \end{macrocode} % 基準となる欧文フォントの文字を含んだボックスを作成し、 % ベースラインシフト量の計算を行ないます。 % 計算式は次のとおりです。 % % \begin{eqnarray*} % \textmc{ベースラインシフト量} &=& % \{ (\textmc{漢の深さ}) - (\textmc{Mの深さ}) \} \\ % &&- \frac{(\textmc{漢の高さ$+$深さ}) % - (\textmc{Mの高さ$+$深さ})}{2} % \end{eqnarray*} % \changes{v1.6h}{2017/08/05}{traceのコードの\texttt{\%}忘れを修正} % % \begin{macrocode} \iftdir \setbox\adjust@box\hbox{\tbaselineshift\z@ M}% \adjust@dimen\ht\adjust@box \advance\adjust@dimen\dp\adjust@box \advance\adjust@dimen-\cHT \divide\adjust@dimen\tw@ \advance\adjust@dimen\cdp \advance\adjust@dimen-\dp\adjust@box \tbaselineshift\adjust@dimen % \ifnum \tracingfonts>\tw@ % \typeout{baselineshift:\the\tbaselineshift}% % \fi \fi} % %\plEndIncludeInRelease %\plIncludeInRelease{2017/07/29}{\adjustbaseline} % {Change zenkaku reference}% %\def\adjustbaseline{% % \setbox\adjust@box\hbox{\char\jis"3441}%" % \cht\ht\adjust@box % \cdp\dp\adjust@box % \cwd\wd\adjust@box % \cvs\normalbaselineskip % \chs\cwd % \cHT\cht \advance\cHT\cdp % \iftdir % \setbox\adjust@box\hbox{\tbaselineshift\z@ M}% % \adjust@dimen\ht\adjust@box % \advance\adjust@dimen\dp\adjust@box % \advance\adjust@dimen-\cHT % \divide\adjust@dimen\tw@ % \advance\adjust@dimen\cdp % \advance\adjust@dimen-\dp\adjust@box % \tbaselineshift\adjust@dimen %<*trace> % \ifnum \tracingfonts>\tw@ % \typeout{baselineshift:\the\tbaselineshift}% % \fi % % \fi} %\expandafter \let \csname adjustbaseline \endcsname \@undefined %\plEndIncludeInRelease %\plIncludeInRelease{0000/00/00}{\adjustbaseline} % {ASCII Corporation original}% %\def\adjustbaseline{% % \setbox\adjust@box\hbox{\char\euc"A1A1}%" % \cht\ht\adjust@box % \cdp\dp\adjust@box % \cwd\wd\adjust@box % \cvs\normalbaselineskip % \chs\cwd % \cHT\cht \advance\cHT\cdp % \iftdir % \setbox\adjust@box\hbox{\tbaselineshift\z@ M}% % \adjust@dimen\ht\adjust@box % \advance\adjust@dimen\dp\adjust@box % \advance\adjust@dimen-\cHT % \divide\adjust@dimen\tw@ % \advance\adjust@dimen\cdp % \advance\adjust@dimen-\dp\adjust@box % \tbaselineshift\adjust@dimen %<*trace> % \ifnum \tracingfonts>\tw@ % \typeout{baselineshift:\the\tbaselineshift} % \fi % % \fi} %\expandafter \let \csname adjustbaseline \endcsname \@undefined %\plEndIncludeInRelease %<*plcore> % \end{macrocode} % \end{macro} % % % \begin{macro}{\romanencoding} % \begin{macro}{\kanjiencoding} % \begin{macro}{\fontencoding} % 書体のエンコードを指定するコマンドです。 % |\fontencoding|コマンドは和欧文のどちらかに影響します。 % |\DeclareKanjiEncoding|で指定されたエンコードは和文エンコードとして、 % |\DeclareFontEncoding|で指定されたエンコードは欧文エンコードとして % 認識されます。 % % |\kanjiencoding|と|\romanencoding|は与えられた引数が、 % エンコードとして登録されているかどうかだけを確認し、 % それが和文か欧文かのチェックは行なっていません。 % そのため、高速に動作をしますが、|\kanjiencoding|に欧文エンコードを指定したり、 % 逆に|\romanencoding|に和文エンコードを指定した場合はエラーとなります。 % \begin{macrocode} \DeclareRobustCommand\romanencoding[1]{% \expandafter\ifx\csname T@#1\endcsname\relax \@latex@error{Encoding scheme `#1' unknown}\@eha \else \edef\f@encoding{#1}% \ifx\cf@encoding\f@encoding \let\enc@update\relax \else \let\enc@update\@@enc@update \fi \fi } \DeclareRobustCommand\kanjiencoding[1]{% \expandafter\ifx\csname T@#1\endcsname\relax \@latex@error{KANJI Encoding scheme `#1' unknown}\@eha \else \edef\k@encoding{#1}% \ifx\ck@encoding\k@encoding \let\kenc@update\relax \else \let\kenc@update\@@kenc@update \fi \fi } \DeclareRobustCommand\fontencoding[1]{% \edef\tmp@item{{#1}}% \expandafter\expandafter\expandafter \inlist@\expandafter\tmp@item\expandafter{\kenc@list}% \ifin@ \kanjiencoding{#1}\else\romanencoding{#1}\fi} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\@@kenc@update} % |\kanjiencoding|コマンドのコードからもわかるように、 % |\ck@encoding|と|\k@encoding|が異なる場合、 % |\kenc@update|コマンドは|\@@kenc@update|コマンドと等しくなります。 % % |\@@kenc@update|コマンドは、そのエンコードでのデフォルト値を設定するための % コマンドです。欧文用の|\@@enc@update|コマンドでは、 % \mlineplus{2}行目と\mlineplus{3}行目のような代入もしていますが、 % 和文用にはコメントにしてあります。 % これらは|\DeclareTextCommand|や|\ProvideTextCommand|などで % エンコードごとに設定されるコマンドを使うための仕組みです。 % しかし、和文エンコードに依存するようなコマンドやマクロを作成することは、 % 現時点では、ないと思います。 % % \changes{v1.0c}{1995/08/22}{縦横用エンコードの保存} % \begin{macrocode} \def\@@kenc@update{% % \expandafter\let\csname\ck@encoding -cmd\endcsname\@changed@kcmd % \expandafter\let\csname\k@encoding-cmd\endcsname\@current@cmd \default@KT \csname T@\k@encoding\endcsname \csname D@\k@encoding\endcsname \let\kenc@update\relax \let\ck@encoding\k@encoding \edef\tmp@item{{\k@encoding}}% \expandafter\expandafter\expandafter \inlist@\expandafter\tmp@item\expandafter{\kyenc@list}% \ifin@ \let\cy@encoding\k@encoding \else \expandafter\expandafter\expandafter \inlist@\expandafter\tmp@item\expandafter{\ktenc@list}% \ifin@ \let\ct@encoding\k@encoding \else \@latex@error{KANJI Encoding scheme `\k@encoding' unknown}\@eha \fi \fi } \let\kenc@update\relax % \end{macrocode} % \end{macro} % % \begin{macro}{\@changed@kcmd} % |\@changed@cmd|の和文エンコーディングバージョン。 % \changes{v1.3n}{2004/08/10}{和文エンコーディングの切り替えを有効化} % \begin{macrocode} \def\@changed@kcmd#1#2{% \ifx\protect\@typeset@protect \@inmathwarn#1% \expandafter\ifx\csname\ck@encoding\string#1\endcsname\relax \expandafter\ifx\csname ?\string#1\endcsname\relax \expandafter\def\csname ?\string#1\endcsname{% \TextSymbolUnavailable#1% }% \fi \global\expandafter\let \csname\cf@encoding \string#1\expandafter\endcsname \csname ?\string#1\endcsname \fi \csname\ck@encoding\string#1% \expandafter\endcsname \else \noexpand#1% \fi} % \end{macrocode} % \end{macro} % % \begin{macro}{\@notkfam} % \begin{macro}{\@notffam} % |\fontfamily|コマンド内で使用するフラグです。 % |@notkfam|フラグは和文ファミリでなかったことを、 % |@notffam|フラグは欧文ファミリでなかったことを示します。 % % \changes{v1.2}{1995/11/21}{\cs{fontfamily}コマンド用のフラグ追加} % \begin{macrocode} \newif\if@notkfam \newif\if@notffam % \end{macrocode} % \changes{v1.3m}{2004/06/14}{\cs{fontfamily}コマンド内部フラグ変更} % \begin{macrocode} \newif\if@tempswz % \end{macrocode} % \end{macro} % \end{macro} % % % \begin{macro}{\romanfamily} % \begin{macro}{\kanjifamily} % \begin{macro}{\fontfamily} % 書体のファミリを指定するコマンドです。 % % |\kanjifamily|と|\romanfamily|は与えられた引数が、 % 和文あるいは欧文のファミリとして正しいかのチェックは行なっていません。 % そのため、高速に動作をしますが、|\kanjifamily|に欧文ファミリを指定したり、 % 逆に|\romanfamily|に和文ファミリを指定した場合は、エラーとなり、 % 代用フォントかエラーフォントが使われます。 % \begin{macrocode} \DeclareRobustCommand\romanfamily[1]{\edef\f@family{#1}} \DeclareRobustCommand\kanjifamily[1]{\edef\k@family{#1}} % \end{macrocode} % % |\fontfamily|は、指定された値によって、和文ファミリか欧文ファミリ、 % \emph{あるいは両方}のファミリを切り替えます。 % 和欧文ともに無効なファミリ名が指定された場合は、和欧文ともに代替書体が % 使用されます。 % % 引数が|\rmfamily|のような名前で与えられる可能性があるため、 % まず、これを展開したものを作ります。 % % また、和文ファミリと欧文ファミリのそれぞれになかったことを示すフラグを % 偽にセットします。 % % \changes{v1.2}{1995/11/21}{代用フォントが使われないバグを修正} % \changes{v1.3m}{2004/06/14}{\cs{fontfamily}コマンド内部フラグ変更} % \changes{v1.3o}{2005/01/04}{\cs{fontfamily}中のフラグ修正} % \begin{macrocode} \DeclareRobustCommand\fontfamily[1]{% \edef\tmp@item{{#1}}% \@notkfamfalse \@notffamfalse % \end{macrocode} % 次に、この引数が|\kfam@list|に登録されているかどうかを調べます。 % 登録されていれば、|\k@family|にその値を入れます。 % \begin{macrocode} \expandafter\expandafter\expandafter \inlist@\expandafter\tmp@item\expandafter{\kfam@list}% \ifin@ \edef\k@family{#1}% % \end{macrocode} % そうでないときは、|\notkfam@list|に登録されているかどうかを調べます。 % 登録されていれば、この引数は和文ファミリではありませんので、 % |\@notkfam|フラグを真にして、欧文ファミリのルーチンに移ります。 % % このとき、|\ffam@list|を調べるのではないことに注意をしてください。 % |\ffam@list|を調べ、これにないファミリを和文ファミリであるとすると、 % たとえば、欧文ナールファミリが定義されているけれども、和文ナールファミリ % が未定義の場合、|\fontfamily{nar}|という指定は、|nar|が|\ffam@list|にだけ、 % 登録されているため、和文書体をナールにすることができません。 % % 逆に、|\kfam@list|に登録されていないからといって、|\k@family|に|nar|を設定 % すると、|cmr|のようなファミリも|\k@family|に設定される可能性があります。 % したがって、「欧文でない」を明示的に示す|\notkfam@list|を見る必要があります。 % \begin{macrocode} \else \expandafter\expandafter\expandafter \inlist@\expandafter\tmp@item\expandafter{\notkfam@list}% \ifin@ \@notkfamtrue % \end{macrocode} % |\notkfam@list|に登録されていない場合は、 % フォント定義ファイルが存在するかどうかを調べます。 % ファイルが存在する場合は、|\k@family|を変更します。 % ファイルが存在しない場合は、|\notkfam@list|に登録します。 % % |\kenc@list|に登録されているエンコードと、指定された和文ファミリの % 組合せのフォント定義ファイルが存在する場合は、|\k@family|に指定された % 値を入れます。 % \changes{v1.3c}{1997/04/24}% % {フォント定義ファイル名を小文字に変換してから探すようにした。} % \changes{v1.3e}{1997/07/10}{fdファイル名の小文字化が効いていなかったのを % 修正。ありがとう、大岩さん} % \begin{macrocode} \else \@tempswzfalse \def\fam@elt{\noexpand\fam@elt}% \message{(I search kanjifont definition file:}% \def\enc@elt<##1>{\message{.}% \edef\reserved@a{\lowercase{\noexpand\IfFileExists{##1#1.fd}}}% \reserved@a{\@tempswztrue}{}\relax}% \kenc@list \message{)}% \if@tempswz \edef\k@family{#1}% % \end{macrocode} % つぎの部分が実行されるのは、和文ファミリとして認識できなかった場合です。 % この場合は、|\@notkfam|フラグを真にして、|\notkfam@list|に登録します。 % \changes{v1.1b}{1995/05/10}{\cs{notkfam@list}に、 % エンコードごとに登録されてしまうのを修正した。欧文についても同様。} % \begin{macrocode} \else \@notkfamtrue \xdef\notkfam@list{\notkfam@list\fam@elt<#1>}% \fi % \end{macrocode} % |\kfam@list|と|\notkfam@list|に登録されているかどうかを % 調べた|\ifin@|を閉じます。 % \begin{macrocode} \fi\fi % \end{macrocode} % 欧文ファミリの場合も、和文ファミリと同様の方法で確認をします。 % \changes{v1.3e}{1997/07/10}{fdファイル名の小文字化が効いていなかったのを修正} % \begin{macrocode} \expandafter\expandafter\expandafter \inlist@\expandafter\tmp@item\expandafter{\ffam@list}% \ifin@ \edef\f@family{#1}\else \expandafter\expandafter\expandafter \inlist@\expandafter\tmp@item\expandafter{\notffam@list}% \ifin@ \@notffamtrue \else \@tempswzfalse \def\fam@elt{\noexpand\fam@elt}% \message{(I search font definition file:}% \def\enc@elt<##1>{\message{.}% \edef\reserved@a{\lowercase{\noexpand\IfFileExists{##1#1.fd}}}% \reserved@a{\@tempswztrue}{}\relax}% \fenc@list \message{)}% \if@tempswz \edef\f@family{#1}% \else \@notffamtrue \xdef\notffam@list{\notffam@list\fam@elt<#1>}% \fi \fi\fi % \end{macrocode} % 最後に、指定された文字列が、和文ファミリと欧文ファミリのいずれか、 % あるいは両方として認識されたかどうかを確認します。 % % どちらとも認識されていない場合は、ファミリの指定ミスですので、 % 代用フォントを使うために、故意に指定された文字列をファミリに % 入れます。 % \begin{macrocode} \if@notkfam\if@notffam \edef\k@family{#1}\edef\f@family{#1}% \fi\fi} % % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % % \begin{macro}{\series@maybe@drop@one@m} % 本家\LaTeXe~2020-02-02 patch level~5で追加された命令です。 % \NFSS{}が大幅に修正・拡張された\LaTeXe~2020-02-02のうち、 % patch level~2には |latex3/latex2e#277| のバグがあり、 % ^^A →対策として \if@forced@series が追加された % patch level~4には |latex3/latex2e#293| のバグがあったため、 % ^^A →対策として \series@maybe@drop@one@m が追加された % 安定した\LaTeXe{}のみをサポートします。 % \changes{v1.6z}{2020/02/28}{\cs{series@maybe@drop@one@m}の存在確認} % \begin{macrocode} %<*plcore|platexrelease> \ifx\fontseriesforce\@undefined % old \else % 2020-02-02 \ifx\series@maybe@drop@one@m\@undefined % patch level 0--4 \@latex@error {Please update LaTeX2e!^^J\space\space At least LaTeX2e 2020-02-02 patch level 5 is required} {LaTeX2e 2020-02-02 patch level 2 and 4 has a bug.} % \@@end \fi \fi % % \end{macrocode} % \end{macro} % % \begin{macro}{\romanseries} % \begin{macro}{\kanjiseries} % \begin{macro}{\fontseries} % 書体のシリーズを指定するコマンドです。 % |\fontseries|コマンドは和欧文の両方に影響します。 % % 2019年までは無条件に指定されたとおりのシリーズを選択していましたが、 % \LaTeXe~2020-02-02以降では、|\DeclareFontSeriesChangeRule|によって % 宣言された「シリーズ更新規則」に基づきシリーズを選択します。 % \begin{macrocode} %<*plcore|platexrelease> \ifx\fontseriesforce\@undefined % old \DeclareRobustCommand\romanseries[1]{\edef\f@series{#1}} \DeclareRobustCommand\kanjiseries[1]{\edef\k@series{#1}} \DeclareRobustCommand\fontseries[1]{\kanjiseries{#1}\romanseries{#1}} \else % 2020-02-02 \DeclareRobustCommand\romanseries[1]{\@forced@seriesfalse\merge@font@series{#1}} \DeclareRobustCommand\kanjiseries[1]{\@forced@seriesfalse\merge@kanji@series{#1}} \DeclareRobustCommand\fontseries[1]{\kanjiseries{#1}\romanseries{#1}} \fi % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\romanseriesforce} % \begin{macro}{\kanjiseriesforce} % \begin{macro}{\fontseriesforce} % 無条件にシリーズを変更します。 % \changes{v1.6v}{2020/02/01}{New commands \cs{fontseriesforce} etc. % (sync with ltfssaxes.dtx 2019/12/16 v1.0a)} % \changes{v1.6y}{2020/02/24}{Switch \cs{if@forced@series} added % (sync with ltfssaxes.dtx 2020/02/18 v1.0c)} % \begin{macrocode} \ifx\fontseriesforce\@undefined % old \let\romanseriesforce\@undefined \let\kanjiseriesforce\@undefined \else % 2020-02-02 \DeclareRobustCommand\romanseriesforce[1]{\@forced@seriestrue\edef\f@series{#1}} \DeclareRobustCommand\kanjiseriesforce[1]{\@forced@seriestrue\edef\k@series{#1}} \DeclareRobustCommand\fontseriesforce[1]{\kanjiseriesforce{#1}\romanseriesforce{#1}} \fi % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\merge@kanji@series} % \begin{macro}{\merge@kanji@series@} % \begin{macro}{\set@target@series@kanji} % \cs{merge@font@series}の和文版です。 % \changes{v1.6z}{2020/02/28}{Drop ``m'' only in a specific set of values % (sync with ltfssaxes.dtx 2020/02/27 v1.0d)} % \begin{macrocode} \ifx\fontseriesforce\@undefined % old \let\merge@kanji@series\@undefined \let\merge@kanji@series@\@undefined \let\set@target@series@kanji\@undefined \else % 2020-02-02 \def\merge@kanji@series#1{% \expandafter\expandafter\expandafter \merge@kanji@series@ \csname series@\k@series @#1\endcsname {#1}% \@nil } \def\merge@kanji@series@#1#2#3\@nil{% \def\reserved@a{#3}% \ifx\reserved@a\@empty \set@target@series@kanji{#2}% \else \begingroup\let\f@encoding\k@encoding\let\f@family\k@family \maybe@load@fontshape\endgroup \edef\reserved@a{\k@encoding /\k@family /#1/\k@shape}% \ifcsname \reserved@a \endcsname \set@target@series@kanji{#1}% \else \ifcsname \k@encoding /\k@family /#2/\k@shape \endcsname \set@target@series@kanji{#2}% {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}% \else \set@target@series@kanji{#3}% {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}% \fi \fi \fi } \def\set@target@series@kanji#1{% \edef\k@series{#1}% \expandafter\series@maybe@drop@one@m\expandafter{\k@series}\k@series } \fi % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % % \begin{macro}{\romanshape} % \begin{macro}{\kanjishape} % \begin{macro}{\fontshape} % 書体のシェイプを指定するコマンドです。 % |\fontshape|コマンドは和欧文の両方に影響します。 % % 2019年までは無条件に指定されたとおりのシェイプを選択していましたが、 % \LaTeXe~2020-02-02以降では、|\DeclareFontShapeChangeRule|によって % 宣言された「シェイプ更新規則」に基づきシェイプを選択します。 % \begin{macrocode} \ifx\fontshapeforce\@undefined % old \DeclareRobustCommand\romanshape[1]{\edef\f@shape{#1}} \DeclareRobustCommand\kanjishape[1]{\edef\k@shape{#1}} \DeclareRobustCommand\fontshape[1]{\kanjishape{#1}\romanshape{#1}} \else % 2020-02-02 \DeclareRobustCommand\romanshape[1]{\merge@font@shape{#1}} \DeclareRobustCommand\kanjishape[1]{\merge@kanji@shape{#1}} \DeclareRobustCommand\fontshape[1]{\kanjishape{#1}\romanshape{#1}} \fi % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\romanshapeforce} % \begin{macro}{\kanjishapeforce} % \begin{macro}{\fontshapeforce} % 無条件にシェイプを変更します。 % \changes{v1.6v}{2020/02/01}{New commands \cs{fontshapeforce} etc. % (sync with ltfssaxes.dtx 2019/12/16 v1.0a)} % \begin{macrocode} \ifx\fontshapeforce\@undefined % old \let\romanshapeforce\@undefined \let\kanjishapeforce\@undefined \else % 2020-02-02 \DeclareRobustCommand\romanshapeforce[1]{\edef\f@shape{#1}} \DeclareRobustCommand\kanjishapeforce[1]{\edef\k@shape{#1}} \DeclareRobustCommand\fontshapeforce[1]{\kanjishapeforce{#1}\romanshapeforce{#1}} \fi % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\merge@kanji@shape} % \begin{macro}{\merge@kanji@shape@} % \cs{merge@font@shape}の和文版です。 % \begin{macrocode} \ifx\fontseriesforce\@undefined % old \let\merge@kanji@shape\@undefined \let\merge@kanji@shape@\@undefined \else % 2020-02-02 \def\merge@kanji@shape#1{% \expandafter\expandafter\expandafter \merge@kanji@shape@ \csname shape@\k@shape @#1\endcsname {#1}% \@nil } \def\merge@kanji@shape@#1#2#3\@nil{% \def\reserved@a{#3}% \ifx\reserved@a\@empty \edef\k@shape{#2}% \else \begingroup\let\f@encoding\k@encoding\let\f@family\k@family \maybe@load@fontshape\endgroup \edef\reserved@a{\k@encoding /\k@family /\k@series/#1}% \ifcsname \reserved@a\endcsname \edef\k@shape{#1}% \else \ifcsname \k@encoding /\k@family /\k@series/#2\endcsname \edef\k@shape{#2}% {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}% \else \edef\k@shape{#3}% {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}% \fi \fi \fi } \fi % % \end{macrocode} % \end{macro} % \end{macro} % % % \begin{macro}{\usekanji} % \begin{macro}{\useroman} % \begin{macro}{\usefont} % 書体属性を一度に指定するコマンドです。 % 和文書体には|\usekanji|を、欧文書体には|\useroman|を指定してください。 % % |\usefont|コマンドは、第一引数で指定されるエンコードによって、 % 和文または欧文フォントを切り替えます。 % \changes{v1.6t}{2019/09/16}{Make \cs{usefont} etc. robust % (sync with ltfssbas.dtx 2019/08/27 v3.2d)} % \changes{v1.6v}{2020/02/01}{Don't call \cs{fontseries} or \cs{fontshape} % (sync with ltfssbas.dtx 2019/12/17 v3.2e)} % \begin{macrocode} %\plIncludeInRelease{2020/02/02}{\usefont} % {Don't call \fontseries or \fontshape}% %<*plcore|platexrelease> \DeclareRobustCommand\usekanji[4]{\kanjiencoding{#1}% \edef\k@family{#2}% \edef\k@series{#3}% \edef\k@shape{#4}\selectfont \ignorespaces} \DeclareRobustCommand\useroman[4]{\romanencoding{#1}% \edef\f@family{#2}% \edef\f@series{#3}% \edef\f@shape{#4}\selectfont \ignorespaces} \DeclareRobustCommand\usefont[4]{% \edef\tmp@item{{#1}}% \expandafter\expandafter\expandafter \inlist@\expandafter\tmp@item\expandafter{\kenc@list}% \ifin@ \usekanji{#1}{#2}{#3}{#4}% \else\useroman{#1}{#2}{#3}{#4}% \fi} % %\plEndIncludeInRelease %\plIncludeInRelease{2019/10/01}{\usefont} % {Make robust}% %\DeclareRobustCommand\usekanji[4]{% % \kanjiencoding{#1}\kanjifamily{#2}\kanjiseries{#3}\kanjishape{#4}% % \selectfont\ignorespaces} %\DeclareRobustCommand\useroman[4]{% % \romanencoding{#1}\romanfamily{#2}\romanseries{#3}\romanshape{#4}% % \selectfont\ignorespaces} %\DeclareRobustCommand\usefont[4]{% % \edef\tmp@item{{#1}}% % \expandafter\expandafter\expandafter % \inlist@\expandafter\tmp@item\expandafter{\kenc@list}% % \ifin@ \usekanji{#1}{#2}{#3}{#4}% % \else\useroman{#1}{#2}{#3}{#4}% % \fi} %\plEndIncludeInRelease %\plIncludeInRelease{0000/00/00}{\usefont} % {ASCII Corporation original}% %\def\usekanji#1#2#3#4{% % \kanjiencoding{#1}\kanjifamily{#2}\kanjiseries{#3}\kanjishape{#4}% % \selectfont\ignorespaces} %\def\useroman#1#2#3#4{% % \romanencoding{#1}\romanfamily{#2}\romanseries{#3}\romanshape{#4}% % \selectfont\ignorespaces} %\def\usefont#1#2#3#4{% % \edef\tmp@item{{#1}}% % \expandafter\expandafter\expandafter % \inlist@\expandafter\tmp@item\expandafter{\kenc@list}% % \ifin@ \usekanji{#1}{#2}{#3}{#4}% % \else\useroman{#1}{#2}{#3}{#4}% % \fi} %\expandafter \let \csname usekanji \endcsname \@undefined %\expandafter \let \csname useroman \endcsname \@undefined %\expandafter \let \csname usefont \endcsname \@undefined %\plEndIncludeInRelease % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % % \begin{macro}{\normalfont} % 書体をデフォルト値にするコマンドです。 % 和文書体もデフォルト値になるように再定義しています。 % ただし高速化のため、|\usekanji|と|\useroman|を展開し、 % |\selectfont|を一度しか呼び出さないようにしています。 % \begin{macrocode} %\plIncludeInRelease{2020/02/02}{\normalfont} % {Don't call \fontseries or \fontshape}% %<*plcore|platexrelease> \DeclareRobustCommand\normalfont{% \kanjiencoding{\kanjiencodingdefault}% \edef\k@family{\kanjifamilydefault}% \edef\k@series{\kanjiseriesdefault}% \edef\k@shape{\kanjishapedefault}% \romanencoding{\encodingdefault}% \edef\f@family{\familydefault}% \edef\f@series{\seriesdefault}% \edef\f@shape{\shapedefault}% \selectfont\ignorespaces} \adjustbaseline \let\reset@font\normalfont % %\plEndIncludeInRelease %\plIncludeInRelease{0000/00/00}{\normalfont} % {ASCII Corporation original}% %\DeclareRobustCommand\normalfont{% % \kanjiencoding{\kanjiencodingdefault}% % \kanjifamily{\kanjifamilydefault}% % \kanjiseries{\kanjiseriesdefault}% % \kanjishape{\kanjishapedefault}% % \romanencoding{\encodingdefault}% % \romanfamily{\familydefault}% % \romanseries{\seriesdefault}% % \romanshape{\shapedefault}% % \selectfont\ignorespaces} %\adjustbaseline %\let\reset@font\normalfont %\plEndIncludeInRelease % \end{macrocode} % \end{macro} % % % \begin{macro}{\bfseries@mc} % \begin{macro}{\bfseries@gt} % \begin{macro}{\mdseries@mc} % \begin{macro}{\mdseries@gt} % \LaTeXe~2020-02-02では、欧文フォントについて % 「ファミリごとの実際のシリーズ値を設定できる」 % という機能が導入されました(元はmweightsパッケージの機能)。 % また、同時に % 「Computer ModernとLatin Modernの場合は互換性のため太字をbxに、 % それ以外の欧文ファミリの場合は太字をbにする」 % という仕様変更も入りました。 % これに合わせて、p\LaTeXe{}の和文フォントにも同等の機能を追加し、 % 和文ファミリの太字もbxではなくbに変更しました。 % \changes{v1.6v}{2020/02/01}{\LaTeX{}がmweightsパッケージを基にした % シリーズのカスタム設定を導入したので、これをサポート % (sync with ltfssini.dtx 2019/12/17 v3.1e)} % \begin{macrocode} %<*plcore|platexrelease> \ifx\bfseries@rm\@undefined % old \let\bfseries@mc\@undefined \let\bfseries@gt\@undefined \let\mdseries@mc\@undefined \let\mdseries@gt\@undefined \else % 2020-02-02 \edef\bfseries@mc{\bfdefault}% b \edef\bfseries@gt{\bfdefault}% b \edef\mdseries@mc{\mddefault}% m \edef\mdseries@gt{\mddefault}% m \fi % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\expand@font@defaults} % ファミリのデフォルトを完全展開します。 % まず、オリジナルの\LaTeX{}の定義を載せておきます。 % \begin{macrocode} %\def\expand@font@defaults{% % \edef\rmdef@ult{\rmdefault}% % \edef\sfdef@ult{\sfdefault}% % \edef\ttdef@ult{\ttdefault}% % \edef\bfdef@ult{\bfdefault}% % \edef\mddef@ult{\mddefault}% % \edef\famdef@ult{\familydefault}% %} % \end{macrocode} % p\LaTeX{}では、以下のコードを末尾に追加します。 % \begin{macrocode} \ifx\expand@font@defaults\@undefined\else % 2020-02-02 \g@addto@macro\expand@font@defaults{% \edef\mcdef@ult{\mcdefault}% \edef\gtdef@ult{\gtdefault}% \edef\kanjidef@ult{\kanjifamilydefault}% } \fi % \end{macrocode} % % \end{macro} % % \begin{macro}{\bfseries} % \begin{macro}{\mdseries} % ファミリごとの設定値を参照します。 % \changes{v1.6y}{2020/02/24}{Make the \cs{ifx} selection outside of % \cs{fontseries} argument so that it is not done several times % (sync with ltfssini.dtx 2020/02/18 v3.1i)} % \begin{macrocode} \ifx\bfseries@rm\@undefined\else % 2020-02-02 \DeclareRobustCommand\bfseries{% \not@math@alphabet\bfseries\mathbf \expand@font@defaults % changed \fontseries -> \romanseries \ifx\f@family\rmdef@ult \romanseries\bfseries@rm \else\ifx\f@family\sfdef@ult \romanseries\bfseries@sf \else\ifx\f@family\ttdef@ult \romanseries\bfseries@tt \else \romanseries\bfdefault \fi\fi\fi % \end{macrocode} % ここからがp\LaTeX{}による追加コードです。 % \begin{macrocode} % changed \fontseries -> \kanjiseries \ifx\k@family\mcdef@ult \kanjiseries\bfseries@mc \else\ifx\k@family\gtdef@ult \kanjiseries\bfseries@gt \else \kanjiseries\bfdefault \fi\fi % \end{macrocode} % ここまで。 % \begin{macrocode} \selectfont } \DeclareRobustCommand\mdseries{% \not@math@alphabet\mdseries\relax \expand@font@defaults % changed \fontseries -> \romanseries \ifx\f@family\rmdef@ult \romanseries\mdseries@rm \else\ifx\f@family\sfdef@ult \romanseries\mdseries@sf \else\ifx\f@family\ttdef@ult \romanseries\mdseries@tt \else \romanseries\mddefault \fi\fi\fi % \end{macrocode} % ここからがp\LaTeX{}による追加コードです。 % \begin{macrocode} % changed \fontseries -> \kanjiseries \ifx\k@family\mcdef@ult \kanjiseries\mdseries@mc \else\ifx\k@family\gtdef@ult \kanjiseries\mdseries@gt \else \kanjiseries\mddefault \fi\fi % \end{macrocode} % ここまで。 % \begin{macrocode} \selectfont } \fi % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\prepare@family@series@update@kanji} % \begin{macro}{\@meta@family@list@kanji} % \begin{macro}{\update@series@target@value@kanji} % |\prepare@family@series@update|の和文版です。 % \changes{v1.6y}{2020/02/24}{No series auto-update when forced % (sync with ltfssini.dtx 2020/02/18 v3.1i)} % \changes{v1.6y}{2020/02/24}{Recognize current family if it is not a % ``meta'' family and auto-update series using \cs{bfdefault} % (sync with ltfssini.dtx 2020/02/18 v3.1i)} % \changes{v1.6z}{2020/02/28}{Drop surplus ``m'' from \cs{target@series@value} % (sync with ltfssini.dtx 2020/02/25 v3.1j)} % \begin{macrocode} \ifx\prepare@family@series@update\@undefined % old \let\prepare@family@series@update@kanji\@undefined \let\@meta@family@list@kanji\@undefined \let\update@series@target@value@kanji\@undefined \else % 2020-02-02 \def\prepare@family@series@update#1#2{% \if@forced@series %<+debug> \series@change@debug{No series preparation (forced \f@series)\on@line}% \romanfamily#2% % changed \fontfamily -> \romanfamily \else %<+debug> \series@change@debug{Prepearing for switching to #1 (#2)\on@line}% \expand@font@defaults \let\target@series@value\@empty \def\target@meta@family@value{#1}% \expandafter\edef\csname ??def@ult\endcsname{\f@family}% \let\@elt\update@series@target@value \@meta@family@list \@elt{??}% \let\@elt\relax \romanfamily#2% % changed \fontfamily -> \romanfamily \ifx\target@series@value\@empty %<+debug> \series@change@debug{Target series still empty ...}% \else \ifx \f@series\target@series@value %<+debug> \series@change@debug{Target series unchanged: %<+debug> \f@series \space = \target@series@value}% \else \maybe@load@fontshape %<+debug> \series@change@debug{Target series: %<+debug> \f@series \space -> \target@series@value}% \let\f@series\target@series@value \fi \fi \fi } \def\prepare@family@series@update@kanji#1#2{% \if@forced@series %<+debug> \series@change@debug{No series preparation (forced \k@series)\on@line}% \kanjifamily#2% \else %<+debug> \series@change@debug{Prepearing for switching to #1 (#2)\on@line}% \expand@font@defaults \let\target@series@value\@empty \def\target@meta@family@value{#1}% \expandafter\edef\csname ??def@ult\endcsname{\k@family}% \let\@elt\update@series@target@value@kanji \@meta@family@list@kanji \@elt{??}% \let\@elt\relax \kanjifamily#2% \ifx\target@series@value\@empty %<+debug> \series@change@debug{Target series still empty ...}% \else \ifx \k@series\target@series@value %<+debug> \series@change@debug{Target series unchanged: %<+debug> \k@series \space = \target@series@value}% \else \begingroup\let\f@encoding\k@encoding\let\f@family\k@family \maybe@load@fontshape\endgroup %<+debug> \series@change@debug{Target series: %<+debug> \k@series \space -> \target@series@value}% \let\k@series\target@series@value \fi \fi \fi } \def\@meta@family@list@kanji{\@elt{mc}\@elt{gt}} \def\update@series@target@value@kanji#1{% \def\reserved@a{#1}% \ifx\target@meta@family@value\reserved@a % rm -> rm do nothing \else %<+debug> \series@change@debug{Trying to match #1: \csname#1def@ult\endcsname %<+debug> \space = \k@family\space ?}% \expandafter\ifx\csname#1def@ult\endcsname\k@family \let\@elt\@gobble \expandafter\let\expandafter\reserved@b \csname mdseries@\target@meta@family@value\endcsname \expandafter\let\expandafter\reserved@c \csname bfseries@\target@meta@family@value\endcsname %<+debug>\series@change@debug{Targets for mdseries and bfseries: %<+debug> \reserved@b\space and \reserved@c}% \expandafter\ifx\csname mdseries@#1\endcsname\k@series %<+debug> \series@change@debug{mdseries@#1 matched -> \reserved@b}% \let\target@series@value\reserved@b \else\expandafter\ifx\csname bfseries@#1\endcsname\k@series %<+debug> \series@change@debug{bfseries@#1 matched -> \reserved@c}% \let\target@series@value\reserved@c \else\ifx\k@series\mddef@ult \let\target@series@value\reserved@b %<+debug> \series@change@debug{mddef@ult matched -> \reserved@b}% \else\ifx\k@series\bfdef@ult \let\target@series@value\reserved@c %<+debug> \series@change@debug{bfdef@ult matched -> \reserved@c}% \fi\fi\fi\fi \fi \fi } \fi % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\init@series@setup} % |\begin{document}|で実行される初期化です。 % まず、オリジナルの\LaTeX{}の定義を載せておきます。 % \begin{macrocode} %\def\init@series@setup{% % \ifx\bfseries@rm@kernel\bfseries@rm % \expandafter\in@\expandafter{\rmdefault}{cmr,cmss,cmtt,lcmss,lcmtt,lmr,lmss,lmtt}% % \ifin@ \else \def\bfseries@rm{b}\fi\fi % \ifx\bfseries@sf@kernel\bfseries@sf % \expandafter\in@\expandafter{\sfdefault}{cmr,cmss,cmtt,lcmss,lcmtt,lmr,lmss,lmtt}% % \ifin@ \else \def\bfseries@sf{b}\fi\fi % \ifx\bfseries@tt@kernel\bfseries@tt % \expandafter\in@\expandafter{\ttdefault}{cmr,cmss,cmtt,lcmss,lcmtt,lmr,lmss,lmtt}% % \ifin@ \else \def\bfseries@tt{b}\fi\fi % \expand@font@defaults % \ifx\famdef@ult\rmdef@ult \rmfamily % \else\ifx\famdef@ult\sfdef@ult \sffamily % \else\ifx\famdef@ult\ttdef@ult \ttfamily % \fi\fi\fi %}% % \end{macrocode} % ここからがp\LaTeX{}による追加コードです。 % \begin{itemize} % \item \LaTeXe~2019-10-01以前:未定義 % \item \LaTeXe~2020-02-02以降:上のとおりの定義 % \item ただし、latexreleaseで巻き戻し:|\relax|と同義 % \end{itemize} % になることに注意します。 % \changes{v1.6w}{2020/02/03}{巻き戻しのバグ修正} % \begin{macrocode} \expandafter\ifx\csname init@series@setup\endcsname\relax\else % 2020-02-02 \g@addto@macro\init@series@setup{% \ifx\kanjidef@ult\mcdef@ult \mcfamily \else\ifx\kanjidef@ult\gtdef@ult \gtfamily \fi\fi }% \fi % \end{macrocode} % \end{macro} % % % \begin{macro}{\mcfamily} % \begin{macro}{\gtfamily} % 和文書体を明朝体にする|\mcfamily|とゴシック体にする|\gtfamily|を定義します。 % これらは、|\rmfamily|などに対応します。 % |\mathmc|と|\mathgt|は数式内で用いるときのコマンド名です。 % \begin{macrocode} \ifx\prepare@family@series@update@kanji\@undefined % old \DeclareRobustCommand\mcfamily {\not@math@alphabet\mcfamily\mathmc \kanjifamily\mcdefault\selectfont} \DeclareRobustCommand\gtfamily {\not@math@alphabet\gtfamily\mathgt \kanjifamily\gtdefault\selectfont} \else % 2020-02-02 \DeclareRobustCommand\mcfamily {\not@math@alphabet\mcfamily\mathmc \prepare@family@series@update@kanji{mc}\mcdefault\selectfont} \DeclareRobustCommand\gtfamily {\not@math@alphabet\gtfamily\mathgt \prepare@family@series@update@kanji{gt}\gtdefault\selectfont} \fi % % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\textmc} % \begin{macro}{\textgt} % \changes{v1.3b}{1997/01/28}{\cs{textmc}, \cs{textgt}の動作修正} % \changes{v1.6v}{2020/02/01}{定義をpldefsからplcoreへ移動} % テキストファミリを切り替えるためのコマンドです。 % \file{ltfntcmd.dtx}で定義されている|\textrm|などに対応します。 % \begin{macrocode} %<*plcore> \DeclareTextFontCommand{\textmc}{\mcfamily} \DeclareTextFontCommand{\textgt}{\gtfamily} % % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\em} % \begin{macro}{\emph} % \begin{macro}{\eminnershape} % \changes{v1.3d}{1997/06/25}{\cs{em},\cs{emph}で和文を強調書体に} % 従来は|\em|, |\emph|で和文フォントの切り替えは行っていませんでしたが、 % 和文フォントも|\gtfamily|に切り替えるようにしました。 % % [p\LaTeXe~2016/04/17] % \LaTeX\ \texttt{<2015/01/01>}で追加された|\eminnershape|も取り入れ、 % 強調コマンドを入れ子にする場合の書体を自由に再定義できるようになりました。 % \changes{v1.6}{2016/02/01}{\LaTeX\ \texttt{!<2015/01/01!>}での\cs{em}の % 定義変更に対応。\cs{eminnershape}を追加。} % % [p\LaTeXe~2020-02-02] % \LaTeX\ \texttt{<2020-02-02>}で追加された|\DeclareEmphSequence|を % サポートしました。 % \changes{v1.6v}{2020/02/01}{Support \cs{emph} sequences % (sync with ltfssini.dtx 2019/12/17 v3.1e)} % \changes{v1.6v}{2020/02/01}{定義をpldefsからplcoreへ移動} % \begin{macrocode} %\plIncludeInRelease{2020/02/02}{\DeclareEmphSequence} % {Nested emph}% %<*plcore|platexrelease> \ifx\DeclareEmphSequence\@undefined % old \DeclareRobustCommand\em {\@nomath\em \ifdim \fontdimen\@ne\font >\z@ \eminnershape \else \gtfamily \itshape \fi}% \else \DeclareRobustCommand\em{% % 2020-02-02 \@nomath\em \ifx\emfontdeclare@clist\@empty \ifdim \fontdimen\@ne\font >\z@ \eminnershape \else \gtfamily \itshape \fi \else \edef\em@currfont{\csname\curr@fontshape/\f@size\endcsname}% \expandafter\do@emfont@update\emfontdeclare@clist\do@emfont@update \fi } \fi \def\eminnershape{\mcfamily \upshape}% % %\plEndIncludeInRelease %\plIncludeInRelease{2016/04/17}{\DeclareEmphSequence} % {Support \eminnershape}% %\DeclareRobustCommand\em % {\@nomath\em \ifdim \fontdimen\@ne\font >\z@ % \eminnershape \else \gtfamily \itshape \fi}% %\def\eminnershape{\mcfamily \upshape}% %\plEndIncludeInRelease %\plIncludeInRelease{2015/01/01}{\DeclareEmphSequence} % {Non-supported \eminnershape}% %\DeclareRobustCommand\em % {\@nomath\em \ifdim \fontdimen\@ne\font >\z@ % \mcfamily \upshape \else \gtfamily \itshape \fi} %\def\eminnershape{\upshape}% defined by LaTeX, but not used by pLaTeX %\plEndIncludeInRelease %\plIncludeInRelease{0000/00/00}{\DeclareEmphSequence} % {ASCII Corporation original}% %\DeclareRobustCommand\em % {\@nomath\em \ifdim \fontdimen\@ne\font >\z@ % \mcfamily \upshape \else \gtfamily \itshape \fi} %\let\eminnershape\@undefined %\plEndIncludeInRelease % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % % \begin{macro}{\romanprocess@table} % \begin{macro}{\kanjiprocess@table} % \begin{macro}{\process@table} % 文書の先頭で、和文デフォルトフォントの変更が反映されないのを修正します。 % \changes{v1.3g}{1999/04/05}{plpatch.ltxの内容を反映。 % ありがとう、山本さん。} % \begin{macrocode} %<*plcore> \let\romanprocess@table\process@table \def\kanjiprocess@table{% \kanjiencoding{\kanjiencodingdefault}% \kanjifamily{\kanjifamilydefault}% \kanjiseries{\kanjiseriesdefault}% \kanjishape{\kanjishapedefault}% } \def\process@table{% \romanprocess@table \kanjiprocess@table } \@onlypreamble\romanprocess@table \@onlypreamble\kanjiprocess@table % % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % % % \begin{macro}{\textunderscore} % \changes{v1.1b}{1995/04/12}{下線マクロを追加} % このコマンドはテキストモードで指定された|\_|の内部コマンドです。 % 縦組での位置を調整するように再定義をします。 % もとは\file{ltoutenc.dtx}で定義されています。 % % なお、|\_|を数式モードで使うと|\mathunderscore|が実行されます。 % % コミュニティ版では縦数式ディレクションでベースライン補正量が % 変だったのを直しました。あわせて横ディレクションでもベースライン % 補正に追随するようにしています。 % \changes{v1.6g}{2017/03/07}{ベースライン補正量を修正} % \begin{macrocode} %\plIncludeInRelease{2017/04/08}{\textunderscore} % {Baseline shift for \textunderscore}% %<*plcore|platexrelease> \DeclareTextCommandDefault{\textunderscore}{% \leavevmode\kern.06em \raise-\iftdir\ifmdir\ybaselineshift \else\tbaselineshift\fi \else\ybaselineshift\fi \vbox{\hrule\@width.3em}} % %\plEndIncludeInRelease %\plIncludeInRelease{0000/00/00}{\textunderscore} % {ASCII Corporation original}% %\DeclareTextCommandDefault{\textunderscore}{% % \leavevmode\kern.06em % \iftdir\raise-\tbaselineshift\fi % \vbox{\hrule\@width.3em}} %\plEndIncludeInRelease % \end{macrocode} % \end{macro} % % % \subsection{合成文字} % \LaTeXe{}のカーネルのコードをそのまま使うと、p\TeX{}のベースライン % 補正量がゼロでないときに合成文字がおかしくなっていたため、対策します。 % % \begin{macro}{\pltx@saved@oalign} % |\b{...}|, |\c{...}|, |\d{...}|, |\k{...}|などの合成文字を修正するため、 % \file{ltplain.dtx}の|\oalign|を上書きします。 % \begin{macrocode} %%\plIncludeInRelease{0000/00/00}{\pltx@saved@oalign} %% {Special case! (This block is required for any emulation date)}% %<*plcore|platexrelease> % \end{macrocode} % まず、元の\LaTeX{}のコードをコピーしたものです。 % 接頭辞|\pltx@saved...|を付けておきます。 % \changes{v1.6r}{2018/07/25}{コード追加} % \begin{macrocode} \def\pltx@saved@oalign#1{\leavevmode\vtop{\baselineskip\z@skip \lineskip.25ex% \ialign{##\crcr#1\crcr}}} % %%\plEndIncludeInRelease % \end{macrocode} % \end{macro} % % \begin{macro}{\pltx@oalign} % 次に、\pLaTeX{}の新しいコードです。 % \changes{v1.6r}{2018/07/25}{コード追加} % \begin{macrocode} %\plIncludeInRelease{2018/07/28}{\pltx@oalign} % {Fix for non-zero baselineshift}% %<*plcore|platexrelease> \def\pltx@oalign#1{\ifmmode \leavevmode\vtop{\baselineskip\z@skip \lineskip.25ex% \ialign{##\crcr#1\crcr}}% \else \iftdir\ybaselineshift\tbaselineshift\fi \m@th$\hbox{\vtop{\baselineskip\z@skip \lineskip.25ex% \ialign{##\crcr#1\crcr}}}$% \fi} % %\plEndIncludeInRelease %\plIncludeInRelease{0000/00/00}{\pltx@oalign} % {Fix for non-zero baselineshift}% %\let\pltx@oalign\@undefined %\plEndIncludeInRelease % \end{macrocode} % \end{macro} % % \begin{macro}{\pltx@saved@ltx@sh@ft} % |\b{...}|と|\d{...}|の合成文字を修正するため、 % \file{ltplain.dtx}の|\ltx@sh@ft|を上書きします。 % \begin{macrocode} %%\plIncludeInRelease{0000/00/00}{\pltx@saved@ltx@sh@ft} %% {Special case! (This block is required for any emulation date)}% %<*plcore|platexrelease> % \end{macrocode} % まず、元の\LaTeX{}のコードをコピーしたものです。 % 接頭辞|\pltx@saved...|を付けておきます。 % \changes{v1.6r}{2018/07/25}{コード追加} % \begin{macrocode} \def\pltx@saved@ltx@sh@ft #1{% \dimen@ #1% \kern \strip@pt \fontdimen1\font \dimen@ } % kern by #1 times the current slant % %%\plEndIncludeInRelease % \end{macrocode} % \end{macro} % % \begin{macro}{\pltx@ltx@sh@ft} % 次に、\pLaTeX{}の新しいコードです。 % \changes{v1.6r}{2018/07/25}{コード追加} % \begin{macrocode} %\plIncludeInRelease{2018/07/28}{\pltx@ltx@sh@ft} % {Fix for non-zero baselineshift}% %<*plcore|platexrelease> \def\pltx@ltx@sh@ft #1{% \ybaselineshift\z@ \dimen@ #1% \kern \strip@pt \fontdimen1\font \dimen@ } % kern by #1 times the current slant % %\plEndIncludeInRelease %\plIncludeInRelease{0000/00/00}{\pltx@ltx@sh@ft} % {Fix for non-zero baselineshift}% %\let\pltx@ltx@sh@ft\@undefined %\plEndIncludeInRelease % \end{macrocode} % \end{macro} % % \begin{macro}{\g@tlastchart@} % \TeX\ Live 2015で追加された\cs{lastnodechar}を利用して、 % 「直前の文字」の符号位置を得るコードです。 % \cs{lastnodechar}が未定義の場合は$-1$が返ります。 % \changes{v1.6c}{2016/06/06}{マクロ追加} % \begin{macrocode} %\plIncludeInRelease{2016/06/10}{\g@tlastchart@} % {Added \g@tlastchart@}% %<*plcore|platexrelease> \def\g@tlastchart@#1{#1\ifx\lastnodechar\@undefined\m@ne\else\lastnodechar\fi} % %\plEndIncludeInRelease %\plIncludeInRelease{0000/00/00}{\g@tlastchart@} % {Added \g@tlastchart@}% %\let\g@tlastchart@\@undefined %\plEndIncludeInRelease % \end{macrocode} % \end{macro} % % \begin{macro}{\pltx@isletter} % 第一引数のマクロ(|#1|)の置換テキストが、カテゴリコード11か12の文字トークン1文字であった % 場合に第二引数の内容に展開され、そうでない場合は第三引数の内容に展開されます。 % \changes{v1.6c}{2016/06/06}{マクロ追加} % \changes{v1.6d}{2016/06/19}{アクセント付き文字をさらに修正(forum:1951)} % \changes{v1.6r}{2018/07/25}{PDFのしおりにアクセント文字が含まれる場合に対応} % \begin{macrocode} %\plIncludeInRelease{2018/07/28}{\pltx@isletter} % {Support PD1 encoding}% %<*plcore|platexrelease> \def\pltx@mark{\pltx@mark@} \let\pltx@scanstop\relax \long\def\pltx@cond#1\fi{% #1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi} \def\pltx@pdfencA{PD1} \def\pltx@composite@chkenc{% \ifx\pltx@pdfencA\f@encoding \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi} \long\def\pltx@isletter#1{% \expandafter\pltx@isletter@i#1\pltx@scanstop} \long\def\pltx@isletter@i#1\pltx@scanstop{% \pltx@cond\ifx\pltx@mark#1\pltx@mark\fi{\@firstoftwo}% {\pltx@isletter@ii\pltx@scanstop#1\pltx@scanstop{}#1\pltx@mark}} \long\def\pltx@isletter@ii#1\pltx@scanstop#{% \pltx@cond\ifx\pltx@mark#1\pltx@mark\fi% {\pltx@isletter@iii}{\pltx@isletter@iv}} \long\def\pltx@isletter@iii#1\pltx@mark{\@secondoftwo} \long\def\pltx@isletter@iv#1#2#3\pltx@mark{% \pltx@cond\ifx\pltx@mark#3\pltx@mark\fi{% \pltx@cond{\ifnum0\ifcat A\noexpand#21\fi\ifcat=\noexpand#21\fi>\z@}\fi {\@firstoftwo}{\pltx@composite@chkenc}% }{\pltx@composite@chkenc}} % %\plEndIncludeInRelease %\plIncludeInRelease{2016/06/10}{\pltx@isletter} % {Added \pltx@isletter}% %\def\pltx@mark{\pltx@mark@} %\let\pltx@scanstop\relax %\long\def\pltx@cond#1\fi{% % #1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi} %\long\def\pltx@isletter#1{% % \expandafter\pltx@isletter@i#1\pltx@scanstop} %\long\def\pltx@isletter@i#1\pltx@scanstop{% % \pltx@cond\ifx\pltx@mark#1\pltx@mark\fi{\@firstoftwo}% % {\pltx@isletter@ii\pltx@scanstop#1\pltx@scanstop{}#1\pltx@mark}} %\long\def\pltx@isletter@ii#1\pltx@scanstop#{% % \pltx@cond\ifx\pltx@mark#1\pltx@mark\fi% % {\pltx@isletter@iii}{\pltx@isletter@iv}} %\long\def\pltx@isletter@iii#1\pltx@mark{\@secondoftwo} %\long\def\pltx@isletter@iv#1#2#3\pltx@mark{% % \pltx@cond\ifx\pltx@mark#3\pltx@mark\fi{% % \pltx@cond{\ifnum0\ifcat A\noexpand#21\fi\ifcat=\noexpand#21\fi>\z@}\fi % {\@firstoftwo}{\@secondoftwo}% % }{\@secondoftwo}} %\plEndIncludeInRelease %\plIncludeInRelease{0000/00/00}{\pltx@isletter} % {Added \pltx@isletter}% %\let\pltx@isletter\@undefined %\plEndIncludeInRelease % \end{macrocode} % \end{macro} % % \begin{macro}{\@text@composite} % 合成文字の内部命令です。 % v1.6aで誤って\LaTeX{}の定義を上書きしてしまいましたが、v1.6cで外しました。 % \changes{v1.6a}{2016/04/01}{ベースライン補正量が0でないときに % \cs{AA}など一部の合成文字がおかしくなることに対応するため再定義} % \changes{v1.6c}{2016/06/06}{v1.6aでの誤った再定義を削除(forum:1941)} % \begin{macrocode} %\plIncludeInRelease{2016/06/10}{\@text@composite} % {Fix for non-zero baselineshift (revert)}% %\def\@text@composite#1#2#3\@text@composite{% % \expandafter\@text@composite@x % \csname\string#1-\string#2\endcsname} %\plEndIncludeInRelease %\plIncludeInRelease{2016/04/17}{\@text@composite} % {Fix for non-zero baselineshift (wrong)}% %\def\@text@composite#1#2#3#{% % \begingroup % \setbox\z@=\hbox\bgroup% % \ybaselineshift\z@\tbaselineshift\z@ % \expandafter\@text@composite@x % \csname\string#1-\string#2\endcsname} %\plEndIncludeInRelease %\plIncludeInRelease{0000/00/00}{\@text@composite} % {LaTeX2e original}% %\def\@text@composite#1#2#3\@text@composite{% % \expandafter\@text@composite@x % \csname\string#1-\string#2\endcsname} %\plEndIncludeInRelease % \end{macrocode} % \end{macro} % % \begin{macro}{\pltx@saved@text@composite@x} % 合成文字の内部命令|\@text@composite@x|のために、2通りの定義を準備します。 % \begin{macrocode} %%\plIncludeInRelease{0000/00/00}{\pltx@saved@text@composite@x} %% {Special case! (This block is required for any emulation date)}% %<*plcore|platexrelease> % \end{macrocode} % まず、元の\LaTeX{}のコードをコピーしたものです。 % 接頭辞|\pltx@saved...|を付けておきます。 % \changes{v1.6r}{2018/07/25}{コード整理} % \begin{macrocode} \def\pltx@saved@text@composite@x#1{% \ifx#1\relax \expandafter\@secondoftwo \else \expandafter\@firstoftwo \fi #1} % %%\plEndIncludeInRelease % \end{macrocode} % \end{macro} % % \begin{macro}{\pltx@text@composite@x} % 次に、\pLaTeX{}の新しいコードです。|\g@tlastchart@|と|\pltx@isletter|を使います。 % \changes{v1.6r}{2018/07/25}{コード整理} % \begin{macrocode} %\plIncludeInRelease{2018/07/28}{\pltx@text@composite@x} % {Fix for non-zero baselineshift}% %<*plcore|platexrelease> \def\pltx@text@composite@x#1#2{% \ifx#1\relax #2% \else\pltx@isletter{#1}{#1}{% \begingroup % \end{macrocode} % |#1|を実際に組んでみて、符号位置の取得を試みます。 % 結果は|\@tempcntb|に保存されます。取得に失敗した場合は$-1$です。 % \begin{macrocode} \setbox\z@\hbox\bgroup \ybaselineshift\z@\tbaselineshift\z@ #1% \g@tlastchart@\@tempcntb \xdef\pltx@composite@temp{\noexpand\@tempcntb=\the\@tempcntb\relax}% \aftergroup\pltx@composite@temp \egroup % \end{macrocode} % アクセントが付く「本体の文字」が欧文文字と推測される場合には、 % 一旦数式モードに入ることによって|\xkanjiskip|が前後に入るようにします。 % ここでは、取得に失敗した場合も欧文文字であると仮定しています。 % また、符号位置の取得に成功していた場合は、その|\xspcode|の状態に応じて、 % 数式モードの前後に|\null|を補って|\xkanjiskip|の挿入を抑制します。 % \begin{macrocode} \ifnum\@tempcntb<\@cclvi \ifnum\@tempcntb>\m@ne \ifodd\xspcode\@tempcntb\else\leavevmode\null\fi \fi \begingroup\m@th$% \ifx\textbaselineshiftfactor\@undefined\else \textbaselineshiftfactor\z@\fi \box\z@ $\endgroup \ifnum\@tempcntb>\m@ne \ifnum\xspcode\@tempcntb<2\null\fi \fi % \end{macrocode} % アクセントが付く「本体の文字」が和文文字と推測される場合には、 % ベースライン補正を行わずに出力します。 % \begin{macrocode} \else {\ybaselineshift\z@\tbaselineshift\z@#1}% \fi \endgroup}% \fi } % %\plEndIncludeInRelease %\plIncludeInRelease{2016/06/10}{\pltx@text@composite@x} % {Fix for non-zero baselineshift}% %\def\pltx@text@composite@x#1#2{% % \ifx#1\relax % #2% % \else\pltx@isletter{#1}{#1}{% % \begingroup % \setbox\z@\hbox\bgroup% % \ybaselineshift\z@\tbaselineshift\z@ % #1% % \g@tlastchart@\@tempcntb % \xdef\pltx@composite@temp{\noexpand\@tempcntb=\the\@tempcntb\relax}% % \aftergroup\pltx@composite@temp % \egroup % \ifnum\@tempcntb<\z@ % \@tempdima=\iftdir % \ifmdir % \ifmmode\tbaselineshift\else\ybaselineshift\fi % \else % \tbaselineshift % \fi % \else % \ybaselineshift % \fi % \@tempcntb=\@cclvi % \else\@tempdima=\z@ % \fi % \ifnum\@tempcntb<\@cclvi % \ifnum\@tempcntb>\m@ne\ifnum\@tempcntb<\@cclvi % \ifodd\xspcode\@tempcntb\else\leavevmode\hbox{}\fi % \fi\fi % \begingroup\mathsurround\z@$% % \ifx\textbaselineshiftfactor\@undefined\else % \textbaselineshiftfactor\z@\fi % \box\z@ % $\endgroup% % \ifnum\@tempcntb>\m@ne\ifnum\@tempcntb<\@cclvi % \ifnum\xspcode\@tempcntb<2\hbox{}\fi % \fi\fi % \else % \ifdim\@tempdima=\z@{\ybaselineshift\z@\tbaselineshift\z@#1}% % \else\leavevmode\lower\@tempdima\box\z@\fi % \fi % \endgroup}% % \fi %} %\plEndIncludeInRelease %\plIncludeInRelease{2016/04/17}{\pltx@text@composite@x} % {Fix for non-zero baselineshift}% %\def\pltx@text@composite@x#1#2{% % \ifx#1\relax % \expandafter\@secondoftwo % \else % \expandafter\@firstoftwo % \fi % #1{#2}\egroup % \leavevmode % \expandafter\lower % \iftdir % \ifmdir % \ifmmode\tbaselineshift\else\ybaselineshift\fi % \else % \tbaselineshift % \fi % \else % \ybaselineshift % \fi % \box\z@ % \endgroup} %\plEndIncludeInRelease %\plIncludeInRelease{0000/00/00}{\pltx@text@composite@x} % {Fix for non-zero baselineshift}% %\let\pltx@text@composite@x\@undefined %\plEndIncludeInRelease % \end{macrocode} % \end{macro} % % \begin{macro}{\fixcompositeaccent} % \begin{macro}{\nofixcompositeaccent} % \begin{macro}{\@text@composite@x} % 上記2通りの定義のうち、本当は\pLaTeX{}の定義を用いたいのですが、 % 想定外のエラーが発生するのを防ぐため、 % デフォルトでは\LaTeX{}の定義のままとしておきます。 % そして、|\fixcompositeaccent|が有効な時だけ\pLaTeX{}の定義を用います。 % |\nofixcompositeaccent|はこの否定です。 % \changes{v1.6r}{2018/07/25}{\cs{[no]fixcompositeaccent}マクロ追加} % \begin{macrocode} %%\plIncludeInRelease{0000/00/00}{\@text@composite@x} %% {Special case! (This block is required for any emulation date)}% %<*plcore|platexrelease> \DeclareRobustCommand\fixcompositeaccent{% \let\oalign\pltx@oalign \let\ltx@sh@ft\pltx@ltx@sh@ft \let\@text@composite@x\pltx@text@composite@x } \DeclareRobustCommand\nofixcompositeaccent{% \let\oalign\pltx@saved@oalign \let\ltx@sh@ft\pltx@saved@ltx@sh@ft \let\@text@composite@x\pltx@saved@text@composite@x } \nofixcompositeaccent % %%\plEndIncludeInRelease % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\@text@composite@x} % エミュレーション専用のコードです。 % \changes{v1.6a}{2016/04/01}{ベースライン補正量が0でないときに % \cs{AA}など一部の合成文字がおかしくなることへの対応。} % \changes{v1.6c}{2016/06/06}{v1.6aでの修正で\'e など全てのアクセント付き文字で % 周囲に\cs{xkanjiskip}が入らなくなっていたのを修正。} % \changes{v1.6e}{2016/06/26}{v1.6a以降の修正で全てのアクセント付き文字で % トラブルが相次いだため、いったんパッチを除去。} % \changes{v1.6r}{2018/07/25}{コード整理} % \begin{macrocode} %\plIncludeInRelease{2018/07/28}{\fixcompositeaccent} % {Fix for non-zero baselineshift}% %\nofixcompositeaccent % force LaTeX original (conditional default) %% other commands are actually defined for pLaTeX2e 2018-07-28 %\plEndIncludeInRelease %\plIncludeInRelease{2016/07/01}{\fixcompositeaccent} % {Fix for non-zero baselineshift}% %\nofixcompositeaccent % force LaTeX original (always) %\let\fixcompositeaccent\@undefined %\let\nofixcompositeaccent\@undefined %\let\pltx@saved@oalign\@undefined %\let\pltx@oalign\@undefined %\let\pltx@saved@ltx@sh@ft\@undefined %\let\pltx@ltx@sh@ft\@undefined %\let\pltx@saved@text@composite@x\@undefined %\let\pltx@text@composite@x\@undefined %\plEndIncludeInRelease %\plIncludeInRelease{2016/04/17}{\fixcompositeaccent} % {Fix for non-zero baselineshift}% %\fixcompositeaccent % force pLaTeX definition (always) %\let\oalign\pltx@saved@oalign % no fix at that time %\let\ltx@sh@ft\pltx@saved@ltx@sh@ft % no fix at that time %\let\fixcompositeaccent\@undefined %\let\nofixcompositeaccent\@undefined %\let\pltx@saved@oalign\@undefined %\let\pltx@oalign\@undefined %\let\pltx@saved@ltx@sh@ft\@undefined %\let\pltx@ltx@sh@ft\@undefined %\let\pltx@saved@text@composite@x\@undefined %\let\pltx@text@composite@x\@undefined %\plEndIncludeInRelease %\plIncludeInRelease{0000/00/00}{\fixcompositeaccent} % {Fix for non-zero baselineshift}% %\nofixcompositeaccent % force LaTeX original (always) %\let\fixcompositeaccent\@undefined %\let\nofixcompositeaccent\@undefined %\let\pltx@saved@oalign\@undefined %\let\pltx@oalign\@undefined %\let\pltx@saved@ltx@sh@ft\@undefined %\let\pltx@ltx@sh@ft\@undefined %\let\pltx@saved@text@composite@x\@undefined %\let\pltx@text@composite@x\@undefined %\plEndIncludeInRelease % \end{macrocode} % \end{macro} % % % \subsection{イタリック補正と\cs{xkanjiskip}} % % \begin{macro}{\check@nocorr@} % 「\verb|あ\texttt{abc}い|」としたとき、書体の変更を指定された欧文の左側に % 和欧文間スペースが入らないのを修正します。 % \changes{v1.3i}{2000/07/13}{\cs{text..}コマンドの左側に\cs{xkanjiskip}が % 入らないのを修正(ありがとう、乙部@東大さん)} % % コミュニティ版の修正:p\TeX{}のバージョンp3.1.11以前は、イタリック補正 % (以下|\/|と記す)と|\xkanjiskip|の挿入が衝突\footnote{和文のイタリック % 補正用kernが、通常のexplicitな(\cs{kern}による)kernと同じ扱いを受けて % いたため。}し % \begin{enumerate} % \item 「欧文文字 → |\/|」の場合には|\/|を無視する % (つまり後に|\xkanjiskip|挿入可能) % \item 「和文文字 → |\/|」の場合にはこの後に|\xkanjiskip|は挿入できない % \end{enumerate} % という挙動になっていました。p3.2(2010年)の修正で % \begin{itemize} % \item |\xkanjiskip|挿入時にはいかなる場合も|\/|を無視する % \end{itemize} % という挙動に変更されました。p\LaTeX{}カーネルの|\check@nocorr@|の修正は、 % p3.1.11以前の2.への対処でしたが、これは「|\text...{}|の左への|\/|挿入」を % 無効化しているので、|\textit{f\textup{a}}|で本来入るべきイタリック補正が % 入りませんでした。p3.2以降ではp\TeX{}の|\xkanjiskip|対策が不要になって % いますので、コミュニティ版では削除しました。 % \changes{v1.6i}{2017/09/24}{2010年のp\TeX{}本体の修正により、v1.3iで入れた % 対処が不要になっていたので削除} % \begin{macrocode} %\plIncludeInRelease{2017/10/28}{\check@nocorr@} % {Italic correction before \textt...}% %\def \check@nocorr@ #1#2\nocorr#3\@nil {% % \let \check@icl \maybe@ic % \def \check@icr {\ifvmode \else \aftergroup \maybe@ic \fi}% % \def \reserved@a {\nocorr}% % \def \reserved@b {#1}% % \def \reserved@c {#3}% % \ifx \reserved@a \reserved@b % \ifx \reserved@c \@empty % \let \check@icl \@empty % \else % \let \check@icl \@empty % \let \check@icr \@empty % \fi % \else % \ifx \reserved@c \@empty % \else % \let \check@icr \@empty % \fi % \fi %} %\plEndIncludeInRelease %\plIncludeInRelease{0000/00/00}{\check@nocorr@} % {ASCII Corporation original}% %\def \check@nocorr@ #1#2\nocorr#3\@nil {% % \let \check@icl \relax % changed from \maybe@ic % \def \check@icr {\ifvmode \else \aftergroup \maybe@ic \fi}% % \def \reserved@a {\nocorr}% % \def \reserved@b {#1}% % \def \reserved@c {#3}% % \ifx \reserved@a \reserved@b % \ifx \reserved@c \@empty % \let \check@icl \@empty % \else % \let \check@icl \@empty % \let \check@icr \@empty % \fi % \else % \ifx \reserved@c \@empty % \else % \let \check@icr \@empty % \fi % \fi %} %\plEndIncludeInRelease % \end{macrocode} % \end{macro} % % % \begin{macro}{\<} % 最後に、|\inhibitglue|の簡略形を定義します。 % このコマンドは、和文フォントのメトリック情報から、自動的に挿入される % グルーの挿入を禁止します。 % % 2014年のp\TeX{}の|\inhibitglue|のバグ修正に伴い、 % |\inhibitglue|が垂直モードでは効かなくなりました。 % \LaTeX{}では垂直モードと水平モードの区別が隠されていますので、 % p\LaTeX{}の追加命令である|\<|は段落頭でも効くように修正します。 % % |\DeclareRobustCommand|を使うと|\protect|の影響で前方の文字に対する % |\inhibitglue|が効かなくなるので、e-\TeX{}の|\protected|が必要です。 % \changes{v1.6i}{2017/09/24}{\cs{<}が段落頭でも効くようにした} % \changes{v1.6v}{2020/02/01}{定義をpldefsからplcoreへ移動} % \begin{macrocode} %\plIncludeInRelease{2017/10/28}{\<} % {\inhibitglue in vertical mode}% %<*plcore|platexrelease> \ifx\protected\@undefined \def\<{\inhibitglue} \else \protected\def\<{\ifvmode\leavevmode\fi\inhibitglue} \fi % %\plEndIncludeInRelease %\plIncludeInRelease{0000/00/00}{\<} % {ASCII Corporation original}% %\def\<{\inhibitglue} %\plEndIncludeInRelease % \end{macrocode} % \end{macro} % % % \subsection{デフォルト設定ファイルの読み込み} % デフォルト設定ファイル\file{pldefs.ltx}は、もともと\file{plcore.ltx}の途中で % 読み込んでいましたが、2018年以降の新しいコミュニティ版\pLaTeX{}では % \file{platex.ltx}から読み込むことにしました。 % 実際の中身については、第\ref{plfonts:pldefs}節を参照してください。 % \changes{v1.6k}{2017/12/05}{デフォルト設定ファイルの読み込みを % \file{plcore.ltx}から\file{platex.ltx}へ移動} % % % \section{デフォルト設定ファイル}\label{plfonts:pldefs} % ここでは、フォーマットファイルに読み込まれるデフォルト値を設定しています。 % この節での内容は\file{pldefs.ltx}に出力されます。 % このファイルの内容を\file{plcore.ltx}に含めてもよいのですが、 % デフォルトの設定を参照しやすいように、別ファイルにしてあります。 % % プリロードサイズは、\dst{}プログラムのオプションで変更することができます。 % これ以外の設定を変更したい場合は、\file{pldefs.ltx}を % 直接、修正するのではなく、このファイルを\file{pldefs.cfg}という名前で % コピーをして、そのファイルに対して修正を加えるようにしてください。 % \begin{macrocode} %<*pldefs> \ProvidesFile{pldefs.ltx} [2020/02/01 v1.6v pLaTeX Kernel (Default settings)] % % \end{macrocode} % % \subsection{テキストフォント} % テキストフォントのための属性やエラー書体などの宣言です。 % p\LaTeX{}のデフォルトの横組エンコードはJY1、縦組エンコードはJT1とします。 % % \changes{v1.6s}{2019/08/13}{Explicitly set some defaults % after \cs{DeclareErrorKanjiFont} change % (sync with ltfssini.dtx 2019/07/09 v3.1c)} % \noindent % 縦横エンコード共通: % \begin{macrocode} %<*pldefs> \DeclareKanjiEncodingDefaults{}{} \DeclareErrorKanjiFont{JY1}{mc}{m}{n}{10} \kanjifamily{mc} \kanjiseries{m} \kanjishape{n} \fontsize{10}{10} % \end{macrocode} % 横組エンコード: % \begin{macrocode} \DeclareYokoKanjiEncoding{JY1}{}{} \DeclareKanjiSubstitution{JY1}{mc}{m}{n} % \end{macrocode} % 縦組エンコード: % \begin{macrocode} \DeclareTateKanjiEncoding{JT1}{}{} \DeclareKanjiSubstitution{JT1}{mc}{m}{n} % \end{macrocode} % 縦横のエンコーディングのセット化: % \changes{v1.6j}{2017/11/06}{縦横のエンコーディングのセット化を % plcoreからpldefsへ移動} % \begin{macrocode} \KanjiEncodingPair{JY1}{JT1} % \end{macrocode} % フォント属性のデフォルト値: % \LaTeXe~2019-10-01までは|\shapedefault|は|\updefault|でしたが、 % \LaTeXe~2020-02-02で|\updefault|が``n''から``up''へと修正されたことに % 伴い、|\shapedefault|は明示的に``n''に設定されました。 % \changes{v1.6v}{2020/02/01}{Set \cs{kanjishapedefault} explicitly to ``n'' % (sync with fontdef.dtx 2019/12/17 v3.0e)} % \begin{macrocode} \newcommand\mcdefault{mc} \newcommand\gtdefault{gt} \newcommand\kanjiencodingdefault{JY1} \newcommand\kanjifamilydefault{\mcdefault} \newcommand\kanjiseriesdefault{\mddefault} \newcommand\kanjishapedefault{n}% formerly \updefault % \end{macrocode} % 和文エンコードの指定: % \begin{macrocode} \kanjiencoding{JY1} % \end{macrocode} % フォント定義: % これらの具体的な内容は第\ref{plfonts:fontdef}節を参照してください。 % \changes{v1.3}{1997/01/24}{Rename font definition filename.} % \begin{macrocode} \input{jy1mc.fd} \input{jy1gt.fd} \input{jt1mc.fd} \input{jt1gt.fd} % \end{macrocode} % フォントを有効にします。 % \begin{macrocode} \fontencoding{JT1}\selectfont \fontencoding{JY1}\selectfont % \end{macrocode} % % \changes{v1.3b}{1997/01/30}{数式用フォントの宣言をクラスファイルに移動した} % % % \subsection{プリロードフォント} % あらかじめフォーマットファイルにロードされるフォントの宣言です。 % \dst{}プログラムのオプションでロードされるフォントのサイズを % 変更することができます。\file{plfmt.ins}では|xpt|を指定しています。 % \begin{macrocode} %<*xpt> \DeclarePreloadSizes{JY1}{mc}{m}{n}{5,7,10,12} \DeclarePreloadSizes{JY1}{gt}{m}{n}{5,7,10,12} \DeclarePreloadSizes{JT1}{mc}{m}{n}{5,7,10,12} \DeclarePreloadSizes{JT1}{gt}{m}{n}{5,7,10,12} % %<*xipt> \DeclarePreloadSizes{JY1}{mc}{m}{n}{5,7,10.95,12} \DeclarePreloadSizes{JY1}{gt}{m}{n}{5,7,10.95,12} \DeclarePreloadSizes{JT1}{mc}{m}{n}{5,7,10.95,12} \DeclarePreloadSizes{JT1}{gt}{m}{n}{5,7,10.95,12} % %<*xiipt> \DeclarePreloadSizes{JY1}{mc}{m}{n}{7,9,12,14.4} \DeclarePreloadSizes{JY1}{gt}{m}{n}{7,9,12,14.4} \DeclarePreloadSizes{JT1}{mc}{m}{n}{7,9,12,14.4} \DeclarePreloadSizes{JT1}{gt}{m}{n}{7,9,12,14.4} % %<*ori> \DeclarePreloadSizes{JY1}{mc}{m}{n} {5,6,7,8,9,10,10.95,12,14.4,17.28,20.74,24.88} \DeclarePreloadSizes{JY1}{gt}{m}{n} {5,6,7,8,9,10,10.95,12,14.4,17.28,20.74,24.88} \DeclarePreloadSizes{JT1}{mc}{m}{n} {5,6,7,8,9,10,10.95,12,14.4,17.28,20.74,24.88} \DeclarePreloadSizes{JT1}{gt}{m}{n} {5,6,7,8,9,10,10.95,12,14.4,17.28,20.74,24.88} % % \end{macrocode} % % % \subsection{組版パラメータ} % 禁則パラメータや文字間へ挿入するスペースの設定などです。 % 実際の各文字への禁則パラメータおよびスペースの挿入の許可設定などは、 % \file{kinsoku.tex}で行なっています。 % 具体的な設定については、\file{kinsoku.dtx}を参照してください。 % \begin{macrocode} \InputIfFileExists{kinsoku.tex}% {\message{Loading kinsoku patterns for japanese.}} {\errhelp{The configuration for kinsoku is incorrectly installed.^^J% If you don't understand this error message you need to seek^^Jexpert advice.}% \errmessage{OOPS! I can't find any kinsoku patterns for japanese^^J% \space Think of getting some or the platex2e setup will never succeed}\@@end} % \end{macrocode} % % 組版パラメータの設定をします。 % |\kanjiskip|は、漢字と漢字の間に挿入されるグルーです。 % |\noautospacing|で、挿入を中止することができます。 % デフォルトは|\autospacing|です。 % \begin{macrocode} \kanjiskip=0pt plus .4pt minus .5pt \autospacing % \end{macrocode} % |\xkanjiskip|は、和欧文間に自動的に挿入されるグルーです。 % |\noautoxspacing|で、挿入を中止することができます。 % デフォルトは|\autoxspacing|です。 % \changes{v1.1c}{1995/09/12}{\cs{xkanjiskip}のデフォルト値} % \begin{macrocode} \xkanjiskip=.25zw plus1pt minus1pt \autoxspacing % \end{macrocode} % |\jcharwidowpenalty|は、パラグラフに対する禁則です。 % パラグラフの最後の行が1文字だけにならないように調整するために使われます。 % \begin{macrocode} \jcharwidowpenalty=500 % \end{macrocode} % % ここまでが、\file{pldefs.ltx}の内容です。 % \begin{macrocode} % % \end{macrocode} % % % % \section{フォント定義ファイル}\label{plfonts:fontdef} % \changes{v1.3}{1997/01/24}{Rename provided font definition filename.} % ここでは、フォント定義ファイルの設定をしています。フォント定義ファイルは、 % \LaTeX{}のフォント属性を\TeX{}フォントに置き換えるためのファイルです。 % 記述方法についての詳細は、|fntguide.tex|を参照してください。 % % 欧文書体の設定については、 % \file{cmfonts.fdd}や\file{slides.fdd}などを参照してください。 % \file{skfonts.fdd}には、写研代用書体を使うためのパッケージと % フォント定義が記述されています。 % \begin{macrocode} %\ProvidesFile{jy1mc.fd} %\ProvidesFile{jy1gt.fd} %\ProvidesFile{jt1mc.fd} %\ProvidesFile{jt1gt.fd} % [2018/07/03 v1.6q KANJI font defines] % \end{macrocode} % 横組用、縦組用ともに、 % 明朝体のシリーズ|bx|がゴシック体となるように宣言しています。 % \changes{v1.2}{1995/11/24}{it, sl, scの宣言を外した} % \changes{v1.3b}{1997/01/29}{フォント定義ファイルのサイズ指定の調整} % \changes{v1.3b}{1997/03/11}{すべてのサイズをロード可能にした} % また、シリーズ|b|は同じ書体の|bx|と等価になるように宣言します。 % \changes{v1.6q}{2018/07/03}{シリーズbがbxと等価になるように宣言} % % p\LaTeX{}では従属書体にOT1エンコーディングを指定しています。 % また、要求サイズ(指定されたフォントサイズ)が10ptのとき、 % 全角幅の実寸が9.62216ptとなるようにしますので、 % 和文スケール値($1\,\mathrm{zw} \div \textmc{要求サイズ}$)は % $9.62216\,\mathrm{pt}/10\,\mathrm{pt}=0.962216$です。 % min10系のメトリックは全角幅が9.62216ptでデザインされているので、 % これを1倍で読込みます。 % \changes{v1.6l}{2018/02/04}{和文スケール値を明文化} % \begin{macrocode} %<*JY1mc> \DeclareKanjiFamily{JY1}{mc}{} \DeclareRelationFont{JY1}{mc}{m}{}{OT1}{cmr}{m}{} \DeclareRelationFont{JY1}{mc}{bx}{}{OT1}{cmr}{bx}{} \DeclareFontShape{JY1}{mc}{m}{n}{<5> <6> <7> <8> <9> <10> sgen*min <10.95><12><14.4><17.28><20.74><24.88> min10 <-> min10 }{} \DeclareFontShape{JY1}{mc}{bx}{n}{<->ssub*gt/m/n}{} \DeclareFontShape{JY1}{mc}{b}{n}{<->ssub*mc/bx/n}{} % %<*JT1mc> \DeclareKanjiFamily{JT1}{mc}{} \DeclareRelationFont{JT1}{mc}{m}{}{OT1}{cmr}{m}{} \DeclareRelationFont{JT1}{mc}{bx}{}{OT1}{cmr}{bx}{} \DeclareFontShape{JT1}{mc}{m}{n}{<5> <6> <7> <8> <9> <10> sgen*tmin <10.95><12><14.4><17.28><20.74><24.88> tmin10 <-> tmin10 }{} \DeclareFontShape{JT1}{mc}{bx}{n}{<->ssub*gt/m/n}{} \DeclareFontShape{JT1}{mc}{b}{n}{<->ssub*mc/bx/n}{} % %<*JY1gt> \DeclareKanjiFamily{JY1}{gt}{} \DeclareRelationFont{JY1}{gt}{m}{}{OT1}{cmr}{bx}{} \DeclareFontShape{JY1}{gt}{m}{n}{<5> <6> <7> <8> <9> <10> sgen*goth <10.95><12><14.4><17.28><20.74><24.88> goth10 <-> goth10 }{} \DeclareFontShape{JY1}{gt}{bx}{n}{<->ssub*gt/m/n}{} \DeclareFontShape{JY1}{gt}{b}{n}{<->ssub*gt/bx/n}{} % %<*JT1gt> \DeclareKanjiFamily{JT1}{gt}{} \DeclareRelationFont{JT1}{gt}{m}{}{OT1}{cmr}{bx}{} \DeclareFontShape{JT1}{gt}{m}{n}{<5> <6> <7> <8> <9> <10> sgen*tgoth <10.95><12><14.4><17.28><20.74><24.88> tgoth10 <-> tgoth10 }{} \DeclareFontShape{JT1}{gt}{bx}{n}{<->ssub*gt/m/n}{} \DeclareFontShape{JT1}{gt}{b}{n}{<->ssub*gt/bx/n}{} % % \end{macrocode} % % % \Finale % \endinput