% \iffalse meta-comment
%% File: uplatex.dtx
%
%    pLaTeX base file:
%       Copyright 1995,1996 ASCII Corporation.
%    and modified for upLaTeX
%
%  Copyright (c) 2010 ASCII MEDIA WORKS
%  Copyright (c) 2016 Takuji Tanaka
%  Copyright (c) 2016-2017 Japanese TeX Development Community
%
%  This file is part of the upLaTeX2e system (community edition).
%  --------------------------------------------------------------
%
% \fi
%
% \iffalse
%<*driver|pldoc>
\ifx\JAPANESEtrue\undefined
  \expandafter\newif\csname ifJAPANESE\endcsname
  \JAPANESEtrue
\fi
%</driver|pldoc>
% \fi
%
% \setcounter{StandardModuleDepth}{1}
% \makeatletter
%\ifJAPANESE
% \def\chuui{\@ifnextchar[{\@chuui}{\@chuui[注意：]}}
%\else
% \def\chuui{\@ifnextchar[{\@chuui}{\@chuui[Attention: ]}}
%\fi
% \def\@chuui[#1]{\par\vskip.5\baselineskip
%   \noindent{\em #1}\par\bgroup\gtfamily\sffamily}
% \def\endchuui{\egroup\vskip.5\baselineskip}
% \makeatother
%
% \iffalse
%<*driver|pldoc>
\def\eTeX{$\varepsilon$-\pTeX}
\def\pTeX{p\kern-.15em\TeX}
\def\epTeX{$\varepsilon$-\pTeX}
\def\pLaTeX{p\kern-.05em\LaTeX}
\def\pLaTeXe{p\kern-.05em\LaTeXe}
\def\upTeX{u\pTeX}
\def\eupTeX{$\varepsilon$-\upTeX}
\def\upLaTeX{u\pLaTeX}
\def\upLaTeXe{u\pLaTeXe}
%</driver|pldoc>
% \fi
%
% \StopEventually{}
%
% \iffalse
%\ifJAPANESE
% \changes{v1.0c-u00}{2011/05/07}{\pLaTeX{}用から\upLaTeX{}用に修正。
%     (based on platex.dtx 1997/01/29 v1.0c)}
% \changes{v1.0e-u00}{2016/04/06}{\pLaTeX{}の変更に追随。
%     (based on platex.dtx 2016/02/16 v1.0e)}
% \changes{v1.0h-u00}{2016/05/08}{ドキュメントから\file{uplpatch.ltx}を除外
%     (based on platex.dtx 2016/05/08 v1.0h)}
% \changes{v1.0k-u00}{2016/05/21}{\pLaTeX{}の変更に追随。
%     (based on platex.dtx 2016/05/21 v1.0k)}
% \changes{v1.0k-u01}{2016/06/06}{\upLaTeX{}用にドキュメントを全体的に改訂}
% \changes{v1.0l-u01}{2016/06/19}{パッチレベルを\file{uplvers.dtx}から取得
%     (based on platex.dtx 2016/06/19 v1.0l)}
% \changes{v1.0m-u01}{2016/08/26}{\file{uplatex.cfg}の読み込みを
%    \file{uplcore.ltx}から\file{uplatex.ltx}へ移動
%     (based on platex.dtx 2016/08/26 v1.0m)}
% \changes{v1.0n-u01}{2016/09/14}{\pLaTeX{}の変更に追随。
%     (based on platex.dtx 2016/09/14 v1.0n)}
% \changes{v1.0p-u01}{2017/11/11}{\pLaTeX{}の変更に追随。
%     (based on platex.dtx 2017/11/11 v1.0p)}
% \changes{v1.0q-u01}{2017/11/29}{英語版ドキュメントを追加
%     (based on platex.dtx 2017/11/29 v1.0q)}
% \changes{v1.0r-u01}{2017/12/02}{\upLaTeX{}と\upTeX{}の参考文献も追加}
%\else
% \changes{v1.0c-u00}{2011/05/07}{Created \upLaTeX\ version based on \pLaTeX\ one
%     (based on platex.dtx 1997/01/29 v1.0c)}
% \changes{v1.0e-u00}{2016/04/06}{Sync with \pLaTeX.
%     (based on platex.dtx 2016/02/16 v1.0e)}
% \changes{v1.0h-u00}{2016/05/08}{Exclude \file{uplpatch.ltx} from the document
%     (based on platex.dtx 2016/05/08 v1.0h)}
% \changes{v1.0k-u00}{2016/05/21}{Sync with \pLaTeX.
%     (based on platex.dtx 2016/05/21 v1.0k)}
% \changes{v1.0k-u01}{2016/06/06}{Update documents for \upLaTeX.}
% \changes{v1.0l-u01}{2016/06/19}{Get the patch level from \file{uplvers.dtx}
%     (based on platex.dtx 2016/06/19 v1.0l)}
% \changes{v1.0m-u01}{2016/08/26}{Moved loading \file{uplatex.cfg}
%    from \file{uplcore.ltx} to \file{uplatex.ltx}
%     (based on platex.dtx 2016/08/26 v1.0m)}
% \changes{v1.0n-u01}{2016/09/14}{Sync with \pLaTeX.
%     (based on platex.dtx 2016/09/14 v1.0n)}
% \changes{v1.0p-u01}{2017/11/11}{Sync with \pLaTeX.
%     (based on platex.dtx 2017/11/11 v1.0p)}
% \changes{v1.0q-u01}{2017/11/29}{New English documentation added!
%     (based on platex.dtx 2017/11/29 v1.0q)}
% \changes{v1.0r-u01}{2017/12/02}{\upLaTeX\ and \upTeX\ references added}
%\fi
% \fi
%
% \iffalse
%<*driver>
\NeedsTeXFormat{pLaTeX2e}
% \fi
\ProvidesFile{uplatex.dtx}[2017/12/02 v1.0r-u01 upLaTeX document file]
% \iffalse
\documentclass{jltxdoc}
\usepackage{plext}
\GetFileInfo{uplatex.dtx}
\ifJAPANESE
\title{\upLaTeXe{}について}
\author{中野 賢 \& 日本語\TeX{}開発コミュニティ \& TTK}
\date{作成日：\filedate}
\renewcommand{\refname}{参考文献}
\GlossaryPrologue{\section*{変更履歴}%
                  \markboth{変更履歴}{変更履歴}%
                  \addcontentsline{toc}{section}{変更履歴}}
\else
\title{About \upLaTeXe{}}
\author{Ken Nakano \& Japanese \TeX\ Development Community \& TTK}
\date{Date: \filedate}
\renewcommand{\refname}{References}
\GlossaryPrologue{\section*{Change History}%
                  \markboth{Change History}{Change History}%
                  \addcontentsline{toc}{section}{Change History}}
\fi
\makeatletter
\ifJAPANESE
\def\levelchar{>・}
\fi
\def\changes@#1#2#3{%
  \let\protect\@unexpandable@protect
  \edef\@tempa{\noexpand\glossary{#2\space#1\levelchar
    \ifx\saved@macroname\@empty
%     \space\actualchar\generalname: %% comment out (uplatex.dtx only)
    \else
      \expandafter\@gobble
      \saved@macroname\actualchar
      \string\verb\quotechar*%
      \verbatimchar\saved@macroname
      \verbatimchar:
    \fi
    #3}}%
  \@tempa\endgroup\@esphack}
\makeatother
\RecordChanges
\begin{document}
   \MakeShortVerb{\+}
   \maketitle
   \DocInput{\filename}
   \StopEventually{\end{document}}
   \clearpage
   % Make TeX shut up.
   \hbadness=10000
   \newcount\hbadness
   \hfuzz=\maxdimen
   \PrintChanges
   \let\PrintChanges\relax
\end{document}
%</driver>
% \fi
%
%
%\ifJAPANESE
% \changes{v1.0c-u00}{2011/05/07}{\pLaTeX{}用から\upLaTeX{}用に修正。
%     (based on platex.dtx 1997/01/29 v1.0c)}
% \changes{v1.0k-u01}{2016/06/06}{\upLaTeX{}用にドキュメントを全体的に改訂}
% \changes{v1.0q-u01}{2017/11/29}{英語版ドキュメントを追加
%     (based on platex.dtx 2017/11/29 v1.0q)}
%\else
% \changes{v1.0c-u00}{2011/05/07}{Created \upLaTeX\ version based on \pLaTeX\ one
%     (based on platex.dtx 1997/01/29 v1.0c)}
% \changes{v1.0k-u01}{2016/06/06}{Update documents for \upLaTeX.}
% \changes{v1.0q-u01}{2017/11/29}{New English documentation added!
%     (based on platex.dtx 2017/11/29 v1.0q)}
%\fi
% \begin{chuui}
%\ifJAPANESE
% この文書は、「コミュニティ版\pLaTeXe{}」をベースに\upTeX{}向けの調整を
% 加えた、「コミュニティ版\upLaTeXe{}」の付属文書です。
%\else
% This document provides a brief description of \upLaTeXe, the Japanese
% extended version of \LaTeXe. This version is based on
% `\pLaTeXe\ Community Edition.'
% It is now maintained by Japanese \TeX\ Development
% Community\footnote{\texttt{https://texjp.org}}.
%\fi
% \end{chuui}
%
%\ifJAPANESE
% アスキー\pTeX{}は、高品質の日本語組版ソフトウェアとしてデファクト
% スタンダードの地位にあるといえます。しかし、\pTeX{}には
% \begin{itemize}
% \item 直接使える文字集合が原則的にJIS X 0208（JIS第1,2水準）の範囲に限定
%   されていること、
% \item 8bitの非英語欧文との親和性が高いとは言えないこと、
% \item \pTeX{}の利用が日本語に限られ、中国語・韓国語との混植への利用が
%   進んでいないこと
% \end{itemize}
% といった弱点がありました。
%
% これらの弱点を克服するため、\pTeX{}の内部コードをUnicode化した拡張版
% が\upTeX{}です。また、\upTeX{}上で用いるUnicode版\pLaTeX{}が\upLaTeX{}で
% す\footnote{\texttt{http://www.t-lab.opal.ne.jp/tex/uptex.html}}。
% 現在の\upLaTeX{}は、日本語\TeX{}開発コミュニティが配布しているコミュニティ
% 版\pLaTeX{}\footnote{\texttt{https://github.com/texjporg/platex}}を
% ベースにしています。開発中の版は\pLaTeX{}と同様に、GitHubの
% リポジトリ\footnote{\texttt{https://github.com/texjporg/uplatex}}で
% 管理しています。\upLaTeX{}はアスキーとは無関係ですので、
% バグレポートはアスキー宛てではなく、日本語\TeX{}開発コミュニティに報告
% してください。\TeX\ ForumやGitHubのIssueシステムが利用できます。
%\else
% ASCII \pTeX\ is the most popular \TeX\ engine in Japan and is widely
% used for a high-quality typesetting, even for commercial printing.
% However, \pTeX\ has some limitations:
% \begin{itemize}
% \item The Character set available is limited to JIS X 0208,
%   namely JIS level-1 and level-2
% \item Difficulty in handlign 8-bit Latin, due to legacy double byte
%   Japanese encodings
% \item Difficulty in typesetting CJK (Chinese, Japanese and Korean)
%  multilingual documents
% \end{itemize}
%
% To overcome these weak points,
% a Unicode extension of \pTeX, \upTeX, has been
% developed.\footnote{\texttt{http://www.t-lab.opal.ne.jp/tex/uptex.html}}
% The Unicode \pLaTeX\ format run on \upTeX\ is called \upLaTeX.
% Current \upLaTeX\ is maintained by Japanese \TeX\ Development
% Community,\footnote{\texttt{https://texjp.org}}
% in sync with \pLaTeX\ community
% edition.\footnote{\texttt{https://github.com/texjporg/platex}}
% The development version is available from
% GitHub repository\footnote{\texttt{https://github.com/texjporg/uplatex}}.
% Any bug reports and requests should be sent to
% Japanese \TeX\ Development Community, using GitHub Issue system.
%\fi
%
%
% \clearpage
%
%\ifJAPANESE
% \section{この文書について}\label{platex:intro}
% この文書は\upLaTeXe{}の概要を示していますが、使い方のガイドでは
% ありません。ほとんどの機能は元となっている\pLaTeXe{}や\LaTeXe{}と
% 同等ですので、それぞれの付属文書などを参照してください。
%
% \upTeX{}については公式ウェブサイトあるいは\cite{tb108tanaka}（英語）を
% 参照してください。
%\else
% \section{Introduction to this document}\label{platex:intro}
% This document briefly describes \upLaTeXe, but is not a manual of \upLaTeXe.
% The basic functions of \upLaTeXe\ are almost the same with those of
% \pLaTeXe\ and \LaTeXe, so please refer to the documentation of those formats.
%
% For \upTeX, please refer to the official website or
% \cite{tb108tanaka} (in English).
%\fi
%
%\ifJAPANESE
% この文書の構成は次のようになっています。
%
% \begin{quote}
% \begin{description}
% \item[第\ref{platex:intro}節]
%  この節です。この文書についての概要を述べています。
%
% \item[第\ref{platex:plcore}節]
%  \upLaTeXe{}で拡張した機能についての概要です。
%  付属のクラスファイルやパッケージファイルについても簡単に
%  説明しています。
%
% \item[第\ref{platex:compatibility}節]
%  現在のバージョンの\upLaTeX{}と旧バージョン、あるいは元となっている
% \pLaTeX{}/\LaTeX{}との互換性について述べています。
%
% \item[付録\ref{app:dst}]
%  この文書ソース(uplatex.dtx)の
%  \dst{}のためのオプションについて述べています。
%
% \item[付録\ref{app:pldoc}]
%  \upLaTeXe{}のdtxファイルをまとめて、一つのソースコード説明書に
%  するための文書ファイルの説明をしています。
%
% \item[付録\ref{app:omake}]
%  付録\ref{app:pldoc}で説明した文書ファイルを処理するshスクリプト（手順）
%  などについて説明しています。
% \end{description}
% \end{quote}
%\else
% This document consists of following parts:
%
% \begin{quote}
% \begin{description}
% \item[Section \ref{platex:intro}]
%  This section; describes this document itself.
%
% \item[Section \ref{platex:plcore}]
%  Brief explanation of extensions in \upLaTeXe.
%  Also describes the standard classes and packages.
%
% \item[Section \ref{platex:compatibility}]
%  The compatibility note for users of the old version of
%  \upLaTeXe\ or those of the original \pLaTeXe/\LaTeXe.
%
% \item[Appendix \ref{app:dst}]
%  Describes \dst\ Options for this document.
%
% \item[Appendix \ref{app:pldoc}]
%  Description of `upldoc.tex' (counterpart for `source2e.tex' in \LaTeXe).
%
% \item[Appendix \ref{app:omake}]
%  Description of a shell script to process `upldoc.tex', etc.
% \end{description}
% \end{quote}
%\fi
%
%
%\ifJAPANESE
% \section{\upLaTeXe{}の機能について}\label{platex:plcore}
% \upLaTeXe{}が提供するファイルは、次の3種類に分類することができます。
% この構成は\pLaTeXe{}と同様です。
%
% \begin{itemize}
% \item フォーマットファイル
% \item クラスファイル
% \item パッケージファイル
% \end{itemize}
%\else
% \section{About Functions of \pLaTeXe}\label{platex:plcore}
% The structure of \upLaTeXe\ is similar to that of \pLaTeXe;
% it consists of 3 types of files: a format (uplatex.ltx),
% classes and packages.
%\fi
%
%\ifJAPANESE
% \subsection{フォーマットファイル}
% \upLaTeX{}のフォーマットファイルを作成するには、
% ソースファイル``uplatex.ltx''を\eupTeX{}のINIモードで処理します
% \footnote{2016年以前は\upTeX{}と\eupTeX{}のどちらでもフォーマットを作成する
% ことができましたが、2017年に\LaTeX{}が\eTeX{}必須となったことに伴い、
% \upLaTeX{}も\eupTeX{}が必須となりました。}。
% ただし、\TeX\ LiveやW32\TeX{}ではこの処理を簡単にする|fmtutil-sys|あるいは
% |fmtutil|というプログラムが用意されています。
% 以下を実行すれば、フォーマットファイル\file{uplatex.fmt}が作成されます。
%\else
% \subsection{About the Format}
% To make a format for \upLaTeX,
% process ``uplatex.ltx'' with INI mode of \eupTeX.\footnote{Formerly
% both \upTeX\ and \eupTeX\ can make the format file for \upLaTeX, however,
% it's not true anymore because \LaTeX\ requires \eTeX\ since 2017.}
% A handy command `fmtutil-sys' (or `fmtutil') for this purpose
% is available in \TeX\ Live. The following command generates \file{uplatex.fmt}.
%\fi
%\begin{verbatim}
%   fmtutil-sys --byfmt uplatex
%\end{verbatim}
%
%\ifJAPANESE
% 次のリストが、\file{uplatex.ltx}の内容です。
% ただし、このバージョンでは、\LaTeX{}から\upLaTeX{}への拡張を
% \file{uplcore.ltx}をロードすることで行ない、
% \file{latex.ltx}には直接、手を加えないようにしています。
% したがって\file{uplatex.ltx}はとても短いものとなっています。
% \file{latex.ltx}には\LaTeX{}のコマンドが、
% \file{uplcore.ltx}には\upLaTeX{}で拡張したコマンドが定義されています。
%\else
% The content of \file{uplatex.ltx} is shown below.
% In the current version of \upLaTeX,
% first we simply load \file{latex.ltx} and
% modify/extend some definitions by loading \file{uplcore.ltx}.
%\fi
%    \begin{macrocode}
%<*plcore>
%    \end{macrocode}
%
%\ifJAPANESE
% \file{latex.ltx}の末尾で使われている|\dump|をいったん無効化します。
%\else
% Temporarily disable |\dump| at the end of \file{latex.ltx}.
%\fi
%    \begin{macrocode}
\let\orgdump\dump
\let\dump\relax
%    \end{macrocode}
%
%\ifJAPANESE
% \file{latex.ltx}を読み込みます。
% \TeX\ Liveの標準的インストールでは、この中でBabel由来のハイフネーション・
% パターン\file{hyphen.cfg}が読み込まれるはずです。
%\else
% Load \file{latex.ltx} here.
% Within the standard installation of \TeX\ Live, \file{hyphen.cfg}
% provided by ``Babel'' package will be used.
%\fi
%    \begin{macrocode}
\input latex.ltx
%    \end{macrocode}
%
%\ifJAPANESE
% \file{uplcore.ltx}を読み込みます。
%\else
% Load \file{uplcore.ltx}.
%\fi
%    \begin{macrocode}
\typeout{**************************^^J%
         *^^J%
         * making upLaTeX format^^J%
         *^^J%
         **************************}
\makeatletter
\input uplcore.ltx
%    \end{macrocode}
%
%\ifJAPANESE
% フォーマット作成時に\upLaTeX{}のバージョンがわかるように、
% 端末に表示します。
%\else
% Display \upLaTeX\ version on the terminal, so that
% it can be easily recognized during format creation.
%\fi
%    \begin{macrocode}
\the\everyjob
%    \end{macrocode}
%
%\ifJAPANESE
% \upLaTeXe{}の起動時に\file{uplatex.cfg}がある場合、それを読み込む
% ようにします（\pLaTeXe{}が\file{platex.cfg}を読み込むのと同様）。
% バージョン2016/07/01ではコードを\file{uplcore.ltx}に入れていました
% が、\file{uplatex.ltx}へ移動しました。
% \changes{v1.0m-u01}{2016/08/26}{\file{uplatex.cfg}の読み込みを
%    \file{uplcore.ltx}から\file{uplatex.ltx}へ移動
%     (based on platex.dtx 2016/08/26 v1.0m)}
%\else
% Load \file{uplatex.cfg} if it exists at runtime of \upLaTeXe.
% (Counterpart of \file{platex.cfg} in \pLaTeXe.)
% \changes{v1.0m-u01}{2016/08/26}{Moved loading \file{uplatex.cfg}
%    from \file{uplcore.ltx} to \file{uplatex.ltx}
%     (based on platex.dtx 2016/08/26 v1.0m)}
%\fi
%    \begin{macrocode}
\everyjob\expandafter{%
  \the\everyjob
  \IfFileExists{uplatex.cfg}{%
    \typeout{*************************^^J%
             * Loading uplatex.cfg.^^J%
             *************************}%
    \input{uplatex.cfg}}{}%
}
%    \end{macrocode}
%
%\ifJAPANESE
% フォーマットファイルにダンプします。
%\else
% Dump to the format file.
%\fi
%    \begin{macrocode}
\let\dump\orgdump
\let\orgdump\@undefined
\makeatother
\dump
%\endinput
%    \end{macrocode}
%
%    \begin{macrocode}
%</plcore>
%    \end{macrocode}
%
%\ifJAPANESE
% 実際に\upLaTeXe{}への拡張を行なっている\file{uplcore.ltx}は、
% \dst{}プログラムによって、次のファイルの断片が連結されたものです。
%
% \begin{itemize}
% \item \file{uplvers.dtx}は、\upLaTeXe{}のフォーマットバージョンを
%   定義しています。
% \item \file{uplfonts.dtx}は、\NFSS2を拡張しています。
% \item このほか、\pLaTeXe{}に含まれる\file{plcore.dtx}をそのまま利用
%   しています。これは、上記以外のコマンドでフォーマットファイルに
%   格納されるコマンドを定義しています。
% \end{itemize}
%
% また、プリロードフォントや組版パラメータなどのデフォルト設定は、
% \file{uplcore.ltx}の中で\file{upldefs.ltx}をロードすることにより行います。
% このファイル\file{upldefs.ltx}も\file{uplfonts.dtx}から生成されます。
% \begin{chuui}
% このファイルに記述されている設定を変更すれば
% \upLaTeXe{}をカスタマイズすることができますが、
% その場合は\file{upldefs.ltx}を直接修正するのではなく、いったん
% \file{upldefs.cfg}という名前でコピーして、そのファイルを編集してください。
% フォーマット作成時に\file{upldefs.cfg}が存在した場合は、そちらが
% \file{upldefs.ltx}の代わりに読み込まれます。
% \end{chuui}
%\else
% The file \file{uplcore.ltx}, which provides modifications/extensions
% to make \upLaTeXe, is a concatenation of stripped files below
% using \dst\ program.
%
% \begin{itemize}
% \item \file{uplvers.dtx} defines the format version of \upLaTeXe.
% \item \file{uplfonts.dtx} extends \NFSS2 for Japanese font selection.
% \item \file{plcore.dtx} (the same content as \pLaTeXe); defines other
%   modifications to \LaTeXe.
% \end{itemize}
%
% Moreover, default settings of pre-loaded fonts and typesetting parameters
% are done by loading \file{upldefs.ltx} inside \file{uplcore.ltx}.
% This file \file{upldefs.ltx} is also stripped from \file{uplfonts.dtx}.
% \begin{chuui}
% You can customize \upLaTeXe\ by tuning these settings.
% If you need to do that, copy/rename it as \file{upldefs.cfg} and edit it,
% instead of overwriting \file{upldefs.ltx} itself.
% If a file named \file{upldefs.cfg} is found at a format creation
% time, it will be read as a substitute of \file{upldefs.ltx}.
% \end{chuui}
%\fi
%
%\ifJAPANESE
% ここまで見てきたように、\upLaTeX{}の各ファイルはそれぞれ\pLaTeX{}での
% 対応するファイル名の頭に``u''を付けた名前になっています。
%\else
% As shown above, the files in \upLaTeX\ is named after \pLaTeX\ ones,
% prefixed with ``u.''
%\fi
%
%
%\ifJAPANESE
% \subsubsection{バージョン}
% \upLaTeXe{}のバージョンやフォーマットファイル名は、
% \file{uplvers.dtx}で定義しています。これは、\pLaTeXe{}のバージョンや
% フォーマットファイル名が\file{plvers.dtx}で定義されているのと同じです。
%\else
% \subsubsection{Version}
% The version (like ``\pfmtversion'') and the format name
% (``\pfmtname'') of \upLaTeXe\ are defined in \file{uplvers.dtx}.
% This is similar to \pLaTeXe, which defines those in \file{plvers.dtx}.
%\fi
%
%
%\ifJAPANESE
% \subsubsection{\NFSS2コマンド}
% \upLaTeXe{}は、\pLaTeXe{}と同じ方式で\NFSS2を拡張し、
% 和文フォントを選択できるようにしています。
%\else
% \subsubsection{\NFSS2 Commands}
% \upLaTeXe\ extends \NFSS2 in the same way as \pLaTeXe, to enable
% selection of Japanese fonts.
%\fi
%
%
%\ifJAPANESE
% \subsubsection{出力ルーチンとフロート}
% \upLaTeXe{}は\pLaTeXe{}と共通の\file{plcore.dtx}を使用していますので、
% 出力ルーチンや脚注マクロなどは\pLaTeXe{}と同じように動作します。
%\else
% \subsubsection{Output Routine and Floats}
% \upLaTeXe\ shares \file{plcore.dtx} with \pLaTeXe, so
% the output routine and footnote macros will behave similar to \pLaTeXe.
%\fi
%
%
%\ifJAPANESE
% \subsection{クラスファイルとパッケージファイル}
%
% \upLaTeXe{}が提供をするクラスファイルやパッケージファイルは、
% \pLaTeXe{}に含まれるファイルを基にしています。
%
% \upLaTeXe{}に付属のクラスファイルは、次のとおりです。
%
% \begin{itemize}
% \item ujarticle.cls, ujbook.cls, ujreport.cls\par
%   横組用の標準クラスファイル。
%   \file{ujclasses.dtx}から作成される。
%   それぞれjarticle.cls, jbook.cls, jreport.clsの\upLaTeX{}版。
%
% \item utarticle.cls, utbook.cls, utreport.cls\par
%   縦組用の標準クラスファイル。
%   \file{ujclasses.dtx}から作成される。
%   それぞれtarticle.cls, tbook.cls, treport.clsの\upLaTeX{}版。
% \end{itemize}
%
% なおjltxdoc.clsの\upLaTeX{}版はありませんが、これは\pLaTeX{}のものが
% \upLaTeX{}でもそのまま使えます。
%\else
% \subsection{Classes and Packages}
%
% Classes and packages bundled with \upLaTeXe\ are based on
% those in original \pLaTeXe, and modified some parameters.
%
% \upLaTeXe\ classes:
%
% \begin{itemize}
% \item ujarticle.cls, ujbook.cls, ujreport.cls\par
%   Standard \emph{yoko-kumi} (horizontal writing) classes;
%   stripped from \file{ujclasses.dtx}.
%   \upLaTeX\ edition of jarticle.cls, jbook.cls and jreport.cls.
%
% \item utarticle.cls, utbook.cls, utreport.cls\par
%   Standard \emph{tate-kumi} (vertical writing) classes;
%   stripped from \file{ujclasses.dtx}.
%   \upLaTeX\ edition of tarticle.cls, tbook.cls and treport.cls.
% \end{itemize}
%
% We don't provide \upLaTeX\ edition of jltxdoc.cls, but the one
% from \pLaTeX\ can be used also on \upLaTeX\ without problem.
%\fi
%
%\ifJAPANESE
% また、\upLaTeXe{}に付属のパッケージファイルは、次のとおりです。
%
% \begin{itemize}
% \item uptrace.sty\par
%   ptrace.styの\upLaTeX{}版。
%   \LaTeX{}でフォント選択コマンドのトレースに使う\file{tracefnt.sty}が
%   再定義してしまう\NFSS2コマンドを、\upLaTeXe{}用に再々定義するための
%   パッケージ。
%   \file{uplfonts.dtx}から作成される。
% \end{itemize}
%
% 他の\pLaTeX{}のパッケージは、\upLaTeX{}でもそのまま動作します。
%\else
% \upLaTeXe\ packages:
%
% \begin{itemize}
% \item uptrace.sty\par
%   \upLaTeXe\ version of \file{tracefnt.sty};
%   the package \file{tracefnt.sty} overwrites \upLaTeXe-style \NFSS2
%   commands, so \file{uptrace.sty} provides redefinitions to recover
%   \upLaTeXe\ extensions. Stripped from \file{uplfonts.dtx}.
% \end{itemize}
%
% Other \pLaTeX\ packages work also on \upLaTeX.
%\fi
%
%
%\ifJAPANESE
% \section{他のフォーマット・旧バージョンとの互換性}
% \label{platex:compatibility}
% ここでは、この\upLaTeXe{}のバージョンと以前のバージョン、あるいは
% \pLaTeXe{}/\LaTeXe{}との互換性について説明をしています。
%
% \subsection{\pLaTeXe{}および\LaTeXe{}との互換性}
% \upLaTeXe{}は、\pLaTeXe{}の上位互換という形を取っていますので、
% クラスファイルやいくつかのコマンドを置き換えるだけで、
% たいていの\pLaTeXe{}文書を簡単に\upLaTeXe{}文書に変更することができます。
% ただし、\upLaTeXe{}のデフォルトの日本語フォントメトリックは\pLaTeXe{}の
% それと異なりますので、レイアウトが変化することがあります。
% また、\LaTeXe{}のいくつかの命令の定義も変更していますので、
% \LaTeXe{}で処理できるファイルを\upLaTeXe{}で処理した場合に
% 完全に同じ結果になるとは限りません。
%
% また、\upLaTeXe{}は新しいマクロパッケージですので、2.09互換モードを
% サポートしていません。\LaTeXe{}の仕様に従ってドキュメントを作成して
% ください。
%
% \pLaTeXe{}向けあるいは\LaTeXe{}向けに作られた多くのクラスファイルや
% パッケージファイルはそのまま使えると思います。
% ただし、例えばクラスファイルが\pLaTeX{}標準の
% 漢字エンコーディング(JY1, JT1)を前提としている場合は、
% \upLaTeX{}で採用した漢字エンコーディング(JY2, JT2)と合致せずに
% エラーが発生してしまいます。この場合は、そのクラスファイルが
% \upLaTeX{}に対応していないことになります。このような場合は、
% \pLaTeX{}を使い続けるか、その作者に連絡して\upLaTeX{}に対応して
% もらうなどの対応をとってください。
%\else
% \section{Compatibility with Other Formats and Older Versions}
% \label{platex:compatibility}
% Here we provide some information about the compatibility between
% current \upLaTeXe\ and older versions or original \pLaTeXe/\LaTeXe.
%
% \subsection{Compatibility with \pLaTeXe/\LaTeXe}
% \upLaTeXe\ is in most part upper compatible with \pLaTeXe,
% so you can move from \pLaTeXe\ to \upLaTeXe\ by simply replacing
% the document class and some macros. However, the default Japanese
% font metrics in \upLaTeXe\ is different from those in \pLaTeXe;
% therefore, you should not expect identical output from both
% \pLaTeXe\ and \upLaTeXe.
%
% Note that \upLaTeX\ is a new format, so we do \emph{not} provide support
% for 2.09 compatibility mode. Follow the standard \LaTeXe\ convention!
%
% We hope that most classes and packages meant for \LaTeXe/\pLaTeXe\ works
% also for \upLaTeXe\ without any modification. However for example,
% if a class or a package uses Kanji encoding `JY1' or `JT1' (default on
% \pLaTeXe), an error complaining the mismatch of Kanji encoding might
% happen on \upLaTeX, in which the default is `JY2' and `JT2.'
% In this case, we have to say that the class or package does not support
% \upLaTeXe; you should use \pLaTeX, or report to the author of the
% package or class.
%\fi
%
%\ifJAPANESE
% \subsection{latexreleaseパッケージへの対応}
% \LaTeX\ \texttt{<2015/01/01>}で導入されたlatexreleaseパッケージを
% もとに、新しい\pLaTeX{}ではplatexreleaseパッケージが用意されました。
% 本来は\upLaTeX{}でも同様のパッケージを用意するのがよいのですが、
% 現在は\pLaTeX{}から\upLaTeX{}への変更点が含まれていませんので、
% 幸いplatexreleaseパッケージをそのまま用いることができます。
% このため、\upLaTeX{}で独自のパッケージを用意することはしていません。
% platexreleaseパッケージを用いると、過去の\upLaTeX{}をエミュレート
% したり、フォーマットを作り直すことなく新しい\upLaTeX{}を試したりする
% ことができます。詳細はplatexreleaseのドキュメントを参照してください。
%\else
% \subsection{Support for Package `latexrelease'}
% \pLaTeX\ provides `platexrelease' package, which is based on
% `latexrelease' package (introduced in \LaTeX\ \texttt{<2015/01/01>}).
% It could be better if we also provide a similar package on \upLaTeX,
% but currently we don't need it; \upLaTeX\ does not have any recent
% \upLaTeX-specific changes. So, you can safely use `platexrelease'
% package for emulating the specified format date.
%\fi
%
%
%
% \appendix
%
%\ifJAPANESE
% \section{\dst{}プログラムのためのオプション}\label{app:dst}
% この文書のソース(\file{uplatex.dtx})を\dst{}プログラムで
% 処理することによって、
% いくつかの異なるファイルを生成することができます。
% \dst{}プログラムの詳細は、\file{docstrip.dtx}を参照してください。
%
% この文書の\dst{}プログラムのためのオプションは、次のとおりです。
%
% \DeleteShortVerb{\|}
% \begin{center}
% \begin{tabular}{l|p{.8\linewidth}}
% \emph{オプション} & \emph{意味}\\\hline
% plcore & フォーマットファイルを作るためのファイルを生成\\
% pldoc  & \upLaTeXe{}のソースファイルをまとめて組版するための
%          文書ファイル(upldoc.tex)を生成\\[2mm]
% shprog & 上記のファイルを作成するためのshスクリプトを生成\\
% Xins   & 上記のshスクリプトやperlスクリプトを取り出すための
%          \dst{}バッチファイル(Xins.ins)を生成\\
% \end{tabular}
% \end{center}
% \MakeShortVerb{\|}
%\else
% \section{\dst\ Options}\label{app:dst}
% By processing \file{uplatex.dtx} with \dst\ program,
% different files can be generated.
% Here are the \dst\ options for this document:
%
% \DeleteShortVerb{\|}
% \begin{center}
% \begin{tabular}{l|p{.8\linewidth}}
% \emph{Option} & \emph{Function}\\\hline
% plcore & Generates a fragment of format sources\\
% pldoc  & Generates `upldoc.tex' for typesetting
%          \upLaTeXe\ sources\\[2mm]
% shprog & Generates a shell script to process `upldoc.tex'\\
% Xins   & Generates a \dst\ batch file `Xins.ins' for
%          generating the above shell/perl scripts\\
% \end{tabular}
% \end{center}
% \MakeShortVerb{\|}
%\fi
%
%
%\ifJAPANESE
% \section{文書ファイル}\label{app:pldoc}
% ここでは、このパッケージに含まれているdtxファイルをまとめて組版し、
% ソースコード説明書を得るための文書ファイル\file{upldoc.tex}について
% 説明をしています。個別に処理した場合と異なり、
% 変更履歴や索引も付きます。
%
% デフォルトではソースコードの説明が日本語で書かれます。
% もし英語の説明書を読みたい場合は、\par\medskip
% \begin{minipage}{.5\textwidth}\ttfamily
% | |\cs{newif}\cs{ifJAPANESE}
% \end{minipage}\par\medskip\noindent
% という内容の\file{uplatex.cfg}を予め用意してから\file{upldoc.tex}を
% 処理してください（2016年7月1日以降の\upLaTeXe{}が必要）。
%
% コードは\pLaTeXe{}のものと（ファイル名を除き）ほぼ同一なので、
% ここでは違っている部分だけ説明します。
%\else
% \section{Documentation of \upLaTeXe\ sources}\label{app:pldoc}
% The contents of `upldoc.tex' for typesetting \upLaTeXe\ sources
% is described here. Compared to individual processings,
% batch processing using `upldoc.tex' prints also changes and an index.
%
% By default, the description of \upLaTeXe\ sources is written in
% Japanese. If you need English version, first save\par\medskip
% \begin{minipage}{.5\textwidth}\ttfamily
% | |\cs{newif}\cs{ifJAPANESE}
% \end{minipage}\par\medskip\noindent
% as \file{uplatex.cfg}, and process \file{upldoc.tex}
% (\upLaTeXe\ newer than July 2016 is required).
%
% Here we explain only difference between \file{pldoc.tex} (\pLaTeXe)
% and \file{upldoc.tex} (\upLaTeXe).
%\fi
%
%    \begin{macrocode}
%<*pldoc>
\begin{filecontents}{upldoc.dic}
西暦    せいれき
和暦    われき
\end{filecontents}
%    \end{macrocode}
%\ifJAPANESE
% \pLaTeXe{}のドキュメントでは、\file{plext.dtx}の中で組み立てるサンプル
% のために\file{plext}パッケージが必要ですが、\upLaTeXe{}のファイル
% にはそのようなサンプルが含まれないので除外しています。
%\else
% The document of \pLaTeXe\ requires \file{plext} package,
% since \file{plext.dtx} contains several examples of partial
% vertical writing. However, we don't have such examples in
% \upLaTeXe\ files, so no need for it.
%\fi
%    \begin{macrocode}
\documentclass{jltxdoc}
%\usepackage{plext} %% comment out for upLaTeX
\listfiles

\DoNotIndex{\def,\long,\edef,\xdef,\gdef,\let,\global}
\DoNotIndex{\if,\ifnum,\ifdim,\ifcat,\ifmmode,\ifvmode,\ifhmode,%
            \iftrue,\iffalse,\ifvoid,\ifx,\ifeof,\ifcase,\else,\or,\fi}
\DoNotIndex{\box,\copy,\setbox,\unvbox,\unhbox,\hbox,%
            \vbox,\vtop,\vcenter}
\DoNotIndex{\@empty,\immediate,\write}
\DoNotIndex{\egroup,\bgroup,\expandafter,\begingroup,\endgroup}
\DoNotIndex{\divide,\advance,\multiply,\count,\dimen}
\DoNotIndex{\relax,\space,\string}
\DoNotIndex{\csname,\endcsname,\@spaces,\openin,\openout,%
            \closein,\closeout}
\DoNotIndex{\catcode,\endinput}
\DoNotIndex{\jobname,\message,\read,\the,\m@ne,\noexpand}
\DoNotIndex{\hsize,\vsize,\hskip,\vskip,\kern,\hfil,\hfill,\hss,\vss,\unskip}
\DoNotIndex{\m@ne,\z@,\z@skip,\@ne,\tw@,\p@,\@minus,\@plus}
\DoNotIndex{\dp,\wd,\ht,\setlength,\addtolength}
\DoNotIndex{\newcommand, \renewcommand}

\ifJAPANESE
\IndexPrologue{\part*{索 引}%
                 \markboth{索 引}{索 引}%
                 \addcontentsline{toc}{part}{索 引}%
イタリック体の数字は、その項目が説明されているページを示しています。
下線の引かれた数字は、定義されているページを示しています。
その他の数字は、その項目が使われているページを示しています。}
\else
\IndexPrologue{\part*{Index}%
                 \markboth{Index}{Index}%
                 \addcontentsline{toc}{part}{Index}%
The italic numbers denote the pages where the corresponding entry
is described, numbers underlined point to the definition,
all others indicate the places where it is used.}
\fi
%
\ifJAPANESE
\GlossaryPrologue{\part*{変更履歴}%
                 \markboth{変更履歴}{変更履歴}%
                 \addcontentsline{toc}{part}{変更履歴}}
\else
\GlossaryPrologue{\part*{Change History}%
                 \markboth{Change History}{Change History}%
                 \addcontentsline{toc}{part}{Change History}}
\fi

\makeatletter
\def\changes@#1#2#3{%
  \let\protect\@unexpandable@protect
  \edef\@tempa{\noexpand\glossary{#2\space\currentfile\space#1\levelchar
               \ifx\saved@macroname\@empty
                  \space\actualchar\generalname
               \else
                  \expandafter\@gobble
                  \saved@macroname\actualchar
                  \string\verb\quotechar*%
                  \verbatimchar\saved@macroname
                  \verbatimchar
               \fi
               :\levelchar #3}}%
  \@tempa\endgroup\@esphack}
\makeatother
\RecordChanges
\CodelineIndex
\EnableCrossrefs
\setcounter{IndexColumns}{2}
\settowidth\MacroIndent{\ttfamily\scriptsize 000\ }
%    \end{macrocode}
%\ifJAPANESE
% ここからが本文ページとなります。
% \changes{v1.0h-u00}{2016/05/08}{ドキュメントから\file{uplpatch.ltx}を除外
%     (based on platex.dtx 2016/05/08 v1.0h)}
% \changes{v1.0l-u01}{2016/06/19}{パッチレベルを\file{uplvers.dtx}から取得
%     (based on platex.dtx 2016/06/19 v1.0l)}
%\else
% Here starts the document body.
% \changes{v1.0h-u00}{2016/05/08}{Exclude \file{uplpatch.ltx} from the document
%     (based on platex.dtx 2016/05/08 v1.0h)}
% \changes{v1.0l-u01}{2016/06/19}{Get the patch level from \file{uplvers.dtx}
%     (based on platex.dtx 2016/06/19 v1.0l)}
%\fi
%    \begin{macrocode}
\begin{document}
 \title{The \upLaTeXe\ Sources}
 \author{Ken Nakano \& Japanese \TeX\ Development Community \& TTK}

% This command will be used to input the patch file
% if that file exists.
\newcommand{\includeltpatch}{%
  \def\currentfile{uplpatch.ltx}
  \part{uplpatch}
  {\let\ttfamily\relax
    \xdef\filekey{\filekey, \thepart={\ttfamily\currentfile}}}%
  Things we did wrong\ldots
  \IndexInput{uplpatch.ltx}}

% Get the date and patch level from uplvers.dtx
\makeatletter
\let\patchdate=\@empty
\begingroup
   \def\ProvidesFile#1\pfmtversion#2#3\ppatch@level#4{%
      \date{#2}\xdef\patchdate{#4}\endinput}
   \input{uplvers.dtx}
\global\let\X@date=\@date

% Add the patch version if available.
   \long\def\Xdef#1#2#3\def#4#5{%
    \xdef\X@date{#2}%
    \xdef\patchdate{#5}%
    \endinput}%
   \InputIfFileExists{uplpatch.ltx}
    {\let\def\Xdef}{\global\let\includeltpatch\relax}
\endgroup

\ifx\@date\X@date
  \def\Xpatch{0}
  \ifx\patchdate\Xpatch\else
  % number is assumed
  \ifnum\patchdate>0
    \edef\@date{\@date\space Patch level\space\patchdate}
  \else
    \edef\@date{\@date\space Pre-Release\patchdate}
  \fi\fi
\else
   \@warning{uplpatch.ltx does not match uplvers.dtx!}
   \let\includeltpatch\relax
\fi
\makeatother

\pagenumbering{roman}
\maketitle
\renewcommand\maketitle{}
\tableofcontents
\clearpage
\pagenumbering{arabic}

\DocInclude{uplvers}   % upLaTeX version

\DocInclude{uplfonts}  % NFSS2 commands

%\DocInclude{plcore}   % kernel commands (comment out for upLaTeX)

\DocInclude{ukinsoku}  % kinsoku parameter

\DocInclude{ujclasses} % Standard class

%\includeltpatch       % patch file (comment out May 8, 2016)

\StopEventually{\end{document}}

\clearpage
\pagestyle{headings}
% Make TeX shut up.
\hbadness=10000
\newcount\hbadness
\hfuzz=\maxdimen
%
\PrintChanges
\clearpage
%
\begingroup
  \def\endash{--}
  \catcode`\-\active
  \def-{\futurelet\temp\indexdash}
  \def\indexdash{\ifx\temp-\endash\fi}

  \PrintIndex
\endgroup
\let\PrintChanges\relax
\let\PrintIndex\relax
\end{document}
%</pldoc>
%    \end{macrocode}
%
%
%
%\ifJAPANESE
% \section{おまけプログラム}\label{app:omake}
%
% \subsection{シェルスクリプト\file{mkpldoc.sh}}\label{app:shprog}
% \upLaTeXe{}のマクロ定義ファイルをまとめて組版し、変更履歴と索引も
% 付けるときに便利なシェルスクリプトです。
% このシェルスクリプトの使用方法は次のとおりです。
%\begin{verbatim}
%    sh mkpldoc.sh
%\end{verbatim}
%
% コードは\pLaTeXe{}のものと（ファイル名を除き）ほぼ同一なので、
% ここでは違っている部分だけ説明します。
%\else
% \section{Additional Utility Programs}\label{app:omake}
%
% \subsection{Shell Script \file{mkpldoc.sh}}\label{app:shprog}
% A shell script to process `pldoc.tex' and produce a fully indexed
% source code description. Run |sh mkpldoc.sh| to use it.
%
% The script is almost identical to that in \pLaTeXe, so
% here we describe only the difference.
%\fi
%
%    \begin{macrocode}
%<*shprog>
for f in upldoc.toc upldoc.idx upldoc.glo ; do
if [ -e $f ]; then rm $f; fi
done
echo "" > ltxdoc.cfg
uplatex upldoc.tex
%    \end{macrocode}
%\ifJAPANESE
% 変更履歴や索引の生成にはmendexを用いますが、
% \upLaTeX{}の場合はUTF-8モードで実行する必要がありますので、
% |-U|というオプションを付けます\footnote{uplatexコマンドも
% 実際にはUTF-8モードで実行する必要がありますが、デフォルトの内部漢字
% コードがUTF-8に設定されているはずですので、\texttt{-kanji=utf8}を
% 付けなくても処理できると思います。}。
% makeindexコマンドには、このオプションがありません。
%\else
% To make the Change log and Glossary (Change History) for
% \upLaTeX\ using `mendex,' we need to run it in UTF-8 mode.
% So, option |-U| is important.\footnote{The command `uplatex'
% should be also in UTF-8 mode, but it defaults to UTF-8 mode;
% therefore, we don't need to add \texttt{-kanji=utf8} explicitly.}
%\fi
%    \begin{macrocode}
mendex -U -s gind.ist -d upldoc.dic -o upldoc.ind upldoc.idx
mendex -U -f -s gglo.ist -o upldoc.gls upldoc.glo
echo "\includeonly{}" > ltxdoc.cfg
uplatex upldoc.tex
echo "" > ltxdoc.cfg
uplatex upldoc.tex
# EOT
%</shprog>
%    \end{macrocode}
%
%
%\ifJAPANESE
% \subsection{perlスクリプト\file{dstcheck.pl}}\label{app:plprog}
% \pLaTeXe{}のものがそのまま使えるので、\upLaTeXe{}では省略します。
%\else
% \subsection{Perl Script \file{dstcheck.pl}}\label{app:plprog}
% The one from \pLaTeXe\ can be use without any change, so
% omitted here in \upLaTeXe.
%\fi
%
%
%\ifJAPANESE
% \subsection{\dst{}バッチファイル}
% 付録\ref{app:shprog}で説明をしたスクリプトを、このファイルから
% 取り出すための\dst{}バッチファイルです。コードは\pLaTeXe{}の
% ものと（ファイル名を除き）ほぼ同一なので、説明は割愛します。
%\else
% \subsection{\dst{} Batch file}
% Here we introduce a \dst\ batch file `Xins.ins,' which generates the
% script described in Appendix \ref{app:shprog}.
% The code is almost identical to that in \pLaTeXe.
%\fi
%
%    \begin{macrocode}
%<*Xins>
\input docstrip
\keepsilent
%    \end{macrocode}
%
%    \begin{macrocode}
{\catcode`#=12 \gdef\MetaPrefix{## }}
%    \end{macrocode}
%
%    \begin{macrocode}
\declarepreamble\thispre
\endpreamble
\usepreamble\thispre
%    \end{macrocode}
%
%    \begin{macrocode}
\declarepostamble\thispost
\endpostamble
\usepostamble\thispost
%    \end{macrocode}
%
%    \begin{macrocode}
\generate{
   \file{mkpldoc.sh}{\from{uplatex.dtx}{shprog}}
}
\endbatchfile
%</Xins>
%    \end{macrocode}
%
% \newpage
% \begin{thebibliography}{9}
% \bibitem{tb108tanaka}
% Takuji Tanaka,
% \newblock Up\TeX\ --- Unicode version of \pTeX\ with CJK extensions
% \newblock TUGboat issue 34:3, 2013].\\
%   (\texttt{http://tug.org/TUGboat/tb34-3/tb108tanaka.pdf})
% \end{thebibliography}
%
% \iffalse
% ここで、このあとに組版されるかもしれない文書のために、
% 節見出しの番号を算用数字に戻します。
% \fi
%
% \renewcommand{\thesection}{\arabic{section}}
%
% \Finale
%
\endinput
