
////////////////////////////////////////////////////////////////////////////

                              WriteOnPDF.tex

            （PDF ファイルに追加書き込みをおこなう TeX マクロ）

                                  Ver 1.0d

                             2014 年 4 月 14 日

                                 林 かぐら

////////////////////////////////////////////////////////////////////////////


   1. はじめに
   2. 準備
   3. 文字列
   4. フォント
   5. 文章の書き込み
   6. チェックマーク、円記号
   7. 色
   8. 外部リンク
   9. 文章の整形
  10. 数式
  11. 直線や円
  12. 図形
  13. 図の挿入
  14. 複数ページへの同じ指定
  15. 書き追わったら
  16. 他の使い方


=============
 1. はじめに
=============

PDF ファイルに書き込みをおこないます。

もちろん Adobe Acrobat でできるのですが、ここではフリーソフトにこだわってみ
ました。
Adobe Reader や PDFXChange Viewer でもある程度書き込みができるようになってい
ますが、あまり融通が利くとは思えません。数式はむずかしいでしょう。
PDF ファイルを直接書き換えるのはむずかしいので、ここでは PDF ファイルを背景
画像として読み込み、その上に文字を重ねる方法をとりました。文字書きは TeX で
おこないます。

書き込む項目がたくさんあると、位置調整に時間がとられ、すぐに疲れてしまいます。
ご注意を。

がむしゃらにコードを書いたので、おかしなところ、スマートでないところがたくさ
んあります。なにしろ TeX ブックをきちんと読んでいないので。
LaTeX のマクロではないので、「LaTeX の流儀に照らしておかしい」などとは言わな
いでください。「それを言っちゃあお仕舞いよ」。

TeX = LaTeX と思い込んでいる人は、このマクロを絶対に使ってはいけません。


=========
 2. 準備
=========

角藤さんの Win32TeX でしか確認していません。

このマクロは TikZ を使います。
最新版の TikZ なら問題ないのですが、少し前の TikZ では plain TeX の shipout
を書き換えてしまうのでうまくいきません。
以下で述べる方法でタイプセットしたとき、グリッドが表示されないようなら TikZ
が古いので、WriteOnPDF.tex の 134 行目にある %\Redefine@Shipout の % を外し
ておいてください。
なおグリッド自体は TikZ で描いているわけではありません。

欧文フォントは、newtx フォント、TX フォント、Latin Modern フォントのどれかを
使います。デフォルトは newtx フォントです。
newtx フォントは最新の Win32TeX には入っていますが、少し前の Win32TeX には入
っていません。そのときは WriteOnPDF.tex の 338 行目と 339 行目にあるコメント
を入れ替えて、TX フォントがデフォルトになるようにしておいてください。

まず、以下の TeX ファイルを作成します。文字コードは UTF-8 にしてください。
* 印は省略可。

  \input WriteOnPDF  ← マクロの読み込み
* \TeXengine pTeX    ← (e-)pTeX でタイプセットする場合
                       ［デフォルトは (e-)upTeX］
  \backfile hoge.pdf ← 読み込む PDF ファイル（hoge.pdf の場合、日本語不可）
* \totalpage 3       ← 全体のページ数（3 ページの場合） ［デフォルトは 1］
* \paper B5          ← 用紙サイズ（B5 の場合）          ［デフォルトは A4］
  \BEGIN             ← 開始
  \END               ← 終了

これを (e-)upTeX または (e-)pTeX でタイプセットし、dvipdfmx で PDF ファイル
を作成します。pLaTeX ではないことに注意。原稿ファイルが Test.tex の場合、

  >uptex Test  または  >ptex Test
  >dvipdfmx Test

すると元の PDF ファイルに 2 mm 幅のグリッドが表示されます。
読み込む PDF ファイルが hoge.pdf のとき、原稿ファイルを hoge.tex としてはい
けません。hoge.tex から hoge.pdf が作成され、元のファイルが上書きされてしま
います。

読み込む PDF ファイルがカラーで、グリッドが見えにくい場合はグリッドの色を変
えます。

  \input WriteOnPDF
  \backfile hoge.pdf
  \gridR または \gridG  ← これを追加（デフォルトは \gridB）
  \BEGIN
  \END

\gridR  赤系のグリッド
\gridG  緑系のグリッド
\gridB  青系のグリッド

用紙サイズは \paper です。以下が指定できます。

  \paper A3       A3 縦置き              \paper A3-       A3 横置き
  \paper A4       A4 縦置き              \paper A4-       A4 横置き
  \paper A5       A5 縦置き              \paper A5-       A5 横置き
  \paper B4       B4 縦置き              \paper B4-       B4 横置き
  \paper B5       B5 縦置き              \paper B5-       B5 横置き

  直接サイズを指定することもできます。たとえば、はがきなら以下のようにです。
  \paper 100x148  横 100mm、縦 148mm     \paper 100x148-  横 148mm、縦 100mm
                                （これは \paper 148x100 と同じです）

dvi ファイルに直接 papersize specials を書き込むので、dvipdfmx で用紙サイズ
を指定しなくて大丈夫です。

普通、用紙サイズは読み込む PDF ファイルと同じにしますが、違う場合は読み込む
PDF ファイルが拡大/縮小されます。

\backfile は PDF ファイルを読み込むことを想定していますが、EPS、JPEG、PNG の
ファイルを読み込むこともできます。

PDF ファイルがうまく読み込めない場合があります。
たとえば原稿をスキャンして PDF 化したような場合に起こる可能性があります。
PDF のバージョンが高いからかもしれません。
このときは以下のようにしてみてください。

  1. Adobe Reader で元ファイルを表示します。
  2. 表示を大きくしておきます。← ちょっと重要
  3.「編集」→「スナップショット」とし、ページ全体を選択します。
  4. データがクリップボードに入るので、ペイントを起動し、貼り付けます。
  5. PNG 形式で保存します。
  6. その PNG ファイルを backfile にします。

複数ページの場合、この方法だとページごとに作業することになります。
書き加えたファイルを 1 つにまとめたい場合は W32TeX 同梱の qpdf.exe を使って
結合すればよいでしょう。


===========
 3. 文字列
===========

文字列の書き込みは \yx でおこないます。
もちろん \BEGIN ～ \END の中に書きます。

  \yx(行 列){文字列}

たとえば

  \yx(10 5.5){あいうえお}

なら、上から 10cm、左から 5.5 cm のところに「あいうえお」と書かれます。
数値の単位は cm です。（下図、もちろん枠は出ません）

      │
      │
      │
      │
  10cm│
      │
      │
      │              ┌─────┐
      │              │あいうえお│
      └──────→・─────┘
             5.5cm

(10,5.5) のような座標指定のほうが自然かもしれませんが、単位を cm にしたため
 , と . が混在してわかりにくいです。そこで (10 5.5) のようにカンマではなく空
白区切りにしました。

\yx(10 5.5) の (10 5.5) は枠の左下の位置になります。
この位置は変更できます。

縦方向は t(op)、 m(iddle)、b(ottom)
横方向は l(eft)、c(enter)、r(ight)

       left center right
  top   ┌─────┐
  middle│あいうえお│
  bottom└─────┘

として

  \yx-tl      \yx-tc      \yx-tr
        ┌───────┐
        │              │
  \yx-ml│    \yx-mc    │\yx-mr
        │              │
        └───────┘
  \yx-bl      \yx-bc      \yx-br

と指定します。たとえば

  \yx-tr(10 5.5){あいうえお}

なら

      │
      │
      │
      │
  10cm│
      │
      │
      │
      │      5.5cm
      └─┬────→・
          │あいうえお│
          └─────┘

となります。
中央は \yx-mc です。

なお \yx は \yx-bl と同じです。

実はチェックしているのは t b l r だけで m と c はチェックしていません。
つまり t と b 以外なら m に、l と r 以外なら c とみなされます。

縦組み（縦書き）も可能です。
このときは \tateyx を使います。
ただし \yx のデフォルトが \yx-bl となっているのに対し、
\tateyx のデフォルトは \tateyx-tc になっています。

       \yx       \tateyx
  ┌─────┐  ┌・┐
  │あいうえお│  │あ│
  ・─────┘  │い│
                  │う│
                  │え│
                  │お│
                  └─┘

複数ページの場合は何ページに書き込むのかを \page で指定します。

  \page 2
  \yx .....
  \yx .....
  \page 5
  \yx .....

1 ページ目だけは \page 1 と明示しなくても大丈夫です。
もちろん指定してもかまいません。

なお \newpage が使えます。

たとえば

  \page 2
  \yx .....
  \newpage
  \yx .....
  \newpage
  \newpage
  \yx .....
  \page 8
  \yx .....

は

  \page 2
  \yx .....
  \page 3
  \yx .....
  \page 5
  \yx .....
  \page 8
  \yx .....

と同じです。


=============
 4. フォント
=============

(1) 使用するフォント

    \basefont 和文フォント/欧文フォント
    \basefont 和文フォント
    \basefont /欧文フォント

  とし、和文フォントは IPA、MS、- が、
  欧文フォントは NewTX、TX、LM が指定できます。
  デフォルトは

    \basefont IPA/NewTX

  です。だから上記 2 番目と 3 番目は

    \basefont 和文フォント/NewTX
    \basefont IPA/欧文フォント

  と同じです。

    IPA   → IPAex 明朝 と IPAex ゴシック
    MS    → ＭＳ 明朝  と ＭＳ ゴシック
    -     → 無指定

    NewTX → newtx フォント
    TX    → TX フォント
    LM    → Latin Modern フォント

  IPA と MS の場合、\special 命令でフォント名を書き込むので、map ファイルで
  の指定は無視されます。
  これ以外の和文フォントを使いたい場合は - とします。こうするとフォント名を
  書き込まないので、map ファイルでの指定が生きることになります。

  欧文は T1 エンコーディングにしてあります。


(2) 文字

  a. LaTeX にならい、アクセント記号として \r と \k を定義しました。

       \r 文字 --- 文字の上に小さい丸（リング）

     なお \r A は \AA と、\r a は \aa と同じです。

       \k 文字 --- 文字の下に c（オゴネク）

  b. T1 エンコーディングにしたので、\visiblespace（見える空白）が使えます。

  c. \ding{数値} で記号が出せます。たとえば

       \ding{43}  あるいは 16 進で  \ding{"2B}

     とすると、右向きの手が表示されます。

  d. newtx / TX フォントの数式イタリック

     g はデフォルトで 9 の形にしてあります。
     これを丸 2 つの g にするには \varg とします。
     newtx / TX フォントのデフォルトと逆にしました。

     v、w、y はとがった形ですが、\varv、\varw、\vary とすると、丸みをおびた
     形になります。これは newtx / TX フォントのデフォルトと同じです。

  e, (e-)upTeX でタイプセットすれば、いろいろなユニコード文字が表示できます。
     たとえば

       \char\ucs"261E  あるいは  \kchar\ucs"261E

     とすると、右向きの手が表示されます。261E はユニコード番号 U+261E です。
     もちろん原稿の文字コードを UTF-8 にしているので、ユニコード番号ではなく
     直接原稿に文字を書くこともできます。
     これは和文文字です。
     これに対し \ding{43} は ZapfDingbats フォントのコード番号 43 です。
     どちらも右向きの手ですが、フォントが違うので、形が微妙に異なります。


(3) フォントファミリーと文字サイズの指定

    \setfont フォントファミリー/文字サイズ
    \setfont フォントファミリー
    \setfont 文字サイズ

  とします。

    \setfont 文字サイズ  は  \setfont / 文字サイズ  ではないことに注意。
    / を入れてはいけません。

  フォントファミリーは Min と Goth が指定できます。この 2 つだけです。

            （和文）    （欧文）      （数式）
    Min  →  明朝体      ローマン体    ローマン体
    Goth →  ゴシック体  サンセリフ体  ボールド体

  文字サイズは単位なしの数値を指定します。実際の単位は bp です。

  デフォルトは \setfont Min/10.5 です。

    10.5 → 10.5bp（MS-Word のデフォルトと同じ 10.5 ポイント）

    この 10.5bp は和文の実サイズです。

  ファミリー、文字サイズ のどちらかを省略すると、省略したものは現在の設定が
  引き継がれます。

  \setfont は BEGIN の前でも後でも、何度でも指定できます。
  指定すると、以後それが有効になります。

  どの指定であっても以下でフォントの切り替えができます。
  ただしフォントサイズは固定です。

    \Min         和文明朝体
    \Goth        和文ゴシック体
    \Rm          欧文ローマン体
    \Bf          欧文ボールド体
    \Ss          欧文サンセリフ体
    \Normalmath  数式ローマン体
    \Boldmath    数式ボールド体

  \setfont Goth だと欧文はサンセリフ体、数式はボールド体になります。
  欧文をボールド体にしたければ

    \setfont Goth
    \Bf

  とすればよいでしょう。

  もちろん

    \setfont Min
    \Goth
    \Bf
    \Boldmath

  でも同じです。

  フォントの切り換えは \setfont でおこなってもよいのですが、普通は \yx の中
  でおこないます。

    \setfont Min/12
    \yx(10 5.5){あい{\Goth うえ}おABC{\Bf xyz}$a^2+b^2=\hbox{\Boldmath$c$}^2$}

  あるいは

    \setfont Min/12
    \yx(10 5.5)
    {あい\textGoth{うえ}おABC\textBf{xyz}$a^2+b^2=\hbox{\Boldmath$c$}^2$}

  これで
                     2  2  2
    あいうえおABCxyza +b =c
        ~~~~     ~~~      ~
  となります。~~~ はゴシック体かボールド体

  この例のように一部の文字のみ変更するには

    ～～～{\Min .....}～～～
    ～～～{\Goth ....}～～～
    ～～～{\Rm ......}～～～
    ～～～{\Bf ......}～～～
    ～～～{\Ss ......}～～～

  とするか

    ～～～\textMin{.....}～～～
    ～～～\textGoth{....}～～～
    ～～～\textRm{......}～～～
    ～～～\textBf{......}～～～
    ～～～\textSs{......}～～～

  とします。

  なお、サンセリフ体は、Ss ではなく、LaTeX 流の Sf にしてもかまいません。

    ～～～{\Sf ......}～～～

  あるいは

    ～～～\textSf{......}～～～

  数式の中で、普通の文字を書くときは

    $～～～\hbox{.....}～～～$

  とします。\hbox{.....} の ..... には \Min、\Goth、\Rm、\Bf、\Ss が使えます。
  ただし、この \hbox{.....} は上付きや下付きにはできません。

  \Normalmath となっている数式の中で、一部をボールド体にしたければ

    $～～～\hbox{\Boldmath$.....$}～～～$

  とします。もし、上付きで使いたければ

    $～～～^{\hbox{\Boldmath$\scriptstyle .....$}}～～～$

  と \scriptstyle を入れます。
  このへんは結構面倒なので、\bm{.....} というコマンドが使えるようにしてあり
  ます。たとえば

    $a^{\bm{b+c}}$

  とすると、

      b+c
    a

  の b+c の部分がボールド体になります。
  これは $a^{\hbox{\Boldmath$\scriptstyle b+c$}}$ と同じです。

    $a+\bm{b+c}$

  とすると、これは $a+\hbox{\Boldmath$b+c$}$ と同じになります。

  ディスプレイ数式に相当するのは、文字列の場合は $\displaystyle ～～～$、
  文字列ではなく文章のとき（後述）は $$～～～$$ または \[～～～\] です。

  \setfont 同様の指定を \yx の中に書くことができます。

    \yx(10 5.5)[Goth/20]{あいうえお}

  のようにです。

    \setfont Goth/20

  と同じ設定がローカルに当てはまります。
  もちろん [Goth] でも [20] でも可能です。
  \yx を抜けると元に戻ります。

  \yx の中でのフォント切り換えは簡単ですが、フォントサイズの変更は面倒です。
  どうしても \yx の中でフォントサイズを変えたい場合は以下のようにすればよい
  でしょう。

    \setfont Min/10.5
    \yx(10 5.5){あいうえお{\setfont 20 かきくけこ}さしすせそ}

  これで

    あいうえおかきくけこさしすせそ
        ↑    ~~~~~~~~~~    ↑
     (10.5bp)   (20bp)   (10.5bp)

  となります。\setfont 20 の後ろに空白が必要です。

  あるいは \larger や \smaller が使えます。

    \yx(10 5.5){あいうえお{\larger1.5 かきくけこ}さしすせそ}

  なら「かきくけこ」の部分が「あいうえお」の文字サイズの 1.5 倍になります。

  部分的に文字を拡大した場合、\kanjiskip の伸縮率は変わらないので、行組版で
  Warning が出るかもしれません。


===================
 5. 文章の書き込み
===================

基本的に \yx と同じですが、位置指定が (行 列) ではなく

  (行 列 横幅 縦幅)

または

  (行 列 横幅 縦幅 左右のパディング 上下のパディング)

とします。
文章を書くボックスの横幅と縦幅が必要です。
横幅と縦幅の指定がなければ単なる文字列の書き込みになります。

左右のパディング を省略すると 0bp なります（隙間なし）。
上下のパディング を省略すると、それは 左右のパディング と同じになります。
左右のパディング を省略し、上下のパディングを書きたい場合は

  (行 列 横幅 縦幅 - 上下のパディング)

のように - を入れます。

位置が 行 列 の順で、それ以外は 横 縦 の順になっています。

行、列、横幅、縦幅 の 4 つは単位を付けずに指定します（実際は cm）。
パディングには単位が必要です。

縦幅は（指定しなければなりませんが）、実際には使われません。
長い文章を書くと下にはみ出るだけで、エラーにはなりません。
行間を詰めて枠内に収めることはしないのです。

段落内での改行は \\、段落の終わりは \par または空行です。

デフォルトの行送りはフォントサイズの 1.5 倍（10.5bp なら 15.75bp）ですが、

  \baselineskip=18bp や \baselineskip=14bp

などとして変更することができます。

ある段落間を 開ける/詰める 場合は

  \vskip5bp や \vskip2mm や \vskip-2mm

とするか

  \vsk0.5 や \vsk-0.1

とします。
\vsk0.5 は行送りの 0.5 倍の空きを入れます。
この場合 \vsk0.5 の後ろで改行するか空白を入れてください。

なお \smallskip、\medskip、\bigskip が使えます。

  \smallskip は \vsk0.25
  \medskip   は \vsk0.5
  \bigskip   は \vsk1

と同じです。

段落内で、ある行の下を 開ける/詰める 場合は、その行のどこか（どこでもかまい
ません）に

  \inlinevskip5bp や \inlinevskip2mm や \inlinevskip-2mm

あるいは

  \inlinevsk0.5 や \inlinevsk-0.1

を書き込みます。
\inlinevsk0.5 は行送りの 0.5 倍の空きを入れます。
この場合 \inlinevsk0.5 の後ろに空白を入れてください。

ディスプレイ数式は $$～～～$$ または \[～～～\] です。
ディスプレイ数式の前後に行送りの 0.25 倍の空き（伸び縮みなし）を入れてありま
す。気に入らなければ \setskip を書き直してください。

\yx だけでなく \YX も定義してあります。
といってもこの 2 つはほぼ同じです。
違いは \yx のデフォルトが \yx-bl で、\YX のデフォルトが \YX-tl であることだ
けです。

  \yx、\yx-bl、\YX-bl
    ┌─────┐
    │あいうえお│
    ・─────┘

  \YX、\YX-tl、\yx-tl
    ・─────┐
    │あいうえお│
    │かきくけこ│
    │          │
    └─────┘

文字列の書き込みには     \yx    を、
単なる記号の書き込みには \yx-mc を、
文章の書き込みには       \YX    を
使うとよいかもしれません。

文章の入力では枠線が表示されます。
ただし、最終出力で \hidegrid を指定すると、この枠は消えます。

枠を描きたい場合は \rectangle を使ってください。

なお縦組み（縦書き）も可能です。
このときは \tateyx あるいは \tateYX を使います。
ただし \tateyx のデフォルトが \tateyx-tc となっているのに対し、
\tateYX のデフォルトは \tateYX-tr になっています。

以下にデフォルトの位置をまとめます。

       \yx            \YX
  ┌─────┐ ・─────┐
  │あいうえお│ │あいうえお│
  ・─────┘ │かきくけこ│
                 │          │
                 └─────┘

     \tateyx        \tateYX
      ┌・┐     ┌─────・
      │あ│     │  こきえあ│
      │い│     │    くおい│
      │う│     │    けかう│
      │え│     └─────┘
      │お│
      └─┘

もちろん位置は 9 箇所のどこでも指定できます。
\yx と \YX
\tateyx と \tateYX
はデフォルトの位置が違うだけで、本質的に同じです。

以上、位置指定は (行 列) として \yx などを使うように説明しました。
しかし (列 行) と指定することもできます。
\xy、\XY、\tatexy、\tateXY を使えばよいのです。
使い方は \yx 系と同じですが、\xy-ab の a は l、c、r のどれか（列指定）で、
b は t、m、b のどれか（行指定）です。逆転していることに注意。

さらに、位置で マイナスの数値が使えます。
行の場合は下から、列の場合は右からの位置になります。
ただし、グリッドはいつも左上から引くので、ちょっとわかりにくいかもしれません。

  \yx(0 1) ┌・───────・┐\yx(0 -1)
           │                  │
  \yx(2 1) │・              ・│\yx(2 -1)
           │                  │
  \yx(4 0) ・                  ・\yx(4 -0)
           │                  │
           │                  │
           │                  │
           │                  │
           │                  │
  \yx(-2 1)│・              ・│\yx(-2 -1)
           │                  │
  \yx(-0 1)└・───────・┘\yx(-0 -1)

-0 も使えます。これは 0 とは異なります。
ただし、-0.0 としてしまうとうまくいきません。
-0.0 = 0 です。

また数値のかわりに - と書くと、縦または横の中央になります。

                  \yx(0 -)
           ┌────・────┐
           │                  │
           │                  │
           │                  │
           │                  │
           │                  │
  \yx(- 0) ・        ・        ・\yx(- -0)
           │     \yx(- -)     │
           │                  │
           │                  │
           │                  │
           │                  │
           └────・────┘
                  \yx(-0 -)

ですから

  \tateyx-mc(- -)[Goth/300]{受付}

とすると、用紙中央に大きく「受付」と縦に書かれます。

           ┌──┐
           │ 受 │
           │ 付 │
           └──┘

横組みの場合、文章を上下中央や下に配置することができます。

  \YX(行 列 横幅 縦幅 左右のパディング 上下のパディング)

で、縦幅に m を付けると上下中央（middle）に、
b を付けると下寄せ（bottom）になります。
デフォルトは上寄せです。

  \YX(y x 10 5)
  \YX(y x 10 m5)
  \YX(y x 10 b5)

は、それぞれ以下のようになります。

         10                10                10
   ┌─────┐    ┌─────┐    ┌─────┐
   │あいうえお│    │          │    │          │
  5│かきくけ  │  m5│あいうえお│  b5│          │
   │          │    │かきくけ  │    │あいうえお│
   │          │    │          │    │かきくけ  │
   └─────┘    └─────┘    └─────┘
   （デフォルト）

縦組みの場合は、横幅に c を付けると左右中央に、l を付けると左寄せになります。
デフォルトは右寄せです。

  \YX(y x 10 5)
  \YX(y x c10 5)
  \YX(y x l10 5)

は、それぞれ以下のようになります。

         10               c10               l10
   ┌─────┐    ┌─────┐    ┌─────┐
   │    けおあ│    │  けおあ  │    │けおあ    │
  5│      かい│   5│    かい  │   5│  かい    │
   │      きう│    │    きう  │    │  きう    │
   │      くえ│    │    くえ  │    │  くえ    │
   └─────┘    └─────┘    └─────┘
   （デフォルト）


===========================
 6. チェックマーク、円記号
===========================

チェックマークは

  \checkmark(行 列) または \Checkmark(行 列)

とします。
たとえば \checkmark(10 5.5) なら (10 5.5) の位置を中心にしてチェックマークを
描きます。
\checkmark より \Checkmark のほうが太くなります。

実際には以下のフォントを使っています。
\checkmarksymbol --- AMS フォントA（ntxsya または txsya または msam10）の 0x58
\Checkmarksymbol
  NewTX / TX 指定時 --- AMS フォントA（ntxbsya または txbsya）の 0x58
  LM         指定時 --- ZapfDingbats フォント（uzdr）の 0x33
msam10 にはボールド体がないのでこうしています。

\checkmark(10 5.5) は \yx-mc(10 5.5){\checkmarksymbol} と同じです。

位置を \xy 系で指定したい場合は

  \checkmarkxy や \Checkmarkxy

を使います。

\checkmarkxy(5.5 10) は \checkmark(10 5.5) と同じです。

\yen で円記号（Y + =）が出せます。
これは AMS フォントA の 0x55 です。


=======
 7. 色
=======

文字の色は RGB モードで

  \textcolor(r g b){...}

と指定します。
ここで 0≦r, g, b≦1 です。

色名は以下が定義されていて、使えます。

  \red{...}、   \green{...}、  \blue{...}、
  \yellow{...}、\magenta{...}、\cyan{...}、
  \white{...}、 \black{...}

あるいは

  \color{red}{...}、   \color{green}{...}、  \color{blue}{...}、
  \color{yellow}{...}、\color{magenta}{...}、\color{cyan}{...}、
  \color{white}{...}、 \color{black}{...}

それぞれ以下と同じです。

  \textcolor(1 0 0){...}、\textcolor(0 1 0){...}、\textcolor(0 0 1){...}、
  \textcolor(1 1 0){...}、\textcolor(1 0 1){...}、\textcolor(0 1 1){...}、
  \textcolor(1 1 1){...}、\textcolor(0 0 0){...}

たとえば

  \yx(10 5.5){あいうえお\red{かきく}けこ}
  \yx(10 5.5){あいうえお\color{green}{かきく}けこ}
  \yx(10 5.5){あいうえお\textcolor(1 0.2 0.7){かきく}けこ}

色名は定義することができます。たとえば

  \definecolorname orange 1 0.65 0

とすれば、以後 \orange{...} や \color{orange}{...} が使えるようになります。

なお、図形（直線や円など）の色は文字とは異なり、それぞれのコマンドの中で指定
します。


===============
 8. 外部リンク
===============

以下のようにして外部リンクが指定できます。

  \link{http://www.u-gakugei.ac.jp/\~takizawa/TeXmacro/}{WriteOnPDF}

つまり

  \link{飛び先}{クリックする文字列}

とします。

ただし ~ % # はそれぞれ \~ \% \# と入力します。
それ以外はそのまま書くことができます。


===============
 9. 文章の整形
===============

このマクロでは複雑な文章を書くことは想定していません。
それでも基本的な整形はできるようにしてあります。
ただ簡単な実装なので、複雑な使い方をするとすぐに破たんしてしまうでしょう。
LaTeX のように「きちんと」作ってはいないからです。
以下は実際は \YX(y,x,w,h){...} などの中に書きます。


(1) センタリングなど

  いずれも plain TeX で定義されています。

    \leftline{あいうえお}
    \centerline{かきくけこ}
    \rightline{さしすせそ}

  これで以下のようになります。

    │あいうえお            │（左寄せ）
    │      かきくけこ      │（センタリング）
    │            さしすせそ│（右寄せ）


(2) 横方向のスキップ

    \hskip2cm  2cm の空き
    \sk{2}     2zw（和文 2 文字幅）の空き
    \sk{0.5}   0.5zw（和文 0.5 文字幅）の空き

  \sk{2} の後ろに空白を入れると、それが生きてしまいます。
  \sk{2} は \sk2 でもかまいません。

    あいう\hskip2cmえお\\
    あいう\sk2えお\\
    あいう\sk{0.5}えお

  これで以下のようになります。

    あいう            えお
    あいう    えお
    あいう えお

  数式モードの細スペース（\,）は数式モードでなくても使えるようにしました。

  なお縦方向のスキップは \vskip、\vsk、\inlinevskip、\inlinevsk です。
  これについては「5. 文章の書き込み」ですでに説明しました。


(3) ハンギングインデント

    \hang（数値）～ \endhang

  \hang1 や \hang2.5 など
  \hang1 なら 1zw（和文 1 文字幅）のハンギングインデント
  \hang1 の後ろに空白を入れるか、そこで改行します。

    \hang1
    ◇あいうえおかきくけこさしすせそ

    ◇たちつてと\\
    なにぬねのはひふへほ
    \endhang

  これで以下のようになります。

    │◇あいうえおかきくけ│
    │  こさしすせそ      │
    │◇たちつてと        │
    │  なにぬねのはひふへ│
    │  ほ                │

    \hang1
    あいうえお\\
    かきくけこさしすせそ

    たちつてと\\
    なにぬねのはひふへほ
    \endhang

  なら以下のようになります。

    │あいうえお          │
    │  かきくけこさしすせ│
    │  そ                │
    │たちつてと          │
    │  なにぬねのはひふへ│
    │  ほ                │


(4) インデント

    \lnarrow（数値）～ \endlnarrow  左インデント
    \narrow（数値） ～ \endnarrow   左右のインデント

  \lnarrow1 や \narrow2.5 など
  \lnarrow1 なら 1zw（和文 1 文字幅）の左インデント
  \lnarrow1 の後ろに空白を入れるか、そこで改行します。

    \lnarrow1
    あいうえおかきくけこさしすせそ

    たちつてと\\
    なにぬねのはひふへほ
    \endlnarrow

  これで以下のようになります。

    │  あいうえおかきくけ│
    │  こさしすせそ      │
    │  たちつてと        │
    │  なにぬねのはひふへ│
    │  ほ                │


(5) リスト

    \list ～ \endlist
    リスト項目は \li で書きます。

    \list
    \li あいうえおかきくけこさしすせそ
    \li たちつてとなにぬねのはひふへほ
    \endlist

  これで以下のようになります。

    │・あいうえおかきくけ│
    │  こさしすせそ      │
    │・たちつてとなにぬね│
    │  のはひふへほ      │

  リストマークなどを変えたい場合は

    \list[リストマーク/リストマーク後の空き/ハンギングインデント/左インデント]

  とします。リストマーク以外は数値（単位の zw は省略）です。
  デフォルトは

    \list[最初が $\bullet$ で次が $\ast$/0/0/0または1]

  です。

  リストマークデフォルトの ・ → * は \listmarki と \listmarkii で定義してあ
  ります。
  実は ・ → * → * → * となるので、レベル 3 以降はリストマークを指定する必
  要があります。

  リストマーク後の空きはデフォルトでは 0 になっています。普通の記号などは問
  題ないでしょうが、リストマークを文字列などにした場合は、空きを入れないと読
  みにくくなります。

  ハンギングインデントが 0 なら、最初の行のリストマークとその後の空きを除い
  た書き始めの位置と同じ位置が 2 行目の書き出しになります。
  マイナスの値なら、書き出しの位置が左にずれます。

  左インデントは直前のリスト位置からのインデント量をあらわします。
  最初のリスト（レベル 1）ならデフォルトは 0 です。つまりインデントしません。
  レベル 2 以降のリストの場合のデフォルトは 1 です。
  つまりネストするごとに 1 文字分右にずれます。
  0 を指定するとずれなくなります。

    \list[◎/0.5]

  なら

    │◎ あいうえおかきく │
    │   けこさしすせそ   │

  に

    \list[★/1/-1]

  なら

    │★  あいうえおかきく│
    │  けこさしすせそ    │

  になります。

  リストをネストさせる場合は中のリストを { } で囲ってください。

    \list
    \li あいうえおかきくけこさしすせそ
    {\list[＊]                          ← { が必要
    \li がぎぐげござじずぜぞだぢづでど
    \li ぱぴぷぺぽ
    \endlist}                           ← } が必要
    \li たちつてとなにぬねのはひふへほ
    \endlist

  これで

    │・あいうえおかきくけ│
    │  こさしすせそ      │
    │  ＊がぎぐげござじず│
    │    ぜぞだぢづでど  │
    │  ＊ぱぴぷぺぽ      │
    │・たちつてとなにぬね│
    │  のはひふへほ      │

  となります。

  縦組みでリストマークの 1 バイト文字を縦中横にしたい場合は | で囲みます。

    \list[Q]       横に寝た Q です
    \list[|Q|]     Q となります
    \list[|(Q)|]   (Q) となります
    \list[(|Q|)]   Q の上下に括弧がきます

  なお [Q] などリストマークに [ や ] がある場合は {[Q]} とします。


  \olist ～ \endolist とすると番号が振られます。

    \olist
    \li あいうえおかきくけこさしすせそ
    \li たちつてとなにぬねのはひふへほ
    \endolist

  なら以下のようになります。

    │ 1  あいうえおかきく│
    │  けこさしすせそ    │
    │ 2  たちつてとなにぬ│
    │  ねのはひふへほ    │

  ちなみに 10 は以下のようになります。

    │ 1  あいうえおかきく│
    │  けこさしすせそ    │
    │ 2  たちつてとなにぬ│
    │  ねのはひふへほ    │
    │ .................. │
    │                    │
    │10  あいうえおかきく│
    │  けこさしすせそ    │

  リストマークなどを変えたい場合は

    \olist[リストマーク/リストマークの位置/リストマーク後の空き/
           ハンギングインデント/左インデント/番号の初期値]

  とします。
  \list と違って、第 2 引数（リストマークの位置）と最後の引数（番号の初期値）
  が追加されていることに注意。
  リストマークとリストマークの位置、および番号の初期値以外は数値（単位の zw
  は省略）です。番号の初期値は 1 以上の整数です（デフォルトは 1）。

  リストマークのデフォルトは

    横組み
      (e-)pTeX  のとき d → (d)
      (e-)upTeX のとき d → c
    縦組み            一 → ア

  です。
  これは \olistmarki、\olistmarkii、\altolistmarkii、\tateolistmarki、
  \tateolistmarkii で定義してあります。
  \list の場合と同じで、デフォルトではレベル 2 以降はみな同じなので、レベル 3
  以降はリストマークを指定する必要があります。

  リストマークでは  d  c  ア  あ  一  a  A  i  I  -  が特別な意味を持ちます。
  ただし c は (e-)upTeX でのみ使えます。

    d     →  1   2   3   4   5   ...  （digit）
    c     →  ①  ②  ③  ④  ⑤  ...  ←「⑳」まで（circled number）
    ア    →  ア  イ  ウ  エ  オ  ...  ←「ト」まで
    あ    →  あ  い  う  え  お  ...  ←「と」まで
    一    →  一  二  三  四  五  ...  ←「十」まで
    a     →  a   b   c   d   e   ...
    A     →  A   B   C   D   E   ...
    i     →  i  ii  iii  iv  v   ...  ←「x」まで
    I     →  I  II  III  IV  V   ...  ←「X」まで

    -     →  1   1.1   1.1.1     ...

  たとえば

    d.    なら  1.    2.    3.    4.    5.    ...
    d)    なら  1)    2)    3)    4)    5)    ...
    (i)   なら  (i)   (ii)  (iii) (iv)  (x)   ...
    {[A]} なら  [A]   [B]   [C]   [D]   [E]   ...  ← { } で括ります
    そのd なら  その1 その2 その3 その4 その5 ...

  などとなります。

  () や [] を使った場合、括弧の位置が少し上にあがります。

  リストマークの幅＋0.5zw が 2zw 以下なら、リストマークの幅＋空きが 2 文字幅
  になるようにします。つまり最低でも全体で 2 文字幅をとります。
  リストマークの幅＋0.5zw が 2zw 以上なら、リストマークの幅＋0.5zw がそのま
  ま生きます。
  その後に「リストマーク後の空き」が入ります。詰める場合は「リストマーク後の
  空き」にマイナスの数値を指定してください。

  横組みでのデフォルトは、d が 2 けた分の右寄せ、それ以外はセンタリングです。
  実際には a は「m」の幅でのセンタリング、A は「W」の幅でのセンタリング、
  i は「viii」の幅でのセンタリング、I は「VIII」の幅でのセンタリングです。

    ■■■■■■■
     1  □□□□□ ← リストマークで 2 文字分（数値は 2 けた分の右寄せ）
    10  □□□□□
     i  □□□□□ ← viii の幅でのセンタリング
    iii □□□□□

  リストマークの位置は left、center、right で変更できます。

  left を指定すれば

    ■■■■■■■
    i   □□□□□
    ii  □□□□
    iii □□□□□

  のように、

  right を指定すれば

    ■■■■■■■
      i □□□□□
     ii □□□□□
    iii □□□□□

  のようになります。

  - は最初のレベルのリストで指定してください。
  さらにレベル 2 以降はすべて \olist にします。
  この場合レベル 2 以降のリストマークは指定しても無視されます。
  左インデントは 1 文字ではなく、デフォルトで 0.5 文字です。

  ハンギングインデントや左インデントは \list の場合と同様です。
  ただしハンギングインデントのデフォルトを -1 にしてあります。

  縦組みでリストマークの 1 バイト文字を縦中横にしたい場合は | で囲みます。

    \olist[d]         横に寝た 1 2 3 ... です
    \olist[|d|]       1 2 3 ... となります
    \olist[|(d)|]     (1) (2) (3) ... となります
    \olist[(|d|)]     1 2 3 ... のそれぞれ上下に括弧がきます
    \olist[その|d|]   縦に その1 その2 その3 となります

  番号の初期値は変えられるので、たとえば

    \olist
    \li あいうえお
    \li かきくけこ
    \endolist
    ～～～～～～～
    \olist[/////3]
    \li さしすせそ
    \li たちつてと
    \endolist

  とすれば

     1 あいうえお
     2 かきくけこ
    ～～～～～～～
     3 さしすせそ
     4 たちつてと

  となります。

  なお \list の中に \olist を入れることも、あるいはその逆もできます。

  項目間に空きを入れたい場合は \vskip5mm とか \vsk.5 などを入れます。

    \li あいうえお
    \vsk.5          ← 行送りの 0.5 倍の空きを挿入
    \li かきくけこ


(6) 郵便番号・住所・電話番号

  普通に住所などを書いてもよいのですが、\postalcode、\address、\phonenumber
  を使うと、少し整えて表示します。

    \postalcode{123-4567}
    \postalcode*{123-4567} → 〒123-4567（〒を付加します）

    \address{東京都新宿区古宿1-23-4 モン・リーブA号館506}
    \Address{東京都新宿区古宿1-23-4 モン・リーブA号館506} （縦組みのみ）
    \Address*{東京都新宿区古宿1-23-4 モン・リーブA号館506}（縦組みのみ）

    \phonenumber{(03)1234-5678}
    \phonenumber{090-9876-5432}
    \phonenumber{+81-3-1234-5678}

  などとします。

  以下の処理を自動で行います。
  ・\postalcode* で 〒 の後ろの空きの調整
  ・- + ( ) の位置調整（少し上にあげます）

  縦組みで \address を使うと、
  ・数字を連数字（縦中横）に、
  ・アルファベット大文字を単独で縦中横に、
  ・- を短めの | に
  変換します。

  縦組みで \Address、\Address* を使うと、
  ・数字を漢数字に
  ・- とアルファベット大文字を全角文字に
  変換し、漢数字と長音記号を少し小さく（0.95 倍）します。
  小さくしたくなければ、どこか前に \samesizeaddress と書いておきます。
  \Address と \Address* の違いは以下の例を見てください。

  上の例は縦組みでは以下のようになります。
  \address    \Address  \Address*  修正した \Address*
     東          東        東             東
     京          京        京             京
     都          都        都             都
     新          新        新             新
     宿          宿        宿             宿
     区          区        区             区
     古          古        古             古
     宿          宿        宿             宿
     1           一        一             一
     ｜          ｜        ｜             ｜
     23          二        二             二
     ｜          三        十             十
     4           ｜        三             三
                 四        ｜             ｜
     モ                    四             四
     ン          モ
     ・          ン        モ             モ
     リ          ・        ン             ン
     ｜          リ        ・             ・
     ブ          ｜        リ             リ
     A           ブ        ｜             ｜
     号          Ａ        ブ             ブ
     館          号        Ａ             Ａ
     506         館        号             号
                 五        館             館
                 〇        五             五
                 六        百             〇
                           六             六

  \Address* の例で「五百六」は不自然です。
  この場合、

    \Address*{東京都新宿区古宿1-23-4 モン・リーブA号館五〇六}

  とすればよいでしょう。
  もっとも \Address* を使わず、単に

    東京都新宿区古宿一ー二十三ー四 モン・リーブＡ号館五〇六

  としてもよいのですが、こうすると漢数字と長音記号が小さくなりません。
  \Address(*) に入れると小さくなります。


(7) 括弧やハイフンの上移動

  普通に (1) や 1-2-3 とすると、括弧やハイフンが下がって見えます。
  そのときは

    \up(1\up) や 1\up-2\up-3

  とすればおさまりがよくなります。

  上にあげる量は \upamount で変更できます。

    \def\upamount{.2}

  としておいて \up を使えば 0.2ex 上にあがります。

  デフォルトは

    \def\upamount{.16}

  で、0.16ex 上にあがります。これは「TeX ブック」にある例と同じです。

  リストで指定するリストマークの括弧類は、内部で \up を挿入するので、わざわ
  ざ明示する必要はありません。
  また住所などでの - も内部で \up を挿入します。


(8) 縦中横

  縦組みで、

    \yokointate{A}と\yokointate{B}

  とすると、

    A
    と
    B

  のようになります。


(9) タブ

    \tabbing( ) ～ \endtabbing

  ( ) 内には文字単位で位置と配置（r c p C のどれか、または、なし）を指定します。
  文字列は & で区切り、右端に \\ を入れます。
  ただし最終行の右端には \\ があってもなくてもかまいません。

    \tabbing(1/4/3)
    あいう & えお & かきくけこ \\
    さ     &      & しすせそ
    \endtabbing

  なら

     1    4      3
    |-|------>|---->|
      あいう  えお  かきくけこ
      さ            しすせそ

  となります。

    \tabbing(0/6r/4c/5p)
    あいう & えお & かきくけこ & 123 \\
           & さ   & しすせそ   &  45.6
    \endtabbing

  なら

    0     6         4        5
    |---------->|------>|--------->
    あいう  えお   かきくけこ   123
              さ    しすせそ     45.6
        （右揃え）（中央揃え）（小数点揃え）

  となります。r は右揃えタブを、c は中央揃えタブを、p は小数点揃えタブをあら
  わします。あと C が指定できます（後述）。
  何も指定しないと左揃えタブになります。

  上の例は、

    \tabbing(0/6r/4c/5p)           ← ここで改行
    あいう&えお&かきくけこ&123\\
    &さ&しすせそ&45.6\\            ← 最終行の \\ はあってもなくてもよい
    \endtabbing

  と & の前後にスペースを入れずに書いても同じです。ただ原稿は読みにくくなる
  でしょう。

  なお

    \tabbing(0/4)
    あいう & えお & かきく & けこ   & abcd & efg  \\
    w      & xyz  & さし   & すせそ & た   & ちつ
    \endtabbing

  なら

    0   4       4       4       4       4
    |------>|------>|------>|------>|------>|
    あいう  えお    かきく  けこ    abcd    efg
    w       xyz     さし    すせそ  た      ちつ

  となります。
  ( ) の指定が足りないと、最後のものが続いているものとみなされます。
  つまり (0/4) は (0/4/4/4/4/4) となります。

  数値は整数である必要はありません。
  (4.5c) なら (4.5c/4.5c/4.5c/...) です。
  だから

    \tabbing(4.5c)
    あいう & えお & かきく & けこ   & abcd & efg  \\
    w      & xyz  & さし   & すせそ & た   & ちつ
    \endtabbing

  で

       4.5      4.5      4.5      4.5      4.5     4.5
    |------->|------->|------->|------->|------->|------->|
          あいう    えお    かきく    けこ     abcd     efg
            w       xyz      さし    すせそ     た      ちつ

  となります。

  c はタブ位置で中央配置となります。
  これに対し C を指定すると、タブ幅での中央配置となります。

    \tabbing(10c)
    あいうえお \\
    かき
    \endtabbing

  は

             10
    |------------------>
                   あいうえお
                      かき

  で、

    \tabbing(10C)
    あいうえお \\
    かき
    \endtabbing

  は

             10
    |------------------>
         あいうえお
            かき

  となります。

  タブの中に横線を引くことができます。

    \tabbinghrule 書き始めの位置/横線の長さ/線の太さ

  書き始めの位置と横線の長さは zw 単位の値です。
  線の太さは単位が必要ですが省略できます。省略すると 0.4bp になります。

    \tabbing(1/5)
    \tabbinghrule 0.5/10 \\
    あいう & えお        \\
    \tabbinghrule 0.5/10 \\
    か     & きくけこ    \\
    さし   & すせそ      \\
    \tabbinghrule 0.5/10     ← \\ を入れてもかまいません
    \endtabbing

  なら

     1     5
    |-|-------->|
     --------------------    ← 0.5 文字の位置から 10 文字分の長さの横線
      あいう    えお
     --------------------
      か        きくけこ
      さし      すせそ
     --------------------

  となります。


  \tabbing( ) の ( ) 内のタブ位置は単位が zw です。
  また \tabbinghrule a/b/c の a と b の単位も zw です。

  \tabbing*( ) と * を付けると ( ) 内で指定するタブ位置も、\tabbinghrule a/b/c
  の a と b もすべて cm 単位になります。

  この機能と C 指定を使ってカレンダーを作ってみました。

    \YX-tc(3 - 17.5 16)[40]{
    {\larger1.44 {\Goth\Ss 4月}}
    \vskip5mm
    \tabbing*(2.5C)
    \red{日} & 月 & 火 & 水 & 木 & 金 & 土 \\
    \tabbinghrule 0/17.5/1.5bp \\
             &    &  1 &  2 &  3 &  4 &  5 \\
    \red{ 6} &  7 &  8 &  9 & 10 & 11 & 12 \\
    \red{13} & 14 & 15 & 16 & 17 & 18 & 19 \\
    \red{20} & 21 & 22 & 23 & 24 & 25 & 26 \\
    \red{27} & 28 & \red{29} & 30
    \endtabbing}


(10) 表

  LaTeX の tabular 環境のように、表を簡単に書けるようにしたかったのですが、
  今回は断念しました。
  バージョンアップする機会があれば考えます。
  どうしても表を書きたければ、\halign などを使ってがんがん書くことになります。
  でも大変です。
  簡易的ですが、(9) の \tabbing を使って項目を揃えてもよいでしょう。


==========
 10. 数式
==========

  分数の 2 分の 1 は \frac{1}{2} です。
  ルート 2 は \sqrt{2}、3 乗根 2 は \sqrt[3]{2} です。

  いずれも LaTeX と同じようにしました。
  ただし簡単な実装なので、分子の中に分数を入れるなど複雑なことには対応してい
  ません。

  \angle

    NewTX / TX 指定時 --- symbol フォント（usyr）の 0xD0
    LM         指定時 --- AMS フォントA（msam10）の 0x5C

  を使い、数式内でも数式外でも使えるようにしました。

    \angle ABC
    $\angle\hbox{ABC}$

  AMS フォントが使えます。
  ただし、コントロール・シーケンスをほとんど定義していません。
  定義したものを以下に示します。

    \square              □
    \blacksquare         ■
    \rightleftharpoons   上に\rightharpoonup、下に\leftharpoondown
                         （plain TeX では合字で定義されています）
    \rightleftarrows     上に→、下に←
    \therefore           ∴
    \because             ∴ の上下逆
    \leqq                ≦
    \fallingdotseq       ≒
    \geqq                ≧
    \vartriangleright    右向き三角
    \vartriangleleft     左向き三角
    \trianglerighteq     右向き三角の下に―
    \trianglelefteq      左向き三角の下に―
    \blacktriangleright  右向き黒三角
    \blacktriangleleft   左向き黒三角
    \angleAMS            ∠（newtx / TX フォントでは形がよくない？）
    \nleq                \le(q) の否定
    \ngeq                \ge(q) の否定
    \nless               < の否定
    \ngtr                > の否定
    \lneqq               ≦の＝部分の否定
    \gneqq               ≧の＝部分の否定
    \nleqq               ≦の否定
    \ngeqq               ≧の否定
    \nsubseteq           \subseteq の否定
    \nsupseteq           \supseteq の否定
    \nparallel           || の否定
    \nmid                | の否定
    \beth                ヘブライ文字
    \gimel               ヘブライ文字
    \daleth              ヘブライ文字
    \hbar                h + - （plain TeX では合字で定義されています）

  これ以外の記号を使いたいときは、たとえば amssymb.sty などを参考に定義して
  ください。

  \mathbb{ABC}            黒板太文字
  \mathscr{ABC}           Ralph Smith's Formal Script
  \mathcal{ABC}           スクリプト文字（\cal と同じ）
  {\cal ABC}              スクリプト文字
  {\oldstyle 1234567890}  オールドスタイル数字（数式外でも使えます）

  {\mit\Gamma} など       ギリシャ文字（大文字）のイタリック体
  \varGamma    など       上と同じ

  蛇足ですが、場合分け、行列、複数行の数式の例を TeX ブック（日本語訳版）か
  ら載せます。最後のものは長い数式を分割する例です。
  TeX ブックは現在入手困難ですが、原著のソースファイルは Web で入手できます。

    $$|x|=\cases{x&$x\ge0$の場合\cr
                 -x&それ以外の場合\cr}$$
    $$A=\pmatrix{a_{11}&a_{12}&\cdots&a_{1n}\cr
                 a_{21}&a_{22}&\cdots&a_{2n}\cr
                 \vdots&\vdots&\ddots&\vdots\cr
                 a_{m1}&a_{m2}&\cdots&a_{mn}\cr}$$
    $$M=\bordermatrix{&C&I&C'\cr
                      C&1&0&0\cr
                      I&b&1-b&0\cr
                      C'&0&a&1-a\cr}$$
    $$\eqalign{X_1+\cdots+X_p&=m\cr
               Y_1+\cdots+Y_q&=n\cr}$$
    $$\eqalignno{(x+y)(x-y)&=x^2-xy+yx-y^2\cr
                 &=x^2-y^2&(4)\cr
                 (x+y)^2&=x^2+2xy+y^2&(5)\cr}$$
    $$\leqalignno{(x+y)(x-y)&=x^2-xy+yx-y^2\cr
                 &=x^2-y^2&(4)\cr
                 (x+y)^2&=x^2+2xy+y^2&(5)\cr}$$
    $$\displaylines{x\equiv x\cr
                    \hbox{if}\quad x\equiv y\quad\hbox{then}\quad y\equiv x\cr
                    \hbox{if}\quad x\equiv y\quad\hbox{and}\quad
                    y\equiv z\quad\hbox{then}\quad x\equiv z\cr}$$
    $$\eqalign{\sigma(2^{34}-1,2^{35},1)
               &=-3+(2^{34}-1)/2^{35}+2^{35}\!/(2^{34}-1)\cr
               &\qquad+7/2^{35}(2^{34}-1)-\sigma(2^{35},2^{34}-1,1)\cr}$$

  コメントを付けます。

  ・\cases、\pmatrix、\bordermatrix、はインライン（$～～～$）でも使えます。
    \eqalign（等号などでの揃え）もインライン（$～～～$）で使えます。
    \eqalignno（等号揃えかつ番号付き）、\leqalignno（等号揃えかつ左番号付き）、
    \displaylines（複数行）はディスプレイ（$$～～～$$）のみです。

  ・行末の \cr は LaTeX のように \\ としてもうまくいくようにしました。
    \cr も \\ も最終行はあってもなくてもかまいません。

      $$A=\pmatrix{a_{11}&a_{12}&\cdots&a_{1n}\\
                   a_{21}&a_{22}&\cdots&a_{2n}\\
                   \vdots&\vdots&\ddots&\vdots\\
                   a_{m1}&a_{m2}&\cdots&a_{mn}}$$

  ・特定の行間を開ける/縮めるときは、そこに \mathvskip2mm や \mathvsk.2 など
    と書きます。\mathvsk は \vsk と同じ指定です。

      $$A=\pmatrix{a_{11}&a_{12}&\cdots&a_{1n}\\
                   a_{21}&a_{22}&\cdots&a_{2n}\\
                   \vdots&\vdots&\ddots&\vdots\\
                   \mathvskip-1mm                 ← ここを 1mm 縮めます
                   a_{m1}&a_{m2}&\cdots&a_{mn}}$$

    本来は \noalign{\vskip-1mm} と書くのが正式ですが、それを \mathvsk-1mm で
    済むようにしました。

  ・特定の行間ではなく、すべての行間を開ける/縮めるときは、数式モードに入っ
    たら \openup2mm や \openup-1mm と指定します。
    ただし \eqalign、\eqalignno、\leqalignno、\displaylines に使ってください。

      $$\openup2mm                                ← 行間を 2mm 広げます
      \displaylines{x\equiv x\\
                    \hbox{if}\quad x\equiv y\quad\hbox{then}\quad y\equiv x\\
                    \hbox{if}\quad x\equiv y\quad\hbox{and}\quad
                    y\equiv z\quad\hbox{then}\quad x\equiv z}$$

  ・ディスプレイ数式はセンタリングで表示されます。
    ただし、\displaylines は左寄せができるようにしました。
    あらかじめ \mathindent を指定しておくのです。

      $$\mathindent2 ← 数値の後で改行するか、空白を入れます
      \displaylines{3^2+4^2=5^2\\
                    3^3+4^3+5^3=6^3}$$

    これでインデント 2zw の表示になります。
    $$ の中で指定すると、$$ を抜けたら元に戻ります。
    $$ の外で \YX などの中で指定すると、\YX などを抜けたら元に戻ります。
    \YX などの外で指定すれば、それ以降、その設定になります。
    設定が引き継がれたとき、デフォルトのセンタリングに戻すには \mathindent-
    とします。

    \eqalign の場合はインラインで使えるので

      \sk2$\eqalign{X_1+\cdots+X_p&=m\\
                    Y_1+\cdots+Y_q&=n}$

    のようにすればインデント 2zw の表示になります。

  ・LaTeX のディスプレイ数式の指定 \[ ～～～ \] が使えるようにしました。
    \[ ～～～ \] は \displaylines と同じにしています。
    ですから複数行書けます。

      \[
        3^2+4^2=5^2               ← 1 行でも大丈夫（センタリング）
      \]
      \[\mathindent2              ← センタリングではなくインデント 2zw に
        3^2+4^2=5^2\\             ← 2 行でも大丈夫
        3^3+4^3+5^3=6^3
      \]
      \[\openup5mm                ← 行間を 5mm 広げます
        3^2+4^2=5^2\\
        3^3+4^3+5^3=6^3
      \]
      $$\eqalign{                 ← 等号揃え（センタリング）
            3^2+4^2&=5^2\\           新しいコントロール・シーケンスを定義し
        3^3+4^3+5^3&=6^3             ていないので、普通に $$\eqalign{...}$$
      }$$                            とします
      \sk2$\left\{\eqalign{       ← 等号揃え（$～～～$ にし、インデント 2zw）
            3^2+4^2&=5^2\\           左に { を入れてみました
        3^3+4^3+5^3&=6^3}\right.$

    基本的に \[ の後ろで改行するか、空白を入れてください。
    なぜなら \[ の中に \mathindent や \openup が指定できるようにしたからです。
    上の例を見てください。
    それぞれローカルな指定になります。
    両方指定する場合、

      \[\openup5mm\mathindent2

    とするか

      \[{\mathindent2 \openup5mm}

    とします。\mathindent2 の後ろに空白が必要ですが、単に 

      \[\mathindent2 \openup5mm

    とすると、設定が \mathindent2 だけになってしまいます。


  なお数式ではありませんが、

    \underbar{あいうえお}

  で下線が引けます。


==============
 11. 直線や円
==============

位置指定のデフォルトは \yx 系ですが \xy 系での指定もできます。
たとえば直線の \singleline は \yx 系で、\singlelinexy は \xy 系です。
以下同じです。
基本は \yx 系になっていますが、コマンドの後ろに xy を付けると \xy 系になりま
す。


(1) 直線

    \singleline[色](行 列 長さ 太さ)

  行、列、長さは必須（単位なし）。

  太さは省略可能。書く場合は単位が必要。
  太さを省略すると 0.4bp になります。
  色は省略可能。省略すると black になります。

  例

    \singleline(10 5.5 7) ----- (10 5.5) の位置から右に 7cm の長さの横線
    \singleline[red](10 5.5 7)   ----- 赤い線
    \singleline[1 0 1](10 5.5 7) ----- マゼンタの線
    \singleline(10 5.5 7 1bp)
                  ----- (10 5.5) の位置から右に 太さ 1bp で 7cm の長さの横線

  線の色は [red] や [1 0.2 0.7] のように指定します。
  色名は

    red、green、blue、yellow、magenta、cyan、white、black

  が使えます。
  それ以外の色は RGB モードで [1 0.2 0.7] のように指定します。
  文字の場合と基本的には同じですが、[] 内に記述するところが異なります。

  色名を

    \definecolorname orange 1 0.65 0

  のように定義すれば、以後、色名の orange が使えるようになります。

  色は混ぜることができます。

    [green!40!yellow]

  とすると、green を 40%、残りの 60% を yellow で混ぜ合わせた色になります。

  色を透過にすることもできます。

    [red/0.5] や [1 0.2 0.7/0.4] のように指定します。

  / で区切って 0 ～ 1 の数値を指定します。
  1 が普通の表示（透過なし）で 0 が透明（非表示）です。

  直線を文字の下に引けばアンダーラインに、文字の真ん中に引けば取り消し線にな
  るでしょう。

  この \singleline は横方向限定の直線ですが、\arraw-- を使うことで任意の向き
  の直線が描けます。


(2) 二重線

    \doubleline[色](行 列 長さ 太さ 間隔)

  行、列、長さは必須（単位なし）。

  太さと間隔は省略可能。書く場合は単位が必要。
  太さを省略すると 0.4bp になります。
  間隔を省略すると、太さの 2.5 倍（太さ 0.4bp なら 1bp）になります。

    \doubleline(10 5.5 7 - 2mm)

  のような書き方が可能です。この場合は太さを省略しています。


(3) 点線

    \dottedline[色](行 列 長さ 点の半径 点の間隔)

  行、列、長さは必須（単位なし）。

  点の半径と点の間隔は省略可能。書く場合は単位が必要。
  点の半径を省略すると、半径 0.4bp の円になります。
  点の間隔を省略すると、点の半径の 8 倍（点の半径 0.4bp なら 3.2bp）になりま
  す。


(4) 破線

    \dashedline[色](行 列 全体の長さ 太さ 各部分の長さ)

  行、列、全体の長さは必須（単位なし）。

  太さと各部分の長さは省略可能。書く場合は単位が必要。
  太さを省略すると 0.4bp になります。
  各部分の長さを省略すると、太さの 5 倍（太さ 0.4bp なら 2bp）になります。


(5) 波線

    \wavyline[色](行 列 長さ 太さ 波の高さ １つの波の幅)

  行、列、長さは必須（単位なし）。

  太さ、波の高さ、１つの波の幅は省略可能。書く場合は単位が必要。
  太さを省略すると 0.4bp になります。
  波の高さを省略すると、太さの 2 倍（太さ 0.4bp なら 0.8bp）になります。
  １つの波の幅を省略すると、波の高さの 6 倍（波の高さ 0.8bp なら 4.8bp）にな
  ります。


(6) 長方形 1

    \rect
      [線の色][塗りつぶしの色]
      (中心の行 中心の列 横幅の半分 縦幅の半分 線の太さ 角丸の半径)

  中心は (y x) で、幅は x y の順になっています。
  もちろん \rectxy なら、どちらも x y の順です。

  幅は中心からの幅、すなわち実際の幅の 1/2 の値を指定します。
  これは楕円と同じ指定です。
  \rect は簡単な文字列を囲むことを想定しているので、このような仕様になってい
  ます。
  普通の長方形は、長方形 2（\rectangle）を使ってください。

  中心の行、中心の列、横幅の半分、縦幅の半分は必須（単位なし）。

  線の太さと角丸の半径は省略可能。書く場合は単位が必要。
  線の太さを省略すると 0.4bp になります。
  角丸の半径を省略すると 0bp、つまり角丸にはしません。

  塗りつぶしの色の指定は線の色の指定と同じです。

  線を描かないで、内部を塗りつぶしたい場合は、線の色を none にします。

    \rect[none][red]
      (中心の行 中心の列 横幅の半分 縦幅の半分 線の太さ 角丸の半径)

  この場合、線の太さは指定しても無視されます。

  普通に色塗り長方形を描くと、下の文字が見えなくなります。
  下の文字も表示したい場合は、色を透過にします。
  あるいは文字を後で書きます。

  背景が白のとき

    \rect[none][white]
      (中心の行 中心の列 横幅の半分 縦幅の半分 線の太さ 角丸の半径)

  のように白で塗りつぶせば、書かれている文字が消えることになります。
  その上に \yx で文字を書けば、書き直したような効果が得られます。

  このとき最初から \rect[none][white](...) としないで、
  \rect[none][white/0.5](...) のように半透明にして塗りつぶし、
  下の文字を見ながら、\yx で文字を書き込んでいくと、サイズや位置調整がしやす
  くなるでしょう。
  もちろん書いたら /0.5 は消しておきます。

  以上のことを簡単にできるように \del を定義しました。

    \del(中心の行 中心の列 横幅の半分 縦幅の半分)

  これは

    \rect[none][white](中心の行 中心の列 横幅の半分 縦幅の半分)

  と同じです。

  白以外で塗りつぶしたいときは

    \del[塗りつぶしの色](中心の行 中心の列 横幅の半分 縦幅の半分)

  とします。


(7) クロスアウト

  × 印を描きます。× を含む長方形を考え、長方形 1 と同じように指定します。

    \crossout[色](中心の行 中心の列 横幅の半分 縦幅の半分 太さ)

  単に × なら（つぶれていなければ）、

    \yx-mc(行 列){×}

  のように文字でも描けます。
  このとき必要なら文字サイズを変えます。
  ただし太さを変えることはできません。


(8) ストライクアウト

  ／ を描きます。／ を含む長方形を考え、長方形 1 と同じように指定します。

    \strikeout[色](中心の行 中心の列 横幅の半分 縦幅の半分 太さ)

  単に ／ あるいは / なら

    \yx-mc(行 列){／} あるいは \yx-mc(行 列){/}

  のように文字でも描けます。
  このとき必要なら文字サイズを変えます。
  ただし太さを変えることはできません。


(9) 長方形 2

    \rectangle[線の色][塗りつぶしの色](行 列 横幅 縦幅 線の太さ 角丸の半径)

  デフォルトの位置 (行 列) は長方形の左上になります。
  位置は (y x) で、幅は x y の順になっています。
  もちろん \recanglexy なら、どちらも x y の順です。

  行、列、横幅、縦幅は必須（単位なし）。

  線の太さと角丸の半径は省略可能。書く場合は単位が必要。

  \rectangle だけでなく

    \rectangle-tl、\rectangle-tc、\rectangle-tr、
    \rectangle-ml、\rectangle-mc、\rectangle-mr、
    \rectangle-bl、\rectangle-bc、\rectangle-br

  も使えます。これは \yx- や \YX- の指定と同じです。
  一般的には \rectangle-bl とするのですが、ここでは \rectangle を
  \rectangle-tl と同じにしました。つまり \YX と同じにしました。

  長方形 1 の \rect は、位置としては \rectangle-mc と同じですが、幅の指定が
  異なります。

  色塗り長方形の中に文字を書く場合は、文字を後から書くか、あるいは塗る色を透
  過にします。

  \rect に対して削除版の \del がありました。
  \rectangle に対しては \delete があります。

    \delete(行 列 横幅 縦幅)

  あるいは

    \delete[塗りつぶしの色](行 列 横幅 縦幅)

  です。デフォルトの塗りつぶしの色は白です。

  なお

    \delete-tl、\delete-tc、\delete-tr、
    \delete-ml、\delete-mc、\delete-mr、
    \delete-bl、\delete-bc、\delete-br

  も使えます。


(10) 円

    \circle[線の色][塗りつぶしの色](中心の行 中心の列 半径 線の太さ)

  中心の行、中心の列、半径は必須（単位なし）。

  線の太さは省略可能。書く場合は単位が必要。

  円は

    \yx-mc(行 列){○}

  のように文字でも描けます。
  このとき必要なら文字サイズを変えます。
  ただし太さを変えることはできません。


(11) 楕円

    \ellipse[線の色][塗りつぶしの色](中心の行 中心の列 横半径 縦半径 線の太さ)

  中心は (y x) で、半径は x y の順になっています。
  もちろん \ellipsexy なら、どちらも x y の順です。

  中心の行、中心の列、横半径、縦半径は必須（単位なし）。

  線の太さは省略可能。書く場合は単位が必要。


(12) 矢印

    \arraw->[色](行 列 左右の長さ 上下の長さ 太さ)
    \arraw<-[色](行 列 左右の長さ 上下の長さ 太さ)
    \arraw<>[色](行 列 左右の長さ 上下の長さ 太さ)
    \arraw--[色](行 列 左右の長さ 上下の長さ 太さ)

  それぞれ、終点が矢、始点が矢、両端が矢、単なる直線、を表します。
 「両端が矢」は <-> ではなく <> になっています。

  行、列、左右の長さ、上下の長さは必須（単位なし）。

  太さは省略可能。書く場合は単位が必要。

  例

    \arrow->(10 5.5 3.2 -2)    (10 5.5) の位置から右 3.2 下 2 の点まで --->
    \arrow<-(10 5.5 -3.2 2)    (10 5.5) の位置から左 3.2 上 2 の点まで <---
    \arrow<>[red](10 5.5 -3 0 2bp)
      (10 5.5) の位置から左に 3 の長さの <---> で、色は赤、太さは 2bp

  始点と終点を直接結ばないで

        ↑      │
        │  や  │
    ──┘      └─→

  のように描くこともできます。
  横、縦の順なら -|
  縦、横の順なら |-
  を / で区切って以下のように書きます。

    \arrow->/-|[色](行 列 左右の長さ 上下の長さ 太さ)

  例

    \arrow<-/-|(10 5.5 -4 3) なら

    始点が (10 5.5) で、終点の位置はそこから左 4、上 3 です。
    -| なので、始点から終点まで 横 縦 の順に線を引きます。
    <- なので矢は始点につきます。
    結局

       │
      3│
       └──→ 始点 (10 5.5）
           4

    のようになります。


==========
 12. 図形
==========

TikZ を使っていろいろな図形を描くことができます。

基本的には

  \yx(行 列)
  {\tikzpicture
   ................;
   ................;
   ................;
   \endtikzpicture}

とします。

中身が 1 行なら

  \yx(行 列){\tikz ..........;}

とか

  \yx(行 列)
  {\tikz ..........;}

などとします。

書き方は TikZ のマニュアルを見てください。

行末にスペースが入ると位置がずれてしまいます。
そのときは行末に % を入れておきます。

例（TikZ のマニュアルにある例）

  \yx(10 5.5)
  {\tikz \draw[thick,rounded corners=8pt]
   (0,0) -- (0,2) -- (1,3.25) -- (2,2) -- (2,0) -- (0,2) -- (2,2) -- (0,0)
   -- (2,0);}

図形を囲むボックスに対しての位置指定になるので、(10 5.5) が原点であるとはか
ぎりません。\yx-tr(10 5.5){...} なら図形の右上が (10 5.5) になります。


==============
 13. 図の挿入
==============

PDF、EPS、JPEG、PNG 画像を挿入することができます。

  \image(行 列){画像ファイル}

で (行 列) のところが画像ファイルの左下になるように挿入されます。
いつも左下です。

画像を変形するには (行 列) のところを

  (行 列 横幅またはその<拡大・縮小率> 縦幅またはその<拡大・縮小率> 回転角度)

とします。

例

  \image(10 5.5){hoge.jpg}          hoge.jpg の左下が (10 5.5)
* \image(10 5.5 5){hoge.jpg}        横幅 5cm（縦横比を保つ）
* \image(10 5.5 - 3){hoge.jpg}      縦幅 3cm（縦横比を保つ）（省略箇所は -）
  \image(10 5.5 5 3){hoge.jpg}      横幅 5cm、縦幅 3cm に
  \image(10 5.5 <0.6>){hoge.jpg}
         これは \image(10 5.5 <0.6> -){hoge.jpg} と同じで、横幅だけ 0.6 倍に
  \image(10 5.5 - <1.2>){hoge.jpg}  縦幅だけ 1.2 倍に
  \image(10 5.5 5 <1.2>){hoge.jpg}
         横幅 5cm（縦横比を保つ）にし、その後、さらに縦幅だけ 1.2 倍に
  \image(10 5.5 <0.6> 3){hoge.jpg}
         縦幅 3cm（縦横比を保つ）にし、その後、さらに横幅だけ 0.6 倍に
  \image(10 5.5 <0.6> <1.2>){hoge.jpg} 横幅 0.6 倍、縦幅 1.2 倍に
* \image(10 5.5 <0.5> <0.5>){hoge.jpg} 横幅も縦幅も 0.5 倍に

  縦横比を保って変形する場合は * 印がおすすめです。
  横と縦に数値と比率が混在しているときの挙動に注意。

  \image(10 5.5 - - 60){hoge.jpg}   左下を中心として 60°の回転
  \image(10 5.5 <0.5> <0.5> -60){hoge.jpg}
         横幅も縦幅も 0.5 倍にし、それを（時計回りに）60°回転


============================
 14. 複数ページへの同じ指定
============================

複数ページにわたって同じことを書き込みたい場合は

  \pages 3-6

などとして書いていきます。
これで 3 ページから 6 ページまで同じ内容が書かれます。

  \pages -6

は

  \pages 1-6

と、

  \pages 3-

は、最終ページが 10 なら

  \pages 3-10

と同じです。

なお

  \pages -

で全ページにわたって同じ内容が書かれます。

\pages、\page、\newpage は、とりまぜて複数書けます。
ただし、現在のページよりも前のページを指定しても前には書かれず、現在のページ
に書かれます。後戻りはできないのです。

以下が使えます。

  \pagenumber      そのページのページ番号
  \lastpagenumber  最終ページ番号
  \normalRm        和文 10.5bp に対する欧文ローマン体

たとえば

  \pages -
  \yx-mc(-2 -){\normalRm\pagenumber}

とすると、各ページの下から 2cm のところ中央に 1、2、... とページ番号が振られ
ます。

また、用紙が A4 サイズの場合

  \pages -
  \yx(2 1.5 18 0.45)[Min/10.5]
  {大切なお知らせ\hfill{\pagenumber} / {\lastpagenumber} ページ}
  \singleline(2 1.5 18)

あるいは

  \pages -
  \yx(1.95 1.5)[Min/10.5]{大切なお知らせ}
  \yx-br(1.95 -1.5)[Min/10.5]{{\pagenumber} / {\lastpagenumber} ページ}
  \singleline(2 1.5 18)

とすると、各ページの上に、最後が 10 ページなら

  大切なお知らせ                                         1 / 10 ページ
  ──────────────────────────────────

  大切なお知らせ                                         2 / 10 ページ
  ──────────────────────────────────

  大切なお知らせ                                         3 / 10 ページ
  ──────────────────────────────────

と書かれます。

  \totalpage 10

のときページ番号は

  1、2、3、4、5、6、7、8、9、10

ですが、開始ページ番号は変更できます。

  \startpage 5      ← これを追加
  \totalpage 10

とすると

  5、6、7、8、9、10、11、12、13、14

となります。

書き込む PDF ファイルにページ番号が振られていて、1 以外で始まっている場合、
\startpage を指定しておけば、実際に振られているページ番号を \page や \pages
で指定できます。
上の場合、\pages -7 は \pages 5-7 に \pages 10- は \pages 10-14 になります。

またページ番号のない文書にページ番号を通しで振りたい場合、\startpage を指定
すれば開始番号を 1 以外にできます。


====================
 15. 書き追わったら
====================

書き追わったら \hidegrid を書き込んで PDF ファイルを作成します。

  \input WriteOnPDF
  \backfile hoge.pdf
  \hidegrid         ← これを追加
  \BEGIN
  ～～～～～
  ～～～～～
  \END

これでグリッドが消えます。


================
 16. 他の使い方
================

このマクロは PDF ファイルに書き込むことを目的にしていますが、PDF ファイルを
読み込まないこともできます。

  \input WriteOnPDF
  \BEGIN
  \END

とすれば、グリッドだけが表示されます。
好きな位置に好きな文字を好きな大きさで書き込めば、張り紙などが簡単に作成でき
るでしょう。がんばればチラシも作れるかもしれません。

また、プレゼンテーション用のスライドも作成できます。
以下に例を示します。

  % プレゼンテーションのサンプル
  \input WriteOnPDF
  \paper A4-
  \setfont Goth/40
  \def\topslide{\yx-mc(- - 26 m18)}
  \def\slide{\newpage\yx-mc(- - 26 18)}
  \def\slidemiddle{\newpage\yx-mc(- - 26 m18)}
  \def\title#1{\bigskip\centerline{\larger1.2 #1}\bigskip}
  \def\date#1{\centerline{#1}}
  \let\author\date
  \def\slidetitle#1{{\larger1.2 #1}\medskip}
  \hidegrid

  \BEGIN

  \topslide{%
  \title{プレゼンテーションとは}
  \date{2014年3月31日}
  \author{かぐら}
  }

  \slide{%
  \slidetitle{■ はじめに}
  はじめにはじめにはじめにはじめにはじめにはじめにAbcdefg
  }

  \slide{%
  \slidetitle{■ 次に}
  次に次に次に次に次に次に次に次に次に次に次に次にHijklmn
  }

  \slidemiddle{%
  \centerline{ちょっと休憩}
  }

  \END
