%
% test-eptex.tex
%
% A sample for ConTeXt on e-pTeX
% 
% texexec --eptex --passon="--shell-escape" test-eptex
%
%
\setuppapersize[A4][A4]
%
\startsetups myheader
\space
\bf\ss ConTeXt on W32TeX について
\space
\stopsetups
%
\startsetups myfooter
\space
\ss -\ \pagenumber \ -
\space
\stopsetups
%
\setupheadertexts[\setups{myheader}]
\setupfootertexts[\setups{myfooter}]
%
\usemodule[gnuplot]
\setupinteraction[state=start]
\setupcolors[state=start,cmyk=yes,mpcmyk=yes]
\definecolor[mycolor][c=0.45,m=0.00,y=0.1,k=0.00]
\definecolor[colortext][c=1,m=0.00,y=0.6,k=0.6]

\startbuffer[verbone]
markii : ほぼ凍結していて、サポートされるエンジンは
         pdftex と xetex だけです。過去にサポートされて
         いた aleph はサポートされません。
         pdftex の場合の実行法 texexec sourcename
         xetex  の場合の実行法 texexec --xtx sourcename

markiv : luatexを エンジンとするものを markiv と言います。
         これはどんどん変化しています。
         markiv では、中国語関係のやりかたで、日本語も
         タイプセットできるようになっていると思います。
         最近では nihongo なる環境が導入されています。
         この環境を改善するためには，日本語タイプセット
         のルールに詳しい人が，開発者に助言することが
         非常に大切です。
\stopbuffer
%
% ---------------
% (4) pmatrix
%
\definemathmatrix
[pmatrix]
[left={\left(\,},right={\,\right)}]
% ---------------
% (5) vmatrix or determinant
%
\definemathmatrix
[vmatrix]
[left={\left|\,},right={\,\right|}]
%
% Usages of the above definitions
%
% \startformula
%  \startpmatrix[n=4]
%  \NC a \NC b \NC c \NC X \NR
%  \NC 1 \NC 2 \NC 3 \NC Y \NR
%  \NC A \NC B \NC C \NC Z \NR
%  \stoppmatrix
% \stopformula
%
% \startformula
%  \startvmatrix[n=3]
%  \NC a \NC b \NC c \NR
%  \NC 1 \NC 2 \NC 3 \NR
%  \NC A \NC B \NC C \NR
%  \stopvmatrix
% \stopformula
\starttext
%
% Section command written by Fabrice Couvreur
% (Modified a little)
%
\startuniqueMPgraphic{funny}
path p ;
numeric h ;
h := OverlayHeight ;
p:=unitsquare xscaled \overlaywidth yscaled \overlayheight
superellipsed 0.9 ;
pickup pencircle scaled \overlaylinewidth ;
fill p withcolor \MPcolor{\overlaycolor} ;
draw (24,-1)--(24,h+1) withcolor \MPcolor{\overlaylinecolor} ;
clip currentpicture to p ;
draw p withcolor \MPcolor{\overlaylinecolor} ;
\stopuniqueMPgraphic
\defineoverlay[funny][\uniqueMPgraphic{funny}]
\define[2]\funnysection
       {\framed
          [background=funny,
           frame=off,
           width=fit,
           align={right},
           framecolor=mycolor,
           rulethickness=2pt,
           backgroundcolor=white,
           offset=4pt]
          {\bfb\ss\colortext #1\space\space\colortext #2}}
%
% \setuphead[section][command=\funnysection,ownnumber=yes,
% numberstyle=\bfb\ss,numbercolor=colortext,
% textstyle=\bfb\ss,textcolor=colortext]
%
%
\midaligned{%
\bfd\ss ConTeXt on W32TeX について}

\blank[2*big]
\funnysection{A}{始めに}
\blank[2*big]
ConTeXt はアクティブに開発されている最中で、現在の状況は
以下のようです：

\typebuffer[verbone]
W32TeXではmarkiiのエンジンとしてeptexとeuptexも
サポートしています。
\starttyping
  %
  % test1.tex
  %
  \starttext
  これは初めてのテストです。
  \stoptext
\stoptyping
(eptexの場合のデフォルトエンコーディングはsjisであ
り，euptexの場合のデフォルトエンコーディングはutf-8)
に対して、
\starttyping
  texexec --eptex test1
  あるいは
  texexec --euptex test1
\stoptyping
とすると、test1.pdfが生成されます。
なお、markivはW32TeXではユーザがちょっとだけインストール作業を
する必要があります。勿論LuaTeXは必須です。
\starttyping
installmk4
\stoptyping
というコマンドを実行すると、markivがインストールされます。
markivの実行は\hfil\break
{\tt texexec}ではなくて
\starttyping
context sourcename
\stoptyping
とします。
%
\starttyping
texexec --eptex test1 や
texexec --euptex test1 で
\stoptyping
日本語を手軽に使用できますが、markivやXeTeXをエンジンと
するものでパワーユーザがmodulesを開発するのが本道でしょう。

なお、synctexを有効にするには、markiiではソースで
\starttyping
\synctex=1
\stoptyping
としておきます。markivではソースで
\starttyping
\enabledirectives[system.synctex]
\stoptyping
としておきます。最近のmarkivでは単に次のように実行しても
synctexが有効になります。
\starttyping
context --synctex filename.tex
\stoptyping
%
\blank[big]
%
\funnysection{B}{ConTeXtの特徴}
\blank[small]
この文書では，主として{\tt e-ptex}, {\tt e-uptex}上
の{\tt ConTeXt markii}について簡単に述べています。
この文書自身も{\tt e-ptex}上の{\tt ConTeXt markii}で作成
しています。{\tt LuaTeX}をエンジンとする{\tt ConTeXt markiv}は
非常に強力であり，現在{\tt ConTeXt}と言う場合
には大体において{\tt markiv}を意味します。

さてConTeXtには多くの特徴がありますが、MetaPostの文を直接
記述できるのも一つの特徴です:
\starttyping
\midaligned{%
\startMPcode
u=1cm;
drawarrow (-.5u,0)--(4u,0);
drawarrow (0,-.5u)--(0,2u);
pickup pencircle scaled 1pt;
draw (0,0){up}
for i=1 upto 8: ..(i/2,sqrt(i/2))*u endfor;
label.lrt(btex Function $y=\sqrt{x}$ etex, (3,sqrt(3))*u);
label.rt(btex $x$ etex, (4,0)*u);
label.top(btex $y$ etex, (0,2)*u);
label.llft(btex $O$ etex, (0,0));
\stopMPcode}
\stoptyping
のように書いておいて
\starttyping
texexec --eptex --passon="--shell-escape" sourcename
\stoptyping
のように実行すると，期待したMetaPostの図を入れることができます。
shell-escapeを許可する必要があることに注意して下さい。
実際にやって見ます:
\blank[big]

\midaligned{%
\startMPcode
u=1cm;
drawarrow (-.5u,0)--(4u,0);
drawarrow (0,-.5u)--(0,2u);
pickup pencircle scaled 1pt;
draw (0,0){up}
for i=1 upto 8: ..(i/2,sqrt(i/2))*u endfor;
label.lrt(btex Function $y=\sqrt{x}$ etex, (3,sqrt(3))*u);
label.rt(btex $x$ etex, (4,0)*u);
label.top(btex $y$ etex, (0,2)*u);
label.llft(btex $O$ etex, (0,0));
\stopMPcode}
\blank[big]

上にグラフがあれば成功しています。
もちろんあらかじめ通常のMetaPostで図を作成しておき，
それを読み込むこともできます。出力ファイルの名前は
\starttyping
example.mps
\stoptyping
のように，拡張子を.mpsにしておきます。そうして
\starttyping
\externalfigure[example.mps]
\stoptyping
のようにして図を読み込めば確実です。次に例をあげておきます。
ここでは作成した図を読み込んでいます。
\blank[big]
関数
\startformula
y = \sqrt{x}
\stopformula
のグラフは次のようになります:
\blank[big]

\midaligned{%
\externalfigure[example.mps]
}
\blank[big]

\page
また, Con\TeX{}tターミナルに対応したgnuplotを使う場合，直接
gnuplotスクリプトを記述することもできます:

以下のスクリプトに対して
\starttyping
\midaligned{%
\startGNUPLOTscript[attenuation]
set style function lines
plot [t=0:6] \
     [-1.2:1.2] \
     a = 1.2, \
     omega = 6.6, \
     lambda = 0.8, \
     alpha = 0.8, \
     OMEGA = sqrt(omega**2 - lambda**2), \
     f(t) = a * exp(-lambda * t) * cos(OMEGA * t + alpha), \
     f(t) linewidth 4
\stopGNUPLOTscript
\useGNUPLOTgraphic[attenuation]
}
\stoptyping

次の出力が得られます:(gnuplotを呼ぶので，shell escape が必要)

\midaligned{%
\startGNUPLOTscript[pmetricres]
set style function lines
plot [t=0:6] \
     [-1.2:1.2] \
     a = 1.2, \
     omega = 6.6, \
     lambda = 0.8, \
     alpha = 0.8, \
     OMEGA = sqrt(omega**2 - lambda**2), \
     f(t) = a * exp(-lambda * t) * cos(OMEGA * t + alpha), \
     f(t) linewidth 4
\stopGNUPLOTscript
\useGNUPLOTgraphic[pmetricres]
}

\page

外部ファイルを埋め込むには，たとえば次のようにします:
\starttyping
\midaligned{%
\externalfigure[pic.pdf][width=10cm]
} %(from pdfTeX)
\stoptyping
\midaligned{%
\externalfigure[pic.pdf][width=10cm]
}
\starttyping
\midaligned{%
\externalfigure[parametricsurface.pdf][width=10cm]
} %(from Asymptote)
\stoptyping
\midaligned{%
\externalfigure[parametricsurface.pdf][width=10cm]
}

\blank[big]
ただし，サイズ計算に{\tt ImageMagic}の{\tt identify.exe}を使用する
ので，これが{\tt PATH}から見つかるようにしておく必要があります。
\page
%
%
%
%\midaligned{\bfb \midaligned{フォントのサイズと形のテスト}}
\funnysection{C}{フォントのサイズと形のテスト}
\blank[big]
\midaligned{\bfa \midaligned{●デフォルトサイズ}}
\blank[big]

{%
\starttyping
Normal size
\stoptyping
\starttyping
\tf normal shape
\stoptyping
\tf これは漢字のテスト。 This is a test.

\starttyping
\bf bold
\stoptyping
\bf 漢字はゴシック体。 This is a test.

\starttyping
\it italic
\stoptyping
\it 漢字は通常の形。 This is a test.

\starttyping
\sl slant
\stoptyping
\sl 漢字は通常の形。 This is a test.

\starttyping
\bi bold italic
\stoptyping
\bi 漢字はゴシック体で傾かない。 This is a test.

\starttyping
\bs bold slant
\stoptyping
\bs 漢字はゴシック体で傾かない。 This is a test.
\tf
}

\blank[big]
\midaligned{\bfa \midaligned{●1段階大きいサイズ}}
\blank[big]

{%
\tfa
\starttyping
\tfa  1 step larger fonts
\stoptyping
\starttyping
\tf normal shape
\stoptyping
\tf これは漢字のテスト。 This is a test.

\starttyping
\bf bold
\stoptyping
\bf 漢字はゴシック体。 This is a test.

\starttyping
\it italic
\stoptyping
\it 漢字は通常の形。 This is a test.

\starttyping
\sl slant
\stoptyping
\sl 漢字は通常の形。 This is a test.

\starttyping
\bi bold italic
\stoptyping
\bi 漢字はゴシック体で傾かない。 This is a test.

\starttyping
\bs bold slant
\stoptyping
\bs 漢字はゴシック体で傾かない。 This is a test.
}

\blank[big]
\midaligned{\bfa \midaligned{●2段階大きいサイズ}}
\blank[big]

{%
\tfb
\starttyping
\tfb 2 step larger fonts
\stoptyping
\starttyping
\tf normal shape
\stoptyping
\tf これは漢字のテスト。 This is a test.

\starttyping
\bf bold
\stoptyping
\bf 漢字はゴシック体。 This is a test.

\starttyping
\it italic
\stoptyping
\it 漢字は通常の形。 This is a test.

\starttyping
\sl slant
\stoptyping
\sl 漢字は通常の形。 This is a test.

\starttyping
\bi bold italic
\stoptyping
\bi 漢字はゴシック体で傾かない。 This is a test.

\starttyping
\bs bold slant
\stoptyping
\bs 漢字はゴシック体で傾かない。 This is a test.
}

\blank[big]
\midaligned{\bfa \midaligned{●3段階大きいサイズ}}
\blank[big]

{%
\tfc
\starttyping
\tfc 3 step larger fonts
\stoptyping
\starttyping
\tf normal shape
\stoptyping
\tf これは漢字のテスト。 This is a test.

\starttyping
\bf bold
\stoptyping
\bf 漢字はゴシック体。 This is a test.

\starttyping
\it italic
\stoptyping
\it 漢字は通常の形。 This is a test.

\starttyping
\sl slant
\stoptyping
\sl 漢字は通常の形。 This is a test.

\starttyping
\bi bold italic
\stoptyping
\bi 漢字はゴシック体で傾かない。 This is a test.

\starttyping
\bs bold slant
\stoptyping
\bs 漢字はゴシック体で傾かない。 This is a test.
}

\blank[big]
\midaligned{\bfa \midaligned{●4段階大きいサイズ}}
\blank[big]

{%
\tfd
\starttyping
\tfd 4 step larger fonts
\stoptyping
\starttyping
\tf normal shape
\stoptyping
\tf これは漢字のテスト。 This is a test.

\starttyping
\bf bold
\stoptyping
\bf 漢字はゴシック体。 This is a test.

\starttyping
\it italic
\stoptyping
\it 漢字は通常の形。 This is a test.

\starttyping
\sl slant
\stoptyping
\sl 漢字は通常の形。 This is a test.

\starttyping
\bi bold italic
\stoptyping
\bi 漢字はゴシック体で傾かない。 Test.

\starttyping
\bs bold slant
\stoptyping
\bs 漢字はゴシック体で傾かない。 Test.
}

\blank[big]

以上のようにフォントサイズと形に対するコマンドが大体動くようになっています。
\starttyping
\tfx と \tfxx 等も働きます。例えば
{\tfx A test. 漢字を縮小したもの}

{\bfx A test. 漢字を縮小したもの}

{\itx A test. 漢字を縮小したもの}

{\slx A test. 漢字を縮小したもの}

{\bix A test. 漢字を縮小したもの}

{\bsx A test. 漢字を縮小したもの}

{\tfxx A test. 漢字を縮小したもの}

{\bfxx A test. 漢字を縮小したもの}

{\itxx A test. 漢字を縮小したもの}

{\slxx A test. 漢字を縮小したもの}

{\bixx A test. 漢字を縮小したもの}

{\bsxx A test. 漢字を縮小したもの}
から次の出力が得られます。
\stoptyping
{\tfx A test. 漢字を縮小したもの}

{\bfx A test. 漢字を縮小したもの}

{\itx A test. 漢字を縮小したもの}

{\slx A test. 漢字を縮小したもの}

{\bix A test. 漢字を縮小したもの}

{\bsx A test. 漢字を縮小したもの}

{\tfxx A test. 漢字を縮小したもの}

{\bfxx A test. 漢字を縮小したもの}

{\itxx A test. 漢字を縮小したもの}

{\slxx A test. 漢字を縮小したもの}

{\bixx A test. 漢字を縮小したもの}

{\bsxx A test. 漢字を縮小したもの}

\blank[8mm]

以上はデフォルトの{\tt size of body font = 12pt}の場合です。更に
\starttyping
\switchtobodyfont[arg]
\stoptyping
によってbodyフォントのサイズを変更する
ことができます。ここで{\tt arg}として使用できるのは
{\tt 4pt, 5pt, 6pt, 7pt, 8pt, 9pt, 10pt, 11pt, 12pt, 14.4pt, 17.3pt,
20.7pt}です。
{\tt 13pt, 14pt, 15pt, 16pt, 17pt, 18pt, 19pt, 20pt, 21pt, 22pt, 23pt,
24pt, 25pt, 26pt, 27pt, 28pt, 29pt, 30pt}の場合も日本語は用意して
ありますが，欧文フォントが変化しないかも知れません。

\blank[big]
\starttyping
20.7ポイントの例
\stoptyping
{\switchtobodyfont[20.7pt]

\bs 漢字はゴシック体で傾かない。 Test.

\blank[small]
{{\tt\type{\bsd}}
\bsd

漢字はゴシック体。

Test.
}}

\starttyping
30ポイントの日本語
\stoptyping

{\setupbodyfont[30pt]
\bs 漢字
\bsd 漢字}{\setupbodyfont[20.7pt]左は，\type{\bsd}}
%
\page
\funnysection{D}{簡単な数式}
\blank[2*big]
\midaligned{%
\bfc Math}
\blank[big]
\placeformula[eq:1]
\startformula
\sin^2\theta + \cos^2\theta = 1
\stopformula
明らかに式(\in[eq:1])は任意の$\theta$に関して常に成立する。
\placeformula
\startformula
  \startalign
\NC \sin(a+b) \NC = \sin a\cos b + \cos a\sin b \NR [eq:2]
\NC \cos(a+b) \NC = \cos a\cos b - \sin a\sin b \NR [eq:3]
  \stopalign
\stopformula
式(\in[eq:2]), (\in[eq:3])は加法定理と呼ばれる。
%
%
\placeformula[eq:4]
\startformula
A=
 \startpmatrix[n=4]
 \NC a \NC b \NC c \NC X \NR
 \NC 1 \NC 2 \NC 3 \NC Y \NR
 \NC A \NC B \NC C \NC Z \NR
 \stoppmatrix
\stopformula
式(\in[eq:4])は行列の例である。
%
%
\placeformula[eq:5]
\startformula
B=
 \startvmatrix[n=6]
 \NC a \NC b \NC c \NC d \NC e \NC f \NR
 \NC 1 \NC 2 \NC 3 \NC 4 \NC 5 \NC 6 \NR
 \NC A \NC B \NC C \NC D \NC E \NC F \NR
 \NC f \NC e \NC d \NC c \NC b \NC a \NR
 \NC 6 \NC 5 \NC 4 \NC 3 \NC 2 \NC 1 \NR
 \NC F \NC E \NC D \NC C \NC B \NC A \NR
 \stopvmatrix
\stopformula
式(\in[eq:5])は行列式の例である。
\stoptext
