diff options
Diffstat (limited to 'info/ptex-manual/eptexdoc.tex')
-rw-r--r-- | info/ptex-manual/eptexdoc.tex | 431 |
1 files changed, 199 insertions, 232 deletions
diff --git a/info/ptex-manual/eptexdoc.tex b/info/ptex-manual/eptexdoc.tex index ab4b9cfe16..62d11cc730 100644 --- a/info/ptex-manual/eptexdoc.tex +++ b/info/ptex-manual/eptexdoc.tex @@ -1,181 +1,43 @@ %#!make eptexdoc.pdf -\documentclass[a4paper,11pt]{jsarticle} +\documentclass[a4paper,11pt,nomag]{jsarticle} +\usepackage[bold,deluxe]{otf} \input fam256p.tex \usepackage[textwidth=42zw,lines=40,truedimen,centering]{geometry} -\usepackage{amsmath,mathtools,amssymb,multicol,comment} + +%%%%%%%%%%%%%%%% +% additional packages +\usepackage{amsmath} +\usepackage{mathtools,amssymb,comment} \usepackage[dvipdfmx]{graphicx} \usepackage[T1]{fontenc} -\usepackage{booktabs,enumitem} +\usepackage{booktabs,enumitem,multicol} \usepackage{lmodern} \usepackage[dvipdfmx,hyperfootnotes=false]{hyperref} \usepackage{pxjahyper} -\usepackage[bold,deluxe]{otf} \usepackage{hologo} \usepackage{makeidx}\makeindex +% common +\usepackage{ptex-manual} + %%%%%%%%%%%%%%%% -\makeatletter +\def\delbit#1#2{\underbracket[0.4pt]{#1}_{\text{#2}}} + +\usepackage{shortvrb} +\MakeShortVerb*{|} +%%%%%%%%%%%%%%%% + +% logos \newcommand{\OMEGA}{$\Omega$} \protected\def\epTeX{$\varepsilon$\nobreakdash-\pTeX} +\protected\def\eupTeX{$\varepsilon$\nobreakdash-\upTeX} \protected\def\eTeX{$\varepsilon$\nobreakdash-\TeX} \def\upTeX{u\pTeX}\def\pTeX{p\kern-.15em\TeX} \def\NTS{\leavevmode\hbox{$\cal N\kern-0.35em\lower0.5ex\hbox{$\cal T$}% \kern-0.2emS$}\,} -\def\headfont{\normalfont\mathversion{bold}\gtfamily\bfseries} -\def\node#1{\textit{#1}} -\def\.#1{\texorpdfstring{% - \leavevmode\hbox{\texttt{\textbackslash#1}}\ifmmode\else\textcompwordmark\fi}{\textbackslash #1}} -\let\orig@cs=\. -\def\ind@cs#1{\orig@cs{#1}\indcs{#1}} -\def\indcs#1{\index{{\texttt{\textbackslash #1}}}} -\newlist{cslist}{description}1 -\setlist[cslist]{% - style=nextline,itemsep=\medskipamount,listparindent=1zw, - font=\normalfont\mdseries} -\def\csitem[#1]{\item[\llap{$\blacktriangleright$~}\let\.=\ind@cs#1]} -\def\emph#1{{\bfseries\gtfamily\mathversion{bold}#1}} -\def\listx{\def\makelabel{\hbox to 1em{\hfil\textbullet\hfil}}\def\@{\hfill} -\labelwidth=13zw\leftmargin15zw\itemindent=0zw} -\def\paragraph#1{\par\medskip\par\noindent\emph{■#1}\par\nobreak} -\def\Pkg#1{\textsf{#1}} -\catcode`\<=13 -\xspcode`\\=3 -\xspcode`\*=3 -\xspcode`\-=3 -\xspcode23=3 % \textcompwordmark -\def<#1>{\ensuremath{\langle\hbox{\normalfont\itshape #1\/}\rangle}} - -\font\man=manfnt at 10pt -\def\dbend{\raise0pt\hbox{\man\char'177}} -\AtBeginDvi{\special{pdf:mapfile otf-ipaex.map}} -\def\delbit#1#2{\underbracket[0.4pt]{#1}_{\text{#2}}} - \def\TeXXeT{\TeX-\reflectbox{\bfseries\TeX-}} -\newenvironment{multilist}[2]% - {$$\setbox\z@=\hbox\bgroup % catch some funny things -> \mathord - \let\a=\empty - \let\b=\empty - \count@=\z@ - \toks@={#2}% - \def\item##1\cr - {\ifnum \count@=\z@ - \count@=#1% - \expandafter\def\expandafter\b\expandafter{\b\y{}}% - \fi - \advance\count@ by\m@ne - \expandafter\def\expandafter\a\expandafter{\a\x{##1}}}% - \ignorespaces}% - {\loop - \ifnum \count@>\z@ - \expandafter\def\expandafter\a\expandafter{\a\expandafter\z\b\relax}% - \advance\count@ by\m@ne - \repeat - \def\x##1{\expandafter\y\b\relax{##1}}% - \def\y\y##1##2\relax##3% - {\ifx @##1@% - \def\b{##2\y{##3}}% - \else - \def\b{##2\y{##1&##3}}% - \fi}% - \def\z\y##1##2\relax{\def\b{##2\y{##1}}}% - \a - \def\x - {\expandafter\egroup\expandafter\halign\expandafter\bgroup - \expandafter&\the\toks@\cr}% - \def\y##1{\expandafter\def\expandafter\x\expandafter{\x##1\cr}}% - \b - \x\egroup $$} - \makeatletter -\def\hex#1{% -{\count@=#1\@tempcnta=#1\@tempcntb=\@tempcnta\relax -\divide\@tempcntb by 16% -\ifnum\count@=0\else - \multiply\@tempcntb by16% - \advance\@tempcnta-\@tempcntb - \divide\@tempcntb by16% - \hex{\the\@tempcntb}% - \ifcase\@tempcnta\relax 0\or1\or2\or3\or4\or5\or6\or - 7\or8\or9\or A\or B\or C\or D\or E\pr F\fi -\fi}} -\clubpenalty=8000\widowpenalty=8000 - -\normalsize -\bigskipamount=\baselineskip -\medskipamount=.5\baselineskip -\smallskipamount=.25\baselineskip - -\usepackage{etoolbox} -\newenvironment{curve}{% - \par\medskip - \bgroup\small\leftskip=\dimexpr\textwidth-44zw\relax\@totalleftmargin=\leftskip - \parindent1zw\noindent\kern-\leftskip\hbox to\leftskip{\dbend\hss}% - \bigskipamount=\baselineskip - \medskipamount=.5\baselineskip - \smallskipamount=.25\baselineskip - \everypar{\everypar{}}\ignorespaces -}{\par\egroup\medskip} - -\renewenvironment{theindex}{% - \def\presectionname{}\def\postsectionname{}% - \section*{\indexname} - \@mkboth{\indexname}{\indexname}% - \plainifnotempty % \thispagestyle{plain} - \parindent\z@ - \parskip\z@ \@plus .3\p@\relax - \let\item\@idxitem - \raggedright - \begin{multicols}{2} - }{ - \end{multicols} - \clearpage - } - -\patchcmd\@verbatim\@totalleftmargin{\dimexpr\@totalleftmargin+2zw\relax}{}{} -\patchcmd\quote{\list{}}{\par\list{\topsep\medskipamount}}{}{} -\patchcmd\@verbatim{\trivlist}{\trivlist\addvspace\medskipamount\noautoxspacing}{}{} -\patchcmd\endverbatim{\endtrivlist}{\endtrivlist\addvspace\medskipamount}{}{} -\expandafter\let\csname endverbatim*\endcsname =\endverbatim -\patchcmd\verb{\ifmmode\hbox\else\leavevmode\vadjust{}\fi\bgroup} - {\ifmmode\else\leavevmode\vadjust{}\fi\hbox - \bgroup\textcompwordmark\noautoxspacing\noautospacing}{}{} -\patchcmd\verb@egroup{\egroup}{\egroup\textcompwordmark}{}{} - -\usepackage{shortvrb} -\MakeShortVerb*{|} -%%%%%%%% macros for index (simplified from doc.sty) -\newif\ifscan@allowed -\def\dotfill{\leaders\hbox to.6em{\hss .\hss}\hskip\z@ plus1fill}% -\def\pfill{\unskip~\dotfill\nobreak} - -\long\def\@footnotetext{% - \insert\footins\bgroup - \normalfont\footnotesize - \interlinepenalty\interfootnotelinepenalty - \splittopskip\footnotesep - \splitmaxdepth \dp\strutbox \floatingpenalty \@MM - \hsize\columnwidth \@parboxrestore - \protected@edef\@currentlabel{% - \csname p@footnote\endcsname\@thefnmark - }% - \color@begingroup - \@makefntext{% - \rule\z@\footnotesep\ignorespaces}% - \futurelet\next\fo@t} -\def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t - \else \let\next\f@t\fi \next} -\def\f@@t{\bgroup\aftergroup\@foot\let\next} -\def\f@t#1{#1\@foot} -\def\@foot{\@finalstrut\strutbox\color@endgroup\egroup - \ifx\pltx@foot@penalty\@undefined\else - \ifhmode\null\fi - \ifnum\pltx@foot@penalty=\z@\else - \penalty\pltx@foot@penalty - \pltx@foot@penalty\z@ - \fi - \fi} - {\lccode`\!=`\_ \lowercase{% \protected\gdef\_{\ifdefstrequal{\f@family}{\ttdefault}{!}% @@ -183,14 +45,15 @@ }} } \makeatother -%%%%%%%%%%%%%%%% + +\clubpenalty=8000 \widowpenalty=8000 \frenchspacing \begin{document} \title{\emph{\epTeX について}} \author{北川 弘典\null \thanks{\url{http://osdn.jp/projects/eptex/wiki/},\ e-mail: \texttt{h\_kitagawa2001(at)yahoo.co.jp}}} -\date{version 190131,\today} +\date{version \the\epTeXversion,\today} \maketitle \tableofcontents @@ -352,47 +215,126 @@ tracing機能や条件判断文の強化などあるが,そこら辺はパッ の位置がずれたり空白がおかしかったりするけれども,そこの修正は大変に思え るし,苦労して実装する意味があるのか疑問なので放置している. -\medskip - -\pTeX 拡張では,\TeX と比較して\node{dir\_node}と\node{disp\_node}という2種類のノードが -追加された.前者は,現在のリストの中に違う組方向のboxを挿入する際に寸法を補正するために作られ, -\.{hbox}や\.{vbox}のコンテナとなっている. -また後者は,欧文文字のベースライン補正のために使われる. - -\epTeX~110102 まではこれらのノードも\.{lastnodetype}の値として出力させるようにした. -しかし,両者ともに\epTeX が自動的に挿入する(ユーザーが意識する必要はない)ノードであることから, -\epTeX~110227以降では\node{dir\_node}と\node{disp\_node}は -\.{lastnodetype}\indcs{lastnodetype}の対象とする「最後のノード」とはならないようにしている -\footnote{% - 最後のノードが\node{dir\_node}であった場合,\.{lastnodetype}はそのノードが格納している - \node{hlist\_node}か\node{vlist\_node}の種類を返す. -}. -\begin{multilist}{3}{\hfil\hskip1.5zw#:&\quad#\qquad\hfil} -\item $-1$&none (empty list)\cr\item 0&char node\cr\item 1&hlist node\cr -\item 2&vlist node\cr\item 3&rule node\cr\item 4&ins node\cr -\item 5&mark node\cr\item 6&adjust node\cr\item 7&ligature node\cr -\item 8&disc node\cr\item 9&whatsit node\cr\item 10&math node\cr -\item 11&glue node\cr\item 12&kern node\cr\item 13&penalty node\cr -\item 14&unset node\cr\item 15&math mode nodes\cr -\end{multilist} +以下,\eTeX 拡張を\pTeX 拡張とマージするにあたって調整した箇所を述べる. +\begin{cslist} + \csitem[\.{lastnodetype}] + \pTeX 拡張では,\TeX と比較して\node{dir\_node}と\node{disp\_node}という2種類のノードが + 追加された.前者は,現在のリストの中に違う組方向のboxを挿入する際に寸法を補正するために作られ, + \.{hbox}や\.{vbox}のコンテナとなっている. + また後者は,欧文文字のベースライン補正のために使われる. + + \epTeX~110102まではこれらのノードも\.{lastnodetype}の値として出力させるようにした. + しかし,両者ともに\epTeX が自動的に挿入する(ユーザーが意識する必要はない)ノードであることから, + \epTeX~110227以降では\node{dir\_node}と\node{disp\_node}は + \.{lastnodetype}の対象とする「最後のノード」とはならないようにしている + \footnote{% + 最後のノードが\node{dir\_node}であった場合,\.{lastnodetype}はそのノードが格納している + \node{hlist\_node}か\node{vlist\_node}の種類を返す. + }.\\ + \parbox{.9\linewidth}{% + \begin{multilist}{3}{\hfil\hskip1.5zw#:&\quad#\qquad\hfil} + \item $-1$&none (empty list)\cr\item 0&char node\cr\item 1&hlist node\cr + \item 2&vlist node\cr\item 3&rule node\cr\item 4&ins node\cr + \item 5&mark node\cr\item 6&adjust node\cr\item 7&ligature node\cr + \item 8&disc node\cr\item 9&whatsit node\cr\item 10&math node\cr + \item 11&glue node\cr\item 12&kern node\cr\item 13&penalty node\cr + \item 14&unset node\cr\item 15&math mode nodes\cr + \end{multilist}} + + \csitem[\.{currentiftype}] +\ifnum\epTeXversion>190131 %%%%% TL2019-hack + 条件判断文とそれを表す数字との対応は以下のようになっている + (\epTeX~190709以降). + 21,~22は\hologo{pdfTeX}由来の条件判断文(後述), + 23--30が,\pTeX 拡張で追加された条件判断文に対応する.\\ + \parbox{.9\linewidth}{% + \begin{multilist}{3}{\hfil\hskip1.5zw#:&\quad#\qquad\hfil} + \item 1&\.{if}\cr\item 2&\.{ifcat}\cr\item 3&\.{ifnum}\cr\item 4&\.{ifdim}\cr + \item 5&\.{ifodd}\cr\item 6&\.{ifvmode}\cr\item 7&\.{ifhmode}\cr + \item 8&\.{ifmmode}\cr\item 9&\.{ifinner}\cr\item 10&\.{ifvoid}\cr + \item 11&\.{ifhbox}\cr\item 12&\.{ifvbox}\cr\item 13&\.{ifx}\cr + \item 14&\.{ifeof}\cr\item 15&\.{iftrue}\cr\item 16&\.{iffalse}\cr + \item 17&\.{ifcase}\cr\item 18&\.{ifdefined}\cr\item 19&\.{ifcsname}\cr + \item 20&\.{iffontchar}\cr\item \bf 21&\.{ifincsname}\cr\item \bf 22&\.{ifpdfprimtive}\cr + \item \bf 23&\.{iftdir}\cr\item \bf 24&\.{ifydir}\cr + \item \bf 25&\.{ifddir}\cr\item \bf 26&\.{ifmdir}\cr\item \bf 27&\.{iftbox}\cr + \item \bf 28&\.{ifybox}\cr\item \bf 29&\.{ifdbox}\cr\item \bf 30&\.{ifmbox}\cr + \end{multilist}} +\else %%%%% TL2019-hack + 条件判断文とそれを表す数字との対応は以下のようになっている + (\epTeX~190131まで;\epTeX~190709以降は\.{ifincsname}プリミティブ追加により変化するので注意). + 21--28が,\pTeX 拡張で追加された条件判断文に対応する. + 29の\.{ifpdfprimitive}は\hologo{pdfTeX}由来のプリミティブ(後述)である.\\ + \parbox{.9\linewidth}{% + \begin{multilist}{3}{\hfil\hskip1.5zw#:&\quad#\qquad\hfil} + \item 1&\.{if}\cr\item 2&\.{ifcat}\cr\item 3&\.{ifnum}\cr\item 4&\.{ifdim}\cr + \item 5&\.{ifodd}\cr\item 6&\.{ifvmode}\cr\item 7&\.{ifhmode}\cr + \item 8&\.{ifmmode}\cr\item 9&\.{ifinner}\cr\item 10&\.{ifvoid}\cr + \item 11&\.{ifhbox}\cr\item 12&\.{ifvbox}\cr\item 13&\.{ifx}\cr + \item 14&\.{ifeof}\cr\item 15&\.{iftrue}\cr\item 16&\.{iffalse}\cr + \item 17&\.{ifcase}\cr\item 18&\.{ifdefined}\cr\item 19&\.{ifcsname}\cr + \item 20&\.{iffontchar}\cr\item \bf 21&\.{iftdir}\cr\item \bf 22&\.{ifydir}\cr + \item \bf 23&\.{ifddir}\cr\item \bf 24&\.{ifmdir}\cr\item \bf 25&\.{iftbox}\cr + \item \bf 26&\.{ifybox}\cr\item \bf 27&\.{ifdbox}\cr\item \bf 28&\.{ifmbox}\cr + \item \bf 29&\.{ifpdfprimtive}\cr + \end{multilist}} +\fi %%%%% TL2019-hack + +\ifnum\epTeXversion>190131 %%%%% TL2019-hack + \csitem[\.{fontcharwd}, \.{fontcharht}, \.{fontchardp}, \.{fontcharic}] + 欧文フォントと和文フォントを判別し,それに応じて処理が分かれる. + それに伴い,許容される引数範囲と意味が異なることに注意 + (\epTeX~190709以降). + 以下,|??|は|wd|, |ht|, |dp|, |ic|のいずれかを表す. + \begin{itemize} + \item 和文フォントの場合: \.{fontchar??} <Japanese font> <number>\\ + <Japanese font>を$f$,<number>を$c$とおくと, + \begin{itemize} + \item $c \geq 0$の場合は,$c$を\emph{文字コード}とみなす. + $c$が和文文字コードとして有効であれば, + 和文フォント$f$における文字コード$c$の和文文字の寸法値を返す. + 和文文字コードとして無効であれば|0pt|を返す. + \item $c < 0$の場合は,$-(c+1)$を\emph{文字タイプ}とみなす. + 和文フォント$f$に文字タイプ$-(c+1)$が定義されていればその寸法値を返し, + 未定義であれば|0pt|を返す. + \end{itemize} + \item 欧文フォントの場合: \.{fontchar??} <font> <8-bit number>\\ + オリジナルの\eTeX と同じ挙動である.すなわち, + 引数に$c \geq 256$や$c < 0$を与えると + \verb+! Bad character code (256).+ + のようにエラーが出る. + \end{itemize} -\vskip-\baselineskip + \csitem[\.{iffontchar}] + \begin{itemize} + \item 和文フォントの場合: \.{iffontchar} <Japanese font> <number>\\ + <Japanese font>を$f$,<number>を$c$とおくと, + \begin{itemize} + \item $c \geq 0$の場合は$c$を\emph{文字コード}とみなし, + $c$が和文文字コードとして有効かどうかを判定する + \footnote{\pTeX では「任意の和文フォントには,和文文字コードとして有効な + 全ての文字が存在する」という扱いであるため,和文フォント$f$によらない.}. + \item $c < 0$の場合は$-(c+1)$を\emph{文字タイプ}とみなし, + 和文フォント$f$に文字タイプ$-(c+1)$が定義されているかどうかを判定する. + \end{itemize} + \item 欧文フォントの場合: \.{iffontchar} <font> <8-bit number>\\ + オリジナルの\eTeX と同じ挙動である.すなわち, + 引数に$c \geq 256$や$c < 0$を与えると + \verb+! Bad character code (256).+ + のようにエラーが出る. + \end{itemize} +\fi %%%%% TL2019-hack +\end{cslist} -\.{currentiftype}\indcs{currentiftype}における条件判断文とそれを表す数字との対応は,以 -下のようになっている.21--28が,\pTeX 拡張で追加された条件判断文に対応する. -29の\.{ifpdfprimitive}は\hologo{pdfTeX}由来のプリミティブ(後述)である. -\begin{multilist}{3}{\hfil\hskip1.5zw#:&\quad#\qquad\hfil} -\item 1&\.{if}\cr\item 2&\.{ifcat}\cr\item 3&\.{ifnum}\cr\item 4&\.{ifdim}\cr -\item 5&\.{ifodd}\cr\item 6&\.{ifvmode}\cr\item 7&\.{ifhmode}\cr -\item 8&\.{ifmmode}\cr\item 9&\.{ifinner}\cr\item 10&\.{ifvoid}\cr -\item 11&\.{ifhbox}\cr\item 12&\.{ifvbox}\cr\item 13&\.{ifx}\cr -\item 14&\.{ifeof}\cr\item 15&\.{iftrue}\cr\item 16&\.{iffalse}\cr -\item 17&\.{ifcase}\cr\item 18&\.{ifdefined}\cr\item 19&\.{ifcsname}\cr -\item 20&\.{iffontchar}\cr\item \bf 21&\.{iftdir}\cr\item \bf 22&\.{ifydir}\cr -\item \bf 23&\.{ifddir}\cr\item \bf 24&\.{ifmdir}\cr\item \bf 25&\.{iftbox}\cr -\item \bf 26&\.{ifybox}\cr\item \bf 27&\.{ifdbox}\cr\item \bf 28&\.{ifmbox}\cr -\item \bf 29&\.{ifpdfprimtive}\cr -\end{multilist} +\ifnum\epTeXversion>190131 %%%%% TL2019-hack +\begin{dangerous} + 上記で「和文文字コードとして有効かどうか」は,関数|is_char_kanji|を参照. + この関数は内部コードによって異なるため,マクロで実装するのは面倒であるが, + \epTeX~190709以降では\.{iffontchar}で容易に実現できる. + なお,\upTeX では任意の非負の値が和文文字コードとして有効なため, + |is_char_kanji|は非負かどうかの判定になっている. +\end{dangerous} +\fi %%%%% TL2019-hack \section{\OMEGA 由来の機能(旧名称:\texttt{FAM256}パッチ)} \epTeX には,掲示板\TeX\ Q\ \&\ Aの山本氏の書き込み @@ -494,8 +436,8 @@ delimiter codeを取得しようとしても,現時点のパッチでは,う \paragraph{無限のレベル} \TeX では,glueの伸縮量に\texttt{fil}, \texttt{fill}, \texttt{filll} という3つの無限大のレベルが存在し,\texttt{l}が多いほど無限大のオーダーが高くなっていた. -\OMEGA では,「inter-letter spacingのために」\texttt{fi}という,有限と -\texttt{fil}の中間にあたる無限大のレベルが付け加えられた.そこで,この無限大レベル +\OMEGA では,「inter-letter spacingのために」\texttt{fi}\index{fi=\texttt{fi}}という, +有限と\texttt{fil}の中間にあたる無限大のレベルが付け加えられた.そこで,この無限大レベル \texttt{fi}も採用することにした. \medskip @@ -503,13 +445,15 @@ delimiter codeを取得しようとしても,現時点のパッチでは,う 実装方法は,大まかには\OMEGA で\texttt{fi}の実装を行っているchange file\ \texttt{omfi.ch}の通りであるのだが,これに\pTeX や\eTeX に伴う少々の修正を行っている. \begin{itemize} -\item プリミティブ|\pagefistretch|, |\hfi|, |\vfi|を新たに定義している -\footnote{% + \item プリミティブ|\pagefistretch|\indcs{pagefistretch}, + |\hfi|\indcs{hfi}, |\vfi|\indcs{vfi}を新たに定義している + \footnote{% |\hfi|, |\vfi|については\cite{omegaman}に記述があるが, \TeX~Liveに収録されている$\aleph$(\OMEGA は\TeX~Liveに収録されていない)では 実装されていない.|\pagefistretch|を実装したのは北川の完全な勘違いである. -}. -\item |\gluestretchorder|, |\glueshrinkorder|の動作を\eTeX のそれと合わせた. + }. + \item |\gluestretchorder|\indcs{gluestretchorder}, + |\glueshrinkorder|\indcs{glueshrinkorder}の動作を\eTeX のそれと合わせた. 具体的には,ある適当なglue~|\someglue|の伸び量を<stretch>とおくとき, \[ \hbox{|\gluestretchorder\someglue|}= @@ -520,8 +464,8 @@ delimiter codeを取得しようとしても,現時点のパッチでは,う 3&<stretch>\text{がちょうど\texttt{filll}レベルの無限量} \end{cases} \] -となっている.内部では\texttt{fi}レベルが1,\texttt{fil}レベルが2,……として処 - 理している. + となっている.内部では\texttt{fi}レベルが1,\texttt{fil}レベルが2,……として + 処理している. \end{itemize} \paragraph{レジスタについて} @@ -606,26 +550,32 @@ delimiter codeを取得しようとしても,現時点のパッチでは,う 原点はページの(物理的な意味の)左下隅であり,$y$軸は(物理的な)上方向に向かって増加する. \begin{itemize} \item ページの物理的な幅と高さはすぐ上の\.{pdfpagewidth}, \.{pdfpageheight}で設定する. - これらの内部長さが0であった場合は,\.{shipout}されたボックスの寸法と - \.{hoffset}(または\.{voffset})の値から自動的に計算される. + これらの内部長さが0であった場合は,\.{shipout}されたボックスの寸法と + \.{hoffset}(または\.{voffset})の値から自動的に計算される. \item \pTeX では横組・縦組と組方向が複数あるので,\.{pdflastxpos}, \.{pdflastypos}の値の座標系を - 「物理的な」向きとすべきか,それとも「組方向に応じた」向きとすべきかは悩みどころである. - \epTeX~110227以降,現在までのバージョンでは上記のように物理的な向きとしている. + 「物理的な」向きとすべきか,それとも「組方向に応じた」向きとすべきかは悩みどころである. + \epTeX~110227以降,現在までのバージョンでは上記のように物理的な向きとしている. \item \.{mag}を用いてページの拡大縮小を行い,かつ - dvipsやdvipdfmxを用いてPostScript,~pdfを生成した場合,\.{pdflast\{x,y\}pos}の原点は - ページの左下隅から左・上方向にそれぞれ$1\,\mathrm{in}-1\,\mathrm{truein}$% - 移動したところになる - \footnote{これは\hologo{pdfTeX}のdviモードや\hologo{XeTeX}と同じ挙動である.}. + dvipsやdvipdfmxを用いてPostScript,~pdfを生成した場合,\.{pdflast\{x,y\}pos}の原点は + ページの左下隅から左・上方向にそれぞれ$1\,\mathrm{in}-1\,\mathrm{truein}$% + 移動したところになる + \footnote{これは\hologo{pdfTeX}のdviモードや\hologo{XeTeX}と同じ挙動である.}. \end{itemize} \csitem[\.{pdfcreationdate}] エンジン起動時の時刻を,\texttt{\pdfcreationdate}の形式で表した文字列に展開する. - これは\Pkg{standalone}パッケージを\epTeX で扱うために2013/06/05に実装されたプリミティブであるが, - 現在時刻の「秒」まで得るためにも使用できる(\TeX 82では分単位でしか取得できない). - + 末尾に|+09'00'|などと表示されるのはローカルのタイムゾーンであるが, + 例えば|SOURCE_DATE_EPOCH=1000000000|のように環境変数を設定すると + |D:20010909014640Z|のようにタイムゾーンは|Z|と表示される. + % [TODO] |FORCE_SOURCE_DATE|が0か1かは関係する? + % https://tug.org/pipermail/tex-live/2018-November/042575.html + \epTeX においてプリミティブを実装した当初は「最初にこのプリミティブが実行された時刻を…」と していたが,\epTeX~161030から\hologo{pdfTeX}と同じ挙動に修正した. + これは\Pkg{standalone}パッケージを\epTeX で扱うために2013/06/05に実装されたプリミティブであるが, + 現在時刻の「秒」まで得るためにも使用できる(\TeX 82では分単位でしか取得できない). + \csitem[\.{pdffilemoddate} <filename>, \.{pdffilesize} <filename>] それぞれ<filename>の更新時刻(\.{pdfcreationdate}と同じ形式)と ファイルサイズを表す文字列に展開する. @@ -696,6 +646,13 @@ delimiter codeを取得しようとしても,現時点のパッチでは,う しかし\cite{expanded1}をきっかけに, \hologo{pdfTeX}, \epTeX, \hologo{XeTeX}で一斉に実装された. \epTeX~180518以降で利用可能である. + +\ifnum\epTeXversion>190131 %%%%% TL2019-hack + \csitem[\.{ifincsname}] + \texttt{\.{csname}~...~\.{endcsname}}内で評価されたちょうどその時に真となる. + \LaTeX~2019-10-01で行われる変更(\cite{latex95,tjb83})で必要になったために + \epTeX~190709で導入された. +\fi %%%%% TL2019 \end{cslist} \section{バージョン番号} @@ -790,7 +747,7 @@ abcfi\the\lastnodechar, abc\char"1C \the\lastnodechar となり,見た目では同じ「fi」が\.{lastnodechar}実行時の「最後のノード」であるかのように見えても, それが合字の場合(左側)では\.{lastnodechar}の実行結果は最後の構成要素「i」のコード番号105となる. -\begin{curve} +\begin{dangerous} 「|これは,|」とソース中に入力したときの ノードの状態を\.{showlists}で調べてみると次のようになっており, 本当に一番最後のノードはJFMによって挿入される二分空きの空白 @@ -807,7 +764,7 @@ abcfi\the\lastnodechar, abc\char"1C \the\lastnodechar \end{verbatim} しかし,数段落上の説明の通り,\.{lastnodechar}は\pTeX の和文処理によって自動的に挿入された これらJFM由来の空白を無視する. -\end{curve} +\end{dangerous} 「最後のノード」を見ているので, \begin{verbatim} @@ -919,6 +876,8 @@ abcfi\the\lastnodechar, abc\char"1C \the\lastnodechar 現在読み込んでいるファイルの文字コードを<encoding>に変更する. 実際に変更されるのは「次の行」であり,また現在のファイルからさらに\.{input}等で 読まれたファイルには効力を及ぼさない. + <encoding>の末尾は,空白トークンや展開不能トークンによって区切られる. + % [TODO] これで合っていますか? -- aminophen <encoding>の値は,基本的には\pTeX の\texttt{-kanji}オプションで指定できる値 (\texttt{euc}, \texttt{sjis}, \texttt{jis}, \texttt{utf8})である. @@ -1033,25 +992,33 @@ $3$\,sp)だが,どこか気になるところである. documentation for the $\it\Omega$ system}, 1999.\\ |$TEXMFDIST/doc/omega/base/doc-1.8.tex| \bibitem{pdftexman} H\`an Th\'{\^e} Th\`anh et al. \textit{The - \hologo{pdfTeX}\ user manual}, 2015.\\ - |$TEXMFDIST/doc/pdftex/manual/pdftex-a.pdf| -\bibitem{l2e26} - The \LaTeX3 Project Team, \textit{\LaTeX\ News Issue 26}, 2017.\\ - |$TEXMFDIST/source/latex/base/ltnews26.tex|, \\ - \url{https://www.latex-project.org/news/latex2e-news/ltnews26.pdf}. -\bibitem{tjb28} 北川 弘典, - 「[ptex] |\inhibitglue|の効力」,2017/09/20.\\ - \url{https://github.com/texjporg/tex-jp-build/issues/28}. -\bibitem{plt63} Dora TeX, - 「p 指定の tabular でのセル冒頭の |\relax\par|」,2018/02/19.\\ - \url{https://github.com/texjporg/platex/issues/63}. + \hologo{pdfTeX}\ user manual}, 2015.\\ + |$TEXMFDIST/doc/pdftex/manual/pdftex-a.pdf| + \bibitem{l2e26} + The \LaTeX3 Project Team, \textit{\LaTeX\ News Issue 26}, 2017.\\ + |$TEXMFDIST/source/latex/base/ltnews26.tex|, \\ + \url{https://www.latex-project.org/news/latex2e-news/ltnews26.pdf}. + \bibitem{tjb28} 北川 弘典, + 「[ptex] |\inhibitglue|の効力」,2017/09/20.\\ + \url{https://github.com/texjporg/tex-jp-build/issues/28}. + \bibitem{plt63} Dora TeX, + 「p 指定の tabular でのセル冒頭の |\relax\par|」,2018/02/19.\\ + \url{https://github.com/texjporg/platex/issues/63}. \bibitem{expanded1} Joseph Wright, ``[tex-live] Primitive parity, |\expanded| and |\Ucharcat|'', 2018/05/04,\\ \url{http://tug.org/pipermail/tex-live/2018-May/041599.html} -\bibitem{expanded} + \bibitem{expanded} Joseph Wright, ``A `new' primitive: |\expanded|'', 2018/12/06.\\ \url{https://www.texdev.net/2018/12/06/a-new-primitive-expanded} + \bibitem{latex95} + Volker-Weissmann, ``Feature Request: Better error messages for non-ASCII symbols in labels.'', + 2018/12/03.\\ + \url{https://github.com/latex3/latex2e/issues/95} +\ifnum\epTeXversion>190131 %%%%% TL2019-hack + \bibitem{tjb83} aminophen,「[e-pTeX] |\ifincsname|」,2019/07/09.\\ + \url{https://github.com/texjporg/tex-jp-build/issues/83}. +\fi %%%%% TL2019 \end{thebibliography} \newpage |