% \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 Japanese TeX Development Community % % This file is part of the upLaTeX2e system (community edition). % -------------------------------------------------------------- % % \fi % % % \setcounter{StandardModuleDepth}{1} % \makeatletter % \def\chuui{\@ifnextchar[{\@chuui}{\@chuui[注意:]}} % \def\@chuui[#1]{\par\vskip.5\baselineskip % \noindent{\em #1}\par\bgroup\gtfamily\sffamily} % \def\endchuui{\egroup\vskip.5\baselineskip} % \makeatother % \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} % \StopEventually{} % % \iffalse % \changes{v1.0}{1995/05/08}{first edition} % \changes{v1.0a}{1995/08/25}{互換性について、\dst{}の使い方、参考文献を追加} % \changes{v1.0b}{1996/02/01}{\file{omake-sh.ins}, \file{omake-pl.ins}を % \dst{}の変更にともなう変更をした} % \changes{v1.0c}{1997/01/23}{\LaTeX\ \textt{!<1996/12/01!>}に合わせて修正} % \changes{v1.0c-u00}{2011/05/07}{p\LaTeX{}用からup\LaTeX{}用に修正。} % \changes{v1.0d}{2016/01/27}{\file{mkpldoc.sh}を改善。 % p\LaTeXe{}に付属するファイルの説明を更新} % \changes{v1.0e}{2016/02/16}{platexreleaseの説明を追加} % \changes{v1.0e-u00}{2016/04/06}{p\LaTeX{}の変更に追随。} % \changes{v1.0f}{2016/04/12}{ドキュメントを更新} % \changes{v1.0g-u00}{2016/05/07}{フォーマット作成時に\LaTeX{}のバナーを一旦保存} % \changes{v1.0h-u00}{2016/05/08}{ドキュメントから\file{uplpatch.ltx}を除外} % \changes{v1.0i-u00}{2016/05/12}{一時コマンド\cs{orgdump}を最終的に未定義へ} % \changes{v1.0j}{2016/05/20}{pfltraceの説明を追加} % \changes{v1.0k}{2016/05/21}{変更履歴も出力するようにした} % \changes{v1.0k-u00}{2016/05/21}{p\LaTeX{}の変更に追随。} % \changes{v1.0k-u01}{2016/06/06}{up\LaTeX{}用にドキュメントを全体的に改訂} % \changes{v1.0l-u01}{2016/06/19}{パッチレベルを\file{uplvers.dtx}から取得} % \changes{v1.0m-u01}{2016/08/26}{\file{uplatex.cfg}の読み込みを % \file{uplcore.ltx}から\file{uplatex.ltx}へ移動} % \changes{v1.0n-u01}{2016/09/14}{\LaTeX{}のバナーの保存しかたを改良} % \fi % % \iffalse %<*driver> \NeedsTeXFormat{pLaTeX2e} % \fi \ProvidesFile{uplatex.dtx}[2016/09/14 v1.0n-u01 upLaTeX document file] % \iffalse \documentclass{jltxdoc} \usepackage{plext} \GetFileInfo{uplatex.dtx} \title{up\LaTeXe{}について} \author{Ken Nakano \& Japanese \TeX\ Development Community \& TTK} \date{作成日:\filedate} \renewcommand{\refname}{参考文献} \GlossaryPrologue{\section*{変更履歴}% \markboth{変更履歴}{変更履歴}% \addcontentsline{toc}{section}{変更履歴}} \makeatletter \def\levelchar{>・} \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} % % \fi % % % \changes{v1.0c-u00}{2011/05/07}{p\LaTeX{}用からup\LaTeX{}用に修正。} % \changes{v1.0e-u00}{2016/04/06}{p\LaTeX{}の変更に追随。} % ^^A \changes{v1.0f}{2016/04/12}{ドキュメントを更新} % ^^A \changes{v1.0k}{2016/05/21}{変更履歴も出力するようにした} % \changes{v1.0k-u00}{2016/05/21}{p\LaTeX{}の変更に追随。} % \changes{v1.0k-u01}{2016/06/06}{up\LaTeX{}用にドキュメントを全体的に改訂} % \begin{chuui} % これは、アスキーのオリジナル版からforkしたコミュニティ版\pLaTeXe{}の % 付属文書を\upLaTeXe{}用に書き換えたものです。 % \end{chuui} % % アスキー\pTeX{}には、高品質の日本語組版ソフトウェアとしてデファクト % スタンダードの地位にあるといえます。しかし、 % (1) 直接使える文字集合が原則的にJIS X 0208(JIS第1,2水準)の範囲に限定 % されていること、 % (2) 8bitの非英語欧文との親和性が高いとは言えないこと、 % (3) \pTeX{}の利用が日本語に限られ、中国語・韓国語との混植への利用が % 進んでいないこと、といった弱点がありました。 % % これらの弱点を克服するため、\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}}で % 管理しています。 % % より詳細な\upTeX{}や\upLaTeX{}の情報は、 % それぞれ\file{README\_uplatex.txt}や\file{README\_uptex.txt}などの % テキストファイルを参照してください。 % % % \clearpage % % \section{概要}\label{platex:intro} % この文書は、up\LaTeXe{}の概要を示していますが、使い方のガイドではありません。 % 元となっているp\LaTeXe{}や\LaTeXe{}については、それぞれp\LaTeXe{}と % \LaTeXe{}の付属文書を参照してください。 % ^^A 元となっているp\LaTeXe{}の機能についての説明は、\cite{platex2e-book}を % ^^A 参照してください。日本語\TeX{}については\cite{jtex-tech}を参照してください。 % ^^A \changes{v1.0}{1995/05/08}{first edition} % ^^A \changes{v1.0a}{1995/08/25}{互換性について、\dst{}の使い方、参考文献を追加} % ^^A % ^^A p\LaTeXe{}では\cite{tate-book}で説明されている、いくつかの拡張コマンドの % ^^A 動作を修正しています。その詳細については、\file{plext.dtx}を参照して % ^^A ください。 % ^^A % ^^A \LaTeX{}の機能については、\cite{latex-book2}や\cite{latex-comp}などを % ^^A 参照してください。新しい機能については\file{usrguide.tex}を参照してください。 % % この文書の構成は次のようになっています。 % % \begin{quote} % \begin{description} % \item[第\ref{platex:intro}節] % この節です。この文書についての概要を述べています。 % % \item[第\ref{platex:plcore}節] % up\LaTeXe{}で拡張した機能についての概要です。 % 付属のクラスファイルやパッケージファイルについても簡単に % 説明しています。 % % ^^A \item[第\ref{platex:compatibility}節] % ^^A 旧バージョンのp\LaTeX{}との互換性について述べています。 % % \item[付録\ref{app:dst}] % この文書ソースの\dst{}のためのオプションについて述べています。 % % \item[付録\ref{app:pldoc}] % up\LaTeXe{}のdtxファイルをまとめて一つのDVIファイルにするための % 文書ファイルの説明をしています。 % % \item[付録\ref{app:omake}] % 付録\ref{app:pldoc}で説明をした文書ファイルを処理するshスクリプト(手順)、 % \dst{}文書ファイル内の入れ子の対応を調べるperlスクリプトなどについて % 説明しています。 % \end{description} % \end{quote} % % % % \section{up\LaTeXe{}の機能について}\label{platex:plcore} % up\LaTeXe{}の機能は、いくつものファイルに分割されて実装されています。 % これらのファイルはつぎの3種類に分類することができます。 % % \begin{itemize} % \item フォーマットファイル % \item クラスファイル % \item パッケージファイル % \end{itemize} % % フォーマットファイルには、基本的な機能が定義されており、 % up\LaTeXe{}の核となるファイルです。このファイルに定義されているマクロは、 % 実行時の速度を高めるために、あらかじめ\TeX の内部形式の形で保存されて % います。 % % クラスファイルは文書のレイアウトを設定するファイル、 % パッケージファイルはマクロの拡張を定義するファイルです。 % 前者は|\documentclass|コマンドを用いて読み込み、 % 後者は|\usepackage|コマンドを用いて読み込みます。 % % \begin{chuui}[古いp\LaTeX~2.09ユーザへの注意:]%\normalfont % u\pLaTeX{}は新しいマクロパッケージですので、2.09互換モードはサポートして % いません。\LaTeXe{}の仕様に従ってドキュメントを作成してください。 % ^^A クラスファイルとパッケージファイルは、従来、スタイルファイルと呼ばれていた % ^^A ものです。\LaTeXe{}ではそれらを、レイアウトに関するものをクラスファイルと % ^^A 呼び、マクロの拡張をするものをパッケージファイルと呼んで区別するように % ^^A なりました。 % % ^^A \TeX{}文書が使用するクラスは、文書のプリアンブルで|\documentclass|コマンド % ^^A を用いて指定します。|\documentclass|ではなく、旧版の|\documentstyle|を % ^^A 用いると、自動的に\emph{2.09互換モード}に入ります。 % ^^A 互換モードは旧版の文書を組版するためだけに作られていますので、 % ^^A 新しく文書を作成する場合は、|\documentclass|コマンドを用いてください。 % ^^A 互換モードでは\LaTeX{}の新機能も使えなくなります。 % % ^^A 旧版では、|\documentstyle|のオプションでマクロファイルを読み込んで % ^^A いましたが、\LaTeX{}では、|\usepackage|コマンドを用いて読み込みます。 % \end{chuui} % % \subsection{フォーマットファイル} % フォーマットファイルには、基本的な機能が定義されていますが、 % これらは\TeX{}の内部形式に変換された形式となっています。 % フォーマットファイルを作成するには、 % ソースファイル``uplatex.ltx''を|iniuptex|プログラムで処理します。 % ただし、\TeX\ LiveやW32\TeX{}ではこの処理を簡単にする|fmtutil|あるいは % |fmtutil-sys|というプログラムが用意されています。 % 以下を実行すれば、フォーマットファイル\file{uplatex.fmt}が作成されます。 %\begin{verbatim} % fmtutil --byfmt uplatex %\end{verbatim} % % 次のリストが、``uplatex.ltx''のの内容です。 % ただし、このバージョンでは、\LaTeX{}からup\LaTeXe{}への拡張を % \file{uplcore.ltx}をロードすることで行ない、 % \file{latex.ltx}には直接、手を加えないようにしています。 % したがって\file{uplatex.ltx}はとても短いものとなっています。 % \file{latex.ltx}には\LaTeX{}のコマンドが、 % \file{uplcore.ltx}にはup\LaTeXe{}で拡張したコマンドが定義されています。 % \begin{macrocode} %<*plcore> % \end{macrocode} % % \file{latex.ltx}の末尾で使われている|\dump|をいったん無効化します。 % \begin{macrocode} \let\orgdump\dump \let\dump\relax % \end{macrocode} % % \file{latex.ltx}を読み込み、起動時のバナーを保存します。\TeX\ Liveの標準的 % インストールでは、この中でBabel由来のハイフネーション・パターン % \file{hyphen.cfg}が読み込まれ、そのバージョンも含めて保存されるはずです。 % %\iffalse % 2016/05/07の実装では、\file{platex.ltx}のなかで %\begin{verbatim} % \edef\platexBANNER{\the\everyjob} %\end{verbatim} % としてバナーを保存し、この内容が %\begin{verbatim} % \typeout{LaTeX2e version}\typeout{Babel version} %\end{verbatim} % という4つのトークンから成ると仮定して、\file{plcore.ltx}のなかで %\begin{verbatim} % \def\parse@@BANNER#1#2#3#4{#2} %\end{verbatim} % のようにパースしていました。ところが、この「4つのトークンから成る」と % いう仮定はBabel由来の\file{hyphen.cfg}を使用した場合のみ成り立ち、 % それ以外の特別な\file{hyphen.cfg}や\file{hyphen.ltx}を使用した場合に % エラーになってしまいます。 % そこで、新たに2016/09/14の実装では、\file{platex.ltx}のなかで %\begin{verbatim} % \edef\platexBANNER{\the\everyjob\noexpand\typeout{}\relax} %\end{verbatim} % としてダミーを追加します(|\relax|はただの区切りトークンの役割)。 % こうすると、|\platexBANNER|の内容は、Babelの\file{hyphen.cfg}のとき %\begin{verbatim} % \typeout{LaTeX2e version}\typeout{Babel version}\typeout{}\relax %\end{verbatim} % となり、それ以外のとき %\begin{verbatim} % \typeout{LaTeX2e version}\typeout{}\relax %\end{verbatim} % となるはずです。このように、少なくとも|\typeout|が2回含まれています % ので、\file{plcore.ltx}のなかで %\begin{verbatim} % \def\parse@@BANNER\typeout#1\typeout#2#3\relax{#1} %\end{verbatim} % とパースすることができるようになります。 %\fi % % \changes{v1.0g-u00}{2016/05/07}{フォーマット作成時に\LaTeX{}のバナーを一旦保存} % \changes{v1.0n-u01}{2016/09/14}{\LaTeX{}のバナーの保存しかたを改良} % \begin{macrocode} \input latex.ltx \edef\platexBANNER{\the\everyjob\noexpand\typeout{}\relax}% save LaTeX banner % \end{macrocode} % % \file{uplcore.ltx}を読み込み、このup\LaTeX{}のバージョンを表示します。 % \begin{macrocode} \typeout{**************************^^J% *^^J% * making upLaTeX format^^J% *^^J% **************************} \makeatletter \input uplcore.ltx \the\everyjob % \end{macrocode} % % 起動時に\file{uplatex.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}へ移動} % \begin{macrocode} \everyjob\expandafter{% \the\everyjob \IfFileExists{uplatex.cfg}{% \typeout{*************************^^J% * Loading uplatex.cfg.^^J% *************************}% \input{uplatex.cfg}}{}% } % \end{macrocode} % % フォーマットファイルにダンプします。 % \changes{v1.0i-u00}{2016/05/12}{一時コマンド\cs{orgdump}を最終的に未定義へ} % \begin{macrocode} \let\dump\orgdump \let\orgdump\@undefined \makeatother \dump %\endinput % \end{macrocode} % % \begin{macrocode} % % \end{macrocode} % % 実際にup\LaTeXe{}への拡張を行なっている\file{uplcore.ltx}は、 % \dst{}プログラムによって、次のファイルの断片が連結されたものです。 % % \begin{itemize} % \item \file{uplvers.dtx}は、up\LaTeXe{}のフォーマットバージョンを % 定義しています。 % \item \file{uplfonts.dtx}は、\NFSS2を拡張しています。 % \item このほか、p\LaTeXe{}に含まれる\file{plcore.dtx}をそのまま利用 % しています。これは、上記以外のコマンドでフォーマットファイルに % 格納されるコマンドを定義しています。 % \end{itemize} % % プリロードフォントや組版パラメータなどの設定は、 % \file{upldefs.ltx}をロードすることで行なっています。 % このファイルに記述されている設定を変更すれば、 % up\LaTeXe{}をカスタマイズすることができます。 % カスタマイズする場合は、このファイルを直接、修正するのではなく、 % \file{upldefs.cfg}という名前でコピーをして、そのファイルを編集します。 % \file{upldefs.cfg}は\file{upldefs.ltx}の代わりに読み込まれます。 % % % \subsubsection{バージョン} % up\LaTeXe{}のバージョンやフォーマットファイル名は、 % \file{uplvers.dtx}で定義しています。これは、p\LaTeXe{}のバージョンや % フォーマットファイル名が\file{plvers.dtx}で定義されているのと同じです。 % % % \subsubsection{\NFSS2コマンド} % \LaTeX{}では、フォント選択機構として\NFSS2を用いています。 % p\LaTeXe{}では、オリジナルの\NFSS2 と同様のインターフェイスで、 % 和文フォントを選択できるように、\file{plfonts.dtx}で\NFSS2を拡張して % いますので、up\LaTeXe{}も\file{uplfonts.dtx}で同じ方式を採用しています。 % % ^^A p\LaTeXe{}の\NFSS2は、フォントを切替えるコマンドを指定するときに、 % ^^A それが欧文書体か和文書体のいずれかを対象とするものかを、 % ^^A できるだけ意識しないようにする方向で拡張しています。 % ^^A いいかえれば、コマンドが(可能な限りの)判断をします。 % ^^A したがって数多くある英語版のクラスファイルやパッケージファイルなどで % ^^A 書体の変更を行っている箇所を修正する必要はあまりありません。 % % \file{uplfonts.dtx}ファイルでは、\NFSS2コマンドの定義のほか、プリロード % フォントの設定、和文エンコードの定義、組版パラメータなどの設定、 % フォント定義ファイルなどの記述も含まれています。 % % ^^A \NFSS2についての詳細は、\LaTeXe に付属の\file{fntguide.tex}を参照して % ^^A ください。 % % % ^^A \subsubsection{出力ルーチンとフロート} % ^^A \file{plcore.dtx}は、次の項目に関するコマンドを日本語処理用に修正や拡張 % ^^A をしています。 % ^^A % ^^A \begin{itemize} % ^^A \item プリアンブルコマンド % ^^A \item 改ページ % ^^A \item 改行 % ^^A \item オブジェクトの出力順序 % ^^A \item トンボ % ^^A \item 脚注マクロ % ^^A \item 相互参照 % ^^A \item 疑似タイプ入力 % ^^A \end{itemize} % % % \subsection{クラスファイルとパッケージファイル} % ^^A クラスファイルとパッケージファイルは、従来、スタイルファイルと呼ばれていた % ^^A ものです。\LaTeX{}ではそれらを、レイアウトに関するものをクラスファイルと % ^^A 呼び、マクロの拡張をするものをパッケージファイルと呼んで区別するように % ^^A なりました。 % % up\LaTeXe{}が提供をする、クラスファイルやパッケージファイルのいくつかは、 % p\LaTeXe{}に含まれるファイルを修正しています。 % ^^A 修正箇所には``\texttt{platex}''条件が付けられています。 % % up\LaTeXe{}に付属のクラスファイルは、次のとおりです。 % ^^A \changes{v1.0d}{2016/01/27}{p\LaTeXe{}に付属するファイルの説明を更新} % ^^A \changes{v1.0j}{2016/05/20}{pfltraceの説明を追加} % % \begin{itemize} % \item ujbook.cls, ujarticle.cls, ujreport.cls\par % 横組用の標準クラスファイル。\file{ujclasses.dtx}から作成される。 % % \item utbook.cls, utarticle.cls, utreport.cls\par % 縦組用の標準クラスファイル。\file{ujclasses.dtx}から作成される。 % % ^^A \item jltxdoc.cls\par % ^^A 日本語の\file{.dtx}ファイルを組版するためのクラスファイル。 % ^^A \file{jltxdoc.dtx}から作成される。 % \end{itemize} % % また、up\LaTeXe{}に付属のパッケージファイルは、次のとおりです。 % % \begin{itemize} % ^^A \item plext.sty\par % ^^A 縦組用の拡張コマンドなどが定義されているファイル。 % ^^A % ^^A \item oldpfont.sty\par % ^^A p\LaTeX~2.09のフォントコマンドを提供するパッケージ。 % ^^A \file{pl209.dtx}から作成される。 % % \item uptrace.sty\par % \LaTeX{}でフォント選択コマンドのトレースに使う\file{tracefnt.sty}が % 再定義してしまう\NFSS2コマンドを、up\LaTeXe{}用に再々定義するための % パッケージ。 % \file{uplfonts.dtx}から作成される。 % % ^^A \item pfltrace.sty\par % ^^A \LaTeX{}でフロート関連コマンドのトレースに使う\file{fltrace.sty}% % ^^A \footnote{\LaTeX\ 2014/05/01で追加されました。参考: % ^^A \LaTeXe\ News Issue 21 (ltnews21.tex)}が再定義してしまうコマンド % ^^A を、p\LaTeXe{}用に再々定義するためのパッケージ。 % ^^A \file{plcore.dtx}から作成される。 % ^^A % ^^A \item ascmac.sty, tascmac.sty\par % ^^A \LaTeX{}の標準機能の範囲で、図や罫線で囲んだボックスを出力する命令 % ^^A などを提供するパッケージ。旧バージョンのp\LaTeX{}でも配布されていた。 % ^^A % ^^A \item nidanfloat.sty\par % ^^A 二段組時に段抜きのフロートをページ下部にも配置可能にする % ^^A パッケージ。 % \end{itemize} % % % \section{旧バージョンとの互換性}\label{platex:compatibility} % ここでは、このバージョンと以前のバージョンとの互換性や拡張部分について % 説明をしています。 % % \subsection{p\LaTeX{}との互換性} % up\LaTeXe{}は、p\LaTeX{}の上位互換という形を取っていますので、 % クラスファイルやいくつかのコマンドを置き換えるだけで、 % たいていのp\LaTeX{}文書を簡単にup\LaTeX{}文書に変更することができます。 % ただし、up\LaTeX{}ではp\LaTeX{}で問題が指摘されていたフォントメトリックの % 不都合などいくつかのパラメータを変更していますので、レイアウトが変化 % することがあります。 % % また、u\pLaTeX{}は新しいマクロパッケージですので、2.09互換モードを % サポートしていません。\LaTeXe{}の仕様に従ってドキュメントを作成して % ください。 % % ^^A \subsection{p\LaTeX~2.09との互換性} % ^^A p\LaTeXe{}は、\LaTeX{}の上位互換という形を取っていますが、 % ^^A いくつかのパラメータなども変更しています。 % ^^A したがって英文書など、\LaTeX{}でも処理できるファイルを % ^^A p\LaTeXe{}で処理しても、完全に同じ結果になるとは限りません。 % ^^A これは、英語版の\LaTeX{}でも同じです。 % ^^A 詳細は、\LaTeXe に付属の\file{usrguide.tex}を参照してください。 % % p\LaTeX{}向けあるいは\LaTeX{}向けに作られた多くのクラスファイルや % パッケージファイルはそのまま使えると思います。ただし、p\LaTeX{}標準の % 漢字エンコーディング(JY1, JT1)を前提としたものがup\LaTeX{}で採用した % 漢字エンコーディング(JY2, JT2)と合致しないといったエラーが発生すること % もあります。用いようとしているクラスファイルやパッケージファイルが % うまく動くかどうかを、完全に確かめる方法は残念ながらありません。 % 一番簡単なのは、動かしてみることです。不幸にもうまく動かない場合は、 % ログファイルや付属の文書ファイルを参考に原因を調べてください。 % ^^A 多くのクラスファイルやパッケージファイルはそのまま使えると思います。 % ^^A ただし、それらがp\LaTeXe{}で拡張しているコマンドと同じ名前のコマンドを % ^^A 再定義している場合は、コマンドの拡張の仕方によってはエラーになることも % ^^A あります。用いようとしている、クラスファイルやパッケージファイルが % ^^A うまく動くかどうかを、完全に確かめる方法は残念ながらありません。 % ^^A 一番簡単なのは、動かしてみることです。不幸にもうまく動かない場合は、 % ^^A ログファイルや付属の文書ファイルを参考に原因を調べてください。 % % \subsection{latexreleaseパッケージへの対応} % ^^A \changes{v1.0e}{2016/02/16}{platexreleaseの説明を追加} % \LaTeX\ \texttt{<2015/01/01>}で導入されたlatexreleaseパッケージを % もとに、新しいp\LaTeX{}ではplatexreleaseパッケージが用意されました。 % 本来はup\LaTeX{}でも同様のパッケージを用意するのがよいのですが、 % 現在はp\LaTeX{}からup\LaTeX{}への変更点が含まれていませんので、 % 幸いplatexreleaseパッケージをそのまま用いることができます。 % このため、up\LaTeX{}で独自のパッケージを用意することはしていません。 % platexreleaseパッケージを用いると、過去のup\LaTeX{}をエミュレート % したり、フォーマットを作り直すことなく新しいup\LaTeX{}を試したりする % ことができます。詳細はplatexreleaseのドキュメントを参照してください。 % % % % \appendix % % \section{\dst{}プログラムのためのオプション}\label{app:dst} % この文書のソース(uplatex.dtx)を\dst{}プログラムによって処理することによって、 % いくつかの異なるファイルを生成することができます。 % \dst プログラムの詳細は、\file{docstrip.dtx}を参照してください。 % % この文書の\dst{}プログラムのためのオプションは、次のとおりです。 % % \DeleteShortVerb{\|} % \begin{center} % \begin{tabular}{l|p{.8\linewidth}} % \emph{オプション} & \emph{意味}\\\hline % plcore & フォーマットファイルを作るためのファイルを生成\\ % pldoc & up\LaTeXe{}のソースファイルをまとめて組版するための % 文書ファイルを生成\\[2mm] % shprog & 上記のファイルを作成するためのshスクリプトを生成\\ % plprog & 入れ子構造を調べる簡単なperlスクリプトを生成\\ % Xins & 上記のshスクリプトやperlスクリプトを取り出すための % \dst{}バッチファイルを生成\\ % \end{tabular} % \end{center} % \MakeShortVerb{\|} % % \subsection{ファイルの取り出し方} % % たとえば、この文書の``plcore''の部分を``\file{uplatex.ltx}''という % ファイルにするときの手順はつぎのようになります。 % % \begin{enumerate} % \item uplatex docstrip % \item 入力ファイルの拡張子(dtx)を入力する。 % \item 出力ファイルの拡張子(ltx)を入力する。 % \item \dst{}オプション(plcore)を入力する。 % \item 入力ファイル名(uplatex)を入力する。 % \item \file{uplatex.ltx}が存在する場合は、確認を求めてくるので、 % ``y''を入力する。 % \item 別の処理を行なうかを問われるので、``n''を入力する。 % \end{enumerate} % これで、\file{uplatex.ltx}が作られます。 % % あるいは、次のような内容のファイル\file{fmt.ins}を作成し、 % |uplatex fmt.ins|することでも\file{uplatex.ltx}を作ることができます。 % %\begin{verbatim} % \def\batchfile{fmt.ins} % \input docstrip.tex % \generateFile{uplatex.ltx}{t}{\from{uplatex.dtx}{plcore}} %\end{verbatim} % % % \section{文書ファイル}\label{app:pldoc} % ^^A \changes{v1.0c}{1997/01/25}{Add to filecontents environment for pldoc.dic.} % ここでは、このパッケージに含まれているdtxファイルをまとめて組版をするための % 文書ファイルについて説明をしています。個別に処理した場合と異なり、 % 変更履歴や索引も付きます。全体で、およそ120ページ程度になります。 % % |filecontents|環境は、引数に指定されたファイルが存在するときは何も % しませんが、存在しないときは、環境内の内容でファイルを作成します。 % \file{upldoc.dic}ファイルは、mendexプログラムで索引を処理するときに % \cs{西暦}, \cs{和暦}に対する「読み」を付けるために必要です。 % \begin{macrocode} %<*pldoc> \begin{filecontents}{upldoc.dic} 西暦 せいれき 和暦 われき \end{filecontents} % \end{macrocode} % 文書クラスには、\file{jltxdoc}クラスを用います。 % ^^A \file{plext.dtx}の中でサンプルを組み立てていますので、 % ^^A \file{plext}パッケージが必要です。 % \begin{macrocode} \documentclass{jltxdoc} %\usepackage{plext} %% comment out for upLaTeX \listfiles % \end{macrocode} % いくつかの\TeX{}プリミティブとコマンドを索引に出力しないようにします。 % \begin{macrocode} \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} % \end{macrocode} % 索引と変更履歴の見出しに\cs{part}を用いるように設定をします。 % \begin{macrocode} \IndexPrologue{\part*{索 引}% \markboth{索 引}{索 引}% \addcontentsline{toc}{part}{索 引}% イタリック体の数字は、その項目が説明されているページを示しています。 下線の引かれた数字は、定義されているページを示しています。 その他の数字は、その項目が使われているページを示しています。} % \GlossaryPrologue{\part*{変更履歴}% \markboth{変更履歴}{変更履歴}% \addcontentsline{toc}{part}{変更履歴}} % \end{macrocode} % 標準の|\changes|コマンドを、複数ファイルの文書に合うように修正しています。 % \begin{macrocode} \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} % ここからが本文ページとなります。 % ^^AA \changes{v1.0c}{1997/01/29}{Rename pltpatch to plpatch.} % \changes{v1.0h-u00}{2016/05/08}{ドキュメントから\file{uplpatch.ltx}を除外} % \changes{v1.0l-u01}{2016/06/19}{パッチレベルを\file{uplvers.dtx}から取得} % \begin{macrocode} \begin{document} \title{The up\LaTeXe\ 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 \edef\@date{\@date\space Patch level\space\patchdate} \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{plext} % external commands (comment out for upLaTeX) %\DocInclude{pl209} % 2.09 compatibility mode commands (comment out for upLaTeX) \DocInclude{ukinsoku} % kinsoku parameter \DocInclude{ujclasses} % Standard class %\DocInclude{jltxdoc} % dtx documents class (comment out for upLaTeX) %\includeltpatch % patch file (comment out May 8, 2016) % \end{macrocode} % \file{ltxdoc.cfg}に|\AtEndOfClass{\OnlyDescription}|が指定されている場合は、 % ここで終了します。 % \begin{macrocode} \StopEventually{\end{document}} % \end{macrocode} % 変更履歴と索引を組版します。 % 変更履歴ファイルと索引の作り方の詳細については、 % おまけ\ref{app:shprog}を参照してください。 % \begin{macrocode} \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 % \end{macrocode} % \file{ltxdoc.cfg}に2度目の|\PrintIndex|が指定されているかもしれません。 % そこで、最後に、変更履歴や索引が2度組版されないように|\PrintChanges|および % |\PrintIndex|コマンドを何も実行しないようにします。 % \begin{macrocode} \let\PrintChanges\relax \let\PrintIndex\relax \end{document} % % \end{macrocode} % % % % \section{おまけプログラム}\label{app:omake} % % \subsection{シェルスクリプト\file{mkpldoc.sh}}\label{app:shprog} % up\LaTeXe{}のマクロ定義ファイルをまとめて組版するときに便利なシェルスクリプトです。 % このシェルスクリプト\footnote{このシェルスクリプトはUNIX用です。 % しかしrmコマンドをdeleteコマンドにするなどすれば、簡単にDOSなどのバッチ % ファイルに修正することができます。}の使用方法は次のとおりです。 %\begin{verbatim} % sh mkpldoc.sh %\end{verbatim} % % \subsubsection{\file{mkpldoc.sh}の内容} % まず、以前に\file{upldoc.tex}を処理したときに作成された、 % 目次ファイルや索引ファイルなどを削除します。 % ^^A \changes{v1.0c}{1997/01/23}{Don't copy gind.ist and gglo.ist from % ^^A \$TEXMF/tex/latex2e/base directory.} % ^^A \changes{v1.0d}{2016/01/27}{\file{mkpldoc.sh}を改善} % \begin{macrocode} %<*shprog> for f in upldoc.toc upldoc.idx upldoc.glo ; do if [ -e $f ]; then rm $f; fi done % \end{macrocode} % そして、\file{ltxdoc.cfg}を空にします。 % このファイルは、\file{jltxdoc.cls}の定義を変更するものですが、 % ここでは、変更されたくありません。 % \begin{macrocode} echo "" > ltxdoc.cfg % \end{macrocode} % そして、\file{upldoc.tex}を処理します。 % \begin{macrocode} uplatex upldoc.tex % \end{macrocode} % 索引と変更履歴を作成します。 % このスクリプトでは、変更履歴や索引を生成するのにmendexプログラムを用いて % います。mendexはmakeindexの上位互換のファイル整形コマンドで、 % 索引語の読みを自動的に付けるなどの機能があります。 % % up\LaTeX{}の場合はmendexコマンドをUTF-8モードで実行する必要があります % ので、|-U|というオプションを付けます\footnote{uplatexコマンドも % 実際にはUTF-8モードで実行する必要がありますが、デフォルトの内部漢字 % コードがUTF-8に設定されているはずですので、\texttt{-kanji=utf8}を % 付けなくても処理できると思います。}。 % makeindexコマンドには、このオプションがありません。 % % |-s|オプションは、索引ファイルを整形するためのスタイルオプションです。 % 索引用の\file{gind.ist}と変更履歴用の\file{gglo.ist}は、 % \LaTeX{}のディストリビューションに付属しています。 % % |-o|は、出力するファイル名を指定するオプションです。 % % |-f|は、項目に``読み''がなくてもエラーとしないオプションです。 % makeindexコマンドには、このオプションがありません。 % \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 % \end{macrocode} % \file{ltxdoc.cfg}の内容を|\includeonly{}|にし、\file{upldoc.tex}を処理します。 % このコマンドは、引数に指定されたファイルだけを``|\include|''するための % コマンドですが、ここでは何も|\include|したく\emph{ない}ので、 % 引数には何も指定をしません。 % しかし、|\input|で指定されているファイルは読み込まれます。 % したがって、目次や索引や変更履歴のファイルが処理されます。 % この処理は、主に、これらでエラーが出るかどうかの確認です。 % \begin{macrocode} echo "\includeonly{}" > ltxdoc.cfg uplatex upldoc.tex % \end{macrocode} % 最後に、再び\file{ltxdoc.cfg}を空にして、\file{upldoc.tex}を処理をします。 % 本文を1ページから開始していますので、この後、もう一度処理をする % 必要はありません。 % \begin{macrocode} echo "" > ltxdoc.cfg uplatex upldoc.tex # EOT % % \end{macrocode} % % % \subsection{perlスクリプト\file{dstcheck.pl}}\label{app:plprog} % \dst{}文書ファイルは、\LaTeX{}のソースとその文書を同時に管理する方法として、 % とてもすぐれていると思います。しかし、たとえば\file{jclasses.dtx}のように、 % 条件が多くなると、入れ子構造がわからなくなってしまいがちです。 % \LaTeX{}で処理すれば、エラーによってわかりますが、 % 文書ファイルが大きくなると面倒です。 % % ここでは、\dst{}文書ファイルの入れ子構造を調べるのに便利な、 % perlスクリプトについて説明をしています。 % % このperlスクリプトの使用方法は次のとおりです。 % %\begin{verbatim} % perl dstcheck.pl file-name %\end{verbatim} % % \subsubsection{\file{dstcheck.pl}の内容} % 最初に、このperlスクリプトが何をするのかを簡単に記述したコメントを % 付けます。 % \begin{macrocode} %<*plprog> ## ## DOCSTRIP 文書内の環境や条件の入れ子を調べる perl スクリプト ## % \end{macrocode} % このスクリプトは、入れ子の対応を調べるために、次のスタックを用います。 % \meta{条件}あるいは\meta{環境}を開始するコードが現れたときに、 % それらはスタックにプッシュされ、終了するコードでポップされます。 % したがって、現在の\meta{条件}あるいは\meta{環境}と、 % スタックから取り出した\meta{条件}あるいは\meta{環境}と一致すれば、 % 対応が取れているといえます。そうでなければエラーです。 % % |@dst|スタックには、\meta{条件}が入ります。 % 条件の開始は、``|%<*|\meta{条件}|>|''です。 % 条件の終了は、``|%|''です。 % \meta{条件}には、|>|文字が含まれません。 % |@env|スタックには、\meta{環境}が入ります。 % % 先頭を明示的に示すために、ダミーの値を初期値として用います。 % スタックは、\meta{条件}あるいは\meta{環境}の名前と、その行番号をペアにして % 操作をします。 % \begin{macrocode} push(@dst,"DUMMY"); push(@dst,"000"); push(@env,"DUMMY"); push(@env,"000"); % \end{macrocode} % この|while|ループの中のスクリプトは、文書ファイルの1行ごとに実行をします。 % \begin{macrocode} while (<>) { % \end{macrocode} % 入力行が条件を開始する行なのかを調べます。 % 条件の開始行ならば、|@dst|スタックに\meta{条件}と行番号をプッシュします。 % \begin{macrocode} if (/^%<\*([^>]+)>/) { # check conditions push(@dst,$1); push(@dst,$.); % \end{macrocode} % そうでなければ、条件の終了行なのかを調べます。 % 現在行が条件の終了を示している場合は、|@dst|スタックをポップします。 % \begin{macrocode} } elsif (/^%<\/([^>]+)>/) { $linenum = pop(@dst); $conditions = pop(@dst); % \end{macrocode} % 現在行の\meta{条件}と、スタックから取り出した\meta{条件}が一致しない場合、 % その旨のメッセージを出力します。 % % なお、|DUMMY|と一致した場合は、一番外側のループが合っていないと % いうことを示しています。このとき、これらのダミー値をスタックに戻します。 % いつでもスタックの先頭をダミー値にするためです。 % \begin{macrocode} if ($1 ne $conditions) { if ($conditions eq "DUMMY") { print "$ARGV: `' (l.$.) is not started.\n"; push(@dst,"DUMMY"); push(@dst,"000"); } else { print "$ARGV: `<*$conditions>' (l.$linenum) is ended "; print "by `<*$1>' (l.$.)\n"; } } } % \end{macrocode} % 環境の入れ子も条件と同じように調べます。 % % verbatim環境のときに、その内側をスキップしていることに注意をしてください。 % \begin{macrocode} if (/^% *\\begin\{verbatim\}/) { # check environments while(<>) { last if (/^% *\\end\{verbatim\}/); } } elsif (/^% *\\begin\{([^{}]+)\}\{(.*)\}/) { push(@env,$1); push(@env,$.); } elsif (/^% *\\begin\{([^{}]+)\}/) { push(@env,$1); push(@env,$.); } elsif (/^% *\\end\{([^{}]+)\}/) { $linenum = pop(@env); $environment = pop(@env); if ($1 ne $environment) { if ($environment eq "DUMMY") { print "$ARGV: `\\end{$1}' (l.$.) is not started.\n"; push(@env,"DUMMY"); push(@env,"000"); } else { print "$ARGV: \\begin{$environement} (l.$linenum) is ended "; print "by \\end{$1} (l.$.)\n"; } } } % \end{macrocode} % ここまでが、最初の|while|ループです。 % \begin{macrocode} } % \end{macrocode} % 文書ファイルを読み込んだ後、終了していない条件があるかどうかを確認します。 % すべての条件の対応がとれていれば、この時点での|@dst|スタックには % ダミー値しか入っていません。したがって、対応が取れている場合は、 % 最初の2つのポップによって、ダミー値が設定されます。 % ダミー値でなければ、ダミー値になるまで、取り出した値を出力します。 % \begin{macrocode} $linenum = pop(@dst); $conditions = pop(@dst); while ($conditions ne "DUMMY") { print "$ARGV: `<*$conditions>' (l.$linenum) is not ended.\n"; $linenum = pop(@dst); $conditions = pop(@dst); } % \end{macrocode} % 環境の入れ子についても、条件の入れ子と同様に確認をします。 % \begin{macrocode} $linenum = pop(@env); $environment = pop(@env); while ($environment ne "DUMMY") { print "$ARGV: `\\begin{$environment}' (l.$linenum) is not ended.\n"; $linenum = pop(@env); $environment = pop(@env); } exit; % % \end{macrocode} % % \subsection{\dst{}バッチファイル} % ^^A \changes{v1.0b}{1996/02/01}{\dst{}にともなう変更} % ^^A \changes{v1.0c}{1997/01/23}{\dst{}にともなう変更} % ここでは、付録\ref{app:shprog}と付録\ref{app:plprog}で説明をした二つの % スクリプトを、このファイルから取り出すための\dst{}バッチファイルについて % 説明をしています。 % % まず、\dst{}パッケージをロードします。 % また、実行経過のメッセージを出力しないようにしています。 % \begin{macrocode} %<*Xins> \input docstrip \keepsilent % \end{macrocode} % \dst{}プログラムは、連続する二つのパーセント記号(\%\%)ではじまる行を % メタコメントとみなし、条件によらず出力をします。 % しかし、``\%''は\TeX{}ではコメントであっても、shやperlにとってはコメント % ではありません。そこで、メタコメントとして出力する文字を``\#\#''と % 変更します。 % \begin{macrocode} {\catcode`#=12 \gdef\MetaPrefix{## }} % \end{macrocode} % そして、プリアンブルに出力されるメッセージを宣言します。 % ここでは、とくに何も指定していませんが、宣言をしないとデフォルトの記述が % `\%\%'付きで出力されてしまうため、それを抑制する目的で使用しています。 % \begin{macrocode} \declarepreamble\thispre \endpreamble \usepreamble\thispre % \end{macrocode} % ポストアンブルも同様に、宣言をしないと`|\endinput|'が出力されます。 % \begin{macrocode} \declarepostamble\thispost \endpostamble \usepostamble\thispost % \end{macrocode} % |\generate|コマンドで、どのファイルに、どのファイルのどの部分を出力するのか % を指定します。 % \begin{macrocode} \generate{ \file{dstcheck.pl}{\from{uplatex.dtx}{plprog}} \file{mkpldoc.sh}{\from{uplatex.dtx}{shprog}} } \endbatchfile % % \end{macrocode} % % \iffalse ^^A comment out for upLaTeX % % \newpage % \begin{thebibliography}{1} % \bibitem{tex-book} % Donald~E. Knuth. % \newblock ``{\em The \TeX book}''. % \newblock Addison-Wesley, 1984. % \newblock (邦訳:斎藤信男監修, 鷺谷好輝訳, % \TeX ブック 改訂新版, アスキー出版局, 1989) % % \bibitem{tate-book} % インプレス・ラボ監修, アスキー書籍編集部編 % \newblock 『縦組対応 パーソナル日本語\TeX{}』 % \newblock アスキー出版局, 1994 % % \bibitem{latex-comp} % Michel Goossens, Frank Mittelbach, Alexander Samarin. % \newblock ``{\em The {\LaTeX} Companion}''. % \newblock Addison-Wesley, 1994. % % \bibitem{latex-book2} % Laslie Lamport. % \newblock ``{\em {\LaTeX:} A Document Preparation System}''. % \newblock Addison-Wesley, second edition, 1994. % % \bibitem{latex-book} % Laslie Lamport. % \newblock ``{\em {\LaTeX:} A Document Preparation System}''. % \newblock Addison-Wesley, 1986. % \newblock (邦訳:倉沢良一監修, 大野俊治・小暮博通・藤浦はる美訳, % 文書処理システム \LaTeX, アスキー, 1990) % % \bibitem{jtex-tech} % アスキー出版技術部責任編集 % \newblock 『日本語\TeX テクニカルブックI』 % \newblock アスキー, 1990. % % \bibitem{platex2e-book} % 中野 賢 % \newblock 『日本語\LaTeXe ブック』 % \newblock アスキー, 1996. % % \bibitem{perl} % 河野真治著 % \newblock 『入門perl』 % \newblock アスキー出版局, 1994 % \end{thebibliography} % % \fi % % \iffalse % ここで、このあとに組版されるかもしれない文書のために、 % 節見出しの番号を算用数字に戻します。 % \fi % % \renewcommand{\thesection}{\arabic{section}} % % \Finale % \endinput